| Index: chromeos/ime/component_extension_ime_manager_unittest.cc
|
| diff --git a/chromeos/ime/component_extension_ime_manager_unittest.cc b/chromeos/ime/component_extension_ime_manager_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..840f3c473d1d5dce0fb4cc8f160e6e3648ab0b5f
|
| --- /dev/null
|
| +++ b/chromeos/ime/component_extension_ime_manager_unittest.cc
|
| @@ -0,0 +1,209 @@
|
| +// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "base/logging.h"
|
| +#include "chromeos/ime/component_extension_ime_manager.h"
|
| +#include "chromeos/ime/extension_ime_util.h"
|
| +#include "chromeos/ime/mock_component_extension_ime_manager_delegate.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace chromeos {
|
| +namespace input_method {
|
| +
|
| +namespace {
|
| +
|
| +class ComponentExtensionIMEManagerTest : public testing::Test {
|
| + public:
|
| + ComponentExtensionIMEManagerTest() : mock_delegate_(NULL) {}
|
| +
|
| + virtual void SetUp() {
|
| + ime_list_.clear();
|
| +
|
| + ComponentExtensionIME ext1;
|
| + ext1.id = "ext1_id_xxxxxxxxxxxxxxxxxxxxxxxx";
|
| + ext1.description = "ext1_description";
|
| + ext1.options_page_url =
|
| + GURL("chrome-extension://" + ext1.id + "/options.html");
|
| + ext1.path = base::FilePath("ext1_file_path");
|
| +
|
| + ComponentExtensionEngine ext1_engine1;
|
| + ext1_engine1.engine_id = "zh-t-i0-pinyin";
|
| + ext1_engine1.display_name = "ext1_engine_1_display_name";
|
| + ext1_engine1.language_codes.push_back("zh-CN");
|
| + ext1_engine1.layouts.push_back("us");
|
| + ext1.engines.push_back(ext1_engine1);
|
| +
|
| + ComponentExtensionEngine ext1_engine2;
|
| + ext1_engine2.engine_id = "mozc_us";
|
| + ext1_engine2.display_name = "ext1_engine2_display_name";
|
| + ext1_engine2.language_codes.push_back("jp");
|
| + ext1_engine2.layouts.push_back("us");
|
| + ext1.engines.push_back(ext1_engine2);
|
| +
|
| + ComponentExtensionEngine ext1_engine3;
|
| + ext1_engine3.engine_id = "xkb:ru::rus";
|
| + ext1_engine3.display_name = "ext1_engine3_display_name";
|
| + ext1_engine3.language_codes.push_back("ru");
|
| + ext1_engine3.layouts.push_back("ru");
|
| + ext1.engines.push_back(ext1_engine3);
|
| +
|
| + ime_list_.push_back(ext1);
|
| +
|
| + ComponentExtensionIME ext2;
|
| + ext2.id = "ext2_id_xxxxxxxxxxxxxxxxxxxxxxxx";
|
| + ext2.description = "ext2_description";
|
| + ext2.path = base::FilePath("ext2_file_path");
|
| +
|
| + ComponentExtensionEngine ext2_engine1;
|
| + ext2_engine1.engine_id = "vkd_ru_phone_aatseel";
|
| + ext2_engine1.display_name = "ext2_engine_1_display_name";
|
| + ext2_engine1.language_codes.push_back("ru");
|
| + ext2_engine1.layouts.push_back("us");
|
| + ext2.engines.push_back(ext2_engine1);
|
| +
|
| + ComponentExtensionEngine ext2_engine2;
|
| + ext2_engine2.engine_id = "vkd_vi_telex";
|
| + ext2_engine2.display_name = "ext2_engine2_display_name";
|
| + ext2_engine2.language_codes.push_back("hi");
|
| + ext2_engine2.layouts.push_back("us");
|
| + ext2.engines.push_back(ext2_engine2);
|
| +
|
| + ComponentExtensionEngine ext2_engine3;
|
| + ext2_engine3.engine_id = "xkb:us::eng";
|
| + ext2_engine3.display_name = "ext2_engine3_display_name";
|
| + ext2_engine3.language_codes.push_back("us");
|
| + ext2_engine3.layouts.push_back("us");
|
| + ext2.engines.push_back(ext2_engine3);
|
| +
|
| + ime_list_.push_back(ext2);
|
| +
|
| + ComponentExtensionIME ext3;
|
| + ext3.id = "ext3_id_xxxxxxxxxxxxxxxxxxxxxxxx";
|
| + ext3.description = "ext3_description";
|
| + ext3.options_page_url =
|
| + GURL("chrome-extension://" + ext3.id + "/options.html");
|
| + ext3.path = base::FilePath("ext3_file_path");
|
| +
|
| + ComponentExtensionEngine ext3_engine1;
|
| + ext3_engine1.engine_id = "ext3_engine1_engine_id";
|
| + ext3_engine1.display_name = "ext3_engine_1_display_name";
|
| + ext3_engine1.language_codes.push_back("hi");
|
| + ext3_engine1.layouts.push_back("us");
|
| + ext3.engines.push_back(ext3_engine1);
|
| +
|
| + ComponentExtensionEngine ext3_engine2;
|
| + ext3_engine2.engine_id = "ext3_engine2_engine_id";
|
| + ext3_engine2.display_name = "ext3_engine2_display_name";
|
| + ext3_engine2.language_codes.push_back("en");
|
| + ext3_engine2.layouts.push_back("us");
|
| + ext3.engines.push_back(ext3_engine2);
|
| +
|
| + ComponentExtensionEngine ext3_engine3;
|
| + ext3_engine3.engine_id = "ext3_engine3_engine_id";
|
| + ext3_engine3.display_name = "ext3_engine3_display_name";
|
| + ext3_engine3.language_codes.push_back("en");
|
| + ext3_engine3.layouts.push_back("us");
|
| + ext3.engines.push_back(ext3_engine3);
|
| +
|
| + ime_list_.push_back(ext3);
|
| +
|
| + mock_delegate_ = new MockComponentExtIMEManagerDelegate();
|
| + mock_delegate_->set_ime_list(ime_list_);
|
| + component_ext_mgr_.reset(new ComponentExtensionIMEManager());
|
| + component_ext_mgr_->Initialize(
|
| + scoped_ptr<ComponentExtensionIMEManagerDelegate>(
|
| + mock_delegate_).Pass());
|
| + }
|
| +
|
| + virtual void TearDown() {
|
| + }
|
| +
|
| + protected:
|
| + MockComponentExtIMEManagerDelegate* mock_delegate_;
|
| + scoped_ptr<ComponentExtensionIMEManager> component_ext_mgr_;
|
| + std::vector<ComponentExtensionIME> ime_list_;
|
| +
|
| + private:
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ComponentExtensionIMEManagerTest);
|
| +};
|
| +
|
| +TEST_F(ComponentExtensionIMEManagerTest, LoadComponentExtensionIMETest) {
|
| + for (size_t i = 0; i < ime_list_.size(); ++i) {
|
| + for (size_t j = 0; j < ime_list_[i].engines.size(); ++j) {
|
| + const std::string input_method_id =
|
| + extension_ime_util::GetComponentInputMethodID(
|
| + ime_list_[i].id,
|
| + ime_list_[i].engines[j].engine_id);
|
| + component_ext_mgr_->LoadComponentExtensionIME(NULL /* profile */,
|
| + input_method_id);
|
| + EXPECT_EQ(ime_list_[i].id, mock_delegate_->last_loaded_extension_id());
|
| + }
|
| + }
|
| + EXPECT_EQ(9, mock_delegate_->load_call_count());
|
| +}
|
| +
|
| +TEST_F(ComponentExtensionIMEManagerTest, UnloadComponentExtensionIMETest) {
|
| + for (size_t i = 0; i < ime_list_.size(); ++i) {
|
| + for (size_t j = 0; j < ime_list_[i].engines.size(); ++j) {
|
| + const std::string input_method_id =
|
| + extension_ime_util::GetComponentInputMethodID(
|
| + ime_list_[i].id,
|
| + ime_list_[i].engines[j].engine_id);
|
| + component_ext_mgr_->UnloadComponentExtensionIME(NULL /* profile */,
|
| + input_method_id);
|
| + EXPECT_EQ(ime_list_[i].id, mock_delegate_->last_unloaded_extension_id());
|
| + }
|
| + }
|
| + EXPECT_EQ(9, mock_delegate_->unload_call_count());
|
| +}
|
| +
|
| +TEST_F(ComponentExtensionIMEManagerTest, IsWhitelistedTest) {
|
| + EXPECT_TRUE(component_ext_mgr_->IsWhitelisted(
|
| + extension_ime_util::GetComponentInputMethodID(
|
| + ime_list_[0].id,
|
| + ime_list_[0].engines[0].engine_id)));
|
| + EXPECT_FALSE(component_ext_mgr_->IsWhitelisted(
|
| + extension_ime_util::GetInputMethodID(
|
| + ime_list_[0].id,
|
| + ime_list_[0].engines[0].engine_id)));
|
| + EXPECT_FALSE(component_ext_mgr_->IsWhitelisted("mozc"));
|
| + EXPECT_FALSE(component_ext_mgr_->IsWhitelisted(
|
| + extension_ime_util::GetInputMethodID("AAAA", "012345")));
|
| + EXPECT_FALSE(component_ext_mgr_->IsWhitelisted(
|
| + extension_ime_util::GetComponentInputMethodID(
|
| + "AAAA", "012345")));
|
| +}
|
| +
|
| +TEST_F(ComponentExtensionIMEManagerTest, IsWhitelistedExtensionTest) {
|
| + EXPECT_TRUE(component_ext_mgr_->IsWhitelistedExtension(ime_list_[0].id));
|
| + EXPECT_TRUE(component_ext_mgr_->IsWhitelistedExtension(ime_list_[1].id));
|
| + EXPECT_FALSE(component_ext_mgr_->IsWhitelistedExtension("dummy"));
|
| + EXPECT_FALSE(component_ext_mgr_->IsWhitelistedExtension(""));
|
| +}
|
| +
|
| +TEST_F(ComponentExtensionIMEManagerTest, GetAllIMEAsInputMethodDescriptor) {
|
| + input_method::InputMethodDescriptors descriptors =
|
| + component_ext_mgr_->GetAllIMEAsInputMethodDescriptor();
|
| + size_t total_ime_size = 0;
|
| + for (size_t i = 0; i < ime_list_.size(); ++i) {
|
| + total_ime_size += ime_list_[i].engines.size();
|
| + }
|
| + EXPECT_EQ(total_ime_size, descriptors.size());
|
| +
|
| + // Verify order
|
| + for (size_t i = 0; i < descriptors.size(); ++i) {
|
| + const input_method::InputMethodDescriptor& d = descriptors[i];
|
| + if (i < 2) {
|
| + EXPECT_TRUE(d.id().find("xkb:") != std::string::npos);
|
| + } else if (i >= 2 && i < 4) {
|
| + EXPECT_TRUE(d.id().find("vkd_") != std::string::npos);
|
| + }
|
| + }
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +} // namespace input_method
|
| +} // namespace chromeos
|
|
|