123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- // Copyright 2022 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/camera/autozoom_toast_controller.h"
- #include "ash/system/unified/unified_system_tray.h"
- #include "ash/test/ash_test_base.h"
- namespace ash {
- class TestDelegate : public AutozoomToastController::Delegate {
- public:
- void AddAutozoomObserver(AutozoomObserver* observer) override {
- ASSERT_EQ(autozoom_observer, nullptr);
- autozoom_observer = observer;
- }
- void RemoveAutozoomObserver(AutozoomObserver* observer) override {
- ASSERT_EQ(autozoom_observer, observer);
- autozoom_observer = nullptr;
- }
- bool IsAutozoomEnabled() override { return autozoom_enabled_; }
- bool IsAutozoomControlEnabled() override { return autozoom_control_enabled_; }
- void SetAutozoomEnabled(bool autozoom_enabled) {
- autozoom_enabled_ = autozoom_enabled;
- if (autozoom_observer != nullptr) {
- autozoom_observer->OnAutozoomStateChanged(
- autozoom_enabled_ ? cros::mojom::CameraAutoFramingState::ON_SINGLE
- : cros::mojom::CameraAutoFramingState::OFF);
- }
- }
- void SetAutozoomControlEnabled(bool autozoom_control_enabled) {
- autozoom_control_enabled_ = autozoom_control_enabled;
- if (autozoom_observer != nullptr) {
- autozoom_observer->OnAutozoomControlEnabledChanged(
- autozoom_control_enabled_);
- }
- }
- AutozoomObserver* autozoom_observer = nullptr;
- private:
- bool autozoom_enabled_ = false;
- bool autozoom_control_enabled_ = false;
- };
- class AutozoomToastControllerTest : public AshTestBase {
- public:
- AutozoomToastControllerTest() = default;
- ~AutozoomToastControllerTest() override = default;
- AutozoomToastControllerTest(const AutozoomToastControllerTest&) = delete;
- AutozoomToastControllerTest& operator=(const AutozoomToastControllerTest&) =
- delete;
- // AshTestBase:
- void SetUp() override {
- AshTestBase::SetUp();
- auto delegate = std::make_unique<TestDelegate>();
- delegate_ = delegate.get();
- controller_ = std::make_unique<AutozoomToastController>(
- GetPrimaryUnifiedSystemTray(), std::move(delegate));
- }
- void TearDown() override {
- controller_ = nullptr;
- delegate_ = nullptr;
- AshTestBase::TearDown();
- }
- views::Widget* bubble_widget() {
- return controller_->bubble_widget_for_test();
- }
- std::unique_ptr<AutozoomToastController> controller_;
- TestDelegate* delegate_;
- };
- TEST_F(AutozoomToastControllerTest, ShowToastWhenCameraActive) {
- EXPECT_EQ(bubble_widget(), nullptr);
- // No toast when enabling camera when autozoom is disabled.
- delegate_->SetAutozoomControlEnabled(true);
- EXPECT_EQ(bubble_widget(), nullptr);
- // No toast when enabling autozoom when camera is already active.
- delegate_->SetAutozoomEnabled(true);
- EXPECT_EQ(bubble_widget(), nullptr);
- // Toast is shown when autozoom is enabled when camera become active.
- delegate_->SetAutozoomControlEnabled(false);
- delegate_->SetAutozoomControlEnabled(true);
- ASSERT_NE(bubble_widget(), nullptr);
- EXPECT_TRUE(bubble_widget()->IsVisible());
- }
- } // namespace ash
|