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

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: . 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 // The whitelist for enabling extension based xkb keyboards at login session.
16 const char* kLoginLayoutWhitelist[] = {
17 "be",
18 "br",
19 "ca",
20 "ca(eng)",
21 "ca(multix)",
22 "ch",
23 "ch(fr)",
24 "cz",
25 "cz(qwerty)",
26 "de",
27 "de(neo)",
28 "dk",
29 "ee",
30 "es",
31 "es(cat)",
32 "fi",
33 "fr",
34 "gb(dvorak)",
35 "gb(extd)",
36 "hr",
37 "hu",
38 "is",
39 "it",
40 "jp",
41 "latam",
42 "lt",
43 "lv(apostrophe)",
44 "no",
45 "pl",
46 "pt",
47 "ro",
48 "se",
49 "si",
50 "tr",
51 "us",
52 "us(altgr-intl)",
53 "us(colemak)",
54 "us(dvorak)",
55 "us(intl)"
56 };
57
58 } // namespace
59
13 ComponentExtensionEngine::ComponentExtensionEngine() { 60 ComponentExtensionEngine::ComponentExtensionEngine() {
14 } 61 }
15 62
16 ComponentExtensionEngine::~ComponentExtensionEngine() { 63 ComponentExtensionEngine::~ComponentExtensionEngine() {
17 } 64 }
18 65
19 ComponentExtensionIME::ComponentExtensionIME() { 66 ComponentExtensionIME::ComponentExtensionIME() {
20 } 67 }
21 68
22 ComponentExtensionIME::~ComponentExtensionIME() { 69 ComponentExtensionIME::~ComponentExtensionIME() {
23 } 70 }
24 71
25 ComponentExtensionIMEManagerDelegate::ComponentExtensionIMEManagerDelegate() { 72 ComponentExtensionIMEManagerDelegate::ComponentExtensionIMEManagerDelegate() {
26 } 73 }
27 74
28 ComponentExtensionIMEManagerDelegate::~ComponentExtensionIMEManagerDelegate() { 75 ComponentExtensionIMEManagerDelegate::~ComponentExtensionIMEManagerDelegate() {
29 } 76 }
30 77
31 ComponentExtensionIMEManager::ComponentExtensionIMEManager() 78 ComponentExtensionIMEManager::ComponentExtensionIMEManager()
32 : is_initialized_(false) { 79 : is_initialized_(false) {
80 for (size_t i = 0; i < arraysize(kLoginLayoutWhitelist); ++i) {
81 login_layout_set_.insert(kLoginLayoutWhitelist[i]);
82 }
33 } 83 }
34 84
35 ComponentExtensionIMEManager::~ComponentExtensionIMEManager() { 85 ComponentExtensionIMEManager::~ComponentExtensionIMEManager() {
36 } 86 }
37 87
38 void ComponentExtensionIMEManager::Initialize( 88 void ComponentExtensionIMEManager::Initialize(
39 scoped_ptr<ComponentExtensionIMEManagerDelegate> delegate) { 89 scoped_ptr<ComponentExtensionIMEManagerDelegate> delegate) {
40 delegate_ = delegate.Pass(); 90 delegate_ = delegate.Pass();
41 component_extension_imes_ = delegate_->ListIME(); 91 component_extension_imes_ = delegate_->ListIME();
42 is_initialized_ = true; 92 is_initialized_ = true;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 177
128 input_method::InputMethodDescriptors 178 input_method::InputMethodDescriptors
129 ComponentExtensionIMEManager::GetAllIMEAsInputMethodDescriptor() { 179 ComponentExtensionIMEManager::GetAllIMEAsInputMethodDescriptor() {
130 input_method::InputMethodDescriptors result; 180 input_method::InputMethodDescriptors result;
131 for (size_t i = 0; i < component_extension_imes_.size(); ++i) { 181 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) { 182 for (size_t j = 0; j < component_extension_imes_[i].engines.size(); ++j) {
133 const std::string input_method_id = 183 const std::string input_method_id =
134 extension_ime_util::GetComponentInputMethodID( 184 extension_ime_util::GetComponentInputMethodID(
135 component_extension_imes_[i].id, 185 component_extension_imes_[i].id,
136 component_extension_imes_[i].engines[j].engine_id); 186 component_extension_imes_[i].engines[j].engine_id);
187 const std::vector<std::string>& layouts =
188 component_extension_imes_[i].engines[j].layouts;
137 result.push_back( 189 result.push_back(
138 input_method::InputMethodDescriptor( 190 input_method::InputMethodDescriptor(
139 input_method_id, 191 input_method_id,
140 component_extension_imes_[i].engines[j].display_name, 192 component_extension_imes_[i].engines[j].display_name,
141 std::string(), // TODO(uekawa): Set short name. 193 std::string(), // TODO(uekawa): Set short name.
142 component_extension_imes_[i].engines[j].layouts, 194 layouts,
143 component_extension_imes_[i].engines[j].language_codes, 195 component_extension_imes_[i].engines[j].language_codes,
144 // Enables extension based xkb keyboards on login screen. 196 // Enables extension based xkb keyboards on login screen.
145 extension_ime_util::IsKeyboardLayoutExtension(input_method_id), 197 extension_ime_util::IsKeyboardLayoutExtension(
198 input_method_id) && IsInLoginLayoutWhitelist(layouts),
146 component_extension_imes_[i].options_page_url, 199 component_extension_imes_[i].options_page_url,
147 component_extension_imes_[i].input_view_url)); 200 component_extension_imes_[i].input_view_url));
148 } 201 }
149 } 202 }
150 return result; 203 return result;
151 } 204 }
152 205
153 void ComponentExtensionIMEManager::AddObserver(Observer* observer) { 206 void ComponentExtensionIMEManager::AddObserver(Observer* observer) {
154 observers_.AddObserver(observer); 207 observers_.AddObserver(observer);
155 } 208 }
(...skipping 23 matching lines...) Expand all
179 if (out_extension) 232 if (out_extension)
180 *out_extension = component_extension_imes_[i]; 233 *out_extension = component_extension_imes_[i];
181 if (out_engine) 234 if (out_engine)
182 *out_engine = component_extension_imes_[i].engines[j]; 235 *out_engine = component_extension_imes_[i].engines[j];
183 return true; 236 return true;
184 } 237 }
185 } 238 }
186 return false; 239 return false;
187 } 240 }
188 241
242 bool ComponentExtensionIMEManager::IsInLoginLayoutWhitelist(
243 const std::vector<std::string>& layouts) {
244 for (size_t i = 0; i < layouts.size(); ++i) {
245 if (login_layout_set_.find(layouts[i]) != login_layout_set_.end())
246 return true;
247 }
248 return false;
249 }
250
189 } // namespace chromeos 251 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698