component_extension_ime_manager_unittest.cc revision a93a17c8d99d686bd4a1511e5504e5e6cc9fcadf
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) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class TestableComponentExtensionIMEManager 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : public ComponentExtensionIMEManager { 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) using ComponentExtensionIMEManager::GetComponentExtensionIMEId; 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class ComponentExtensionIMEManagerTest : 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public testing::Test, 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public ComponentExtensionIMEManager::Observer { 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionIMEManagerTest() 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : mock_delegate_(NULL), 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) on_initialized_callcount_(0) { 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetUp() { 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_.clear(); 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionIME ext1; 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1.id = "ext1_id"; 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1.description = "ext1_description"; 37a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) ext1.options_page_url = 38a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) GURL("chrome-extension://" + ext1.id + "/options.html"); 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1.path = base::FilePath("ext1_file_path"); 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext1_engine1; 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine1.engine_id = "ext1_engine1_engine_id"; 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine1.display_name = "ext1_engine_1_display_name"; 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine1.language_code = "en"; 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine1.layouts.push_back("us"); 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1.engines.push_back(ext1_engine1); 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext1_engine2; 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine2.engine_id = "ext1_engine2_engine_id"; 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine2.display_name = "ext1_engine2_display_name"; 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine2.language_code = "en"; 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine2.layouts.push_back("us"); 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1.engines.push_back(ext1_engine2); 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext1_engine3; 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine3.engine_id = "ext1_engine3_engine_id"; 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine3.display_name = "ext1_engine3_display_name"; 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine3.language_code = "ja"; 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1_engine3.layouts.push_back("us"); 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext1.engines.push_back(ext1_engine3); 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_.push_back(ext1); 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionIME ext2; 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2.id = "ext2_id"; 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2.description = "ext2_description"; 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2.path = base::FilePath("ext2_file_path"); 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext2_engine1; 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine1.engine_id = "ext2_engine1_engine_id"; 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine1.display_name = "ext2_engine_1_display_name"; 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine1.language_code = "en"; 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine1.layouts.push_back("us"); 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2.engines.push_back(ext2_engine1); 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext2_engine2; 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine2.engine_id = "ext2_engine2_engine_id"; 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine2.display_name = "ext2_engine2_display_name"; 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine2.language_code = "hi"; 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine2.layouts.push_back("us"); 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2.engines.push_back(ext2_engine2); 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext2_engine3; 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine3.engine_id = "ext2_engine3_engine_id"; 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine3.display_name = "ext2_engine3_display_name"; 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine3.language_code = "ja"; 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2_engine3.layouts.push_back("jp"); 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext2.engines.push_back(ext2_engine3); 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_.push_back(ext2); 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionIME ext3; 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3.id = "ext3_id"; 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3.description = "ext3_description"; 95a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) ext1.options_page_url = 96a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) GURL("chrome-extension://" + ext3.id + "/options.html"); 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3.path = base::FilePath("ext3_file_path"); 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext3_engine1; 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine1.engine_id = "ext3_engine1_engine_id"; 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine1.display_name = "ext3_engine_1_display_name"; 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine1.language_code = "hi"; 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine1.layouts.push_back("us"); 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3.engines.push_back(ext3_engine1); 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext3_engine2; 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine2.engine_id = "ext3_engine2_engine_id"; 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine2.display_name = "ext3_engine2_display_name"; 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine2.language_code = "en"; 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine2.layouts.push_back("us"); 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3.engines.push_back(ext3_engine2); 112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ComponentExtensionEngine ext3_engine3; 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine3.engine_id = "ext3_engine3_engine_id"; 115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine3.display_name = "ext3_engine3_display_name"; 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine3.language_code = "en"; 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3_engine3.layouts.push_back("us"); 118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ext3.engines.push_back(ext3_engine3); 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_.push_back(ext3); 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mock_delegate_ = new MockComponentExtIMEManagerDelegate(); 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mock_delegate_->set_ime_list(ime_list_); 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) component_ext_mgr_.reset(new ComponentExtensionIMEManager()); 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) component_ext_mgr_->AddObserver(this); 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(component_ext_mgr_->IsInitialized()); 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) component_ext_mgr_->Initialize( 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<ComponentExtensionIMEManagerDelegate>( 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mock_delegate_).Pass()); 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(component_ext_mgr_->IsInitialized()); 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void TearDown() { 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1, on_initialized_callcount_); 136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) component_ext_mgr_->RemoveObserver(this); 137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected: 140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MockComponentExtIMEManagerDelegate* mock_delegate_; 141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<ComponentExtensionIMEManager> component_ext_mgr_; 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::vector<ComponentExtensionIME> ime_list_; 143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void OnInitialized() OVERRIDE { 146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ++on_initialized_callcount_; 147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int on_initialized_callcount_; 150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ComponentExtensionIMEManagerTest); 152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(ComponentExtensionIMEManagerTest, LoadComponentExtensionIMETest) { 155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < ime_list_.size(); ++i) { 156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t j = 0; j < ime_list_[i].engines.size(); ++j) { 157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string input_method_id = 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestableComponentExtensionIMEManager::GetComponentExtensionIMEId( 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[i].id, 160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[i].engines[j].engine_id); 161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) component_ext_mgr_->LoadComponentExtensionIME(input_method_id); 162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(ime_list_[i].id, mock_delegate_->last_loaded_extension_id()); 163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(9, mock_delegate_->load_call_count()); 166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(ComponentExtensionIMEManagerTest, UnloadComponentExtensionIMETest) { 169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < ime_list_.size(); ++i) { 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t j = 0; j < ime_list_[i].engines.size(); ++j) { 171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string input_method_id = 172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestableComponentExtensionIMEManager::GetComponentExtensionIMEId( 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[i].id, 174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[i].engines[j].engine_id); 175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) component_ext_mgr_->UnloadComponentExtensionIME(input_method_id); 176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(ime_list_[i].id, mock_delegate_->last_unloaded_extension_id()); 177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(9, mock_delegate_->unload_call_count()); 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(ComponentExtensionIMEManagerTest, IsWhitelistedTest) { 183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(component_ext_mgr_->IsWhitelisted( 184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestableComponentExtensionIMEManager::GetComponentExtensionIMEId( 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[0].id, 186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[0].engines[0].engine_id))); 187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(component_ext_mgr_->IsWhitelisted( 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) extension_ime_util::GetInputMethodID( 189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[0].id, 190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[0].engines[0].engine_id))); 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(component_ext_mgr_->IsWhitelisted("mozc")); 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(component_ext_mgr_->IsWhitelisted( 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) extension_ime_util::GetInputMethodID("AAAA", "012345"))); 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(component_ext_mgr_->IsWhitelisted( 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestableComponentExtensionIMEManager::GetComponentExtensionIMEId( 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "AAAA", "012345"))); 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(ComponentExtensionIMEManagerTest, IsWhitelistedExtensionTest) { 200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(component_ext_mgr_->IsWhitelistedExtension(ime_list_[0].id)); 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(component_ext_mgr_->IsWhitelistedExtension(ime_list_[1].id)); 202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(component_ext_mgr_->IsWhitelistedExtension("dummy")); 203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(component_ext_mgr_->IsWhitelistedExtension("")); 204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(ComponentExtensionIMEManagerTest, GetNameDescriptionTest) { 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < ime_list_.size(); ++i) { 208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t j = 0; j < ime_list_[i].engines.size(); ++j) { 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ComponentExtensionEngine& engine 210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) = ime_list_[i].engines[j]; 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string input_method_id = 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestableComponentExtensionIMEManager::GetComponentExtensionIMEId( 214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[i].id, 215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) engine.engine_id); 216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(input_method_id, 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) component_ext_mgr_->GetId(ime_list_[i].id, engine.engine_id)); 219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(engine.display_name, 220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) component_ext_mgr_->GetName(input_method_id)); 221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(engine.description, 222c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) component_ext_mgr_->GetDescription(input_method_id)); 223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 225c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 226c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(ComponentExtensionIMEManagerTest, ListIMEByLanguageTest) { 228c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string hindi_layout1 = 229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestableComponentExtensionIMEManager::GetComponentExtensionIMEId( 230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[1].id, ime_list_[1].engines[1].engine_id); 231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string hindi_layout2 = 232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestableComponentExtensionIMEManager::GetComponentExtensionIMEId( 233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ime_list_[2].id, ime_list_[2].engines[0].engine_id); 234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::vector<std::string> hindi_list 236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) = component_ext_mgr_->ListIMEByLanguage("hi"); 237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(2UL, hindi_list.size()); 238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(hindi_list[0] == hindi_layout1 || hindi_list[0] == hindi_layout2); 239c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(hindi_list[1] == hindi_layout1 || hindi_list[1] == hindi_layout2); 240c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(0UL, component_ext_mgr_->ListIMEByLanguage("ru").size()); 242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(0UL, component_ext_mgr_->ListIMEByLanguage("").size()); 243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(0UL, component_ext_mgr_->ListIMEByLanguage("invalid").size()); 244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(5UL, component_ext_mgr_->ListIMEByLanguage("en").size()); 245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(2UL, component_ext_mgr_->ListIMEByLanguage("ja").size()); 246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 247c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 248c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(ComponentExtensionIMEManagerTest, GetAllIMEAsInputMethodDescriptor) { 249c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) input_method::InputMethodDescriptors descriptors = 250c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) component_ext_mgr_->GetAllIMEAsInputMethodDescriptor(); 251c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) size_t total_ime_size = 0; 252c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < ime_list_.size(); ++i) { 253c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) total_ime_size += ime_list_[i].engines.size(); 254c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 255c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(total_ime_size, descriptors.size()); 256c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 257c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 258c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace 259c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 260c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace input_method 261c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace chromeos 262