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

Unified Diff: chrome/browser/chromeos/input_method/input_method_util.cc

Issue 1578133003: Supports setting non-login input methods in VPD. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed tests. Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/chromeos/input_method/input_method_util_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/input_method/input_method_util.cc
diff --git a/chrome/browser/chromeos/input_method/input_method_util.cc b/chrome/browser/chromeos/input_method/input_method_util.cc
index e3856f8bdaf5dae9a68376989caac5f9dcbf5d38..8f4b423d28cf66e26bbd14785b5f6edf2a3e5b80 100644
--- a/chrome/browser/chromeos/input_method/input_method_util.cc
+++ b/chrome/browser/chromeos/input_method/input_method_util.cc
@@ -85,8 +85,8 @@ const struct {
const char* const kEngineIdMigrationMap[][2] = {
{"ime:jp:mozc_jp", "nacl_mozc_jp"},
{"ime:jp:mozc_us", "nacl_mozc_us"},
- {"ime:ko:hangul_2set", "hangul_2set"},
- {"ime:ko:hangul", "hangul_2set"},
+ {"ime:ko:hangul_2set", "ko-t-i0-und"},
+ {"ime:ko:hangul", "ko-t-i0-und"},
{"ime:zh-t:array", "zh-hant-t-i0-array-1992"},
{"ime:zh-t:cangjie", "zh-hant-t-i0-cangjie-1987"},
{"ime:zh-t:dayi", "zh-hant-t-i0-dayi-1988"},
@@ -713,9 +713,12 @@ void InputMethodUtil::UpdateHardwareLayoutCache() {
hardware_layouts_ = cached_hardware_layouts_;
MigrateInputMethods(&hardware_layouts_);
+ bool has_xkb = false;
for (size_t i = 0; i < hardware_layouts_.size(); ++i) {
if (IsLoginKeyboard(hardware_layouts_[i]))
hardware_login_layouts_.push_back(hardware_layouts_[i]);
+ if (extension_ime_util::IsKeyboardLayoutExtension(hardware_layouts_[i]))
+ has_xkb = true;
}
if (hardware_login_layouts_.empty()) {
@@ -725,8 +728,20 @@ void InputMethodUtil::UpdateHardwareLayoutCache() {
// So need to make sure |hardware_login_layouts_| is not empty, and
// |hardware_layouts_| contains at least one login layout.
std::string fallback_id = GetFallbackInputMethodDescriptor().id();
- hardware_layouts_.insert(hardware_layouts_.begin(), fallback_id);
hardware_login_layouts_.push_back(fallback_id);
+ // If has XKB input method, it means the XKB input method is
+ // non-login-able. Therefore, add the fallback to the hardware layouts.
+ // If has no XKB input method, then it is up to the VPD to set the correct
+ // hardware input methods.
+ // Examples:
+ // 1) Arabic transliteration input method cannot be used to input Latin
+ // characters. So the VPD should be "xkb:us::eng,t13n:ar".
+ // 2) Korean input method can be used to input Latin characters. So the
+ // VPD should be "ime:ko:hangul". See chrome-os-partner:48623.
+ // 3) Russian keyboard cannot be used to input Latin characters, but it is
+ // XKB input method. So the VPD can be "xkb:ru::rus".
+ if (hardware_layouts_.empty() || has_xkb)
+ hardware_layouts_.insert(hardware_layouts_.begin(), fallback_id);
}
}
« no previous file with comments | « no previous file | chrome/browser/chromeos/input_method/input_method_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698