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

Side by Side Diff: ui/events/test/event_generator.cc

Issue 404203003: Distinguish between keystroke and character events. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: IsCharFromNative() for Mac build Created 6 years, 5 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/events/ozone/events_ozone.cc ('k') | ui/events/test/events_test_utils.h » ('j') | 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 #include "ui/events/test/event_generator.h" 5 #include "ui/events/test/event_generator.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop/message_loop_proxy.h" 10 #include "base/message_loop/message_loop_proxy.h"
(...skipping 15 matching lines...) Expand all
26 26
27 namespace ui { 27 namespace ui {
28 namespace test { 28 namespace test {
29 namespace { 29 namespace {
30 30
31 void DummyCallback(EventType, const gfx::Vector2dF&) { 31 void DummyCallback(EventType, const gfx::Vector2dF&) {
32 } 32 }
33 33
34 class TestKeyEvent : public ui::KeyEvent { 34 class TestKeyEvent : public ui::KeyEvent {
35 public: 35 public:
36 TestKeyEvent(const base::NativeEvent& native_event, int flags, bool is_char) 36 TestKeyEvent(const base::NativeEvent& native_event, int flags)
37 : KeyEvent(native_event, is_char) { 37 : KeyEvent(native_event) {
38 set_flags(flags); 38 set_flags(flags);
39 } 39 }
40 }; 40 };
41 41
42 class TestTouchEvent : public ui::TouchEvent { 42 class TestTouchEvent : public ui::TouchEvent {
43 public: 43 public:
44 TestTouchEvent(ui::EventType type, 44 TestTouchEvent(ui::EventType type,
45 const gfx::Point& root_location, 45 const gfx::Point& root_location,
46 int touch_id, 46 int touch_id,
47 int flags, 47 int flags,
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 } 495 }
496 496
497 void EventGenerator::DispatchKeyEvent(bool is_press, 497 void EventGenerator::DispatchKeyEvent(bool is_press,
498 ui::KeyboardCode key_code, 498 ui::KeyboardCode key_code,
499 int flags) { 499 int flags) {
500 #if defined(OS_WIN) 500 #if defined(OS_WIN)
501 UINT key_press = WM_KEYDOWN; 501 UINT key_press = WM_KEYDOWN;
502 uint16 character = ui::GetCharacterFromKeyCode(key_code, flags); 502 uint16 character = ui::GetCharacterFromKeyCode(key_code, flags);
503 if (is_press && character) { 503 if (is_press && character) {
504 MSG native_event = { NULL, WM_KEYDOWN, key_code, 0 }; 504 MSG native_event = { NULL, WM_KEYDOWN, key_code, 0 };
505 TestKeyEvent keyev(native_event, flags, false); 505 TestKeyEvent keyev(native_event, flags);
506 Dispatch(&keyev); 506 Dispatch(&keyev);
507 // On Windows, WM_KEYDOWN event is followed by WM_CHAR with a character 507 // On Windows, WM_KEYDOWN event is followed by WM_CHAR with a character
508 // if the key event cooresponds to a real character. 508 // if the key event cooresponds to a real character.
509 key_press = WM_CHAR; 509 key_press = WM_CHAR;
510 key_code = static_cast<ui::KeyboardCode>(character); 510 key_code = static_cast<ui::KeyboardCode>(character);
511 } 511 }
512 MSG native_event = 512 MSG native_event =
513 { NULL, (is_press ? key_press : WM_KEYUP), key_code, 0 }; 513 { NULL, (is_press ? key_press : WM_KEYUP), key_code, 0 };
514 TestKeyEvent keyev(native_event, flags, key_press == WM_CHAR); 514 TestKeyEvent keyev(native_event, flags);
515 #elif defined(USE_X11) 515 #elif defined(USE_X11)
516 ui::ScopedXI2Event xevent; 516 ui::ScopedXI2Event xevent;
517 xevent.InitKeyEvent(is_press ? ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED, 517 xevent.InitKeyEvent(is_press ? ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED,
518 key_code, 518 key_code,
519 flags); 519 flags);
520 ui::KeyEvent keyev(xevent, false); 520 ui::KeyEvent keyev(xevent);
521 #else 521 #else
522 ui::EventType type = is_press ? ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED; 522 ui::EventType type = is_press ? ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED;
523 ui::KeyEvent keyev(type, key_code, flags, false); 523 ui::KeyEvent keyev(type, key_code, flags);
524 #endif // OS_WIN 524 #endif // OS_WIN
525 Dispatch(&keyev); 525 Dispatch(&keyev);
526 } 526 }
527 527
528 void EventGenerator::UpdateCurrentDispatcher(const gfx::Point& point) { 528 void EventGenerator::UpdateCurrentDispatcher(const gfx::Point& point) {
529 current_target_ = delegate_->GetTargetAt(point); 529 current_target_ = delegate_->GetTargetAt(point);
530 } 530 }
531 531
532 void EventGenerator::PressButton(int flag) { 532 void EventGenerator::PressButton(int flag) {
533 if (!(flags_ & flag)) { 533 if (!(flags_ & flag)) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 if (!pending_events_.empty()) { 602 if (!pending_events_.empty()) {
603 base::MessageLoopProxy::current()->PostTask( 603 base::MessageLoopProxy::current()->PostTask(
604 FROM_HERE, 604 FROM_HERE,
605 base::Bind(&EventGenerator::DispatchNextPendingEvent, 605 base::Bind(&EventGenerator::DispatchNextPendingEvent,
606 base::Unretained(this))); 606 base::Unretained(this)));
607 } 607 }
608 } 608 }
609 609
610 } // namespace test 610 } // namespace test
611 } // namespace ui 611 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/ozone/events_ozone.cc ('k') | ui/events/test/events_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698