Home | History | Annotate | Download | only in test
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef UI_BASE_TEST_COCOA_TEST_EVENT_UTILS_H_
      6 #define UI_BASE_TEST_COCOA_TEST_EVENT_UTILS_H_
      7 
      8 #include <utility>
      9 
     10 #import <objc/objc-class.h>
     11 
     12 #include "base/basictypes.h"
     13 
     14 // Within a given scope, replace the selector |selector| on |target| with that
     15 // from |source|.
     16 class ScopedClassSwizzler {
     17  public:
     18   ScopedClassSwizzler(Class target, Class source, SEL selector);
     19   ~ScopedClassSwizzler();
     20 
     21  private:
     22   Method old_selector_impl_;
     23   Method new_selector_impl_;
     24 
     25   DISALLOW_COPY_AND_ASSIGN(ScopedClassSwizzler);
     26 };
     27 
     28 namespace cocoa_test_event_utils {
     29 
     30 // Create synthetic mouse events for testing. Currently these are very
     31 // basic, flesh out as needed.  Points are all in window coordinates;
     32 // where the window is not specified, coordinate system is undefined
     33 // (but will be repeated when the event is queried).
     34 NSEvent* MouseEventWithType(NSEventType type, NSUInteger modifiers);
     35 NSEvent* MouseEventAtPoint(NSPoint point, NSEventType type,
     36                            NSUInteger modifiers);
     37 NSEvent* LeftMouseDownAtPoint(NSPoint point);
     38 NSEvent* LeftMouseDownAtPointInWindow(NSPoint point, NSWindow* window);
     39 
     40 // Return a mouse down and an up event with the given |clickCount| at
     41 // |view|'s midpoint.
     42 std::pair<NSEvent*, NSEvent*> MouseClickInView(NSView* view,
     43                                                NSUInteger clickCount);
     44 
     45 // Returns a key event with the given character.
     46 NSEvent* KeyEventWithCharacter(unichar c);
     47 
     48 // Returns a key event with the given type and modifier flags.
     49 NSEvent* KeyEventWithType(NSEventType event_type, NSUInteger modifiers);
     50 
     51 // Returns a key event with the given key code, type, and modifier flags.
     52 NSEvent* KeyEventWithKeyCode(unsigned short key_code,
     53                              unichar c,
     54                              NSEventType event_type,
     55                              NSUInteger modifiers);
     56 
     57 // Returns a mouse enter/exit event with the given type.
     58 NSEvent* EnterExitEventWithType(NSEventType event_type);
     59 
     60 // Return an "other" event with the given type.
     61 NSEvent* OtherEventWithType(NSEventType event_type);
     62 
     63 }  // namespace cocoa_test_event_utils
     64 
     65 #endif  // UI_BASE_TEST_COCOA_TEST_EVENT_UTILS_H_
     66