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

Side by Side Diff: chromeos/ime/component_extension_ime_manager.cc

Issue 178343005: [IME] migrate the xkb ID to extension based xkb ID. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unit tests failures for when the flag is true and false. Created 6 years, 9 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 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 "chromeos/ime/component_extension_ime_manager.h" 5 #include "chromeos/ime/component_extension_ime_manager.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "chromeos/ime/extension_ime_util.h" 9 #include "chromeos/ime/extension_ime_util.h"
10 10
11 namespace chromeos { 11 namespace chromeos {
12 12
13 namespace {
14
15 const char* kLoginLayoutWhitelist[] = {
16 "be",
17 "be",
18 "be",
19 "br",
20 "ca",
21 "ca(eng)",
22 "ca(multix)",
23 "ch",
24 "ch(fr)",
25 "cz",
26 "cz(qwerty)",
27 "de",
28 "de(neo)",
29 "dk",
30 "ee",
31 "es",
32 "es(cat)",
33 "fi",
34 "fr",
35 "gb(dvorak)",
36 "gb(extd)",
37 "hr",
38 "hu",
39 "is",
40 "it",
41 "jp",
42 "latam",
43 "lt",
44 "lv(apostrophe)",
45 "no",
46 "pl",
47 "pt",
48 "ro",
49 "se",
50 "si",
51 "tr",
52 "us",
53 "us(altgr-intl)",
54 "us(colemak)",
55 "us(dvorak)",
56 "us(intl)"
57 };
58
59 bool WhitelistContains(const char* s) {
60 int from = 0, to = arraysize(kLoginLayoutWhitelist);
61 while (from < to) {
62 int mid = from + (to - from) / 2;
63 int cmp = strcmp(s, kLoginLayoutWhitelist[mid]);
64 if (cmp > 0)
65 from = mid + 1;
66 else if (cmp < 0)
67 to = mid - 1;
68 else
69 return true;
70 }
71 return false;
72 }
73
74 bool IsInLoginLayoutWhitelist(std::vector<std::string>& layouts) {
75 for (size_t i = 0; i < layouts.size(); ++i) {
76 if (WhitelistContains(layouts[i].c_str()))
77 return true;
78 }
79 return false;
80 }
81
82 } // namespace
83
13 ComponentExtensionEngine::ComponentExtensionEngine() { 84 ComponentExtensionEngine::ComponentExtensionEngine() {
14 } 85 }
15 86
16 ComponentExtensionEngine::~ComponentExtensionEngine() { 87 ComponentExtensionEngine::~ComponentExtensionEngine() {
17 } 88 }
18 89
19 ComponentExtensionIME::ComponentExtensionIME() { 90 ComponentExtensionIME::ComponentExtensionIME() {
20 } 91 }
21 92
22 ComponentExtensionIME::~ComponentExtensionIME() { 93 ComponentExtensionIME::~ComponentExtensionIME() {
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 198
128 input_method::InputMethodDescriptors 199 input_method::InputMethodDescriptors
129 ComponentExtensionIMEManager::GetAllIMEAsInputMethodDescriptor() { 200 ComponentExtensionIMEManager::GetAllIMEAsInputMethodDescriptor() {
130 input_method::InputMethodDescriptors result; 201 input_method::InputMethodDescriptors result;
131 for (size_t i = 0; i < component_extension_imes_.size(); ++i) { 202 for (size_t i = 0; i < component_extension_imes_.size(); ++i) {
132 for (size_t j = 0; j < component_extension_imes_[i].engines.size(); ++j) { 203 for (size_t j = 0; j < component_extension_imes_[i].engines.size(); ++j) {
133 const std::string input_method_id = 204 const std::string input_method_id =
134 extension_ime_util::GetComponentInputMethodID( 205 extension_ime_util::GetComponentInputMethodID(
135 component_extension_imes_[i].id, 206 component_extension_imes_[i].id,
136 component_extension_imes_[i].engines[j].engine_id); 207 component_extension_imes_[i].engines[j].engine_id);
208 std::vector<std::string>& layouts =
209 component_extension_imes_[i].engines[j].layouts;
137 result.push_back( 210 result.push_back(
138 input_method::InputMethodDescriptor( 211 input_method::InputMethodDescriptor(
139 input_method_id, 212 input_method_id,
140 component_extension_imes_[i].engines[j].display_name, 213 component_extension_imes_[i].engines[j].display_name,
141 std::string(), // TODO(uekawa): Set short name. 214 std::string(), // TODO(uekawa): Set short name.
142 component_extension_imes_[i].engines[j].layouts, 215 layouts,
143 component_extension_imes_[i].engines[j].language_codes, 216 component_extension_imes_[i].engines[j].language_codes,
144 // Enables extension based xkb keyboards on login screen. 217 // Enables extension based xkb keyboards on login screen.
145 extension_ime_util::IsKeyboardLayoutExtension(input_method_id), 218 extension_ime_util::IsKeyboardLayoutExtension(
219 input_method_id) && IsInLoginLayoutWhitelist(layouts),
146 component_extension_imes_[i].options_page_url, 220 component_extension_imes_[i].options_page_url,
147 component_extension_imes_[i].input_view_url)); 221 component_extension_imes_[i].input_view_url));
148 } 222 }
149 } 223 }
150 return result; 224 return result;
151 } 225 }
152 226
153 void ComponentExtensionIMEManager::AddObserver(Observer* observer) { 227 void ComponentExtensionIMEManager::AddObserver(Observer* observer) {
154 observers_.AddObserver(observer); 228 observers_.AddObserver(observer);
155 } 229 }
(...skipping 24 matching lines...) Expand all
180 *out_extension = component_extension_imes_[i]; 254 *out_extension = component_extension_imes_[i];
181 if (out_engine) 255 if (out_engine)
182 *out_engine = component_extension_imes_[i].engines[j]; 256 *out_engine = component_extension_imes_[i].engines[j];
183 return true; 257 return true;
184 } 258 }
185 } 259 }
186 return false; 260 return false;
187 } 261 }
188 262
189 } // namespace chromeos 263 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698