| 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_nsobject.h" | 7 #import "base/mac/scoped_nsobject.h" |
| 8 #import "base/mac/scoped_objc_class_swizzler.h" | 8 #import "base/mac/scoped_objc_class_swizzler.h" |
| 9 #include "base/memory/singleton.h" | 9 #include "base/memory/singleton.h" |
| 10 #include "ui/events/event_processor.h" | 10 #include "ui/events/event_processor.h" |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 | 229 |
| 230 IMP CurrentEventMethod() { | 230 IMP CurrentEventMethod() { |
| 231 return swizzle_current_event_->GetOriginalImplementation(); | 231 return swizzle_current_event_->GetOriginalImplementation(); |
| 232 } | 232 } |
| 233 | 233 |
| 234 NSWindow* window() { return window_.get(); } | 234 NSWindow* window() { return window_.get(); } |
| 235 ui::test::EventGenerator* owner() { return owner_; } | 235 ui::test::EventGenerator* owner() { return owner_; } |
| 236 | 236 |
| 237 // Overridden from ui::EventTarget: | 237 // Overridden from ui::EventTarget: |
| 238 bool CanAcceptEvent(const ui::Event& event) override { return true; } | 238 bool CanAcceptEvent(const ui::Event& event) override { return true; } |
| 239 ui::EventTarget* GetParentTarget() override { return NULL; } | 239 ui::EventTarget* GetParentTarget() override { return nullptr; } |
| 240 scoped_ptr<ui::EventTargetIterator> GetChildIterator() const override; | 240 scoped_ptr<ui::EventTargetIterator> GetChildIterator() const override; |
| 241 ui::EventTargeter* GetEventTargeter() override { return this; } | 241 ui::EventTargeter* GetEventTargeter() override { return this; } |
| 242 | 242 |
| 243 // Overridden from ui::EventHandler (via ui::EventTarget): | 243 // Overridden from ui::EventHandler (via ui::EventTarget): |
| 244 void OnMouseEvent(ui::MouseEvent* event) override; | 244 void OnMouseEvent(ui::MouseEvent* event) override; |
| 245 void OnKeyEvent(ui::KeyEvent* event) override; | 245 void OnKeyEvent(ui::KeyEvent* event) override; |
| 246 void OnTouchEvent(ui::TouchEvent* event) override; | 246 void OnTouchEvent(ui::TouchEvent* event) override; |
| 247 | 247 |
| 248 // Overridden from ui::EventSource: | 248 // Overridden from ui::EventSource: |
| 249 ui::EventProcessor* GetEventProcessor() override { return this; } | 249 ui::EventProcessor* GetEventProcessor() override { return this; } |
| 250 | 250 |
| 251 // Overridden from ui::EventProcessor: | 251 // Overridden from ui::EventProcessor: |
| 252 ui::EventTarget* GetRootTarget() override { return this; } | 252 ui::EventTarget* GetRootTarget() override { return this; } |
| 253 | 253 |
| 254 // Overridden from ui::EventDispatcherDelegate (via ui::EventProcessor): | 254 // Overridden from ui::EventDispatcherDelegate (via ui::EventProcessor): |
| 255 bool CanDispatchToTarget(EventTarget* target) override { return true; } | 255 bool CanDispatchToTarget(EventTarget* target) override { return true; } |
| 256 | 256 |
| 257 // Overridden from ui::EventTargeter: |
| 258 ui::EventTarget* FindTargetForEvent(ui::EventTarget* root, |
| 259 ui::Event* event) override { |
| 260 return root; |
| 261 } |
| 262 ui::EventTarget* FindNextBestTarget(ui::EventTarget* previous_target, |
| 263 ui::Event* event) override { |
| 264 return nullptr; |
| 265 } |
| 266 |
| 257 // Overridden from ui::test::EventGeneratorDelegate: | 267 // Overridden from ui::test::EventGeneratorDelegate: |
| 258 void SetContext(ui::test::EventGenerator* owner, | 268 void SetContext(ui::test::EventGenerator* owner, |
| 259 gfx::NativeWindow root_window, | 269 gfx::NativeWindow root_window, |
| 260 gfx::NativeWindow window) override; | 270 gfx::NativeWindow window) override; |
| 261 ui::EventTarget* GetTargetAt(const gfx::Point& location) override { | 271 ui::EventTarget* GetTargetAt(const gfx::Point& location) override { |
| 262 return this; | 272 return this; |
| 263 } | 273 } |
| 264 ui::EventSource* GetEventSource(ui::EventTarget* target) override { | 274 ui::EventSource* GetEventSource(ui::EventTarget* target) override { |
| 265 return this; | 275 return this; |
| 266 } | 276 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 283 ui::test::EventGenerator* owner_; | 293 ui::test::EventGenerator* owner_; |
| 284 base::scoped_nsobject<NSWindow> window_; | 294 base::scoped_nsobject<NSWindow> window_; |
| 285 scoped_ptr<base::mac::ScopedObjCClassSwizzler> swizzle_pressed_; | 295 scoped_ptr<base::mac::ScopedObjCClassSwizzler> swizzle_pressed_; |
| 286 scoped_ptr<base::mac::ScopedObjCClassSwizzler> swizzle_location_; | 296 scoped_ptr<base::mac::ScopedObjCClassSwizzler> swizzle_location_; |
| 287 scoped_ptr<base::mac::ScopedObjCClassSwizzler> swizzle_current_event_; | 297 scoped_ptr<base::mac::ScopedObjCClassSwizzler> swizzle_current_event_; |
| 288 base::scoped_nsobject<NSMenu> fake_menu_; | 298 base::scoped_nsobject<NSMenu> fake_menu_; |
| 289 | 299 |
| 290 DISALLOW_COPY_AND_ASSIGN(EventGeneratorDelegateMac); | 300 DISALLOW_COPY_AND_ASSIGN(EventGeneratorDelegateMac); |
| 291 }; | 301 }; |
| 292 | 302 |
| 293 EventGeneratorDelegateMac::EventGeneratorDelegateMac() : owner_(NULL) { | 303 EventGeneratorDelegateMac::EventGeneratorDelegateMac() : owner_(nullptr) { |
| 294 DCHECK(!ui::test::EventGenerator::default_delegate); | 304 DCHECK(!ui::test::EventGenerator::default_delegate); |
| 295 ui::test::EventGenerator::default_delegate = this; | 305 ui::test::EventGenerator::default_delegate = this; |
| 296 // Install a fake "edit" menu. This is normally provided by Chrome's | 306 // Install a fake "edit" menu. This is normally provided by Chrome's |
| 297 // MainMenu.xib, but src/ui shouldn't depend on that. | 307 // MainMenu.xib, but src/ui shouldn't depend on that. |
| 298 fake_menu_.reset([[NSMenu alloc] initWithTitle:@"Edit"]); | 308 fake_menu_.reset([[NSMenu alloc] initWithTitle:@"Edit"]); |
| 299 struct { | 309 struct { |
| 300 NSString* title; | 310 NSString* title; |
| 301 SEL action; | 311 SEL action; |
| 302 NSString* key_equivalent; | 312 NSString* key_equivalent; |
| 303 } fake_menu_item[] = { | 313 } fake_menu_item[] = { |
| 304 {@"Undo", @selector(undo:), @"z"}, | 314 {@"Undo", @selector(undo:), @"z"}, |
| 305 {@"Redo", @selector(redo:), @"Z"}, | 315 {@"Redo", @selector(redo:), @"Z"}, |
| 306 {@"Copy", @selector(copy:), @"c"}, | 316 {@"Copy", @selector(copy:), @"c"}, |
| 307 {@"Cut", @selector(cut:), @"x"}, | 317 {@"Cut", @selector(cut:), @"x"}, |
| 308 {@"Paste", @selector(paste:), @"v"}, | 318 {@"Paste", @selector(paste:), @"v"}, |
| 309 {@"Select All", @selector(selectAll:), @"a"}, | 319 {@"Select All", @selector(selectAll:), @"a"}, |
| 310 }; | 320 }; |
| 311 for (size_t i = 0; i < arraysize(fake_menu_item); ++i) { | 321 for (size_t i = 0; i < arraysize(fake_menu_item); ++i) { |
| 312 [fake_menu_ insertItemWithTitle:fake_menu_item[i].title | 322 [fake_menu_ insertItemWithTitle:fake_menu_item[i].title |
| 313 action:fake_menu_item[i].action | 323 action:fake_menu_item[i].action |
| 314 keyEquivalent:fake_menu_item[i].key_equivalent | 324 keyEquivalent:fake_menu_item[i].key_equivalent |
| 315 atIndex:i]; | 325 atIndex:i]; |
| 316 } | 326 } |
| 317 } | 327 } |
| 318 | 328 |
| 319 EventGeneratorDelegateMac::~EventGeneratorDelegateMac() { | 329 EventGeneratorDelegateMac::~EventGeneratorDelegateMac() { |
| 320 DCHECK_EQ(this, ui::test::EventGenerator::default_delegate); | 330 DCHECK_EQ(this, ui::test::EventGenerator::default_delegate); |
| 321 ui::test::EventGenerator::default_delegate = NULL; | 331 ui::test::EventGenerator::default_delegate = nullptr; |
| 322 } | 332 } |
| 323 | 333 |
| 324 scoped_ptr<ui::EventTargetIterator> | 334 scoped_ptr<ui::EventTargetIterator> |
| 325 EventGeneratorDelegateMac::GetChildIterator() const { | 335 EventGeneratorDelegateMac::GetChildIterator() const { |
| 326 // Return NULL to dispatch all events to the result of GetRootTarget(). | 336 // Return nullptr to dispatch all events to the result of GetRootTarget(). |
| 327 return nullptr; | 337 return nullptr; |
| 328 } | 338 } |
| 329 | 339 |
| 330 void EventGeneratorDelegateMac::OnMouseEvent(ui::MouseEvent* event) { | 340 void EventGeneratorDelegateMac::OnMouseEvent(ui::MouseEvent* event) { |
| 331 NSEvent* ns_event = CreateMouseEventInWindow(window_, | 341 NSEvent* ns_event = CreateMouseEventInWindow(window_, |
| 332 event->type(), | 342 event->type(), |
| 333 event->location(), | 343 event->location(), |
| 334 event->changed_button_flags()); | 344 event->changed_button_flags()); |
| 335 if (owner_->targeting_application()) | 345 if (owner_->targeting_application()) |
| 336 [NSApp sendEvent:ns_event]; | 346 [NSApp sendEvent:ns_event]; |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 463 - (NSEvent*)currentEvent { | 473 - (NSEvent*)currentEvent { |
| 464 if (g_current_event) | 474 if (g_current_event) |
| 465 return g_current_event; | 475 return g_current_event; |
| 466 | 476 |
| 467 // Find the original implementation and invoke it. | 477 // Find the original implementation and invoke it. |
| 468 IMP original = EventGeneratorDelegateMac::GetInstance()->CurrentEventMethod(); | 478 IMP original = EventGeneratorDelegateMac::GetInstance()->CurrentEventMethod(); |
| 469 return original(self, _cmd); | 479 return original(self, _cmd); |
| 470 } | 480 } |
| 471 | 481 |
| 472 @end | 482 @end |
| OLD | NEW |