1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/system/brightness/display_detailed_view.h"
#include <memory>
#include <vector>
#include "ash/public/cpp/ash_view_ids.h"
#include "ash/system/tray/detailed_view_delegate.h"
#include "ash/system/tray/fake_detailed_view_delegate.h"
#include "ash/test/ash_test_base.h"
#include "base/memory/raw_ptr.h"
#include "ui/views/widget/widget.h"
namespace ash {
namespace {
views::View* GetScrollContent(views::View* detailed_view) {
return detailed_view->GetViewByID(VIEW_ID_QS_DISPLAY_SCROLL_CONTENT);
}
views::View* GetTileContainer(views::View* detailed_view) {
return detailed_view->GetViewByID(VIEW_ID_QS_DISPLAY_TILE_CONTAINER);
}
} // namespace
class DisplayDetailedViewTest : public AshTestBase {
public:
void SetUp() override {
AshTestBase::SetUp();
delegate_ = std::make_unique<FakeDetailedViewDelegate>();
}
void TearDown() override {
delegate_.reset();
AshTestBase::TearDown();
}
DetailedViewDelegate* fake_delegate() { return delegate_.get(); }
std::unique_ptr<DetailedViewDelegate> delegate_;
};
TEST_F(DisplayDetailedViewTest, ScrollContentChildren) {
DisplayDetailedView detailed_view(fake_delegate(),
/*tray_controller=*/nullptr);
// The scroll content has two children, one feature tile container and one
// `UnifiedBrightnessView`.
views::View* scroll_content = GetScrollContent(&detailed_view);
ASSERT_TRUE(scroll_content);
ASSERT_EQ(scroll_content->children().size(), 2u);
// The first child of scroll content is the `tile_container`, which has two
// children (night light and dark mode feature tiles).
views::View* tile_container = GetTileContainer(&detailed_view);
ASSERT_TRUE(tile_container);
ASSERT_EQ(tile_container->children().size(), 2u);
EXPECT_EQ(tile_container->children()[0]->GetClassName(), "FeatureTile");
EXPECT_EQ(tile_container->children()[1]->GetClassName(), "FeatureTile");
// The second children of scroll content is the `UnifiedBrightnessView`.
views::View* unified_brightness_view =
scroll_content->GetViewByID(VIEW_ID_QS_DISPLAY_BRIGHTNESS_SLIDER);
EXPECT_EQ(unified_brightness_view->GetClassName(), "UnifiedBrightnessView");
}
TEST_F(DisplayDetailedViewTest, FeatureTileVisibility) {
// Both tiles are visible in the active user session
GetSessionControllerClient()->SetSessionState(
session_manager::SessionState::ACTIVE);
DisplayDetailedView detailed_view1(fake_delegate(),
/*tray_controller=*/nullptr);
const auto* const tile_container1 = GetTileContainer(&detailed_view1);
ASSERT_TRUE(tile_container1);
ASSERT_EQ(tile_container1->children().size(), 2u);
EXPECT_TRUE(tile_container1->GetVisible());
EXPECT_TRUE(tile_container1->children()[0]->GetVisible());
EXPECT_TRUE(tile_container1->children()[1]->GetVisible());
// Feature tiles are still visible in the locked screen.
GetSessionControllerClient()->SetSessionState(
session_manager::SessionState::LOCKED);
DisplayDetailedView detailed_view2(fake_delegate(),
/*tray_controller=*/nullptr);
const auto* const tile_container2 = GetTileContainer(&detailed_view2);
EXPECT_TRUE(tile_container2->GetVisible());
EXPECT_TRUE(tile_container2->children()[0]->GetVisible());
EXPECT_TRUE(tile_container2->children()[1]->GetVisible());
// Feature tiles are not visible in OOBE.
GetSessionControllerClient()->SetSessionState(
session_manager::SessionState::OOBE);
DisplayDetailedView detailed_view3(fake_delegate(),
/*tray_controller=*/nullptr);
const auto* const tile_container3 = GetTileContainer(&detailed_view3);
EXPECT_FALSE(tile_container3->GetVisible());
EXPECT_FALSE(tile_container3->children()[0]->GetVisible());
EXPECT_FALSE(tile_container3->children()[1]->GetVisible());
}
} // namespace ash
|