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

Side by Side Diff: ash/display/display_controller_unittest.cc

Issue 11466026: Revert r169388 "Record stack of the failure in SecondaryDisplayLayout test." (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/display/display_controller.h" 5 #include "ash/display/display_controller.h"
6 6
7 #include "ash/display/display_manager.h" 7 #include "ash/display/display_manager.h"
8 #include "ash/launcher/launcher.h" 8 #include "ash/launcher/launcher.h"
9 #include "ash/screen_ash.h" 9 #include "ash/screen_ash.h"
10 #include "ash/shell.h" 10 #include "ash/shell.h"
11 #include "ash/test/ash_test_base.h" 11 #include "ash/test/ash_test_base.h"
12 #include "ash/test/cursor_manager_test_api.h" 12 #include "ash/test/cursor_manager_test_api.h"
13 #include "base/debug/stack_trace.h"
14 #include "ui/aura/env.h" 13 #include "ui/aura/env.h"
15 #include "ui/aura/root_window.h" 14 #include "ui/aura/root_window.h"
16 #include "ui/aura/window_tracker.h" 15 #include "ui/aura/window_tracker.h"
17 #include "ui/gfx/display.h" 16 #include "ui/gfx/display.h"
18 #include "ui/gfx/screen.h" 17 #include "ui/gfx/screen.h"
19 #include "ui/views/widget/widget.h" 18 #include "ui/views/widget/widget.h"
20 19
21 namespace ash { 20 namespace ash {
22 namespace test { 21 namespace test {
23 namespace { 22 namespace {
24 23
25 class TestObserver : public DisplayController::Observer { 24 class TestObserver : public DisplayController::Observer {
26 public: 25 public:
27 TestObserver() : count_(0) { 26 TestObserver() : count_(0) {
28 Shell::GetInstance()->display_controller()->AddObserver(this); 27 Shell::GetInstance()->display_controller()->AddObserver(this);
29 } 28 }
30 29
31 virtual ~TestObserver() { 30 virtual ~TestObserver() {
32 Shell::GetInstance()->display_controller()->RemoveObserver(this); 31 Shell::GetInstance()->display_controller()->RemoveObserver(this);
33 } 32 }
34 33
35 virtual void OnDisplayConfigurationChanging() OVERRIDE { 34 virtual void OnDisplayConfigurationChanging() OVERRIDE {
36 if (!count_)
37 stack_traces_.str(std::string());
38 stack_traces_ << "=========\n";
39 base::debug::StackTrace().OutputToStream(&stack_traces_);
40 ++count_; 35 ++count_;
41 } 36 }
42 37
43 int CountAndReset() { 38 int CountAndReset() {
44 int c = count_; 39 int c = count_;
45 count_ = 0; 40 count_ = 0;
46 return c; 41 return c;
47 } 42 }
48 43
49 std::string ToString() {
50 std::string str = stack_traces_.str();
51 stack_traces_.str(std::string());
52 return str;
53 }
54
55 private: 44 private:
56 int count_; 45 int count_;
57 std::stringstream stack_traces_;
58 46
59 DISALLOW_COPY_AND_ASSIGN(TestObserver); 47 DISALLOW_COPY_AND_ASSIGN(TestObserver);
60 }; 48 };
61 49
62 gfx::Display GetPrimaryDisplay() { 50 gfx::Display GetPrimaryDisplay() {
63 return Shell::GetScreen()->GetDisplayNearestWindow( 51 return Shell::GetScreen()->GetDisplayNearestWindow(
64 Shell::GetAllRootWindows()[0]); 52 Shell::GetAllRootWindows()[0]);
65 } 53 }
66 54
67 gfx::Display GetSecondaryDisplay() { 55 gfx::Display GetSecondaryDisplay() {
(...skipping 30 matching lines...) Expand all
98 86
99 typedef test::AshTestBase DisplayControllerTest; 87 typedef test::AshTestBase DisplayControllerTest;
100 88
101 TEST_F(DisplayControllerShutdownTest, Shutdown) { 89 TEST_F(DisplayControllerShutdownTest, Shutdown) {
102 UpdateDisplay("444x333, 200x200"); 90 UpdateDisplay("444x333, 200x200");
103 } 91 }
104 92
105 TEST_F(DisplayControllerTest, SecondaryDisplayLayout) { 93 TEST_F(DisplayControllerTest, SecondaryDisplayLayout) {
106 TestObserver observer; 94 TestObserver observer;
107 UpdateDisplay("500x500,400x400"); 95 UpdateDisplay("500x500,400x400");
108 EXPECT_EQ(2, observer.CountAndReset()) 96 EXPECT_EQ(2, observer.CountAndReset()); // resize and add
109 << observer.ToString(); // resize and add
110 gfx::Display* secondary_display = 97 gfx::Display* secondary_display =
111 Shell::GetInstance()->display_manager()->GetDisplayAt(1); 98 Shell::GetInstance()->display_manager()->GetDisplayAt(1);
112 gfx::Insets insets(5, 5, 5, 5); 99 gfx::Insets insets(5, 5, 5, 5);
113 secondary_display->UpdateWorkAreaFromInsets(insets); 100 secondary_display->UpdateWorkAreaFromInsets(insets);
114 101
115 // Default layout is RIGHT. 102 // Default layout is RIGHT.
116 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()) 103 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
117 << observer.ToString(); 104 EXPECT_EQ("500,0 400x400", GetSecondaryDisplay().bounds().ToString());
118 EXPECT_EQ("500,0 400x400", GetSecondaryDisplay().bounds().ToString()) 105 EXPECT_EQ("505,5 390x390", GetSecondaryDisplay().work_area().ToString());
119 << observer.ToString();
120 EXPECT_EQ("505,5 390x390", GetSecondaryDisplay().work_area().ToString())
121 << observer.ToString();
122 106
123 // Layout the secondary display to the bottom of the primary. 107 // Layout the secondary display to the bottom of the primary.
124 SetSecondaryDisplayLayout(DisplayLayout::BOTTOM); 108 SetSecondaryDisplayLayout(DisplayLayout::BOTTOM);
125 EXPECT_EQ(1, observer.CountAndReset()) 109 EXPECT_EQ(1, observer.CountAndReset());
126 << observer.ToString(); 110 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
127 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()) 111 EXPECT_EQ("0,500 400x400", GetSecondaryDisplay().bounds().ToString());
128 << observer.ToString(); 112 EXPECT_EQ("5,505 390x390", GetSecondaryDisplay().work_area().ToString());
129 EXPECT_EQ("0,500 400x400", GetSecondaryDisplay().bounds().ToString())
130 << observer.ToString();
131 EXPECT_EQ("5,505 390x390", GetSecondaryDisplay().work_area().ToString())
132 << observer.ToString();
133 113
134 // Layout the secondary display to the left of the primary. 114 // Layout the secondary display to the left of the primary.
135 SetSecondaryDisplayLayout(DisplayLayout::LEFT); 115 SetSecondaryDisplayLayout(DisplayLayout::LEFT);
136 EXPECT_EQ(1, observer.CountAndReset()) 116 EXPECT_EQ(1, observer.CountAndReset());
137 << observer.ToString(); 117 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
138 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()) 118 EXPECT_EQ("-400,0 400x400", GetSecondaryDisplay().bounds().ToString());
139 << observer.ToString(); 119 EXPECT_EQ("-395,5 390x390", GetSecondaryDisplay().work_area().ToString());
140 EXPECT_EQ("-400,0 400x400", GetSecondaryDisplay().bounds().ToString())
141 << observer.ToString();
142 EXPECT_EQ("-395,5 390x390", GetSecondaryDisplay().work_area().ToString())
143 << observer.ToString();
144 120
145 // Layout the secondary display to the top of the primary. 121 // Layout the secondary display to the top of the primary.
146 SetSecondaryDisplayLayout(DisplayLayout::TOP); 122 SetSecondaryDisplayLayout(DisplayLayout::TOP);
147 EXPECT_EQ(1, observer.CountAndReset()) 123 EXPECT_EQ(1, observer.CountAndReset());
148 << observer.ToString(); 124 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
149 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()) 125 EXPECT_EQ("0,-400 400x400", GetSecondaryDisplay().bounds().ToString());
150 << observer.ToString(); 126 EXPECT_EQ("5,-395 390x390", GetSecondaryDisplay().work_area().ToString());
151 EXPECT_EQ("0,-400 400x400", GetSecondaryDisplay().bounds().ToString())
152 << observer.ToString();
153 EXPECT_EQ("5,-395 390x390", GetSecondaryDisplay().work_area().ToString())
154 << observer.ToString();
155 127
156 // Layout to the right with an offset. 128 // Layout to the right with an offset.
157 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, 300); 129 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, 300);
158 EXPECT_EQ(1, observer.CountAndReset()) 130 EXPECT_EQ(1, observer.CountAndReset()); // resize and add
159 << observer.ToString(); 131 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
160 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()) 132 EXPECT_EQ("500,300 400x400", GetSecondaryDisplay().bounds().ToString());
161 << observer.ToString();
162 EXPECT_EQ("500,300 400x400", GetSecondaryDisplay().bounds().ToString())
163 << observer.ToString();
164 133
165 // Keep the minimum 100. 134 // Keep the minimum 100.
166 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, 490); 135 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, 490);
167 EXPECT_EQ(1, observer.CountAndReset()) 136 EXPECT_EQ(1, observer.CountAndReset()); // resize and add
168 << observer.ToString(); 137 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
169 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()) 138 EXPECT_EQ("500,400 400x400", GetSecondaryDisplay().bounds().ToString());
170 << observer.ToString();
171 EXPECT_EQ("500,400 400x400", GetSecondaryDisplay().bounds().ToString())
172 << observer.ToString();
173 139
174 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, -400); 140 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::RIGHT, -400);
175 EXPECT_EQ(1, observer.CountAndReset()) 141 EXPECT_EQ(1, observer.CountAndReset()); // resize and add
176 << observer.ToString(); 142 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
177 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()) 143 EXPECT_EQ("500,-300 400x400", GetSecondaryDisplay().bounds().ToString());
178 << observer.ToString();
179 EXPECT_EQ("500,-300 400x400", GetSecondaryDisplay().bounds().ToString())
180 << observer.ToString();
181 144
182 // Layout to the bottom with an offset. 145 // Layout to the bottom with an offset.
183 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -200); 146 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -200);
184 EXPECT_EQ(1, observer.CountAndReset()) 147 EXPECT_EQ(1, observer.CountAndReset()); // resize and add
185 << observer.ToString(); 148 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
186 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()) 149 EXPECT_EQ("-200,500 400x400", GetSecondaryDisplay().bounds().ToString());
187 << observer.ToString();
188 EXPECT_EQ("-200,500 400x400", GetSecondaryDisplay().bounds().ToString())
189 << observer.ToString();
190 150
191 // Keep the minimum 100. 151 // Keep the minimum 100.
192 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, 490); 152 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, 490);
193 EXPECT_EQ(1, observer.CountAndReset()) 153 EXPECT_EQ(1, observer.CountAndReset()); // resize and add
194 << observer.ToString(); 154 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
195 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()) 155 EXPECT_EQ("400,500 400x400", GetSecondaryDisplay().bounds().ToString());
196 << observer.ToString();
197 EXPECT_EQ("400,500 400x400", GetSecondaryDisplay().bounds().ToString())
198 << observer.ToString();
199 156
200 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -400); 157 SetSecondaryDisplayLayoutAndOffset(DisplayLayout::BOTTOM, -400);
201 EXPECT_EQ(1, observer.CountAndReset()) 158 EXPECT_EQ(1, observer.CountAndReset()); // resize and add
202 << observer.ToString(); 159 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
203 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()) 160 EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString());
204 << observer.ToString();
205 EXPECT_EQ("-300,500 400x400", GetSecondaryDisplay().bounds().ToString())
206 << observer.ToString();
207 161
208 } 162 }
209 163
210 TEST_F(DisplayControllerTest, BoundsUpdated) { 164 TEST_F(DisplayControllerTest, BoundsUpdated) {
211 TestObserver observer; 165 TestObserver observer;
212 SetSecondaryDisplayLayout(DisplayLayout::BOTTOM); 166 SetSecondaryDisplayLayout(DisplayLayout::BOTTOM);
213 UpdateDisplay("200x200,300x300"); // layout, resize and add. 167 UpdateDisplay("200x200,300x300"); // layout, resize and add.
214 EXPECT_EQ(3, observer.CountAndReset()); 168 EXPECT_EQ(3, observer.CountAndReset());
215 169
216 gfx::Display* secondary_display = 170 gfx::Display* secondary_display =
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 UpdateDisplay("100+200-100x200,300+500-200x300"); 521 UpdateDisplay("100+200-100x200,300+500-200x300");
568 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); 522 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays());
569 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString()); 523 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString());
570 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); 524 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString());
571 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString()); 525 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString());
572 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString()); 526 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString());
573 } 527 }
574 528
575 } // namespace test 529 } // namespace test
576 } // namespace ash 530 } // namespace ash
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698