diff options
Diffstat (limited to 'chrome/browser/ui/cocoa/test_event_utils.h')
-rw-r--r-- | chrome/browser/ui/cocoa/test_event_utils.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/test_event_utils.h b/chrome/browser/ui/cocoa/test_event_utils.h new file mode 100644 index 0000000..43bc78f --- /dev/null +++ b/chrome/browser/ui/cocoa/test_event_utils.h @@ -0,0 +1,48 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_COCOA_TEST_EVENT_UTILS_H_ +#define CHROME_BROWSER_UI_COCOA_TEST_EVENT_UTILS_H_ +#pragma once + +#include <utility> + +#import <objc/objc-class.h> + +#include "base/basictypes.h" + +// Within a given scope, replace the selector |selector| on |target| with that +// from |source|. +class ScopedClassSwizzler { + public: + ScopedClassSwizzler(Class target, Class source, SEL selector); + ~ScopedClassSwizzler(); + + private: + Method old_selector_impl_; + Method new_selector_impl_; + + DISALLOW_COPY_AND_ASSIGN(ScopedClassSwizzler); +}; + +namespace test_event_utils { + +// Create synthetic mouse events for testing. Currently these are very +// basic, flesh out as needed. Points are all in window coordinates; +// where the window is not specified, coordinate system is undefined +// (but will be repeated when the event is queried). +NSEvent* MakeMouseEvent(NSEventType type, NSUInteger modifiers); +NSEvent* MouseEventAtPoint(NSPoint point, NSEventType type, + NSUInteger modifiers); +NSEvent* LeftMouseDownAtPoint(NSPoint point); +NSEvent* LeftMouseDownAtPointInWindow(NSPoint point, NSWindow* window); + +// Return a mouse down and an up event with the given |clickCount| at +// |view|'s midpoint. +std::pair<NSEvent*, NSEvent*> MouseClickInView(NSView* view, + NSUInteger clickCount); + +} // namespace test_event_utils + +#endif // CHROME_BROWSER_UI_COCOA_TEST_EVENT_UTILS_H_ |