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 |