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.
5 #ifndef UI_BASE_TEST_COCOA_TEST_EVENT_UTILS_H_
6 #define UI_BASE_TEST_COCOA_TEST_EVENT_UTILS_H_
10 #import <objc/objc-class.h>
12 #include "base/basictypes.h"
14 // Within a given scope, replace the selector |selector| on |target| with that
16 class ScopedClassSwizzler
{
18 ScopedClassSwizzler(Class target
, Class source
, SEL selector
);
19 ~ScopedClassSwizzler();
22 Method old_selector_impl_
;
23 Method new_selector_impl_
;
25 DISALLOW_COPY_AND_ASSIGN(ScopedClassSwizzler
);
28 namespace cocoa_test_event_utils
{
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
);
40 // Return a mouse down and an up event with the given |clickCount| at
42 std::pair
<NSEvent
*, NSEvent
*> MouseClickInView(NSView
* view
,
43 NSUInteger clickCount
);
45 // Returns a key event with the given character.
46 NSEvent
* KeyEventWithCharacter(unichar c
);
48 // Returns a key event with the given type and modifier flags.
49 NSEvent
* KeyEventWithType(NSEventType event_type
, NSUInteger modifiers
);
51 // Returns a key event with the given key code, type, and modifier flags.
52 NSEvent
* KeyEventWithKeyCode(unsigned short key_code
,
54 NSEventType event_type
,
55 NSUInteger modifiers
);
57 // Returns a mouse enter/exit event with the given type.
58 NSEvent
* EnterExitEventWithType(NSEventType event_type
);
60 // Return an "other" event with the given type.
61 NSEvent
* OtherEventWithType(NSEventType event_type
);
63 } // namespace cocoa_test_event_utils
65 #endif // UI_BASE_TEST_COCOA_TEST_EVENT_UTILS_H_