Chromium Code Reviews| Index: ui/display/chromeos/update_display_configuration_task_unittest.cc |
| diff --git a/ui/display/chromeos/update_display_configuration_task_unittest.cc b/ui/display/chromeos/update_display_configuration_task_unittest.cc |
| index b2904c730f614792ea1d369d27a5f03d775dde96..0abb9f12620b0b7fd2430daf0419b106da01c95e 100644 |
| --- a/ui/display/chromeos/update_display_configuration_task_unittest.cc |
| +++ b/ui/display/chromeos/update_display_configuration_task_unittest.cc |
| @@ -17,6 +17,22 @@ namespace test { |
| namespace { |
| +class TestSoftwareMirroringController |
| + : public DisplayConfigurator::SoftwareMirroringController { |
| + public: |
| + TestSoftwareMirroringController() : is_enabled_(false) {} |
| + ~TestSoftwareMirroringController() override {} |
| + |
| + // DisplayConfigurator::SoftwareMirroringController: |
| + void SetSoftwareMirroring(bool enabled) override { is_enabled_ = enabled; } |
| + bool SoftwareMirroringEnabled() const override { return is_enabled_; } |
|
oshima
2015/05/19 16:42:28
optional: accessors/mutators are typically uses se
oshima
2015/05/19 16:42:54
Doh, s/uses//
dnicoara
2015/05/19 16:50:16
I know, but these are part of an interface, so the
oshima
2015/05/19 16:53:52
sorry I missed override.
|
| + |
| + private: |
| + bool is_enabled_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(TestSoftwareMirroringController); |
| +}; |
| + |
| class TestDisplayLayoutManager : public DisplayLayoutManager { |
| public: |
| TestDisplayLayoutManager() |
| @@ -33,10 +49,16 @@ class TestDisplayLayoutManager : public DisplayLayoutManager { |
| power_state_ = state; |
| } |
| + void set_software_mirroring_controller( |
| + scoped_ptr<DisplayConfigurator::SoftwareMirroringController> |
| + software_mirroring_controller) { |
| + software_mirroring_controller_ = software_mirroring_controller.Pass(); |
| + } |
| + |
| // DisplayConfigurator::DisplayLayoutManager: |
| DisplayConfigurator::SoftwareMirroringController* |
| GetSoftwareMirroringController() const override { |
| - return nullptr; |
| + return software_mirroring_controller_.get(); |
| } |
| DisplayConfigurator::StateController* GetStateController() const override { |
| @@ -109,6 +131,9 @@ class TestDisplayLayoutManager : public DisplayLayoutManager { |
| chromeos::DisplayPowerState power_state_; |
| + scoped_ptr<DisplayConfigurator::SoftwareMirroringController> |
| + software_mirroring_controller_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(TestDisplayLayoutManager); |
| }; |
| @@ -371,5 +396,82 @@ TEST_F(UpdateDisplayConfigurationTaskTest, SingleChangePowerConfiguration) { |
| log_.GetActionsAndClear()); |
| } |
| +TEST_F(UpdateDisplayConfigurationTaskTest, NoopSoftwareMirrorConfiguration) { |
| + layout_manager_.set_should_mirror(false); |
| + layout_manager_.set_software_mirroring_controller( |
| + make_scoped_ptr(new TestSoftwareMirroringController())); |
| + UpdateDisplays(2); |
| + |
| + { |
| + UpdateDisplayConfigurationTask task( |
| + &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, |
| + chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, |
| + base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, |
| + base::Unretained(this))); |
| + task.Run(); |
| + } |
| + |
| + log_.GetActionsAndClear(); |
| + |
| + { |
| + UpdateDisplayConfigurationTask task( |
| + &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_DUAL_MIRROR, |
| + chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, |
| + base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, |
| + base::Unretained(this))); |
| + task.Run(); |
| + } |
| + |
| + EXPECT_TRUE(configuration_status_); |
| + EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, display_state_); |
| + EXPECT_TRUE(layout_manager_.GetSoftwareMirroringController() |
| + ->SoftwareMirroringEnabled()); |
| + EXPECT_EQ(JoinActions(kGrab, kUngrab, NULL), log_.GetActionsAndClear()); |
| +} |
| + |
| +TEST_F(UpdateDisplayConfigurationTaskTest, |
| + ForceConfigurationWhileGoingToSoftwareMirror) { |
| + layout_manager_.set_should_mirror(false); |
| + layout_manager_.set_software_mirroring_controller( |
| + make_scoped_ptr(new TestSoftwareMirroringController())); |
| + UpdateDisplays(2); |
| + |
| + { |
| + UpdateDisplayConfigurationTask task( |
| + &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, |
| + chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, |
| + base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, |
| + base::Unretained(this))); |
| + task.Run(); |
| + } |
| + |
| + log_.GetActionsAndClear(); |
| + |
| + { |
| + UpdateDisplayConfigurationTask task( |
| + &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_DUAL_MIRROR, |
| + chromeos::DISPLAY_POWER_ALL_ON, 0, 0, true /* force_configure */, |
| + base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, |
| + base::Unretained(this))); |
| + task.Run(); |
| + } |
| + |
| + EXPECT_TRUE(configuration_status_); |
| + EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, display_state_); |
| + EXPECT_TRUE(layout_manager_.GetSoftwareMirroringController() |
| + ->SoftwareMirroringEnabled()); |
| + EXPECT_EQ( |
| + JoinActions( |
| + kGrab, GetFramebufferAction(gfx::Size(big_mode_.size().width(), |
| + small_mode_.size().height() + |
| + big_mode_.size().height()), |
| + &displays_[0], &displays_[1]).c_str(), |
| + GetCrtcAction(displays_[0], &small_mode_, gfx::Point()).c_str(), |
| + GetCrtcAction(displays_[1], &big_mode_, |
| + gfx::Point(0, small_mode_.size().height())).c_str(), |
| + kUngrab, NULL), |
| + log_.GetActionsAndClear()); |
| +} |
| + |
| } // namespace test |
| } // namespace ui |