Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Unified Diff: ui/display/chromeos/update_display_configuration_task_unittest.cc

Issue 1133743005: Perform a display configuration in software mirror on hotplug event (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/display/chromeos/update_display_configuration_task.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « ui/display/chromeos/update_display_configuration_task.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698