summaryrefslogtreecommitdiffstats
path: root/ash/display/display_manager_unittest.cc
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-06 04:36:17 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-06 04:36:17 +0000
commit5b3065b13476000a1940aeabfec125c736d687da (patch)
tree277151e3397df2fabbbedfd915daf92f92e683c8 /ash/display/display_manager_unittest.cc
parentce464bf730dc151f843740626acc659cf19b54d4 (diff)
downloadchromium_src-5b3065b13476000a1940aeabfec125c736d687da.zip
chromium_src-5b3065b13476000a1940aeabfec125c736d687da.tar.gz
chromium_src-5b3065b13476000a1940aeabfec125c736d687da.tar.bz2
Remove the displays first before adding.
DisplayManager used to add display first, which could make the # of displasys exceed 2 during the configuration. BUG=163624 TEST=covered by test case. Review URL: https://chromiumcodereview.appspot.com/11412334 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171402 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/display/display_manager_unittest.cc')
-rw-r--r--ash/display/display_manager_unittest.cc23
1 files changed, 20 insertions, 3 deletions
diff --git a/ash/display/display_manager_unittest.cc b/ash/display/display_manager_unittest.cc
index 287d83d..ddd20cf 100644
--- a/ash/display/display_manager_unittest.cc
+++ b/ash/display/display_manager_unittest.cc
@@ -316,6 +316,7 @@ TEST_F(DisplayManagerTest, TestNativeDisplaysChanged) {
display_manager()->SetFirstDisplayAsInternalDisplayForTest();
const gfx::Display native_display(internal_display_id,
gfx::Rect(0, 0, 500, 500));
+ const gfx::Display external_display(10, gfx::Rect(1, 1, 100, 100));
EXPECT_EQ(1U, display_manager()->GetNumDisplays());
std::string default_bounds =
@@ -329,7 +330,7 @@ TEST_F(DisplayManagerTest, TestNativeDisplaysChanged) {
display_manager()->GetDisplayAt(0)->bounds().ToString());
// External connected while primary was disconnected.
- displays.push_back(gfx::Display(10, gfx::Rect(1, 1, 100, 100)));
+ displays.push_back(external_display);
display_manager()->OnNativeDisplaysChanged(displays);
EXPECT_EQ(2U, display_manager()->GetNumDisplays());
EXPECT_EQ(default_bounds,
@@ -340,7 +341,7 @@ TEST_F(DisplayManagerTest, TestNativeDisplaysChanged) {
// Primary connected, with different bounds.
displays.clear();
displays.push_back(native_display);
- displays.push_back(gfx::Display(10, gfx::Rect(1, 1, 100, 100)));
+ displays.push_back(external_display);
display_manager()->OnNativeDisplaysChanged(displays);
EXPECT_EQ(2U, display_manager()->GetNumDisplays());
EXPECT_EQ("0,0 500x500",
@@ -350,7 +351,7 @@ TEST_F(DisplayManagerTest, TestNativeDisplaysChanged) {
// Turn off primary.
displays.clear();
- displays.push_back(gfx::Display(10, gfx::Rect(1, 1, 100, 100)));
+ displays.push_back(external_display);
display_manager()->OnNativeDisplaysChanged(displays);
EXPECT_EQ(2U, display_manager()->GetNumDisplays());
EXPECT_EQ("0,0 500x500",
@@ -373,6 +374,22 @@ TEST_F(DisplayManagerTest, TestNativeDisplaysChanged) {
EXPECT_EQ(1U, display_manager()->GetNumDisplays());
EXPECT_EQ("0,0 500x500",
FindDisplayForId(internal_display_id).bounds().ToString());
+
+ // External display was changed during suspend.
+ displays.push_back(external_display);
+ display_manager()->OnNativeDisplaysChanged(displays);
+ EXPECT_EQ(2U, display_manager()->GetNumDisplays());
+
+ // suspend...
+ displays.clear();
+ display_manager()->OnNativeDisplaysChanged(displays);
+ EXPECT_EQ(2U, display_manager()->GetNumDisplays());
+
+ // and resume with different external display.
+ displays.push_back(native_display);
+ displays.push_back(gfx::Display(11, gfx::Rect(1, 1, 100, 100)));
+ display_manager()->OnNativeDisplaysChanged(displays);
+ EXPECT_EQ(2U, display_manager()->GetNumDisplays());
}
TEST_F(DisplayManagerTest, EnsurePointerInDisplays) {