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

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

Issue 11030017: Add context to gfx::Screen calls in support of simultaneous desktop+ash (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: win fix Created 8 years, 2 months 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
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/launcher/launcher.h" 7 #include "ash/launcher/launcher.h"
8 #include "ash/screen_ash.h" 8 #include "ash/screen_ash.h"
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "ash/test/ash_test_base.h" 10 #include "ash/test/ash_test_base.h"
(...skipping 29 matching lines...) Expand all
40 return c; 40 return c;
41 } 41 }
42 42
43 private: 43 private:
44 int count_; 44 int count_;
45 45
46 DISALLOW_COPY_AND_ASSIGN(TestObserver); 46 DISALLOW_COPY_AND_ASSIGN(TestObserver);
47 }; 47 };
48 48
49 gfx::Display GetPrimaryDisplay() { 49 gfx::Display GetPrimaryDisplay() {
50 return gfx::Screen::GetDisplayNearestWindow( 50 return ash::Shell::GetAshScreen()->GetDisplayNearestWindow(
51 Shell::GetAllRootWindows()[0]); 51 Shell::GetAllRootWindows()[0]);
52 } 52 }
53 53
54 gfx::Display GetSecondaryDisplay() { 54 gfx::Display GetSecondaryDisplay() {
55 return gfx::Screen::GetDisplayNearestWindow( 55 return ash::Shell::GetAshScreen()->GetDisplayNearestWindow(
56 Shell::GetAllRootWindows()[1]); 56 Shell::GetAllRootWindows()[1]);
57 } 57 }
58 58
59 void SetSecondaryDisplayLayout(DisplayLayout::Position position) { 59 void SetSecondaryDisplayLayout(DisplayLayout::Position position) {
60 DisplayController* display_controller = 60 DisplayController* display_controller =
61 Shell::GetInstance()->display_controller(); 61 Shell::GetInstance()->display_controller();
62 DisplayLayout layout = display_controller->default_display_layout(); 62 DisplayLayout layout = display_controller->default_display_layout();
63 layout.position = position; 63 layout.position = position;
64 display_controller->SetDefaultDisplayLayout(layout); 64 display_controller->SetDefaultDisplayLayout(layout);
65 } 65 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 139
140 UpdateDisplay("400x400,300x300"); 140 UpdateDisplay("400x400,300x300");
141 EXPECT_EQ(1, observer.CountAndReset()); 141 EXPECT_EQ(1, observer.CountAndReset());
142 EXPECT_EQ("0,0 400x400", GetPrimaryDisplay().bounds().ToString()); 142 EXPECT_EQ("0,0 400x400", GetPrimaryDisplay().bounds().ToString());
143 EXPECT_EQ("0,400 300x300", GetSecondaryDisplay().bounds().ToString()); 143 EXPECT_EQ("0,400 300x300", GetSecondaryDisplay().bounds().ToString());
144 EXPECT_EQ("5,405 290x290", GetSecondaryDisplay().work_area().ToString()); 144 EXPECT_EQ("5,405 290x290", GetSecondaryDisplay().work_area().ToString());
145 145
146 UpdateDisplay("400x400"); 146 UpdateDisplay("400x400");
147 EXPECT_EQ(1, observer.CountAndReset()); 147 EXPECT_EQ(1, observer.CountAndReset());
148 EXPECT_EQ("0,0 400x400", GetPrimaryDisplay().bounds().ToString()); 148 EXPECT_EQ("0,0 400x400", GetPrimaryDisplay().bounds().ToString());
149 EXPECT_EQ(1, gfx::Screen::GetNumDisplays()); 149 EXPECT_EQ(1, ash::Shell::GetAshScreen()->GetNumDisplays());
150 150
151 UpdateDisplay("500x500,700x700"); 151 UpdateDisplay("500x500,700x700");
152 EXPECT_EQ(2, observer.CountAndReset()); 152 EXPECT_EQ(2, observer.CountAndReset());
153 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); 153 ASSERT_EQ(2, ash::Shell::GetAshScreen()->GetNumDisplays());
154 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); 154 EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString());
155 EXPECT_EQ("0,500 700x700", GetSecondaryDisplay().bounds().ToString()); 155 EXPECT_EQ("0,500 700x700", GetSecondaryDisplay().bounds().ToString());
156 } 156 }
157 157
158 TEST_F(DisplayControllerTest, InvertLayout) { 158 TEST_F(DisplayControllerTest, InvertLayout) {
159 EXPECT_EQ("left, 0", 159 EXPECT_EQ("left, 0",
160 DisplayLayout(DisplayLayout::RIGHT, 0).Invert().ToString()); 160 DisplayLayout(DisplayLayout::RIGHT, 0).Invert().ToString());
161 EXPECT_EQ("left, -100", 161 EXPECT_EQ("left, -100",
162 DisplayLayout(DisplayLayout::RIGHT, 100).Invert().ToString()); 162 DisplayLayout(DisplayLayout::RIGHT, 100).Invert().ToString());
163 EXPECT_EQ("left, 50", 163 EXPECT_EQ("left, 50",
(...skipping 19 matching lines...) Expand all
183 DisplayLayout(DisplayLayout::BOTTOM, 70).Invert().ToString()); 183 DisplayLayout(DisplayLayout::BOTTOM, 70).Invert().ToString());
184 EXPECT_EQ("top, 80", 184 EXPECT_EQ("top, 80",
185 DisplayLayout(DisplayLayout::BOTTOM, -80).Invert().ToString()); 185 DisplayLayout(DisplayLayout::BOTTOM, -80).Invert().ToString());
186 } 186 }
187 187
188 TEST_F(DisplayControllerTest, SwapPrimary) { 188 TEST_F(DisplayControllerTest, SwapPrimary) {
189 DisplayController* display_controller = 189 DisplayController* display_controller =
190 Shell::GetInstance()->display_controller(); 190 Shell::GetInstance()->display_controller();
191 191
192 UpdateDisplay("200x200,300x300"); 192 UpdateDisplay("200x200,300x300");
193 gfx::Display primary_display = gfx::Screen::GetPrimaryDisplay(); 193 gfx::Display primary_display =
194 ash::Shell::GetAshScreen()->GetPrimaryDisplay();
194 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); 195 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay();
195 196
196 std::string secondary_name = aura::Env::GetInstance()-> 197 std::string secondary_name = aura::Env::GetInstance()->
197 display_manager()->GetDisplayNameFor(secondary_display); 198 display_manager()->GetDisplayNameFor(secondary_display);
198 DisplayLayout secondary_layout(DisplayLayout::RIGHT, 50); 199 DisplayLayout secondary_layout(DisplayLayout::RIGHT, 50);
199 display_controller->SetLayoutForDisplayName(secondary_name, secondary_layout); 200 display_controller->SetLayoutForDisplayName(secondary_name, secondary_layout);
200 201
201 EXPECT_NE(primary_display.id(), secondary_display.id()); 202 EXPECT_NE(primary_display.id(), secondary_display.id());
202 aura::RootWindow* primary_root = 203 aura::RootWindow* primary_root =
203 display_controller->GetRootWindowForDisplayId(primary_display.id()); 204 display_controller->GetRootWindowForDisplayId(primary_display.id());
204 aura::RootWindow* secondary_root = 205 aura::RootWindow* secondary_root =
205 display_controller->GetRootWindowForDisplayId(secondary_display.id()); 206 display_controller->GetRootWindowForDisplayId(secondary_display.id());
206 EXPECT_NE(primary_root, secondary_root); 207 EXPECT_NE(primary_root, secondary_root);
207 aura::Window* launcher_window = 208 aura::Window* launcher_window =
208 Shell::GetInstance()->launcher()->widget()->GetNativeView(); 209 Shell::GetInstance()->launcher()->widget()->GetNativeView();
209 EXPECT_TRUE(primary_root->Contains(launcher_window)); 210 EXPECT_TRUE(primary_root->Contains(launcher_window));
210 EXPECT_FALSE(secondary_root->Contains(launcher_window)); 211 EXPECT_FALSE(secondary_root->Contains(launcher_window));
211 EXPECT_EQ(primary_display.id(), 212 EXPECT_EQ(primary_display.id(),
212 gfx::Screen::GetDisplayNearestPoint(gfx::Point(-100, -100)).id()); 213 ash::Shell::GetAshScreen()->GetDisplayNearestPoint(
214 gfx::Point(-100, -100)).id());
213 EXPECT_EQ(primary_display.id(), 215 EXPECT_EQ(primary_display.id(),
214 gfx::Screen::GetDisplayNearestWindow(NULL).id()); 216 ash::Shell::GetAshScreen()->GetDisplayNearestWindow(NULL).id());
215 217
216 // Switch primary and secondary 218 // Switch primary and secondary
217 display_controller->SetPrimaryDisplay(secondary_display); 219 display_controller->SetPrimaryDisplay(secondary_display);
218 EXPECT_EQ(secondary_display.id(), gfx::Screen::GetPrimaryDisplay().id()); 220 EXPECT_EQ(secondary_display.id(),
221 ash::Shell::GetAshScreen()->GetPrimaryDisplay().id());
219 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id()); 222 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id());
220 EXPECT_EQ(secondary_display.id(), 223 EXPECT_EQ(secondary_display.id(),
221 gfx::Screen::GetDisplayNearestPoint(gfx::Point(-100, -100)).id()); 224 ash::Shell::GetAshScreen()->GetDisplayNearestPoint(
225 gfx::Point(-100, -100)).id());
222 EXPECT_EQ(secondary_display.id(), 226 EXPECT_EQ(secondary_display.id(),
223 gfx::Screen::GetDisplayNearestWindow(NULL).id()); 227 ash::Shell::GetAshScreen()->GetDisplayNearestWindow(NULL).id());
224 228
225 EXPECT_EQ( 229 EXPECT_EQ(
226 primary_root, 230 primary_root,
227 display_controller->GetRootWindowForDisplayId(secondary_display.id())); 231 display_controller->GetRootWindowForDisplayId(secondary_display.id()));
228 EXPECT_EQ( 232 EXPECT_EQ(
229 secondary_root, 233 secondary_root,
230 display_controller->GetRootWindowForDisplayId(primary_display.id())); 234 display_controller->GetRootWindowForDisplayId(primary_display.id()));
231 EXPECT_TRUE(primary_root->Contains(launcher_window)); 235 EXPECT_TRUE(primary_root->Contains(launcher_window));
232 EXPECT_FALSE(secondary_root->Contains(launcher_window)); 236 EXPECT_FALSE(secondary_root->Contains(launcher_window));
233 237
234 const DisplayLayout& inverted_layout = 238 const DisplayLayout& inverted_layout =
235 display_controller->GetLayoutForDisplay(primary_display); 239 display_controller->GetLayoutForDisplay(primary_display);
236 240
237 EXPECT_EQ("left, -50", inverted_layout.ToString()); 241 EXPECT_EQ("left, -50", inverted_layout.ToString());
238 242
239 aura::WindowTracker tracker; 243 aura::WindowTracker tracker;
240 tracker.Add(primary_root); 244 tracker.Add(primary_root);
241 tracker.Add(secondary_root); 245 tracker.Add(secondary_root);
242 246
243 // Deleting 2nd display should move the primary to original primary display. 247 // Deleting 2nd display should move the primary to original primary display.
244 UpdateDisplay("200x200"); 248 UpdateDisplay("200x200");
245 RunAllPendingInMessageLoop(); // RootWindow is deleted in a posted task. 249 RunAllPendingInMessageLoop(); // RootWindow is deleted in a posted task.
246 EXPECT_EQ(1, gfx::Screen::GetNumDisplays()); 250 EXPECT_EQ(1, ash::Shell::GetAshScreen()->GetNumDisplays());
247 EXPECT_EQ(primary_display.id(), gfx::Screen::GetPrimaryDisplay().id());
248 EXPECT_EQ(primary_display.id(), 251 EXPECT_EQ(primary_display.id(),
249 gfx::Screen::GetDisplayNearestPoint(gfx::Point(-100, -100)).id()); 252 ash::Shell::GetAshScreen()->GetPrimaryDisplay().id());
250 EXPECT_EQ(primary_display.id(), 253 EXPECT_EQ(primary_display.id(),
251 gfx::Screen::GetDisplayNearestWindow(NULL).id()); 254 ash::Shell::GetAshScreen()->GetDisplayNearestPoint(
255 gfx::Point(-100, -100)).id());
256 EXPECT_EQ(primary_display.id(),
257 ash::Shell::GetAshScreen()->GetDisplayNearestWindow(NULL).id());
252 EXPECT_TRUE(tracker.Contains(primary_root)); 258 EXPECT_TRUE(tracker.Contains(primary_root));
253 EXPECT_FALSE(tracker.Contains(secondary_root)); 259 EXPECT_FALSE(tracker.Contains(secondary_root));
254 EXPECT_TRUE(primary_root->Contains(launcher_window)); 260 EXPECT_TRUE(primary_root->Contains(launcher_window));
255 } 261 }
256 262
257 TEST_F(DisplayControllerTest, MAYBE_UpdateDisplayWithHostOrigin) { 263 TEST_F(DisplayControllerTest, MAYBE_UpdateDisplayWithHostOrigin) {
258 UpdateDisplay("100x200,300x400"); 264 UpdateDisplay("100x200,300x400");
259 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); 265 ASSERT_EQ(2, ash::Shell::GetAshScreen()->GetNumDisplays());
260 Shell::RootWindowList root_windows = 266 Shell::RootWindowList root_windows =
261 Shell::GetInstance()->GetAllRootWindows(); 267 Shell::GetInstance()->GetAllRootWindows();
262 ASSERT_EQ(2U, root_windows.size()); 268 ASSERT_EQ(2U, root_windows.size());
263 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); 269 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString());
264 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); 270 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString());
265 // UpdateDisplay set the origin if it's not set. 271 // UpdateDisplay set the origin if it's not set.
266 EXPECT_NE("0,0", root_windows[1]->GetHostOrigin().ToString()); 272 EXPECT_NE("0,0", root_windows[1]->GetHostOrigin().ToString());
267 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); 273 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString());
268 274
269 UpdateDisplay("100x200,200+300-300x400"); 275 UpdateDisplay("100x200,200+300-300x400");
270 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); 276 ASSERT_EQ(2, ash::Shell::GetAshScreen()->GetNumDisplays());
271 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); 277 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString());
272 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); 278 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString());
273 EXPECT_EQ("200,300", root_windows[1]->GetHostOrigin().ToString()); 279 EXPECT_EQ("200,300", root_windows[1]->GetHostOrigin().ToString());
274 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); 280 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString());
275 281
276 UpdateDisplay("400+500-200x300,300x400"); 282 UpdateDisplay("400+500-200x300,300x400");
277 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); 283 ASSERT_EQ(2, ash::Shell::GetAshScreen()->GetNumDisplays());
278 EXPECT_EQ("400,500", root_windows[0]->GetHostOrigin().ToString()); 284 EXPECT_EQ("400,500", root_windows[0]->GetHostOrigin().ToString());
279 EXPECT_EQ("200x300", root_windows[0]->GetHostSize().ToString()); 285 EXPECT_EQ("200x300", root_windows[0]->GetHostSize().ToString());
280 EXPECT_EQ("0,0", root_windows[1]->GetHostOrigin().ToString()); 286 EXPECT_EQ("0,0", root_windows[1]->GetHostOrigin().ToString());
281 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); 287 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString());
282 288
283 UpdateDisplay("100+200-100x200,300+500-200x300"); 289 UpdateDisplay("100+200-100x200,300+500-200x300");
284 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); 290 ASSERT_EQ(2, ash::Shell::GetAshScreen()->GetNumDisplays());
285 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString()); 291 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString());
286 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); 292 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString());
287 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString()); 293 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString());
288 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString()); 294 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString());
289 } 295 }
290 296
291 } // namespace test 297 } // namespace test
292 } // namespace ash 298 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698