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 |