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

Side by Side Diff: ui/base/ime/input_method_auralinux.cc

Issue 1657593007: Implement chrome.input.ime.setComposition/commitText API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
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 "ui/base/ime/input_method_auralinux.h" 5 #include "ui/base/ime/input_method_auralinux.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/environment.h" 8 #include "base/environment.h"
9 #include "ui/base/ime/ime_bridge.h" 9 #include "ui/base/ime/ime_bridge.h"
10 #include "ui/base/ime/ime_engine_handler_interface.h" 10 #include "ui/base/ime/ime_engine_handler_interface.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 // If there's an active IME extension is listening to the key event, and the 83 // If there's an active IME extension is listening to the key event, and the
84 // current text input client is not password input client, the key event 84 // current text input client is not password input client, the key event
85 // should be dispatched to the extension engine in the two conditions: 85 // should be dispatched to the extension engine in the two conditions:
86 // 1) |filtered| == false: the ET_KEY_PRESSED event of non-character key, 86 // 1) |filtered| == false: the ET_KEY_PRESSED event of non-character key,
87 // or the ET_KEY_RELEASED event of all key. 87 // or the ET_KEY_RELEASED event of all key.
88 // 2) |filtered| == true && NeedInsertChar(): the ET_KEY_PRESSED event of 88 // 2) |filtered| == true && NeedInsertChar(): the ET_KEY_PRESSED event of
89 // character key. 89 // character key.
90 if (text_input_type_ != TEXT_INPUT_TYPE_PASSWORD && 90 if (text_input_type_ != TEXT_INPUT_TYPE_PASSWORD &&
91 GetEngine() && GetEngine()->IsInterestedInKeyEvent() && 91 GetEngine() && GetEngine()->IsInterestedInKeyEvent() &&
92 (!filtered || NeedInsertChar())) { 92 (!filtered || NeedInsertChar())) {
93 // Make true that we don't handle IME API calling of setComposition and
94 // commitText while the extension is processing key event.
95 handling_key_event_ = true;
93 ui::IMEEngineHandlerInterface::KeyEventDoneCallback callback = 96 ui::IMEEngineHandlerInterface::KeyEventDoneCallback callback =
94 base::Bind(&InputMethodAuraLinux::ProcessKeyEventDone, 97 base::Bind(&InputMethodAuraLinux::ProcessKeyEventDone,
95 weak_ptr_factory_.GetWeakPtr(), 98 weak_ptr_factory_.GetWeakPtr(),
96 base::Owned(new ui::KeyEvent(*event)), filtered); 99 base::Owned(new ui::KeyEvent(*event)), filtered);
97 GetEngine()->ProcessKeyEvent(*event, callback); 100 GetEngine()->ProcessKeyEvent(*event, callback);
98 } else { 101 } else {
99 ProcessKeyEventDone(event, filtered, false); 102 ProcessKeyEventDone(event, filtered, false);
100 } 103 }
101 } 104 }
102 105
103 void InputMethodAuraLinux::ProcessKeyEventDone(ui::KeyEvent* event, 106 void InputMethodAuraLinux::ProcessKeyEventDone(ui::KeyEvent* event,
104 bool filtered, 107 bool filtered,
105 bool is_handled) { 108 bool is_handled) {
109 handling_key_event_ = false;
110
106 DCHECK(event); 111 DCHECK(event);
107 if (is_handled) 112 if (is_handled)
108 return; 113 return;
109 114
110 // If the IME extension has not handled the key event, passes the keyevent 115 // If the IME extension has not handled the key event, passes the keyevent
111 // back to the previous processing flow. Preconditions for this situation: 116 // back to the previous processing flow. Preconditions for this situation:
112 // 1) |filtered| == false 117 // 1) |filtered| == false
113 // 2) |filtered| == true && NeedInsertChar() 118 // 2) |filtered| == true && NeedInsertChar()
114 ui::EventDispatchDetails details; 119 ui::EventDispatchDetails details;
115 if (event->type() == ui::ET_KEY_PRESSED && filtered) { 120 if (event->type() == ui::ET_KEY_PRESSED && filtered) {
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 client->ConfirmCompositionText(); 417 client->ConfirmCompositionText();
413 418
414 if (GetEngine()) 419 if (GetEngine())
415 GetEngine()->Reset(); 420 GetEngine()->Reset();
416 } 421 }
417 422
418 ResetContext(); 423 ResetContext();
419 } 424 }
420 425
421 } // namespace ui 426 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698