summaryrefslogtreecommitdiffstats
path: root/ash/display/display_manager_unittest.cc
diff options
context:
space:
mode:
authormukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-21 04:20:18 +0000
committermukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-21 04:20:18 +0000
commit5a07cf43c4ed0b8daa92cc5ba82ae51d92666e65 (patch)
treef0eac866c976caa753834743cf39aaf82704bf77 /ash/display/display_manager_unittest.cc
parentda3a295bf286594bced1f26dfd1e0df97b28048a (diff)
downloadchromium_src-5a07cf43c4ed0b8daa92cc5ba82ae51d92666e65.zip
chromium_src-5a07cf43c4ed0b8daa92cc5ba82ae51d92666e65.tar.gz
chromium_src-5a07cf43c4ed0b8daa92cc5ba82ae51d92666e65.tar.bz2
Undo all existing overscan settings before updating to a new overscan settings.
If an existing display has overscan setting and SetDisplayOverscan is called for a different display, the display manager will call OnNativeDisplayChanged(), and it will re-apply the overscan setting to other displays, so the effect could be twice or more. We need to undo the existing settings beforehand. BUG=161097 TEST=confirmed with the repro steps in the bug Review URL: https://chromiumcodereview.appspot.com/11362259 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@168974 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/display/display_manager_unittest.cc')
-rw-r--r--ash/display/display_manager_unittest.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/ash/display/display_manager_unittest.cc b/ash/display/display_manager_unittest.cc
index 12ed8d20..e7378b6 100644
--- a/ash/display/display_manager_unittest.cc
+++ b/ash/display/display_manager_unittest.cc
@@ -234,6 +234,15 @@ TEST_F(DisplayManagerTest, MAYBE_OverscanInsetsTest) {
EXPECT_EQ("12,514 378x376",
display_manager()->GetDisplayAt(1)->bounds_in_pixel().ToString());
+ // Make sure that SetOverscanInsets() is idempotent.
+ display_manager()->SetOverscanInsets(display1.id(), gfx::Insets());
+ display_manager()->SetOverscanInsets(
+ display2.id(), gfx::Insets(13, 12, 11, 10));
+ EXPECT_EQ("0,0 500x500",
+ display_manager()->GetDisplayAt(0)->bounds_in_pixel().ToString());
+ EXPECT_EQ("12,514 378x376",
+ display_manager()->GetDisplayAt(1)->bounds_in_pixel().ToString());
+
display_manager()->SetOverscanInsets(
display2.id(), gfx::Insets(10, 11, 12, 13));
EXPECT_EQ("0,0 500x500",
@@ -272,6 +281,14 @@ TEST_F(DisplayManagerTest, MAYBE_OverscanInsetsTest) {
EXPECT_EQ("10,509 376x380",
display_manager()->GetDisplayAt(1)->bounds_in_pixel().ToString());
EXPECT_EQ("188x190", display_manager()->GetDisplayAt(1)->size().ToString());
+
+ // Make sure switching primary display applies the overscan offset only once.
+ ash::Shell::GetInstance()->display_controller()->SetPrimaryDisplay(
+ ScreenAsh::GetSecondaryDisplay());
+ EXPECT_EQ("0,0 500x500",
+ ScreenAsh::GetSecondaryDisplay().bounds_in_pixel().ToString());
+ EXPECT_EQ("10,509 376x380", gfx::Screen::GetNativeScreen()->
+ GetPrimaryDisplay().bounds_in_pixel().ToString());
}
TEST_F(DisplayManagerTest, MAYBE_ZeroOverscanInsets) {