1 // Copyright 2014 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_EVENTS_TEST_COCOA_TEST_EVENT_UTILS_H_ 6 #define UI_EVENTS_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 NSEvent* RightMouseDownAtPoint(NSPoint point); 40 NSEvent* RightMouseDownAtPointInWindow(NSPoint point, NSWindow* window); 41 42 // Return a mouse down and an up event with the given |clickCount| at 43 // |view|'s midpoint. 44 std::pair<NSEvent*, NSEvent*> MouseClickInView(NSView* view, 45 NSUInteger clickCount); 46 47 // Returns a key event with the given character. 48 NSEvent* KeyEventWithCharacter(unichar c); 49 50 // Returns a key event with the given type and modifier flags. 51 NSEvent* KeyEventWithType(NSEventType event_type, NSUInteger modifiers); 52 53 // Returns a key event with the given key code, type, and modifier flags. 54 NSEvent* KeyEventWithKeyCode(unsigned short key_code, 55 unichar c, 56 NSEventType event_type, 57 NSUInteger modifiers); 58 59 // Returns a mouse enter/exit event with the given type. 60 NSEvent* EnterExitEventWithType(NSEventType event_type); 61 62 // Return an "other" event with the given type. 63 NSEvent* OtherEventWithType(NSEventType event_type); 64 65 } // namespace cocoa_test_event_utils 66 67 #endif // UI_EVENTS_TEST_COCOA_TEST_EVENT_UTILS_H_ 68