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

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

Issue 22980018: Disable non Latin keyboard layout on Lock screen and Sign-in screen. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix test case. Created 7 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_manager_impl.h" 5 #include "chrome/browser/chromeos/input_method/input_method_manager_impl.h"
6 6
7 #include <algorithm> // std::find 7 #include <algorithm> // std::find
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 } kMigrationHangulKeyboardToInputMethodID[] = { 108 } kMigrationHangulKeyboardToInputMethodID[] = {
109 { "2", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_2set" }, 109 { "2", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_2set" },
110 { "3f", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_3setfinal" }, 110 { "3f", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_3setfinal" },
111 { "39", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_3set390" }, 111 { "39", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_3set390" },
112 { "3s", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_3setnoshift" }, 112 { "3s", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_3setnoshift" },
113 { "ro", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_romaja" }, 113 { "ro", "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_romaja" },
114 }; 114 };
115 115
116 } // namespace 116 } // namespace
117 117
118 bool InputMethodManagerImpl::IsFullLatinKeyboard( 118 bool InputMethodManagerImpl::IsLoginKeyboard(
119 const std::string& layout) const { 119 const std::string& layout) const {
120 const std::string& lang = util_.GetLanguageCodeFromInputMethodId(layout); 120 const InputMethodDescriptor* ime =
121 return full_latin_keyboard_checker.IsFullLatinKeyboard(layout, lang); 121 util_.GetInputMethodDescriptorFromId(layout);
122 return ime ? ime->is_login_keyboard() : false;
122 } 123 }
123 124
124 InputMethodManagerImpl::InputMethodManagerImpl( 125 InputMethodManagerImpl::InputMethodManagerImpl(
125 scoped_ptr<InputMethodDelegate> delegate) 126 scoped_ptr<InputMethodDelegate> delegate)
126 : delegate_(delegate.Pass()), 127 : delegate_(delegate.Pass()),
127 state_(STATE_LOGIN_SCREEN), 128 state_(STATE_LOGIN_SCREEN),
128 util_(delegate_.get(), GetSupportedInputMethods()), 129 util_(delegate_.get(), GetSupportedInputMethods()),
129 component_extension_ime_manager_(new ComponentExtensionIMEManager()), 130 component_extension_ime_manager_(new ComponentExtensionIMEManager()),
130 weak_ptr_factory_(this) { 131 weak_ptr_factory_(this) {
131 IBusDaemonController::GetInstance()->AddObserver(this); 132 IBusDaemonController::GetInstance()->AddObserver(this);
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 &candidates); 240 &candidates);
240 // Add the hardware keyboard as well. We should always add this so users 241 // Add the hardware keyboard as well. We should always add this so users
241 // can use the hardware keyboard on the login screen and the screen locker. 242 // can use the hardware keyboard on the login screen and the screen locker.
242 candidates.push_back(util_.GetHardwareInputMethodId()); 243 candidates.push_back(util_.GetHardwareInputMethodId());
243 244
244 std::vector<std::string> layouts; 245 std::vector<std::string> layouts;
245 // First, add the initial input method ID, if it's requested, to 246 // First, add the initial input method ID, if it's requested, to
246 // layouts, so it appears first on the list of active input 247 // layouts, so it appears first on the list of active input
247 // methods at the input language status menu. 248 // methods at the input language status menu.
248 if (util_.IsValidInputMethodId(initial_layout) && 249 if (util_.IsValidInputMethodId(initial_layout) &&
249 InputMethodUtil::IsKeyboardLayout(initial_layout)) { 250 IsLoginKeyboard(initial_layout)) {
250 layouts.push_back(initial_layout); 251 layouts.push_back(initial_layout);
251 } else if (!initial_layout.empty()) { 252 } else if (!initial_layout.empty()) {
252 DVLOG(1) << "EnableLayouts: ignoring non-keyboard or invalid ID: " 253 DVLOG(1) << "EnableLayouts: ignoring non-keyboard or invalid ID: "
253 << initial_layout; 254 << initial_layout;
254 } 255 }
255 256
256 // Add candidates to layouts, while skipping duplicates. 257 // Add candidates to layouts, while skipping duplicates.
257 for (size_t i = 0; i < candidates.size(); ++i) { 258 for (size_t i = 0; i < candidates.size(); ++i) {
258 const std::string& candidate = candidates[i]; 259 const std::string& candidate = candidates[i];
259 // Not efficient, but should be fine, as the two vectors are very 260 // Not efficient, but should be fine, as the two vectors are very
260 // short (2-5 items). 261 // short (2-5 items).
261 if (!Contains(layouts, candidate)) 262 if (!Contains(layouts, candidate) && IsLoginKeyboard(candidate))
262 layouts.push_back(candidate); 263 layouts.push_back(candidate);
263 } 264 }
264 265
265 active_input_method_ids_.swap(layouts); 266 active_input_method_ids_.swap(layouts);
266 ChangeInputMethod(initial_layout); // you can pass empty |initial_layout|. 267 ChangeInputMethod(initial_layout); // you can pass empty |initial_layout|.
267 } 268 }
268 269
269 // Adds new input method to given list. 270 // Adds new input method to given list.
270 bool InputMethodManagerImpl::EnableInputMethodImpl( 271 bool InputMethodManagerImpl::EnableInputMethodImpl(
271 const std::string& input_method_id, 272 const std::string& input_method_id,
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
555 if (state_ == STATE_TERMINATING) 556 if (state_ == STATE_TERMINATING)
556 return; 557 return;
557 558
558 if (!extension_ime_util::IsExtensionIME(id) && 559 if (!extension_ime_util::IsExtensionIME(id) &&
559 !ComponentExtensionIMEManager::IsComponentExtensionIMEId(id)) { 560 !ComponentExtensionIMEManager::IsComponentExtensionIMEId(id)) {
560 DVLOG(1) << id << " is not a valid extension input method ID."; 561 DVLOG(1) << id << " is not a valid extension input method ID.";
561 return; 562 return;
562 } 563 }
563 564
564 extra_input_methods_[id] = 565 extra_input_methods_[id] =
565 InputMethodDescriptor(id, name, layouts, languages, options_url); 566 InputMethodDescriptor(id, name, layouts, languages, false, options_url);
566 if (Contains(enabled_extension_imes_, id) && 567 if (Contains(enabled_extension_imes_, id) &&
567 !ComponentExtensionIMEManager::IsComponentExtensionIMEId(id)) { 568 !ComponentExtensionIMEManager::IsComponentExtensionIMEId(id)) {
568 if (!Contains(active_input_method_ids_, id)) { 569 if (!Contains(active_input_method_ids_, id)) {
569 active_input_method_ids_.push_back(id); 570 active_input_method_ids_.push_back(id);
570 } else { 571 } else {
571 DVLOG(1) << "AddInputMethodExtension: alread added: " 572 DVLOG(1) << "AddInputMethodExtension: alread added: "
572 << id << ", " << name; 573 << id << ", " << name;
573 // Call Start() anyway, just in case. 574 // Call Start() anyway, just in case.
574 } 575 }
575 576
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 // We'll add the hardware keyboard if it's not included in 919 // We'll add the hardware keyboard if it's not included in
919 // |active_input_method_list| so that the user can always use the hardware 920 // |active_input_method_list| so that the user can always use the hardware
920 // keyboard on the screen locker. 921 // keyboard on the screen locker.
921 bool should_add_hardware_keyboard = true; 922 bool should_add_hardware_keyboard = true;
922 923
923 active_input_method_ids_.clear(); 924 active_input_method_ids_.clear();
924 for (size_t i = 0; i < saved_active_input_method_ids_.size(); ++i) { 925 for (size_t i = 0; i < saved_active_input_method_ids_.size(); ++i) {
925 const std::string& input_method_id = saved_active_input_method_ids_[i]; 926 const std::string& input_method_id = saved_active_input_method_ids_[i];
926 // Skip if it's not a keyboard layout. Drop input methods including 927 // Skip if it's not a keyboard layout. Drop input methods including
927 // extension ones. 928 // extension ones.
928 if (!InputMethodUtil::IsKeyboardLayout(input_method_id)) 929 if (!IsLoginKeyboard(input_method_id))
929 continue; 930 continue;
930 active_input_method_ids_.push_back(input_method_id); 931 active_input_method_ids_.push_back(input_method_id);
931 if (input_method_id == hardware_keyboard_id) 932 if (input_method_id == hardware_keyboard_id)
932 should_add_hardware_keyboard = false; 933 should_add_hardware_keyboard = false;
933 } 934 }
934 if (should_add_hardware_keyboard) 935 if (should_add_hardware_keyboard)
935 active_input_method_ids_.push_back(hardware_keyboard_id); 936 active_input_method_ids_.push_back(hardware_keyboard_id);
936 937
937 ChangeInputMethod(current_input_method_.id()); 938 ChangeInputMethod(current_input_method_.id());
938 } 939 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 else 971 else
971 DVLOG(1) << "Failed to initialize the candidate window controller"; 972 DVLOG(1) << "Failed to initialize the candidate window controller";
972 } 973 }
973 974
974 bool InputMethodManagerImpl::IsIBusConnectionAlive() { 975 bool InputMethodManagerImpl::IsIBusConnectionAlive() {
975 return DBusThreadManager::Get() && DBusThreadManager::Get()->GetIBusClient(); 976 return DBusThreadManager::Get() && DBusThreadManager::Get()->GetIBusClient();
976 } 977 }
977 978
978 } // namespace input_method 979 } // namespace input_method
979 } // namespace chromeos 980 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698