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

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

Issue 457943002: Improve perforance for component IME extensions initialization by using map instead of vector in Co… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: changed solution, test green. Created 6 years, 4 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 "base/logging.h" 5 #include "base/logging.h"
6 #include "chromeos/ime/component_extension_ime_manager.h" 6 #include "chromeos/ime/component_extension_ime_manager.h"
7 #include "chromeos/ime/extension_ime_util.h" 7 #include "chromeos/ime/extension_ime_util.h"
8 #include "chromeos/ime/mock_component_extension_ime_manager_delegate.h" 8 #include "chromeos/ime/mock_component_extension_ime_manager_delegate.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
11 namespace chromeos { 11 namespace chromeos {
12 namespace input_method { 12 namespace input_method {
13 13
14 namespace { 14 namespace {
15 15
16 class ComponentExtensionIMEManagerTest : public testing::Test { 16 class ComponentExtensionIMEManagerTest : public testing::Test {
17 public: 17 public:
18 ComponentExtensionIMEManagerTest() : mock_delegate_(NULL) {} 18 ComponentExtensionIMEManagerTest() : mock_delegate_(NULL) {}
19 19
20 virtual void SetUp() { 20 virtual void SetUp() {
21 ime_list_.clear(); 21 ime_list_.clear();
22 22
23 ComponentExtensionIME ext1; 23 ComponentExtensionIME ext1;
24 ext1.id = "ext1_id"; 24 ext1.id = "ext1_id_xxxxxxxxxxxxxxxxxxxxxxxx";
25 ext1.description = "ext1_description"; 25 ext1.description = "ext1_description";
26 ext1.options_page_url = 26 ext1.options_page_url =
27 GURL("chrome-extension://" + ext1.id + "/options.html"); 27 GURL("chrome-extension://" + ext1.id + "/options.html");
28 ext1.path = base::FilePath("ext1_file_path"); 28 ext1.path = base::FilePath("ext1_file_path");
29 29
30 ComponentExtensionEngine ext1_engine1; 30 ComponentExtensionEngine ext1_engine1;
31 ext1_engine1.engine_id = "ext1_engine1_engine_id"; 31 ext1_engine1.engine_id = "ext1_engine1_engine_id";
32 ext1_engine1.display_name = "ext1_engine_1_display_name"; 32 ext1_engine1.display_name = "ext1_engine_1_display_name";
33 ext1_engine1.language_codes.push_back("en"); 33 ext1_engine1.language_codes.push_back("en");
34 ext1_engine1.layouts.push_back("us"); 34 ext1_engine1.layouts.push_back("us");
35 ext1.engines.push_back(ext1_engine1); 35 ext1.engines.push_back(ext1_engine1);
36 36
37 ComponentExtensionEngine ext1_engine2; 37 ComponentExtensionEngine ext1_engine2;
38 ext1_engine2.engine_id = "ext1_engine2_engine_id"; 38 ext1_engine2.engine_id = "ext1_engine2_engine_id";
39 ext1_engine2.display_name = "ext1_engine2_display_name"; 39 ext1_engine2.display_name = "ext1_engine2_display_name";
40 ext1_engine2.language_codes.push_back("en"); 40 ext1_engine2.language_codes.push_back("en");
41 ext1_engine2.layouts.push_back("us"); 41 ext1_engine2.layouts.push_back("us");
42 ext1.engines.push_back(ext1_engine2); 42 ext1.engines.push_back(ext1_engine2);
43 43
44 ComponentExtensionEngine ext1_engine3; 44 ComponentExtensionEngine ext1_engine3;
45 ext1_engine3.engine_id = "ext1_engine3_engine_id"; 45 ext1_engine3.engine_id = "ext1_engine3_engine_id";
46 ext1_engine3.display_name = "ext1_engine3_display_name"; 46 ext1_engine3.display_name = "ext1_engine3_display_name";
47 ext1_engine3.language_codes.push_back("ja"); 47 ext1_engine3.language_codes.push_back("ja");
48 ext1_engine3.layouts.push_back("us"); 48 ext1_engine3.layouts.push_back("us");
49 ext1.engines.push_back(ext1_engine3); 49 ext1.engines.push_back(ext1_engine3);
50 50
51 ime_list_.push_back(ext1); 51 ime_list_.push_back(ext1);
52 52
53 ComponentExtensionIME ext2; 53 ComponentExtensionIME ext2;
54 ext2.id = "ext2_id"; 54 ext2.id = "ext2_id_xxxxxxxxxxxxxxxxxxxxxxxx";
55 ext2.description = "ext2_description"; 55 ext2.description = "ext2_description";
56 ext2.path = base::FilePath("ext2_file_path"); 56 ext2.path = base::FilePath("ext2_file_path");
57 57
58 ComponentExtensionEngine ext2_engine1; 58 ComponentExtensionEngine ext2_engine1;
59 ext2_engine1.engine_id = "ext2_engine1_engine_id"; 59 ext2_engine1.engine_id = "ext2_engine1_engine_id";
60 ext2_engine1.display_name = "ext2_engine_1_display_name"; 60 ext2_engine1.display_name = "ext2_engine_1_display_name";
61 ext2_engine1.language_codes.push_back("en"); 61 ext2_engine1.language_codes.push_back("en");
62 ext2_engine1.layouts.push_back("us"); 62 ext2_engine1.layouts.push_back("us");
63 ext2.engines.push_back(ext2_engine1); 63 ext2.engines.push_back(ext2_engine1);
64 64
65 ComponentExtensionEngine ext2_engine2; 65 ComponentExtensionEngine ext2_engine2;
66 ext2_engine2.engine_id = "ext2_engine2_engine_id"; 66 ext2_engine2.engine_id = "ext2_engine2_engine_id";
67 ext2_engine2.display_name = "ext2_engine2_display_name"; 67 ext2_engine2.display_name = "ext2_engine2_display_name";
68 ext2_engine2.language_codes.push_back("hi"); 68 ext2_engine2.language_codes.push_back("hi");
69 ext2_engine2.layouts.push_back("us"); 69 ext2_engine2.layouts.push_back("us");
70 ext2.engines.push_back(ext2_engine2); 70 ext2.engines.push_back(ext2_engine2);
71 71
72 ComponentExtensionEngine ext2_engine3; 72 ComponentExtensionEngine ext2_engine3;
73 ext2_engine3.engine_id = "ext2_engine3_engine_id"; 73 ext2_engine3.engine_id = "ext2_engine3_engine_id";
74 ext2_engine3.display_name = "ext2_engine3_display_name"; 74 ext2_engine3.display_name = "ext2_engine3_display_name";
75 ext2_engine3.language_codes.push_back("ja"); 75 ext2_engine3.language_codes.push_back("ja");
76 ext2_engine3.layouts.push_back("jp"); 76 ext2_engine3.layouts.push_back("jp");
77 ext2.engines.push_back(ext2_engine3); 77 ext2.engines.push_back(ext2_engine3);
78 78
79 ime_list_.push_back(ext2); 79 ime_list_.push_back(ext2);
80 80
81 ComponentExtensionIME ext3; 81 ComponentExtensionIME ext3;
82 ext3.id = "ext3_id"; 82 ext3.id = "ext3_id_xxxxxxxxxxxxxxxxxxxxxxxx";
83 ext3.description = "ext3_description"; 83 ext3.description = "ext3_description";
84 ext3.options_page_url = 84 ext3.options_page_url =
85 GURL("chrome-extension://" + ext3.id + "/options.html"); 85 GURL("chrome-extension://" + ext3.id + "/options.html");
86 ext3.path = base::FilePath("ext3_file_path"); 86 ext3.path = base::FilePath("ext3_file_path");
87 87
88 ComponentExtensionEngine ext3_engine1; 88 ComponentExtensionEngine ext3_engine1;
89 ext3_engine1.engine_id = "ext3_engine1_engine_id"; 89 ext3_engine1.engine_id = "ext3_engine1_engine_id";
90 ext3_engine1.display_name = "ext3_engine_1_display_name"; 90 ext3_engine1.display_name = "ext3_engine_1_display_name";
91 ext3_engine1.language_codes.push_back("hi"); 91 ext3_engine1.language_codes.push_back("hi");
92 ext3_engine1.layouts.push_back("us"); 92 ext3_engine1.layouts.push_back("us");
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 "AAAA", "012345"))); 174 "AAAA", "012345")));
175 } 175 }
176 176
177 TEST_F(ComponentExtensionIMEManagerTest, IsWhitelistedExtensionTest) { 177 TEST_F(ComponentExtensionIMEManagerTest, IsWhitelistedExtensionTest) {
178 EXPECT_TRUE(component_ext_mgr_->IsWhitelistedExtension(ime_list_[0].id)); 178 EXPECT_TRUE(component_ext_mgr_->IsWhitelistedExtension(ime_list_[0].id));
179 EXPECT_TRUE(component_ext_mgr_->IsWhitelistedExtension(ime_list_[1].id)); 179 EXPECT_TRUE(component_ext_mgr_->IsWhitelistedExtension(ime_list_[1].id));
180 EXPECT_FALSE(component_ext_mgr_->IsWhitelistedExtension("dummy")); 180 EXPECT_FALSE(component_ext_mgr_->IsWhitelistedExtension("dummy"));
181 EXPECT_FALSE(component_ext_mgr_->IsWhitelistedExtension("")); 181 EXPECT_FALSE(component_ext_mgr_->IsWhitelistedExtension(""));
182 } 182 }
183 183
184 TEST_F(ComponentExtensionIMEManagerTest, GetNameDescriptionTest) {
185 for (size_t i = 0; i < ime_list_.size(); ++i) {
186 for (size_t j = 0; j < ime_list_[i].engines.size(); ++j) {
187 const ComponentExtensionEngine& engine
188 = ime_list_[i].engines[j];
189
190 const std::string input_method_id =
191 extension_ime_util::GetComponentInputMethodID(
192 ime_list_[i].id,
193 engine.engine_id);
194
195 EXPECT_EQ(input_method_id,
196 component_ext_mgr_->GetId(ime_list_[i].id, engine.engine_id));
197 EXPECT_EQ(engine.display_name,
198 component_ext_mgr_->GetName(input_method_id));
199 EXPECT_EQ(engine.description,
200 component_ext_mgr_->GetDescription(input_method_id));
201 }
202 }
203 }
204
205 TEST_F(ComponentExtensionIMEManagerTest, ListIMEByLanguageTest) {
206 const std::string hindi_layout1 =
207 extension_ime_util::GetComponentInputMethodID(
208 ime_list_[1].id, ime_list_[1].engines[1].engine_id);
209 const std::string hindi_layout2 =
210 extension_ime_util::GetComponentInputMethodID(
211 ime_list_[2].id, ime_list_[2].engines[0].engine_id);
212
213 std::vector<std::string> hindi_list
214 = component_ext_mgr_->ListIMEByLanguage("hi");
215 ASSERT_EQ(2UL, hindi_list.size());
216 EXPECT_TRUE(hindi_list[0] == hindi_layout1 || hindi_list[0] == hindi_layout2);
217 EXPECT_TRUE(hindi_list[1] == hindi_layout1 || hindi_list[1] == hindi_layout2);
218
219 EXPECT_EQ(0UL, component_ext_mgr_->ListIMEByLanguage("ru").size());
220 EXPECT_EQ(0UL, component_ext_mgr_->ListIMEByLanguage("").size());
221 EXPECT_EQ(0UL, component_ext_mgr_->ListIMEByLanguage("invalid").size());
222 EXPECT_EQ(5UL, component_ext_mgr_->ListIMEByLanguage("en").size());
223 EXPECT_EQ(2UL, component_ext_mgr_->ListIMEByLanguage("ja").size());
224 }
225
226 TEST_F(ComponentExtensionIMEManagerTest, GetAllIMEAsInputMethodDescriptor) { 184 TEST_F(ComponentExtensionIMEManagerTest, GetAllIMEAsInputMethodDescriptor) {
227 input_method::InputMethodDescriptors descriptors = 185 input_method::InputMethodDescriptors descriptors =
228 component_ext_mgr_->GetAllIMEAsInputMethodDescriptor(); 186 component_ext_mgr_->GetAllIMEAsInputMethodDescriptor();
229 size_t total_ime_size = 0; 187 size_t total_ime_size = 0;
230 for (size_t i = 0; i < ime_list_.size(); ++i) { 188 for (size_t i = 0; i < ime_list_.size(); ++i) {
231 total_ime_size += ime_list_[i].engines.size(); 189 total_ime_size += ime_list_[i].engines.size();
232 } 190 }
233 EXPECT_EQ(total_ime_size, descriptors.size()); 191 EXPECT_EQ(total_ime_size, descriptors.size());
234 } 192 }
235 193
236 } // namespace 194 } // namespace
237 195
238 } // namespace input_method 196 } // namespace input_method
239 } // namespace chromeos 197 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698