Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(499)

Side by Side Diff: ui/views/test/event_generator_delegate_mac.mm

Issue 809773006: MacViews: Intercept events for Menus (after AppKit has interpreted keystrokes) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@20141205-MacViews-AcceleratedWidget-PLUS-AddingLayers-fromcl-PLUS-bringup
Patch Set: A few more cleanups Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/views/controls/textfield/textfield_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « ui/views/controls/textfield/textfield_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698