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

Side by Side Diff: chrome/browser/chromeos/input_method/input_method_engine.cc

Issue 346513003: Adds the legacy KeyboardEvent.keyCode attribute for extension IMEs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased. Created 6 years, 6 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 | « no previous file | chrome/browser/chromeos/input_method/input_method_engine_browsertests.cc » ('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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/chromeos/input_method/input_method_engine.h" 5 #include "chrome/browser/chromeos/input_method/input_method_engine.h"
6 6
7 #undef FocusIn 7 #undef FocusIn
8 #undef FocusOut 8 #undef FocusOut
9 #undef RootWindow 9 #undef RootWindow
10 #include <map> 10 #include <map>
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 event.key_code(), 85 event.key_code(),
86 event.flags() ^ ui::EF_CONTROL_DOWN, 86 event.flags() ^ ui::EF_CONTROL_DOWN,
87 false); 87 false);
88 ch = event_no_ctrl.GetCharacter(); 88 ch = event_no_ctrl.GetCharacter();
89 } else { 89 } else {
90 ch = event.GetCharacter(); 90 ch = event.GetCharacter();
91 } 91 }
92 return base::UTF16ToUTF8(base::string16(1, ch)); 92 return base::UTF16ToUTF8(base::string16(1, ch));
93 } 93 }
94 94
95 void GetExtensionKeyboardEventFromKeyEvent(
96 const ui::KeyEvent& event,
97 InputMethodEngine::KeyboardEvent* ext_event) {
98 DCHECK(event.type() == ui::ET_KEY_RELEASED ||
99 event.type() == ui::ET_KEY_PRESSED);
100 DCHECK(ext_event);
101 ext_event->type = (event.type() == ui::ET_KEY_RELEASED) ? "keyup" : "keydown";
102
103 ext_event->code = event.code();
104 ext_event->key_code = static_cast<int>(event.key_code());
105 ext_event->alt_key = event.IsAltDown();
106 ext_event->ctrl_key = event.IsControlDown();
107 ext_event->shift_key = event.IsShiftDown();
108 ext_event->caps_lock = event.IsCapsLockDown();
109 ext_event->key = GetKeyFromEvent(event);
110 }
111
95 } // namespace 112 } // namespace
96 113
97 InputMethodEngine::InputMethodEngine() 114 InputMethodEngine::InputMethodEngine()
98 : current_input_type_(ui::TEXT_INPUT_TYPE_NONE), 115 : current_input_type_(ui::TEXT_INPUT_TYPE_NONE),
99 active_(false), 116 active_(false),
100 context_id_(0), 117 context_id_(0),
101 next_context_id_(1), 118 next_context_id_(1),
102 composition_text_(new CompositionText()), 119 composition_text_(new CompositionText()),
103 composition_cursor_(0), 120 composition_cursor_(0),
104 candidate_window_(new ui::CandidateWindow()), 121 candidate_window_(new ui::CandidateWindow()),
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 return false; 297 return false;
281 } 298 }
282 299
283 ui::EventProcessor* dispatcher = 300 ui::EventProcessor* dispatcher =
284 ash::Shell::GetPrimaryRootWindow()->GetHost()->event_processor(); 301 ash::Shell::GetPrimaryRootWindow()->GetHost()->event_processor();
285 302
286 for (size_t i = 0; i < events.size(); ++i) { 303 for (size_t i = 0; i < events.size(); ++i) {
287 const KeyboardEvent& event = events[i]; 304 const KeyboardEvent& event = events[i];
288 const ui::EventType type = 305 const ui::EventType type =
289 (event.type == "keyup") ? ui::ET_KEY_RELEASED : ui::ET_KEY_PRESSED; 306 (event.type == "keyup") ? ui::ET_KEY_RELEASED : ui::ET_KEY_PRESSED;
307 ui::KeyboardCode key_code = static_cast<ui::KeyboardCode>(event.key_code);
308 if (key_code == ui::VKEY_UNKNOWN)
309 key_code = ui::DomKeycodeToKeyboardCode(event.code);
290 310
291 int flags = ui::EF_NONE; 311 int flags = ui::EF_NONE;
292 flags |= event.alt_key ? ui::EF_ALT_DOWN : ui::EF_NONE; 312 flags |= event.alt_key ? ui::EF_ALT_DOWN : ui::EF_NONE;
293 flags |= event.ctrl_key ? ui::EF_CONTROL_DOWN : ui::EF_NONE; 313 flags |= event.ctrl_key ? ui::EF_CONTROL_DOWN : ui::EF_NONE;
294 flags |= event.shift_key ? ui::EF_SHIFT_DOWN : ui::EF_NONE; 314 flags |= event.shift_key ? ui::EF_SHIFT_DOWN : ui::EF_NONE;
295 flags |= event.caps_lock ? ui::EF_CAPS_LOCK_DOWN : ui::EF_NONE; 315 flags |= event.caps_lock ? ui::EF_CAPS_LOCK_DOWN : ui::EF_NONE;
296 316
297 ui::KeyEvent ui_event(type, 317 ui::KeyEvent ui_event(type,
298 ui::DomKeycodeToKeyboardCode(event.code), 318 key_code,
299 event.code, 319 event.code,
300 flags, 320 flags,
301 false /* is_char */); 321 false /* is_char */);
302 if (!event.key.empty()) 322 if (!event.key.empty())
303 ui_event.set_character(base::UTF8ToUTF16(event.key)[0]); 323 ui_event.set_character(base::UTF8ToUTF16(event.key)[0]);
304 base::AutoReset<const ui::KeyEvent*> reset_sent_key(&sent_key_event_, 324 base::AutoReset<const ui::KeyEvent*> reset_sent_key(&sent_key_event_,
305 &ui_event); 325 &ui_event);
306 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&ui_event); 326 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&ui_event);
307 if (details.dispatcher_destroyed) 327 if (details.dispatcher_destroyed)
308 break; 328 break;
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 } 594 }
575 595
576 void InputMethodEngine::PropertyActivate(const std::string& property_name) { 596 void InputMethodEngine::PropertyActivate(const std::string& property_name) {
577 observer_->OnMenuItemActivated(engine_id_, property_name); 597 observer_->OnMenuItemActivated(engine_id_, property_name);
578 } 598 }
579 599
580 void InputMethodEngine::Reset() { 600 void InputMethodEngine::Reset() {
581 observer_->OnReset(engine_id_); 601 observer_->OnReset(engine_id_);
582 } 602 }
583 603
584 namespace {
585
586 void GetExtensionKeyboardEventFromKeyEvent(
587 const ui::KeyEvent& event,
588 InputMethodEngine::KeyboardEvent* ext_event) {
589 DCHECK(event.type() == ui::ET_KEY_RELEASED ||
590 event.type() == ui::ET_KEY_PRESSED);
591 DCHECK(ext_event);
592 ext_event->type = (event.type() == ui::ET_KEY_RELEASED) ? "keyup" : "keydown";
593
594 ext_event->code = event.code();
595 ext_event->alt_key = event.IsAltDown();
596 ext_event->ctrl_key = event.IsControlDown();
597 ext_event->shift_key = event.IsShiftDown();
598 ext_event->caps_lock = event.IsCapsLockDown();
599 ext_event->key = GetKeyFromEvent(event);
600 }
601
602 } // namespace
603
604 void InputMethodEngine::ProcessKeyEvent( 604 void InputMethodEngine::ProcessKeyEvent(
605 const ui::KeyEvent& key_event, 605 const ui::KeyEvent& key_event,
606 const KeyEventDoneCallback& callback) { 606 const KeyEventDoneCallback& callback) {
607 607
608 KeyEventDoneCallback *handler = new KeyEventDoneCallback(); 608 KeyEventDoneCallback *handler = new KeyEventDoneCallback();
609 *handler = callback; 609 *handler = callback;
610 610
611 KeyboardEvent ext_event; 611 KeyboardEvent ext_event;
612 GetExtensionKeyboardEventFromKeyEvent(key_event, &ext_event); 612 GetExtensionKeyboardEventFromKeyEvent(key_event, &ext_event);
613 613
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 // TODO(nona): Implement it. 679 // TODO(nona): Implement it.
680 break; 680 break;
681 } 681 }
682 } 682 }
683 } 683 }
684 684
685 // TODO(nona): Support item.children. 685 // TODO(nona): Support item.children.
686 } 686 }
687 687
688 } // namespace chromeos 688 } // namespace chromeos
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chromeos/input_method/input_method_engine_browsertests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698