| Index: ui/ozone/platform/dri/screen_manager_unittest.cc
|
| diff --git a/ui/ozone/platform/dri/screen_manager_unittest.cc b/ui/ozone/platform/dri/screen_manager_unittest.cc
|
| index e27a64b77aa6a3fc3bff6bf48d8bf198e2573add..be51557dc2911f9f4f4979f590490002fe60f62a 100644
|
| --- a/ui/ozone/platform/dri/screen_manager_unittest.cc
|
| +++ b/ui/ozone/platform/dri/screen_manager_unittest.cc
|
| @@ -33,6 +33,32 @@ class MockScreenManager : public ui::ScreenManager {
|
| DISALLOW_COPY_AND_ASSIGN(MockScreenManager);
|
| };
|
|
|
| +class TestDisplayChangeObserver : public ui::DisplayChangeObserver {
|
| + public:
|
| + TestDisplayChangeObserver()
|
| + : num_displays_changed_(0), num_displays_removed_(0) {}
|
| +
|
| + ~TestDisplayChangeObserver() override {}
|
| +
|
| + int num_displays_changed() const { return num_displays_changed_; }
|
| + int num_displays_removed() const { return num_displays_removed_; }
|
| +
|
| + // TestDisplayChangeObserver:
|
| + void OnDisplayChanged(ui::HardwareDisplayController* controller) override {
|
| + num_displays_changed_++;
|
| + }
|
| +
|
| + void OnDisplayRemoved(ui::HardwareDisplayController* controller) override {
|
| + num_displays_removed_++;
|
| + }
|
| +
|
| + private:
|
| + int num_displays_changed_;
|
| + int num_displays_removed_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestDisplayChangeObserver);
|
| +};
|
| +
|
| } // namespace
|
|
|
| class ScreenManagerTest : public testing::Test {
|
| @@ -55,8 +81,10 @@ class ScreenManagerTest : public testing::Test {
|
| buffer_generator_.reset(new ui::DriBufferGenerator(dri_.get()));
|
| screen_manager_.reset(new MockScreenManager(
|
| dri_.get(), buffer_generator_.get()));
|
| + screen_manager_->AddObserver(&observer_);
|
| }
|
| void TearDown() override {
|
| + screen_manager_->RemoveObserver(&observer_);
|
| screen_manager_.reset();
|
| dri_.reset();
|
| }
|
| @@ -66,6 +94,8 @@ class ScreenManagerTest : public testing::Test {
|
| scoped_ptr<ui::DriBufferGenerator> buffer_generator_;
|
| scoped_ptr<MockScreenManager> screen_manager_;
|
|
|
| + TestDisplayChangeObserver observer_;
|
| +
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(ScreenManagerTest);
|
| };
|
| @@ -81,7 +111,7 @@ TEST_F(ScreenManagerTest, CheckWithValidController) {
|
| kPrimaryConnector,
|
| GetPrimaryBounds().origin(),
|
| kDefaultMode);
|
| - base::WeakPtr<ui::HardwareDisplayController> controller =
|
| + ui::HardwareDisplayController* controller =
|
| screen_manager_->GetDisplayController(GetPrimaryBounds());
|
|
|
| EXPECT_TRUE(controller);
|
| @@ -124,12 +154,14 @@ TEST_F(ScreenManagerTest, CheckControllerAfterItIsRemoved) {
|
| kPrimaryConnector,
|
| GetPrimaryBounds().origin(),
|
| kDefaultMode);
|
| - base::WeakPtr<ui::HardwareDisplayController> controller =
|
| - screen_manager_->GetDisplayController(GetPrimaryBounds());
|
| + EXPECT_EQ(1, observer_.num_displays_changed());
|
| + EXPECT_EQ(0, observer_.num_displays_removed());
|
| + EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds()));
|
|
|
| - EXPECT_TRUE(controller);
|
| screen_manager_->RemoveDisplayController(kPrimaryCrtc);
|
| - EXPECT_FALSE(controller);
|
| + EXPECT_EQ(1, observer_.num_displays_changed());
|
| + EXPECT_EQ(1, observer_.num_displays_removed());
|
| + EXPECT_FALSE(screen_manager_->GetDisplayController(GetPrimaryBounds()));
|
| }
|
|
|
| TEST_F(ScreenManagerTest, CheckDuplicateConfiguration) {
|
| @@ -149,6 +181,9 @@ TEST_F(ScreenManagerTest, CheckDuplicateConfiguration) {
|
| // Should reuse existing framebuffer.
|
| EXPECT_EQ(framebuffer, dri_->current_framebuffer());
|
|
|
| + EXPECT_EQ(2, observer_.num_displays_changed());
|
| + EXPECT_EQ(0, observer_.num_displays_removed());
|
| +
|
| EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds()));
|
| EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds()));
|
| }
|
| @@ -165,6 +200,9 @@ TEST_F(ScreenManagerTest, CheckChangingMode) {
|
| screen_manager_->ConfigureDisplayController(
|
| kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), new_mode);
|
|
|
| + EXPECT_EQ(2, observer_.num_displays_changed());
|
| + EXPECT_EQ(0, observer_.num_displays_removed());
|
| +
|
| gfx::Rect new_bounds(0, 0, new_mode.hdisplay, new_mode.vdisplay);
|
| EXPECT_TRUE(screen_manager_->GetDisplayController(new_bounds));
|
| EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds()));
|
| @@ -188,6 +226,8 @@ TEST_F(ScreenManagerTest, CheckForControllersInMirroredMode) {
|
| GetPrimaryBounds().origin(),
|
| kDefaultMode);
|
|
|
| + EXPECT_EQ(2, observer_.num_displays_changed());
|
| + EXPECT_EQ(1, observer_.num_displays_removed());
|
| EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds()));
|
| EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds()));
|
| }
|
| @@ -246,12 +286,18 @@ TEST_F(ScreenManagerTest, MonitorGoneInMirrorMode) {
|
| GetPrimaryBounds().origin(),
|
| kDefaultMode);
|
|
|
| + EXPECT_EQ(2, observer_.num_displays_changed());
|
| + EXPECT_EQ(1, observer_.num_displays_removed());
|
| +
|
| screen_manager_->RemoveDisplayController(kSecondaryCrtc);
|
| EXPECT_TRUE(
|
| screen_manager_->ConfigureDisplayController(kPrimaryCrtc,
|
| kPrimaryConnector,
|
| GetPrimaryBounds().origin(),
|
| kDefaultMode));
|
| + EXPECT_EQ(3, observer_.num_displays_changed());
|
| + EXPECT_EQ(1, observer_.num_displays_removed());
|
| +
|
| EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds()));
|
| EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds()));
|
| }
|
| @@ -314,7 +360,7 @@ TEST_F(ScreenManagerTest, CheckMirrorModeAfterBeginReEnabled) {
|
| kSecondaryCrtc, kSecondaryConnector, GetPrimaryBounds().origin(),
|
| kDefaultMode);
|
|
|
| - base::WeakPtr<ui::HardwareDisplayController> controller =
|
| + ui::HardwareDisplayController* controller =
|
| screen_manager_->GetDisplayController(GetPrimaryBounds());
|
| EXPECT_TRUE(controller);
|
| EXPECT_FALSE(controller->IsMirrored());
|
|
|