123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- // Copyright 2018 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 "ash/system/ime/ime_feature_pod_controller.h"
- #include <vector>
- #include "ash/ime/ime_controller_impl.h"
- #include "ash/shell.h"
- #include "ash/system/unified/feature_pod_button.h"
- #include "ash/system/unified/unified_system_tray_controller.h"
- #include "ash/system/unified/unified_system_tray_model.h"
- #include "ash/test/ash_test_base.h"
- #include "base/memory/scoped_refptr.h"
- #include "base/strings/string_number_conversions.h"
- #include "base/strings/utf_string_conversions.h"
- namespace ash {
- // Tests manually control their session state.
- class IMEFeaturePodControllerTest : public NoSessionAshTestBase {
- public:
- IMEFeaturePodControllerTest() = default;
- IMEFeaturePodControllerTest(const IMEFeaturePodControllerTest&) = delete;
- IMEFeaturePodControllerTest& operator=(const IMEFeaturePodControllerTest&) =
- delete;
- ~IMEFeaturePodControllerTest() override = default;
- void SetUp() override {
- NoSessionAshTestBase::SetUp();
- tray_model_ = base::MakeRefCounted<UnifiedSystemTrayModel>(nullptr);
- tray_controller_ =
- std::make_unique<UnifiedSystemTrayController>(tray_model_.get());
- }
- void TearDown() override {
- button_.reset();
- controller_.reset();
- tray_controller_.reset();
- tray_model_.reset();
- NoSessionAshTestBase::TearDown();
- }
- protected:
- void SetUpButton() {
- controller_ = std::make_unique<IMEFeaturePodController>(tray_controller());
- button_.reset(controller_->CreateButton());
- }
- UnifiedSystemTrayController* tray_controller() {
- return tray_controller_.get();
- }
- FeaturePodButton* button() { return button_.get(); }
- // Creates |count| simulated active IMEs.
- void SetActiveIMECount(int count) {
- available_imes_.resize(count);
- for (int i = 0; i < count; ++i)
- available_imes_[i].id = base::NumberToString(i);
- RefreshImeController();
- }
- void RefreshImeController() {
- std::vector<ImeInfo> available_imes;
- for (const auto& ime : available_imes_)
- available_imes.push_back(ime);
- std::vector<ImeMenuItem> menu_items;
- for (const auto& item : menu_items_)
- menu_items_.push_back(item);
- Shell::Get()->ime_controller()->RefreshIme(
- current_ime_.id, std::move(available_imes), std::move(menu_items));
- }
- private:
- scoped_refptr<UnifiedSystemTrayModel> tray_model_;
- std::unique_ptr<UnifiedSystemTrayController> tray_controller_;
- std::unique_ptr<IMEFeaturePodController> controller_;
- std::unique_ptr<FeaturePodButton> button_;
- // IMEs
- ImeInfo current_ime_;
- std::vector<ImeInfo> available_imes_;
- std::vector<ImeMenuItem> menu_items_;
- };
- // Tests that if the pod button is hidden if less than 2 IMEs are present.
- TEST_F(IMEFeaturePodControllerTest, ButtonVisibilityIMECount) {
- SetUpButton();
- SetActiveIMECount(0);
- EXPECT_FALSE(button()->GetVisible());
- SetActiveIMECount(1);
- EXPECT_FALSE(button()->GetVisible());
- SetActiveIMECount(2);
- EXPECT_TRUE(button()->GetVisible());
- }
- TEST_F(IMEFeaturePodControllerTest, ButtonVisibilityImeMenuActive) {
- SetUpButton();
- Shell::Get()->ime_controller()->ShowImeMenuOnShelf(true);
- SetActiveIMECount(0);
- EXPECT_FALSE(button()->GetVisible());
- SetActiveIMECount(1);
- EXPECT_FALSE(button()->GetVisible());
- SetActiveIMECount(2);
- EXPECT_FALSE(button()->GetVisible());
- }
- TEST_F(IMEFeaturePodControllerTest, ButtonVisibilityPolicy) {
- SetUpButton();
- Shell::Get()->ime_controller()->SetImesManagedByPolicy(true);
- SetActiveIMECount(0);
- EXPECT_TRUE(button()->GetVisible());
- SetActiveIMECount(1);
- EXPECT_TRUE(button()->GetVisible());
- SetActiveIMECount(2);
- EXPECT_TRUE(button()->GetVisible());
- }
- } // namespace ash
|