diff options
author | mukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-21 04:20:18 +0000 |
---|---|---|
committer | mukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-21 04:20:18 +0000 |
commit | 5a07cf43c4ed0b8daa92cc5ba82ae51d92666e65 (patch) | |
tree | f0eac866c976caa753834743cf39aaf82704bf77 /ash/display/display_manager_unittest.cc | |
parent | da3a295bf286594bced1f26dfd1e0df97b28048a (diff) | |
download | chromium_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.cc | 17 |
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) { |