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