| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
| 6 | 6 |
| 7 #import "base/mac/scoped_objc_class_swizzler.h" | 7 #import "base/mac/scoped_objc_class_swizzler.h" |
| 8 #include "base/memory/singleton.h" | 8 #include "base/memory/singleton.h" |
| 9 #include "ui/events/event_processor.h" | 9 #include "ui/events/event_processor.h" |
| 10 #include "ui/events/event_target.h" | 10 #include "ui/events/event_target.h" |
| 11 #include "ui/events/event_target_iterator.h" | 11 #include "ui/events/event_target_iterator.h" |
| 12 #include "ui/events/event_targeter.h" | 12 #include "ui/events/event_targeter.h" |
| 13 #import "ui/events/test/cocoa_test_event_utils.h" |
| 13 #include "ui/events/test/event_generator.h" | 14 #include "ui/events/test/event_generator.h" |
| 14 #include "ui/gfx/mac/coordinate_conversion.h" | 15 #include "ui/gfx/mac/coordinate_conversion.h" |
| 15 | 16 |
| 16 namespace { | 17 namespace { |
| 17 | 18 |
| 18 // Singleton to provide state for swizzled Objective C methods. | 19 // Singleton to provide state for swizzled Objective C methods. |
| 19 ui::test::EventGenerator* g_active_generator = NULL; | 20 ui::test::EventGenerator* g_active_generator = NULL; |
| 20 | 21 |
| 21 } // namespace | 22 } // namespace |
| 22 | 23 |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 } | 243 } |
| 243 | 244 |
| 244 // Overridden from ui::EventTarget: | 245 // Overridden from ui::EventTarget: |
| 245 bool CanAcceptEvent(const ui::Event& event) override { return true; } | 246 bool CanAcceptEvent(const ui::Event& event) override { return true; } |
| 246 ui::EventTarget* GetParentTarget() override { return NULL; } | 247 ui::EventTarget* GetParentTarget() override { return NULL; } |
| 247 scoped_ptr<ui::EventTargetIterator> GetChildIterator() const override; | 248 scoped_ptr<ui::EventTargetIterator> GetChildIterator() const override; |
| 248 ui::EventTargeter* GetEventTargeter() override { return this; } | 249 ui::EventTargeter* GetEventTargeter() override { return this; } |
| 249 | 250 |
| 250 // Overridden from ui::EventHandler (via ui::EventTarget): | 251 // Overridden from ui::EventHandler (via ui::EventTarget): |
| 251 void OnMouseEvent(ui::MouseEvent* event) override; | 252 void OnMouseEvent(ui::MouseEvent* event) override; |
| 253 void OnKeyEvent(ui::KeyEvent* event) override; |
| 252 | 254 |
| 253 // Overridden from ui::EventSource: | 255 // Overridden from ui::EventSource: |
| 254 ui::EventProcessor* GetEventProcessor() override { return this; } | 256 ui::EventProcessor* GetEventProcessor() override { return this; } |
| 255 | 257 |
| 256 // Overridden from ui::EventProcessor: | 258 // Overridden from ui::EventProcessor: |
| 257 ui::EventTarget* GetRootTarget() override { return this; } | 259 ui::EventTarget* GetRootTarget() override { return this; } |
| 258 | 260 |
| 259 // Overridden from ui::EventDispatcherDelegate (via ui::EventProcessor): | 261 // Overridden from ui::EventDispatcherDelegate (via ui::EventProcessor): |
| 260 bool CanDispatchToTarget(EventTarget* target) override { return true; } | 262 bool CanDispatchToTarget(EventTarget* target) override { return true; } |
| 261 | 263 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 NSEvent* ns_event = CreateMouseEventInWindow(window_, | 318 NSEvent* ns_event = CreateMouseEventInWindow(window_, |
| 317 event->type(), | 319 event->type(), |
| 318 event->location(), | 320 event->location(), |
| 319 event->changed_button_flags()); | 321 event->changed_button_flags()); |
| 320 if (owner_->targeting_application()) | 322 if (owner_->targeting_application()) |
| 321 [NSApp sendEvent:ns_event]; | 323 [NSApp sendEvent:ns_event]; |
| 322 else | 324 else |
| 323 EmulateSendEvent(window_, ns_event); | 325 EmulateSendEvent(window_, ns_event); |
| 324 } | 326 } |
| 325 | 327 |
| 328 void EventGeneratorDelegateMac::OnKeyEvent(ui::KeyEvent* event) { |
| 329 NSUInteger modifiers = EventFlagsToModifiers(event->flags()); |
| 330 NSEvent* ns_event = cocoa_test_event_utils::SynthesizeKeyEvent( |
| 331 window_, event->type() == ui::ET_KEY_PRESSED, event->key_code(), |
| 332 modifiers); |
| 333 if (owner_->targeting_application()) |
| 334 [NSApp sendEvent:ns_event]; |
| 335 else |
| 336 EmulateSendEvent(window_, ns_event); |
| 337 } |
| 338 |
| 326 void EventGeneratorDelegateMac::SetContext(ui::test::EventGenerator* owner, | 339 void EventGeneratorDelegateMac::SetContext(ui::test::EventGenerator* owner, |
| 327 gfx::NativeWindow root_window, | 340 gfx::NativeWindow root_window, |
| 328 gfx::NativeWindow window) { | 341 gfx::NativeWindow window) { |
| 329 swizzle_pressed_.reset(); | 342 swizzle_pressed_.reset(); |
| 330 owner_ = owner; | 343 owner_ = owner; |
| 331 window_ = window; | 344 window_ = window; |
| 332 if (owner_) { | 345 if (owner_) { |
| 333 swizzle_pressed_.reset(new base::mac::ScopedObjCClassSwizzler( | 346 swizzle_pressed_.reset(new base::mac::ScopedObjCClassSwizzler( |
| 334 [NSEvent class], | 347 [NSEvent class], |
| 335 [NSEventDonor class], | 348 [NSEventDonor class], |
| (...skipping 17 matching lines...) Expand all Loading... |
| 353 | 366 |
| 354 namespace views { | 367 namespace views { |
| 355 namespace test { | 368 namespace test { |
| 356 | 369 |
| 357 void InitializeMacEventGeneratorDelegate() { | 370 void InitializeMacEventGeneratorDelegate() { |
| 358 EventGeneratorDelegateMac::GetInstance(); | 371 EventGeneratorDelegateMac::GetInstance(); |
| 359 } | 372 } |
| 360 | 373 |
| 361 } // namespace test | 374 } // namespace test |
| 362 } // namespace views | 375 } // namespace views |
| OLD | NEW |