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

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: fix other os's 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 128 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, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView()));
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, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView()));
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 = gfx::Screen::GetPrimaryDisplay(
194 ash::Shell::GetRootNativeView());
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 gfx::Screen::GetDisplayNearestPoint(
214 ash::Shell::GetRootNativeView(), gfx::Point(-100, -100)).id());
213 EXPECT_EQ(primary_display.id(), 215 EXPECT_EQ(primary_display.id(),
214 gfx::Screen::GetDisplayNearestWindow(NULL).id()); 216 gfx::Screen::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(), gfx::Screen::GetPrimaryDisplay().id());
219 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id()); 221 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id());
220 EXPECT_EQ(secondary_display.id(), 222 EXPECT_EQ(secondary_display.id(),
221 gfx::Screen::GetDisplayNearestPoint(gfx::Point(-100, -100)).id()); 223 gfx::Screen::GetDisplayNearestPoint(
224 ash::Shell::GetRootNativeView(), gfx::Point(-100, -100)).id());
222 EXPECT_EQ(secondary_display.id(), 225 EXPECT_EQ(secondary_display.id(),
223 gfx::Screen::GetDisplayNearestWindow(NULL).id()); 226 gfx::Screen::GetDisplayNearestWindow(NULL).id());
224 227
225 EXPECT_EQ( 228 EXPECT_EQ(
226 primary_root, 229 primary_root,
227 display_controller->GetRootWindowForDisplayId(secondary_display.id())); 230 display_controller->GetRootWindowForDisplayId(secondary_display.id()));
228 EXPECT_EQ( 231 EXPECT_EQ(
229 secondary_root, 232 secondary_root,
230 display_controller->GetRootWindowForDisplayId(primary_display.id())); 233 display_controller->GetRootWindowForDisplayId(primary_display.id()));
231 EXPECT_TRUE(primary_root->Contains(launcher_window)); 234 EXPECT_TRUE(primary_root->Contains(launcher_window));
232 EXPECT_FALSE(secondary_root->Contains(launcher_window)); 235 EXPECT_FALSE(secondary_root->Contains(launcher_window));
233 236
234 const DisplayLayout& inverted_layout = 237 const DisplayLayout& inverted_layout =
235 display_controller->GetLayoutForDisplay(primary_display); 238 display_controller->GetLayoutForDisplay(primary_display);
236 239
237 EXPECT_EQ("left, -50", inverted_layout.ToString()); 240 EXPECT_EQ("left, -50", inverted_layout.ToString());
238 241
239 aura::WindowTracker tracker; 242 aura::WindowTracker tracker;
240 tracker.Add(primary_root); 243 tracker.Add(primary_root);
241 tracker.Add(secondary_root); 244 tracker.Add(secondary_root);
242 245
243 // Deleting 2nd display should move the primary to original primary display. 246 // Deleting 2nd display should move the primary to original primary display.
244 UpdateDisplay("200x200"); 247 UpdateDisplay("200x200");
245 RunAllPendingInMessageLoop(); // RootWindow is deleted in a posted task. 248 RunAllPendingInMessageLoop(); // RootWindow is deleted in a posted task.
246 EXPECT_EQ(1, gfx::Screen::GetNumDisplays()); 249 EXPECT_EQ(1, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView()));
247 EXPECT_EQ(primary_display.id(), gfx::Screen::GetPrimaryDisplay().id()); 250 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 gfx::Screen::GetDisplayNearestPoint(
253 ash::Shell::GetRootNativeView(), gfx::Point(-100, -100)).id());
250 EXPECT_EQ(primary_display.id(), 254 EXPECT_EQ(primary_display.id(),
251 gfx::Screen::GetDisplayNearestWindow(NULL).id()); 255 gfx::Screen::GetDisplayNearestWindow(NULL).id());
252 EXPECT_TRUE(tracker.Contains(primary_root)); 256 EXPECT_TRUE(tracker.Contains(primary_root));
253 EXPECT_FALSE(tracker.Contains(secondary_root)); 257 EXPECT_FALSE(tracker.Contains(secondary_root));
254 EXPECT_TRUE(primary_root->Contains(launcher_window)); 258 EXPECT_TRUE(primary_root->Contains(launcher_window));
255 } 259 }
256 260
257 TEST_F(DisplayControllerTest, MAYBE_UpdateDisplayWithHostOrigin) { 261 TEST_F(DisplayControllerTest, MAYBE_UpdateDisplayWithHostOrigin) {
258 UpdateDisplay("100x200,300x400"); 262 UpdateDisplay("100x200,300x400");
259 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); 263 ASSERT_EQ(2, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView()));
260 Shell::RootWindowList root_windows = 264 Shell::RootWindowList root_windows =
261 Shell::GetInstance()->GetAllRootWindows(); 265 Shell::GetInstance()->GetAllRootWindows();
262 ASSERT_EQ(2U, root_windows.size()); 266 ASSERT_EQ(2U, root_windows.size());
263 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); 267 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString());
264 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); 268 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString());
265 // UpdateDisplay set the origin if it's not set. 269 // UpdateDisplay set the origin if it's not set.
266 EXPECT_NE("0,0", root_windows[1]->GetHostOrigin().ToString()); 270 EXPECT_NE("0,0", root_windows[1]->GetHostOrigin().ToString());
267 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); 271 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString());
268 272
269 UpdateDisplay("100x200,200+300-300x400"); 273 UpdateDisplay("100x200,200+300-300x400");
270 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); 274 ASSERT_EQ(2, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView()));
271 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); 275 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString());
272 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); 276 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString());
273 EXPECT_EQ("200,300", root_windows[1]->GetHostOrigin().ToString()); 277 EXPECT_EQ("200,300", root_windows[1]->GetHostOrigin().ToString());
274 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); 278 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString());
275 279
276 UpdateDisplay("400+500-200x300,300x400"); 280 UpdateDisplay("400+500-200x300,300x400");
277 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); 281 ASSERT_EQ(2, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView()));
278 EXPECT_EQ("400,500", root_windows[0]->GetHostOrigin().ToString()); 282 EXPECT_EQ("400,500", root_windows[0]->GetHostOrigin().ToString());
279 EXPECT_EQ("200x300", root_windows[0]->GetHostSize().ToString()); 283 EXPECT_EQ("200x300", root_windows[0]->GetHostSize().ToString());
280 EXPECT_EQ("0,0", root_windows[1]->GetHostOrigin().ToString()); 284 EXPECT_EQ("0,0", root_windows[1]->GetHostOrigin().ToString());
281 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); 285 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString());
282 286
283 UpdateDisplay("100+200-100x200,300+500-200x300"); 287 UpdateDisplay("100+200-100x200,300+500-200x300");
284 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); 288 ASSERT_EQ(2, gfx::Screen::GetNumDisplays(ash::Shell::GetRootNativeView()));
285 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString()); 289 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString());
286 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); 290 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString());
287 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString()); 291 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString());
288 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString()); 292 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString());
289 } 293 }
290 294
291 } // namespace test 295 } // namespace test
292 } // namespace ash 296 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698