| Index: ui/views/test/event_generator_delegate_mac.mm
|
| diff --git a/ui/views/test/event_generator_delegate_mac.mm b/ui/views/test/event_generator_delegate_mac.mm
|
| index d156aa5d4af42f9381c6e21c5329ec1a1861814c..db9b627313cdc6d0cdba47af66c9fa0dfd295ef9 100644
|
| --- a/ui/views/test/event_generator_delegate_mac.mm
|
| +++ b/ui/views/test/event_generator_delegate_mac.mm
|
| @@ -28,6 +28,9 @@ ui::test::EventGenerator* g_active_generator = NULL;
|
| // Donate +[NSEvent pressedMouseButtons] by retrieving the flags from the
|
| // active generator.
|
| + (NSUInteger)pressedMouseButtons {
|
| + if (!g_active_generator)
|
| + return [NSEventDonor pressedMouseButtons]; // Call original implementation.
|
| +
|
| int flags = g_active_generator->flags();
|
| NSUInteger bitmask = 0;
|
| if (flags & ui::EF_LEFT_MOUSE_BUTTON)
|
| @@ -197,10 +200,10 @@ void EmulateSendEvent(NSWindow* window, NSEvent* event) {
|
| }
|
| }
|
|
|
| -void DispatchMouseEventInWindow(NSWindow* window,
|
| - ui::EventType event_type,
|
| - const gfx::Point& point_in_root,
|
| - int flags) {
|
| +NSEvent* CreateMouseEventInWindow(NSWindow* window,
|
| + ui::EventType event_type,
|
| + const gfx::Point& point_in_root,
|
| + int flags) {
|
| NSUInteger click_count = 0;
|
| if (event_type == ui::ET_MOUSE_PRESSED ||
|
| event_type == ui::ET_MOUSE_RELEASED) {
|
| @@ -214,19 +217,15 @@ void DispatchMouseEventInWindow(NSWindow* window,
|
| NSPoint point = ConvertRootPointToTarget(window, point_in_root);
|
| NSUInteger modifiers = 0;
|
| NSEventType type = EventTypeToNative(event_type, flags, &modifiers);
|
| - NSEvent* event = [NSEvent mouseEventWithType:type
|
| - location:point
|
| - modifierFlags:modifiers
|
| - timestamp:0
|
| - windowNumber:[window windowNumber]
|
| - context:nil
|
| - eventNumber:0
|
| - clickCount:click_count
|
| - pressure:1.0];
|
| -
|
| - // Typically events go through NSApplication. For tests, dispatch the event
|
| - // directly to make things more predicatble.
|
| - EmulateSendEvent(window, event);
|
| + return [NSEvent mouseEventWithType:type
|
| + location:point
|
| + modifierFlags:modifiers
|
| + timestamp:0
|
| + windowNumber:[window windowNumber]
|
| + context:nil
|
| + eventNumber:0
|
| + clickCount:click_count
|
| + pressure:1.0];
|
| }
|
|
|
| // Implementation of ui::test::EventGeneratorDelegate for Mac. Everything
|
| @@ -319,10 +318,14 @@ EventGeneratorDelegateMac::GetChildIterator() const {
|
| void EventGeneratorDelegateMac::OnMouseEvent(ui::MouseEvent* event) {
|
| // For mouse drag events, ensure the swizzled methods return the right flags.
|
| base::AutoReset<ui::test::EventGenerator*> reset(&g_active_generator, owner_);
|
| - DispatchMouseEventInWindow(window_,
|
| - event->type(),
|
| - event->location(),
|
| - event->changed_button_flags());
|
| + NSEvent* ns_event = CreateMouseEventInWindow(window_,
|
| + event->type(),
|
| + event->location(),
|
| + event->changed_button_flags());
|
| + if (owner_->targeting_application())
|
| + [NSApp sendEvent:ns_event];
|
| + else
|
| + EmulateSendEvent(window_, ns_event);
|
| }
|
|
|
| void EventGeneratorDelegateMac::SetContext(ui::test::EventGenerator* owner,
|
|
|