| OLD | NEW |
| 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 Loading... |
| 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 Shell::GetScreen()->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 Shell::GetScreen()->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 Loading... |
| 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, Shell::GetScreen()->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, Shell::GetScreen()->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 Loading... |
| 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 = Shell::GetScreen()->GetPrimaryDisplay(); |
| 194 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); | 194 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); |
| 195 | 195 |
| 196 std::string secondary_name = aura::Env::GetInstance()-> | 196 std::string secondary_name = aura::Env::GetInstance()-> |
| 197 display_manager()->GetDisplayNameFor(secondary_display); | 197 display_manager()->GetDisplayNameFor(secondary_display); |
| 198 DisplayLayout secondary_layout(DisplayLayout::RIGHT, 50); | 198 DisplayLayout secondary_layout(DisplayLayout::RIGHT, 50); |
| 199 display_controller->SetLayoutForDisplayName(secondary_name, secondary_layout); | 199 display_controller->SetLayoutForDisplayName(secondary_name, secondary_layout); |
| 200 | 200 |
| 201 EXPECT_NE(primary_display.id(), secondary_display.id()); | 201 EXPECT_NE(primary_display.id(), secondary_display.id()); |
| 202 aura::RootWindow* primary_root = | 202 aura::RootWindow* primary_root = |
| 203 display_controller->GetRootWindowForDisplayId(primary_display.id()); | 203 display_controller->GetRootWindowForDisplayId(primary_display.id()); |
| 204 aura::RootWindow* secondary_root = | 204 aura::RootWindow* secondary_root = |
| 205 display_controller->GetRootWindowForDisplayId(secondary_display.id()); | 205 display_controller->GetRootWindowForDisplayId(secondary_display.id()); |
| 206 EXPECT_NE(primary_root, secondary_root); | 206 EXPECT_NE(primary_root, secondary_root); |
| 207 aura::Window* launcher_window = | 207 aura::Window* launcher_window = |
| 208 Shell::GetInstance()->launcher()->widget()->GetNativeView(); | 208 Shell::GetInstance()->launcher()->widget()->GetNativeView(); |
| 209 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 209 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
| 210 EXPECT_FALSE(secondary_root->Contains(launcher_window)); | 210 EXPECT_FALSE(secondary_root->Contains(launcher_window)); |
| 211 EXPECT_EQ(primary_display.id(), | 211 EXPECT_EQ(primary_display.id(), |
| 212 gfx::Screen::GetDisplayNearestPoint(gfx::Point(-100, -100)).id()); | 212 Shell::GetScreen()->GetDisplayNearestPoint( |
| 213 gfx::Point(-100, -100)).id()); |
| 213 EXPECT_EQ(primary_display.id(), | 214 EXPECT_EQ(primary_display.id(), |
| 214 gfx::Screen::GetDisplayNearestWindow(NULL).id()); | 215 Shell::GetScreen()->GetDisplayNearestWindow(NULL).id()); |
| 215 | 216 |
| 216 // Switch primary and secondary | 217 // Switch primary and secondary |
| 217 display_controller->SetPrimaryDisplay(secondary_display); | 218 display_controller->SetPrimaryDisplay(secondary_display); |
| 218 EXPECT_EQ(secondary_display.id(), gfx::Screen::GetPrimaryDisplay().id()); | 219 EXPECT_EQ(secondary_display.id(), |
| 220 Shell::GetScreen()->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 Shell::GetScreen()->GetDisplayNearestPoint( |
| 224 gfx::Point(-100, -100)).id()); |
| 222 EXPECT_EQ(secondary_display.id(), | 225 EXPECT_EQ(secondary_display.id(), |
| 223 gfx::Screen::GetDisplayNearestWindow(NULL).id()); | 226 Shell::GetScreen()->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, Shell::GetScreen()->GetNumDisplays()); |
| 247 EXPECT_EQ(primary_display.id(), gfx::Screen::GetPrimaryDisplay().id()); | 250 EXPECT_EQ(primary_display.id(), Shell::GetScreen()->GetPrimaryDisplay().id()); |
| 248 EXPECT_EQ(primary_display.id(), | 251 EXPECT_EQ(primary_display.id(), |
| 249 gfx::Screen::GetDisplayNearestPoint(gfx::Point(-100, -100)).id()); | 252 Shell::GetScreen()->GetDisplayNearestPoint( |
| 253 gfx::Point(-100, -100)).id()); |
| 250 EXPECT_EQ(primary_display.id(), | 254 EXPECT_EQ(primary_display.id(), |
| 251 gfx::Screen::GetDisplayNearestWindow(NULL).id()); | 255 Shell::GetScreen()->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, SwapPrimaryById) { | 261 TEST_F(DisplayControllerTest, SwapPrimaryById) { |
| 258 DisplayController* display_controller = | 262 DisplayController* display_controller = |
| 259 Shell::GetInstance()->display_controller(); | 263 Shell::GetInstance()->display_controller(); |
| 260 | 264 |
| 261 UpdateDisplay("200x200,300x300"); | 265 UpdateDisplay("200x200,300x300"); |
| 262 gfx::Display primary_display = gfx::Screen::GetPrimaryDisplay(); | 266 gfx::Display primary_display = Shell::GetScreen()->GetPrimaryDisplay(); |
| 263 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); | 267 gfx::Display secondary_display = ScreenAsh::GetSecondaryDisplay(); |
| 264 | 268 |
| 265 std::string secondary_name = aura::Env::GetInstance()-> | 269 std::string secondary_name = aura::Env::GetInstance()-> |
| 266 display_manager()->GetDisplayNameFor(secondary_display); | 270 display_manager()->GetDisplayNameFor(secondary_display); |
| 267 DisplayLayout secondary_layout(DisplayLayout::RIGHT, 50); | 271 DisplayLayout secondary_layout(DisplayLayout::RIGHT, 50); |
| 268 display_controller->SetLayoutForDisplayName(secondary_name, secondary_layout); | 272 display_controller->SetLayoutForDisplayName(secondary_name, secondary_layout); |
| 269 | 273 |
| 270 EXPECT_NE(primary_display.id(), secondary_display.id()); | 274 EXPECT_NE(primary_display.id(), secondary_display.id()); |
| 271 aura::RootWindow* primary_root = | 275 aura::RootWindow* primary_root = |
| 272 display_controller->GetRootWindowForDisplayId(primary_display.id()); | 276 display_controller->GetRootWindowForDisplayId(primary_display.id()); |
| 273 aura::RootWindow* secondary_root = | 277 aura::RootWindow* secondary_root = |
| 274 display_controller->GetRootWindowForDisplayId(secondary_display.id()); | 278 display_controller->GetRootWindowForDisplayId(secondary_display.id()); |
| 275 aura::Window* launcher_window = | 279 aura::Window* launcher_window = |
| 276 Shell::GetInstance()->launcher()->widget()->GetNativeView(); | 280 Shell::GetInstance()->launcher()->widget()->GetNativeView(); |
| 277 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 281 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
| 278 EXPECT_FALSE(secondary_root->Contains(launcher_window)); | 282 EXPECT_FALSE(secondary_root->Contains(launcher_window)); |
| 279 EXPECT_NE(primary_root, secondary_root); | 283 EXPECT_NE(primary_root, secondary_root); |
| 280 EXPECT_EQ(primary_display.id(), | 284 EXPECT_EQ(primary_display.id(), |
| 281 gfx::Screen::GetDisplayNearestPoint(gfx::Point(-100, -100)).id()); | 285 Shell::GetScreen()->GetDisplayNearestPoint( |
| 286 gfx::Point(-100, -100)).id()); |
| 282 EXPECT_EQ(primary_display.id(), | 287 EXPECT_EQ(primary_display.id(), |
| 283 gfx::Screen::GetDisplayNearestWindow(NULL).id()); | 288 Shell::GetScreen()->GetDisplayNearestWindow(NULL).id()); |
| 284 | 289 |
| 285 // Switch primary and secondary by display ID. | 290 // Switch primary and secondary by display ID. |
| 286 TestObserver observer; | 291 TestObserver observer; |
| 287 display_controller->SetPrimaryDisplayId(secondary_display.id()); | 292 display_controller->SetPrimaryDisplayId(secondary_display.id()); |
| 288 EXPECT_EQ(secondary_display.id(), gfx::Screen::GetPrimaryDisplay().id()); | 293 EXPECT_EQ(secondary_display.id(), |
| 294 Shell::GetScreen()->GetPrimaryDisplay().id()); |
| 289 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id()); | 295 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id()); |
| 290 EXPECT_LT(0, observer.CountAndReset()); | 296 EXPECT_LT(0, observer.CountAndReset()); |
| 291 | 297 |
| 292 EXPECT_EQ( | 298 EXPECT_EQ( |
| 293 primary_root, | 299 primary_root, |
| 294 display_controller->GetRootWindowForDisplayId(secondary_display.id())); | 300 display_controller->GetRootWindowForDisplayId(secondary_display.id())); |
| 295 EXPECT_EQ( | 301 EXPECT_EQ( |
| 296 secondary_root, | 302 secondary_root, |
| 297 display_controller->GetRootWindowForDisplayId(primary_display.id())); | 303 display_controller->GetRootWindowForDisplayId(primary_display.id())); |
| 298 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 304 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
| 299 EXPECT_FALSE(secondary_root->Contains(launcher_window)); | 305 EXPECT_FALSE(secondary_root->Contains(launcher_window)); |
| 300 | 306 |
| 301 const DisplayLayout& inverted_layout = | 307 const DisplayLayout& inverted_layout = |
| 302 display_controller->GetLayoutForDisplay(primary_display); | 308 display_controller->GetLayoutForDisplay(primary_display); |
| 303 | 309 |
| 304 EXPECT_EQ("left, -50", inverted_layout.ToString()); | 310 EXPECT_EQ("left, -50", inverted_layout.ToString()); |
| 305 | 311 |
| 306 // Calling the same ID don't do anything. | 312 // Calling the same ID don't do anything. |
| 307 display_controller->SetPrimaryDisplayId(secondary_display.id()); | 313 display_controller->SetPrimaryDisplayId(secondary_display.id()); |
| 308 EXPECT_EQ(0, observer.CountAndReset()); | 314 EXPECT_EQ(0, observer.CountAndReset()); |
| 309 | 315 |
| 310 aura::WindowTracker tracker; | 316 aura::WindowTracker tracker; |
| 311 tracker.Add(primary_root); | 317 tracker.Add(primary_root); |
| 312 tracker.Add(secondary_root); | 318 tracker.Add(secondary_root); |
| 313 | 319 |
| 314 // Deleting 2nd display should move the primary to original primary display. | 320 // Deleting 2nd display should move the primary to original primary display. |
| 315 UpdateDisplay("200x200"); | 321 UpdateDisplay("200x200"); |
| 316 RunAllPendingInMessageLoop(); // RootWindow is deleted in a posted task. | 322 RunAllPendingInMessageLoop(); // RootWindow is deleted in a posted task. |
| 317 EXPECT_EQ(1, gfx::Screen::GetNumDisplays()); | 323 EXPECT_EQ(1, Shell::GetScreen()->GetNumDisplays()); |
| 318 EXPECT_EQ(primary_display.id(), gfx::Screen::GetPrimaryDisplay().id()); | 324 EXPECT_EQ(primary_display.id(), Shell::GetScreen()->GetPrimaryDisplay().id()); |
| 319 EXPECT_EQ(primary_display.id(), | 325 EXPECT_EQ(primary_display.id(), |
| 320 gfx::Screen::GetDisplayNearestPoint(gfx::Point(-100, -100)).id()); | 326 Shell::GetScreen()->GetDisplayNearestPoint( |
| 327 gfx::Point(-100, -100)).id()); |
| 321 EXPECT_EQ(primary_display.id(), | 328 EXPECT_EQ(primary_display.id(), |
| 322 gfx::Screen::GetDisplayNearestWindow(NULL).id()); | 329 Shell::GetScreen()->GetDisplayNearestWindow(NULL).id()); |
| 323 EXPECT_TRUE(tracker.Contains(primary_root)); | 330 EXPECT_TRUE(tracker.Contains(primary_root)); |
| 324 EXPECT_FALSE(tracker.Contains(secondary_root)); | 331 EXPECT_FALSE(tracker.Contains(secondary_root)); |
| 325 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 332 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
| 326 | 333 |
| 327 // Adding 2nd display with the same ID. The 2nd display should become primary | 334 // Adding 2nd display with the same ID. The 2nd display should become primary |
| 328 // since secondary id is still stored as desirable_primary_id. | 335 // since secondary id is still stored as desirable_primary_id. |
| 329 std::vector<gfx::Display> displays; | 336 std::vector<gfx::Display> displays; |
| 330 displays.push_back(primary_display); | 337 displays.push_back(primary_display); |
| 331 displays.push_back(secondary_display); | 338 displays.push_back(secondary_display); |
| 332 aura::DisplayManager* display_manager = | 339 aura::DisplayManager* display_manager = |
| 333 aura::Env::GetInstance()->display_manager(); | 340 aura::Env::GetInstance()->display_manager(); |
| 334 display_manager->OnNativeDisplaysChanged(displays); | 341 display_manager->OnNativeDisplaysChanged(displays); |
| 335 | 342 |
| 336 EXPECT_EQ(2, gfx::Screen::GetNumDisplays()); | 343 EXPECT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
| 337 EXPECT_EQ(secondary_display.id(), gfx::Screen::GetPrimaryDisplay().id()); | 344 EXPECT_EQ(secondary_display.id(), |
| 345 Shell::GetScreen()->GetPrimaryDisplay().id()); |
| 338 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id()); | 346 EXPECT_EQ(primary_display.id(), ScreenAsh::GetSecondaryDisplay().id()); |
| 339 EXPECT_EQ( | 347 EXPECT_EQ( |
| 340 primary_root, | 348 primary_root, |
| 341 display_controller->GetRootWindowForDisplayId(secondary_display.id())); | 349 display_controller->GetRootWindowForDisplayId(secondary_display.id())); |
| 342 EXPECT_NE( | 350 EXPECT_NE( |
| 343 primary_root, | 351 primary_root, |
| 344 display_controller->GetRootWindowForDisplayId(primary_display.id())); | 352 display_controller->GetRootWindowForDisplayId(primary_display.id())); |
| 345 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 353 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
| 346 | 354 |
| 347 // Deleting 2nd display and adding 2nd display with a different ID. The 2nd | 355 // Deleting 2nd display and adding 2nd display with a different ID. The 2nd |
| 348 // display shouldn't become primary. | 356 // display shouldn't become primary. |
| 349 UpdateDisplay("200x200"); | 357 UpdateDisplay("200x200"); |
| 350 std::vector<gfx::Display> displays2; | 358 std::vector<gfx::Display> displays2; |
| 351 gfx::Display third_display( | 359 gfx::Display third_display( |
| 352 secondary_display.id() + 1, secondary_display.bounds()); | 360 secondary_display.id() + 1, secondary_display.bounds()); |
| 353 ASSERT_NE(primary_display.id(), third_display.id()); | 361 ASSERT_NE(primary_display.id(), third_display.id()); |
| 354 displays2.push_back(primary_display); | 362 displays2.push_back(primary_display); |
| 355 displays2.push_back(third_display); | 363 displays2.push_back(third_display); |
| 356 display_manager->OnNativeDisplaysChanged(displays2); | 364 display_manager->OnNativeDisplaysChanged(displays2); |
| 357 EXPECT_EQ(2, gfx::Screen::GetNumDisplays()); | 365 EXPECT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
| 358 EXPECT_EQ(primary_display.id(), gfx::Screen::GetPrimaryDisplay().id()); | 366 EXPECT_EQ(primary_display.id(), |
| 367 Shell::GetScreen()->GetPrimaryDisplay().id()); |
| 359 EXPECT_EQ(third_display.id(), ScreenAsh::GetSecondaryDisplay().id()); | 368 EXPECT_EQ(third_display.id(), ScreenAsh::GetSecondaryDisplay().id()); |
| 360 EXPECT_EQ( | 369 EXPECT_EQ( |
| 361 primary_root, | 370 primary_root, |
| 362 display_controller->GetRootWindowForDisplayId(primary_display.id())); | 371 display_controller->GetRootWindowForDisplayId(primary_display.id())); |
| 363 EXPECT_NE( | 372 EXPECT_NE( |
| 364 primary_root, | 373 primary_root, |
| 365 display_controller->GetRootWindowForDisplayId(third_display.id())); | 374 display_controller->GetRootWindowForDisplayId(third_display.id())); |
| 366 EXPECT_TRUE(primary_root->Contains(launcher_window)); | 375 EXPECT_TRUE(primary_root->Contains(launcher_window)); |
| 367 } | 376 } |
| 368 | 377 |
| 369 TEST_F(DisplayControllerTest, MAYBE_UpdateDisplayWithHostOrigin) { | 378 TEST_F(DisplayControllerTest, MAYBE_UpdateDisplayWithHostOrigin) { |
| 370 UpdateDisplay("100x200,300x400"); | 379 UpdateDisplay("100x200,300x400"); |
| 371 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); | 380 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
| 372 Shell::RootWindowList root_windows = | 381 Shell::RootWindowList root_windows = |
| 373 Shell::GetInstance()->GetAllRootWindows(); | 382 Shell::GetInstance()->GetAllRootWindows(); |
| 374 ASSERT_EQ(2U, root_windows.size()); | 383 ASSERT_EQ(2U, root_windows.size()); |
| 375 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); | 384 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); |
| 376 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); | 385 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); |
| 377 // UpdateDisplay set the origin if it's not set. | 386 // UpdateDisplay set the origin if it's not set. |
| 378 EXPECT_NE("0,0", root_windows[1]->GetHostOrigin().ToString()); | 387 EXPECT_NE("0,0", root_windows[1]->GetHostOrigin().ToString()); |
| 379 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); | 388 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); |
| 380 | 389 |
| 381 UpdateDisplay("100x200,200+300-300x400"); | 390 UpdateDisplay("100x200,200+300-300x400"); |
| 382 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); | 391 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
| 383 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); | 392 EXPECT_EQ("0,0", root_windows[0]->GetHostOrigin().ToString()); |
| 384 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); | 393 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); |
| 385 EXPECT_EQ("200,300", root_windows[1]->GetHostOrigin().ToString()); | 394 EXPECT_EQ("200,300", root_windows[1]->GetHostOrigin().ToString()); |
| 386 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); | 395 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); |
| 387 | 396 |
| 388 UpdateDisplay("400+500-200x300,300x400"); | 397 UpdateDisplay("400+500-200x300,300x400"); |
| 389 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); | 398 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
| 390 EXPECT_EQ("400,500", root_windows[0]->GetHostOrigin().ToString()); | 399 EXPECT_EQ("400,500", root_windows[0]->GetHostOrigin().ToString()); |
| 391 EXPECT_EQ("200x300", root_windows[0]->GetHostSize().ToString()); | 400 EXPECT_EQ("200x300", root_windows[0]->GetHostSize().ToString()); |
| 392 EXPECT_EQ("0,0", root_windows[1]->GetHostOrigin().ToString()); | 401 EXPECT_EQ("0,0", root_windows[1]->GetHostOrigin().ToString()); |
| 393 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); | 402 EXPECT_EQ("300x400", root_windows[1]->GetHostSize().ToString()); |
| 394 | 403 |
| 395 UpdateDisplay("100+200-100x200,300+500-200x300"); | 404 UpdateDisplay("100+200-100x200,300+500-200x300"); |
| 396 ASSERT_EQ(2, gfx::Screen::GetNumDisplays()); | 405 ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); |
| 397 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString()); | 406 EXPECT_EQ("100,200", root_windows[0]->GetHostOrigin().ToString()); |
| 398 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); | 407 EXPECT_EQ("100x200", root_windows[0]->GetHostSize().ToString()); |
| 399 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString()); | 408 EXPECT_EQ("300,500", root_windows[1]->GetHostOrigin().ToString()); |
| 400 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString()); | 409 EXPECT_EQ("200x300", root_windows[1]->GetHostSize().ToString()); |
| 401 } | 410 } |
| 402 | 411 |
| 403 } // namespace test | 412 } // namespace test |
| 404 } // namespace ash | 413 } // namespace ash |
| OLD | NEW |