summaryrefslogtreecommitdiffstats
path: root/ash/display/display_controller_unittest.cc
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-09 06:37:53 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-09 06:37:53 +0000
commit1c8bd4cccbbfc4126c594357d6be6c209897d44e (patch)
tree96be819177eb6377b8756b12b8f93d0bb6a74a54 /ash/display/display_controller_unittest.cc
parent49b13daa36358325fcbe46b0645880a2c6eea536 (diff)
downloadchromium_src-1c8bd4cccbbfc4126c594357d6be6c209897d44e.zip
chromium_src-1c8bd4cccbbfc4126c594357d6be6c209897d44e.tar.gz
chromium_src-1c8bd4cccbbfc4126c594357d6be6c209897d44e.tar.bz2
Notify the display bounds change on secondary display when layout changes
BUG=247059 TEST=covered by unittest Review URL: https://chromiumcodereview.appspot.com/22645003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@216607 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/display/display_controller_unittest.cc')
-rw-r--r--ash/display/display_controller_unittest.cc72
1 files changed, 66 insertions, 6 deletions
diff --git a/ash/display/display_controller_unittest.cc b/ash/display/display_controller_unittest.cc
index e9baf90..9131468 100644
--- a/ash/display/display_controller_unittest.cc
+++ b/ash/display/display_controller_unittest.cc
@@ -33,35 +33,67 @@ namespace {
const char kDesktopBackgroundView[] = "DesktopBackgroundView";
-class TestObserver : public DisplayController::Observer {
+class TestObserver : public DisplayController::Observer,
+ public gfx::DisplayObserver {
public:
- TestObserver() : changing_count_(0), changed_count_(0) {
+ TestObserver()
+ : changing_count_(0),
+ changed_count_(0),
+ bounds_changed_count_(0),
+ changed_display_id_(0) {
Shell::GetInstance()->display_controller()->AddObserver(this);
+ Shell::GetScreen()->AddObserver(this);
}
virtual ~TestObserver() {
Shell::GetInstance()->display_controller()->RemoveObserver(this);
+ Shell::GetScreen()->RemoveObserver(this);
}
+ // Overridden from DisplayController::Observer
virtual void OnDisplayConfigurationChanging() OVERRIDE {
++changing_count_;
}
-
virtual void OnDisplayConfigurationChanged() OVERRIDE {
++changed_count_;
}
+ // Overrideen from gfx::DisplayObserver
+ virtual void OnDisplayBoundsChanged(const gfx::Display& display) OVERRIDE {
+ changed_display_id_ = display.id();
+ bounds_changed_count_ ++;
+ }
+ virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE {
+ }
+ virtual void OnDisplayRemoved(const gfx::Display& old_display) OVERRIDE {
+ }
+
int CountAndReset() {
EXPECT_EQ(changing_count_, changed_count_);
- int c = changing_count_;
+ int count = changing_count_;
changing_count_ = changed_count_ = 0;
- return c;
+ return count;
+ }
+
+ int64 GetBoundsChangedCountAndReset() {
+ int count = bounds_changed_count_;
+ bounds_changed_count_ = 0;
+ return count;
+ }
+
+ int64 GetChangedDisplayIdAndReset() {
+ int64 id = changed_display_id_;
+ changed_display_id_ = 0;
+ return id;
}
private:
int changing_count_;
int changed_count_;
+ int bounds_changed_count_;
+ int64 changed_display_id_;
+
DISALLOW_COPY_AND_ASSIGN(TestObserver);
};
@@ -227,9 +259,11 @@ TEST_F(DisplayControllerTest, SecondaryDisplayLayout) {
TestObserver observer;
UpdateDisplay("500x500,400x400");
EXPECT_EQ(1, observer.CountAndReset()); // resize and add
+ EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset());
gfx::Insets insets(5, 5, 5, 5);
+ int64 secondary_display_id = ScreenAsh::GetSecondaryDisplay().id();
Shell::GetInstance()->display_manager()->UpdateWorkAreaOfDisplay(
- ScreenAsh::GetSecondaryDisplay().id(), insets);
+ secondary_display_id, insets);
// Default layout is RIGHT.
EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
@@ -239,6 +273,8 @@ TEST_F(DisplayControllerTest, SecondaryDisplayLayout) {
// Layout the secondary display to the bottom of the primary.
SetSecondaryDisplayLayout(DisplayLayout::BOTTOM);
EXPECT_EQ(1, observer.CountAndReset());
+ EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset());
+ EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset());
EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
EXPECT_EQ("0,500 400x400", GetSecondaryDisplay().bounds().ToString());
EXPECT_EQ("5,505 390x390", GetSecondaryDisplay().work_area().ToString());
@@ -246,6 +282,8 @@ TEST_F(DisplayControllerTest, SecondaryDisplayLayout) {
// Layout the secondary display to the left of the primary.
SetSecondaryDisplayLayout(DisplayLayout::LEFT);
EXPECT_EQ(1, observer.CountAndReset());
+ EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset());
+ EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset());
EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
EXPECT_EQ("-400,0 400x400", GetSecondaryDisplay().bounds().ToString());
EXPECT_EQ("-395,5 390x390", GetSecondaryDisplay().work_area().ToString());
@@ -253,6 +291,8 @@ TEST_F(DisplayControllerTest, SecondaryDisplayLayout) {
// Layout the secondary display to the top of the primary.
SetSecondaryDisplayLayout(DisplayLayout::TOP);
EXPECT_EQ(1, observer.CountAndReset());
+ EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset());
+ EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset());
EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
EXPECT_EQ("0,-400 400x400", GetSecondaryDisplay().bounds().ToString());
EXPECT_EQ("5,-395 390x390", GetSecondaryDisplay().work_area().ToString());
@@ -260,36 +300,56 @@ TEST_F(DisplayControllerTest, SecondaryDisplayLayout) {
// Layout to the right with an offset.
SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, 300);
EXPECT_EQ(1, observer.CountAndReset()); // resize and add
+ EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset());
+ EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset());
EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
EXPECT_EQ("500,300 400x400", GetSecondaryDisplay().bounds().ToString());
// Keep the minimum 100.
SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, 490);
EXPECT_EQ(1, observer.CountAndReset()); // resize and add
+ EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset());
+ EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset());
EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
EXPECT_EQ("500,400 400x400", GetSecondaryDisplay().bounds().ToString());
SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, -400);
+ EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset());
+ EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset());
EXPECT_EQ(1, observer.CountAndReset()); // resize and add
EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
EXPECT_EQ("500,-300 400x400", GetSecondaryDisplay().bounds().ToString());
// Layout to the bottom with an offset.
SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -200);
+ EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset());
+ EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset());
EXPECT_EQ(1, observer.CountAndReset()); // resize and add
EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
EXPECT_EQ("-200,500 400x400", GetSecondaryDisplay().bounds().ToString());
// Keep the minimum 100.
SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, 490);
+ EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset());
+ EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset());
EXPECT_EQ(1, observer.CountAndReset()); // resize and add
EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
EXPECT_EQ("400,500 400x400", GetSecondaryDisplay().bounds().ToString());
SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -400);
+ EXPECT_EQ(secondary_display_id, observer.GetChangedDisplayIdAndReset());
+ EXPECT_EQ(1, observer.GetBoundsChangedCountAndReset());
EXPECT_EQ(1, observer.CountAndReset()); // resize and add
EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString());
+
+ // Setting the same layout shouldn't invoke observers.
+ SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -400);
+ EXPECT_EQ(0, observer.GetChangedDisplayIdAndReset());
+ EXPECT_EQ(0, observer.GetBoundsChangedCountAndReset());
+ EXPECT_EQ(0, observer.CountAndReset()); // resize and add
+ EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
+ EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString());
}
TEST_F(DisplayControllerTest, BoundsUpdated) {