Commit f0425a24 authored by Qiang Xu's avatar Qiang Xu Committed by Commit Bot

croissant: HighlighterController::UpdateEnabledState tests

Bug: b/78193960
Test: covered by added tests
Change-Id: I69d5651a76af3f49a39669f9ef10c2dae3718e7d
Reviewed-on: https://chromium-review.googlesource.com/1058594Reviewed-by: default avatarXiaohui Chen <xiaohuic@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Qiang Xu <warx@google.com>
Cr-Commit-Position: refs/heads/master@{#558730}
parent 6baa1eae
...@@ -67,7 +67,6 @@ class ASH_EXPORT HighlighterController ...@@ -67,7 +67,6 @@ class ASH_EXPORT HighlighterController
void SetExitCallback(base::OnceClosure callback, bool require_success); void SetExitCallback(base::OnceClosure callback, bool require_success);
// Update highlighter enabled |state| and notify observers. // Update highlighter enabled |state| and notify observers.
// TODO(warx): add UpdateEnabledState test cases.
void UpdateEnabledState(HighlighterEnabledState enabled_state); void UpdateEnabledState(HighlighterEnabledState enabled_state);
void BindRequest(mojom::HighlighterControllerRequest request); void BindRequest(mojom::HighlighterControllerRequest request);
......
...@@ -10,6 +10,9 @@ ...@@ -10,6 +10,9 @@
#include "ash/highlighter/highlighter_controller_test_api.h" #include "ash/highlighter/highlighter_controller_test_api.h"
#include "ash/public/cpp/config.h" #include "ash/public/cpp/config.h"
#include "ash/shell.h" #include "ash/shell.h"
#include "ash/system/palette/mock_palette_tool_delegate.h"
#include "ash/system/palette/palette_tool.h"
#include "ash/system/palette/tools/metalayer_mode.h"
#include "ash/test/ash_test_base.h" #include "ash/test/ash_test_base.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "ui/aura/window_tree_host.h" #include "ui/aura/window_tree_host.h"
...@@ -19,6 +22,31 @@ ...@@ -19,6 +22,31 @@
namespace ash { namespace ash {
namespace { namespace {
class TestHighlighterObserver : public HighlighterController::Observer {
public:
TestHighlighterObserver() = default;
~TestHighlighterObserver() override = default;
// HighlighterController::Observer:
void OnHighlighterEnabledChanged(HighlighterEnabledState state) override {
if (state == HighlighterEnabledState::kEnabled) {
++enabled_count_;
} else if (state == HighlighterEnabledState::kDisabledByUser) {
++disabled_by_user_count_;
} else {
DCHECK_EQ(HighlighterEnabledState::kDisabledBySessionEnd, state);
++disabled_by_session_end_;
}
}
int enabled_count_ = 0;
int disabled_by_user_count_ = 0;
int disabled_by_session_end_ = 0;
private:
DISALLOW_COPY_AND_ASSIGN(TestHighlighterObserver);
};
class HighlighterControllerTest : public AshTestBase { class HighlighterControllerTest : public AshTestBase {
public: public:
HighlighterControllerTest() = default; HighlighterControllerTest() = default;
...@@ -28,9 +56,13 @@ class HighlighterControllerTest : public AshTestBase { ...@@ -28,9 +56,13 @@ class HighlighterControllerTest : public AshTestBase {
AshTestBase::SetUp(); AshTestBase::SetUp();
controller_test_api_ = std::make_unique<HighlighterControllerTestApi>( controller_test_api_ = std::make_unique<HighlighterControllerTestApi>(
Shell::Get()->highlighter_controller()); Shell::Get()->highlighter_controller());
palette_tool_delegate_ = std::make_unique<MockPaletteToolDelegate>();
tool_ = std::make_unique<MetalayerMode>(palette_tool_delegate_.get());
} }
void TearDown() override { void TearDown() override {
tool_.reset();
// This needs to be called first to reset the controller state before the // This needs to be called first to reset the controller state before the
// shell instance gets torn down. // shell instance gets torn down.
controller_test_api_.reset(); controller_test_api_.reset();
...@@ -61,6 +93,8 @@ class HighlighterControllerTest : public AshTestBase { ...@@ -61,6 +93,8 @@ class HighlighterControllerTest : public AshTestBase {
} }
std::unique_ptr<HighlighterControllerTestApi> controller_test_api_; std::unique_ptr<HighlighterControllerTestApi> controller_test_api_;
std::unique_ptr<MockPaletteToolDelegate> palette_tool_delegate_;
std::unique_ptr<PaletteTool> tool_;
private: private:
DISALLOW_COPY_AND_ASSIGN(HighlighterControllerTest); DISALLOW_COPY_AND_ASSIGN(HighlighterControllerTest);
...@@ -461,4 +495,37 @@ TEST_F(HighlighterControllerTest, DetachedClient) { ...@@ -461,4 +495,37 @@ TEST_F(HighlighterControllerTest, DetachedClient) {
EXPECT_TRUE(controller_test_api_->HandleSelectionCalled()); EXPECT_TRUE(controller_test_api_->HandleSelectionCalled());
} }
// Test enabling/disabling metalayer mode by selecting/deselecting on palette
// tool and calling UpdateEnabledState notify observers properly.
TEST_F(HighlighterControllerTest, UpdateEnabledState) {
HighlighterController* controller = Shell::Get()->highlighter_controller();
TestHighlighterObserver observer;
controller->AddObserver(&observer);
ASSERT_EQ(0, observer.enabled_count_);
ASSERT_EQ(0, observer.disabled_by_user_count_);
ASSERT_EQ(0, observer.disabled_by_session_end_);
tool_->OnEnable();
EXPECT_EQ(1, observer.enabled_count_);
EXPECT_EQ(0, observer.disabled_by_user_count_);
EXPECT_EQ(0, observer.disabled_by_session_end_);
tool_->OnDisable();
EXPECT_EQ(1, observer.enabled_count_);
EXPECT_EQ(1, observer.disabled_by_user_count_);
EXPECT_EQ(0, observer.disabled_by_session_end_);
tool_->OnEnable();
EXPECT_EQ(2, observer.enabled_count_);
EXPECT_EQ(1, observer.disabled_by_user_count_);
EXPECT_EQ(0, observer.disabled_by_session_end_);
controller->UpdateEnabledState(
HighlighterEnabledState::kDisabledBySessionEnd);
EXPECT_EQ(2, observer.enabled_count_);
EXPECT_EQ(1, observer.disabled_by_user_count_);
EXPECT_EQ(1, observer.disabled_by_session_end_);
controller->RemoveObserver(&observer);
}
} // namespace ash } // namespace ash
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment