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
14namespace cocoa_test_event_utils {
15
16// Create synthetic mouse events for testing. Currently these are very
17// basic, flesh out as needed.  Points are all in window coordinates;
18// where the window is not specified, coordinate system is undefined
19// (but will be repeated when the event is queried).
20NSEvent* MouseEventWithType(NSEventType type, NSUInteger modifiers);
21NSEvent* MouseEventAtPoint(NSPoint point, NSEventType type,
22                           NSUInteger modifiers);
23NSEvent* LeftMouseDownAtPoint(NSPoint point);
24NSEvent* LeftMouseDownAtPointInWindow(NSPoint point, NSWindow* window);
25NSEvent* RightMouseDownAtPoint(NSPoint point);
26NSEvent* RightMouseDownAtPointInWindow(NSPoint point, NSWindow* window);
27
28// Return a mouse down and an up event with the given |clickCount| at
29// |view|'s midpoint.
30std::pair<NSEvent*, NSEvent*> MouseClickInView(NSView* view,
31                                               NSUInteger clickCount);
32
33// Returns a key event with the given character.
34NSEvent* KeyEventWithCharacter(unichar c);
35
36// Returns a key event with the given type and modifier flags.
37NSEvent* KeyEventWithType(NSEventType event_type, NSUInteger modifiers);
38
39// Returns a key event with the given key code, type, and modifier flags.
40NSEvent* KeyEventWithKeyCode(unsigned short key_code,
41                             unichar c,
42                             NSEventType event_type,
43                             NSUInteger modifiers);
44
45// Returns a mouse enter/exit event with the given type.
46NSEvent* EnterExitEventWithType(NSEventType event_type);
47
48// Return an "other" event with the given type.
49NSEvent* OtherEventWithType(NSEventType event_type);
50
51}  // namespace cocoa_test_event_utils
52
53#endif  // UI_EVENTS_TEST_COCOA_TEST_EVENT_UTILS_H_
54