1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/logging.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/ime/component_extension_ime_manager.h" 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/ime/extension_ime_util.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/ime/mock_component_extension_ime_manager_delegate.h" 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace chromeos { 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace input_method { 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace { 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ComponentExtensionIMEManagerTest : public testing::Test { 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ComponentExtensionIMEManagerTest() : mock_delegate_(NULL) {} 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetUp() { 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_.clear(); 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionIME ext1; 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ext1.id = "ext1_id_xxxxxxxxxxxxxxxxxxxxxxxx"; 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1.description = "ext1_description"; 26a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) ext1.options_page_url = 27a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) GURL("chrome-extension://" + ext1.id + "/options.html"); 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1.path = base::FilePath("ext1_file_path"); 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext1_engine1; 31e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ext1_engine1.engine_id = "zh-t-i0-pinyin"; 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine1.display_name = "ext1_engine_1_display_name"; 33e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ext1_engine1.language_codes.push_back("zh-CN"); 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine1.layouts.push_back("us"); 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1.engines.push_back(ext1_engine1); 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext1_engine2; 38e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ext1_engine2.engine_id = "mozc_us"; 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine2.display_name = "ext1_engine2_display_name"; 40e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ext1_engine2.language_codes.push_back("jp"); 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine2.layouts.push_back("us"); 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1.engines.push_back(ext1_engine2); 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext1_engine3; 45e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ext1_engine3.engine_id = "xkb:ru::rus"; 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine3.display_name = "ext1_engine3_display_name"; 47e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ext1_engine3.language_codes.push_back("ru"); 48e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ext1_engine3.layouts.push_back("ru"); 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1.engines.push_back(ext1_engine3); 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_.push_back(ext1); 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionIME ext2; 546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ext2.id = "ext2_id_xxxxxxxxxxxxxxxxxxxxxxxx"; 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2.description = "ext2_description"; 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2.path = base::FilePath("ext2_file_path"); 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext2_engine1; 59e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ext2_engine1.engine_id = "vkd_ru_phone_aatseel"; 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine1.display_name = "ext2_engine_1_display_name"; 61e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ext2_engine1.language_codes.push_back("ru"); 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine1.layouts.push_back("us"); 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2.engines.push_back(ext2_engine1); 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext2_engine2; 66e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ext2_engine2.engine_id = "vkd_vi_telex"; 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine2.display_name = "ext2_engine2_display_name"; 68a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch ext2_engine2.language_codes.push_back("hi"); 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine2.layouts.push_back("us"); 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2.engines.push_back(ext2_engine2); 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext2_engine3; 73e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ext2_engine3.engine_id = "xkb:us::eng"; 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine3.display_name = "ext2_engine3_display_name"; 75e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ext2_engine3.language_codes.push_back("us"); 76e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ext2_engine3.layouts.push_back("us"); 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2.engines.push_back(ext2_engine3); 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_.push_back(ext2); 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionIME ext3; 826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ext3.id = "ext3_id_xxxxxxxxxxxxxxxxxxxxxxxx"; 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3.description = "ext3_description"; 84a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch ext3.options_page_url = 85a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch GURL("chrome-extension://" + ext3.id + "/options.html"); 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3.path = base::FilePath("ext3_file_path"); 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext3_engine1; 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine1.engine_id = "ext3_engine1_engine_id"; 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine1.display_name = "ext3_engine_1_display_name"; 91a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch ext3_engine1.language_codes.push_back("hi"); 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine1.layouts.push_back("us"); 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3.engines.push_back(ext3_engine1); 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext3_engine2; 96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine2.engine_id = "ext3_engine2_engine_id"; 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine2.display_name = "ext3_engine2_display_name"; 98a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch ext3_engine2.language_codes.push_back("en"); 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine2.layouts.push_back("us"); 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3.engines.push_back(ext3_engine2); 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext3_engine3; 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine3.engine_id = "ext3_engine3_engine_id"; 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine3.display_name = "ext3_engine3_display_name"; 105a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch ext3_engine3.language_codes.push_back("en"); 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine3.layouts.push_back("us"); 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3.engines.push_back(ext3_engine3); 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_.push_back(ext3); 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mock_delegate_ = new MockComponentExtIMEManagerDelegate(); 112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mock_delegate_->set_ime_list(ime_list_); 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) component_ext_mgr_.reset(new ComponentExtensionIMEManager()); 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) component_ext_mgr_->Initialize( 115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<ComponentExtensionIMEManagerDelegate>( 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mock_delegate_).Pass()); 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void TearDown() { 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected: 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MockComponentExtIMEManagerDelegate* mock_delegate_; 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<ComponentExtensionIMEManager> component_ext_mgr_; 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::vector<ComponentExtensionIME> ime_list_; 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ComponentExtensionIMEManagerTest); 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(ComponentExtensionIMEManagerTest, LoadComponentExtensionIMETest) { 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < ime_list_.size(); ++i) { 134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t j = 0; j < ime_list_[i].engines.size(); ++j) { 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string input_method_id = 136f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extension_ime_util::GetComponentInputMethodID( 137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[i].id, 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[i].engines[j].engine_id); 13903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) component_ext_mgr_->LoadComponentExtensionIME(NULL /* profile */, 14003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) input_method_id); 141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(ime_list_[i].id, mock_delegate_->last_loaded_extension_id()); 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(9, mock_delegate_->load_call_count()); 145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(ComponentExtensionIMEManagerTest, UnloadComponentExtensionIMETest) { 148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < ime_list_.size(); ++i) { 149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t j = 0; j < ime_list_[i].engines.size(); ++j) { 150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string input_method_id = 151f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extension_ime_util::GetComponentInputMethodID( 152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[i].id, 153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[i].engines[j].engine_id); 15403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) component_ext_mgr_->UnloadComponentExtensionIME(NULL /* profile */, 15503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) input_method_id); 156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(ime_list_[i].id, mock_delegate_->last_unloaded_extension_id()); 157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(9, mock_delegate_->unload_call_count()); 160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(ComponentExtensionIMEManagerTest, IsWhitelistedTest) { 163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(component_ext_mgr_->IsWhitelisted( 164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extension_ime_util::GetComponentInputMethodID( 165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[0].id, 166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[0].engines[0].engine_id))); 167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(component_ext_mgr_->IsWhitelisted( 168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) extension_ime_util::GetInputMethodID( 169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[0].id, 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[0].engines[0].engine_id))); 171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(component_ext_mgr_->IsWhitelisted("mozc")); 172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(component_ext_mgr_->IsWhitelisted( 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) extension_ime_util::GetInputMethodID("AAAA", "012345"))); 174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(component_ext_mgr_->IsWhitelisted( 175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extension_ime_util::GetComponentInputMethodID( 176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "AAAA", "012345"))); 177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(ComponentExtensionIMEManagerTest, IsWhitelistedExtensionTest) { 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(component_ext_mgr_->IsWhitelistedExtension(ime_list_[0].id)); 181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(component_ext_mgr_->IsWhitelistedExtension(ime_list_[1].id)); 182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(component_ext_mgr_->IsWhitelistedExtension("dummy")); 183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(component_ext_mgr_->IsWhitelistedExtension("")); 184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(ComponentExtensionIMEManagerTest, GetAllIMEAsInputMethodDescriptor) { 187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) input_method::InputMethodDescriptors descriptors = 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) component_ext_mgr_->GetAllIMEAsInputMethodDescriptor(); 189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) size_t total_ime_size = 0; 190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < ime_list_.size(); ++i) { 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) total_ime_size += ime_list_[i].engines.size(); 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(total_ime_size, descriptors.size()); 194e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch 195e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch // Verify order 196e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch for (size_t i = 0; i < descriptors.size(); ++i) { 197e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch const input_method::InputMethodDescriptor& d = descriptors[i]; 198e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch if (i < 2) { 199e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch EXPECT_TRUE(d.id().find("xkb:") != std::string::npos); 200e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch } else if (i >= 2 && i < 4) { 201e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch EXPECT_TRUE(d.id().find("vkd_") != std::string::npos); 202e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch } 203e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch } 204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace input_method 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace chromeos 210