| 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/root_window_controller.h" | 5 #include "ash/root_window_controller.h" |
| 6 | 6 |
| 7 #include "ash/session_state_delegate.h" | 7 #include "ash/session_state_delegate.h" |
| 8 #include "ash/shelf/shelf_layout_manager.h" | 8 #include "ash/shelf/shelf_layout_manager.h" |
| 9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
| 10 #include "ash/shell_window_ids.h" | 10 #include "ash/shell_window_ids.h" |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 generator_1st.ClickLeftButton(); | 285 generator_1st.ClickLeftButton(); |
| 286 EXPECT_TRUE(wm::IsActiveWindow(modal->GetNativeView())); | 286 EXPECT_TRUE(wm::IsActiveWindow(modal->GetNativeView())); |
| 287 } | 287 } |
| 288 | 288 |
| 289 TEST_F(RootWindowControllerTest, ModalContainer) { | 289 TEST_F(RootWindowControllerTest, ModalContainer) { |
| 290 UpdateDisplay("600x600"); | 290 UpdateDisplay("600x600"); |
| 291 Shell* shell = Shell::GetInstance(); | 291 Shell* shell = Shell::GetInstance(); |
| 292 RootWindowController* controller = shell->GetPrimaryRootWindowController(); | 292 RootWindowController* controller = shell->GetPrimaryRootWindowController(); |
| 293 EXPECT_EQ(user::LOGGED_IN_USER, | 293 EXPECT_EQ(user::LOGGED_IN_USER, |
| 294 shell->system_tray_delegate()->GetUserLoginStatus()); | 294 shell->system_tray_delegate()->GetUserLoginStatus()); |
| 295 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 295 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer) |
| 296 kShellWindowId_SystemModalContainer) | |
| 297 ->layout_manager(), | 296 ->layout_manager(), |
| 298 controller->GetSystemModalLayoutManager(NULL)); | 297 controller->GetSystemModalLayoutManager(NULL)); |
| 299 | 298 |
| 300 views::Widget* session_modal_widget = | 299 views::Widget* session_modal_widget = |
| 301 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); | 300 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); |
| 302 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 301 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer) |
| 303 kShellWindowId_SystemModalContainer) | |
| 304 ->layout_manager(), | 302 ->layout_manager(), |
| 305 controller->GetSystemModalLayoutManager( | 303 controller->GetSystemModalLayoutManager( |
| 306 session_modal_widget->GetNativeView())); | 304 session_modal_widget->GetNativeView())); |
| 307 | 305 |
| 308 shell->session_state_delegate()->LockScreen(); | 306 shell->session_state_delegate()->LockScreen(); |
| 309 EXPECT_EQ(user::LOGGED_IN_LOCKED, | 307 EXPECT_EQ(user::LOGGED_IN_LOCKED, |
| 310 shell->system_tray_delegate()->GetUserLoginStatus()); | 308 shell->system_tray_delegate()->GetUserLoginStatus()); |
| 311 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 309 EXPECT_EQ(controller->GetContainer(kShellWindowId_LockSystemModalContainer) |
| 312 kShellWindowId_LockSystemModalContainer) | |
| 313 ->layout_manager(), | 310 ->layout_manager(), |
| 314 controller->GetSystemModalLayoutManager(NULL)); | 311 controller->GetSystemModalLayoutManager(NULL)); |
| 315 | 312 |
| 316 aura::Window* lock_container = Shell::GetContainer( | 313 aura::Window* lock_container = |
| 317 controller->root_window(), kShellWindowId_LockScreenContainer); | 314 controller->GetContainer(kShellWindowId_LockScreenContainer); |
| 318 views::Widget* lock_modal_widget = | 315 views::Widget* lock_modal_widget = |
| 319 CreateModalWidgetWithParent(gfx::Rect(300, 10, 100, 100), lock_container); | 316 CreateModalWidgetWithParent(gfx::Rect(300, 10, 100, 100), lock_container); |
| 320 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 317 EXPECT_EQ(controller->GetContainer(kShellWindowId_LockSystemModalContainer) |
| 321 kShellWindowId_LockSystemModalContainer) | |
| 322 ->layout_manager(), | 318 ->layout_manager(), |
| 323 controller->GetSystemModalLayoutManager( | 319 controller->GetSystemModalLayoutManager( |
| 324 lock_modal_widget->GetNativeView())); | 320 lock_modal_widget->GetNativeView())); |
| 325 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 321 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer) |
| 326 kShellWindowId_SystemModalContainer) | |
| 327 ->layout_manager(), | 322 ->layout_manager(), |
| 328 controller->GetSystemModalLayoutManager( | 323 controller->GetSystemModalLayoutManager( |
| 329 session_modal_widget->GetNativeView())); | 324 session_modal_widget->GetNativeView())); |
| 330 | 325 |
| 331 shell->session_state_delegate()->UnlockScreen(); | 326 shell->session_state_delegate()->UnlockScreen(); |
| 332 } | 327 } |
| 333 | 328 |
| 334 TEST_F(RootWindowControllerTest, ModalContainerNotLoggedInLoggedIn) { | 329 TEST_F(RootWindowControllerTest, ModalContainerNotLoggedInLoggedIn) { |
| 335 UpdateDisplay("600x600"); | 330 UpdateDisplay("600x600"); |
| 336 Shell* shell = Shell::GetInstance(); | 331 Shell* shell = Shell::GetInstance(); |
| 337 | 332 |
| 338 // Configure login screen environment. | 333 // Configure login screen environment. |
| 339 SetUserLoggedIn(false); | 334 SetUserLoggedIn(false); |
| 340 EXPECT_EQ(user::LOGGED_IN_NONE, | 335 EXPECT_EQ(user::LOGGED_IN_NONE, |
| 341 shell->system_tray_delegate()->GetUserLoginStatus()); | 336 shell->system_tray_delegate()->GetUserLoginStatus()); |
| 342 EXPECT_EQ(0, shell->session_state_delegate()->NumberOfLoggedInUsers()); | 337 EXPECT_EQ(0, shell->session_state_delegate()->NumberOfLoggedInUsers()); |
| 343 EXPECT_FALSE(shell->session_state_delegate()->IsActiveUserSessionStarted()); | 338 EXPECT_FALSE(shell->session_state_delegate()->IsActiveUserSessionStarted()); |
| 344 | 339 |
| 345 RootWindowController* controller = shell->GetPrimaryRootWindowController(); | 340 RootWindowController* controller = shell->GetPrimaryRootWindowController(); |
| 346 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 341 EXPECT_EQ(controller->GetContainer(kShellWindowId_LockSystemModalContainer) |
| 347 kShellWindowId_LockSystemModalContainer) | |
| 348 ->layout_manager(), | 342 ->layout_manager(), |
| 349 controller->GetSystemModalLayoutManager(NULL)); | 343 controller->GetSystemModalLayoutManager(NULL)); |
| 350 | 344 |
| 351 aura::Window* lock_container = Shell::GetContainer( | 345 aura::Window* lock_container = |
| 352 controller->root_window(), kShellWindowId_LockScreenContainer); | 346 controller->GetContainer(kShellWindowId_LockScreenContainer); |
| 353 views::Widget* login_modal_widget = | 347 views::Widget* login_modal_widget = |
| 354 CreateModalWidgetWithParent(gfx::Rect(300, 10, 100, 100), lock_container); | 348 CreateModalWidgetWithParent(gfx::Rect(300, 10, 100, 100), lock_container); |
| 355 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 349 EXPECT_EQ(controller->GetContainer(kShellWindowId_LockSystemModalContainer) |
| 356 kShellWindowId_LockSystemModalContainer) | |
| 357 ->layout_manager(), | 350 ->layout_manager(), |
| 358 controller->GetSystemModalLayoutManager( | 351 controller->GetSystemModalLayoutManager( |
| 359 login_modal_widget->GetNativeView())); | 352 login_modal_widget->GetNativeView())); |
| 360 login_modal_widget->Close(); | 353 login_modal_widget->Close(); |
| 361 | 354 |
| 362 // Configure user session environment. | 355 // Configure user session environment. |
| 363 SetUserLoggedIn(true); | 356 SetUserLoggedIn(true); |
| 364 SetSessionStarted(true); | 357 SetSessionStarted(true); |
| 365 EXPECT_EQ(user::LOGGED_IN_USER, | 358 EXPECT_EQ(user::LOGGED_IN_USER, |
| 366 shell->system_tray_delegate()->GetUserLoginStatus()); | 359 shell->system_tray_delegate()->GetUserLoginStatus()); |
| 367 EXPECT_EQ(1, shell->session_state_delegate()->NumberOfLoggedInUsers()); | 360 EXPECT_EQ(1, shell->session_state_delegate()->NumberOfLoggedInUsers()); |
| 368 EXPECT_TRUE(shell->session_state_delegate()->IsActiveUserSessionStarted()); | 361 EXPECT_TRUE(shell->session_state_delegate()->IsActiveUserSessionStarted()); |
| 369 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 362 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer) |
| 370 kShellWindowId_SystemModalContainer) | |
| 371 ->layout_manager(), | 363 ->layout_manager(), |
| 372 controller->GetSystemModalLayoutManager(NULL)); | 364 controller->GetSystemModalLayoutManager(NULL)); |
| 373 | 365 |
| 374 views::Widget* session_modal_widget = | 366 views::Widget* session_modal_widget = |
| 375 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); | 367 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); |
| 376 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 368 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer) |
| 377 kShellWindowId_SystemModalContainer) | |
| 378 ->layout_manager(), | 369 ->layout_manager(), |
| 379 controller->GetSystemModalLayoutManager( | 370 controller->GetSystemModalLayoutManager( |
| 380 session_modal_widget->GetNativeView())); | 371 session_modal_widget->GetNativeView())); |
| 381 } | 372 } |
| 382 | 373 |
| 383 TEST_F(RootWindowControllerTest, ModalContainerBlockedSession) { | 374 TEST_F(RootWindowControllerTest, ModalContainerBlockedSession) { |
| 384 UpdateDisplay("600x600"); | 375 UpdateDisplay("600x600"); |
| 385 Shell* shell = Shell::GetInstance(); | 376 Shell* shell = Shell::GetInstance(); |
| 386 RootWindowController* controller = shell->GetPrimaryRootWindowController(); | 377 RootWindowController* controller = shell->GetPrimaryRootWindowController(); |
| 387 aura::Window* lock_container = Shell::GetContainer( | 378 aura::Window* lock_container = |
| 388 controller->root_window(), kShellWindowId_LockScreenContainer); | 379 controller->GetContainer(kShellWindowId_LockScreenContainer); |
| 389 for (int block_reason = FIRST_BLOCK_REASON; | 380 for (int block_reason = FIRST_BLOCK_REASON; |
| 390 block_reason < NUMBER_OF_BLOCK_REASONS; | 381 block_reason < NUMBER_OF_BLOCK_REASONS; |
| 391 ++block_reason) { | 382 ++block_reason) { |
| 392 views::Widget* session_modal_widget = | 383 views::Widget* session_modal_widget = |
| 393 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); | 384 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); |
| 394 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 385 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer) |
| 395 kShellWindowId_SystemModalContainer) | |
| 396 ->layout_manager(), | 386 ->layout_manager(), |
| 397 controller->GetSystemModalLayoutManager( | 387 controller->GetSystemModalLayoutManager( |
| 398 session_modal_widget->GetNativeView())); | 388 session_modal_widget->GetNativeView())); |
| 399 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 389 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer) |
| 400 kShellWindowId_SystemModalContainer) | |
| 401 ->layout_manager(), | 390 ->layout_manager(), |
| 402 controller->GetSystemModalLayoutManager(NULL)); | 391 controller->GetSystemModalLayoutManager(NULL)); |
| 403 session_modal_widget->Close(); | 392 session_modal_widget->Close(); |
| 404 | 393 |
| 405 BlockUserSession(static_cast<UserSessionBlockReason>(block_reason)); | 394 BlockUserSession(static_cast<UserSessionBlockReason>(block_reason)); |
| 406 | 395 |
| 407 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 396 EXPECT_EQ(controller->GetContainer(kShellWindowId_LockSystemModalContainer) |
| 408 kShellWindowId_LockSystemModalContainer) | |
| 409 ->layout_manager(), | 397 ->layout_manager(), |
| 410 controller->GetSystemModalLayoutManager(NULL)); | 398 controller->GetSystemModalLayoutManager(NULL)); |
| 411 | 399 |
| 412 views::Widget* lock_modal_widget = | 400 views::Widget* lock_modal_widget = |
| 413 CreateModalWidgetWithParent(gfx::Rect(300, 10, 100, 100), | 401 CreateModalWidgetWithParent(gfx::Rect(300, 10, 100, 100), |
| 414 lock_container); | 402 lock_container); |
| 415 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 403 EXPECT_EQ(controller->GetContainer(kShellWindowId_LockSystemModalContainer) |
| 416 kShellWindowId_LockSystemModalContainer) | |
| 417 ->layout_manager(), | 404 ->layout_manager(), |
| 418 controller->GetSystemModalLayoutManager( | 405 controller->GetSystemModalLayoutManager( |
| 419 lock_modal_widget->GetNativeView())); | 406 lock_modal_widget->GetNativeView())); |
| 420 | 407 |
| 421 session_modal_widget = | 408 session_modal_widget = |
| 422 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); | 409 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); |
| 423 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 410 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer) |
| 424 kShellWindowId_SystemModalContainer) | |
| 425 ->layout_manager(), | 411 ->layout_manager(), |
| 426 controller->GetSystemModalLayoutManager( | 412 controller->GetSystemModalLayoutManager( |
| 427 session_modal_widget->GetNativeView())); | 413 session_modal_widget->GetNativeView())); |
| 428 session_modal_widget->Close(); | 414 session_modal_widget->Close(); |
| 429 | 415 |
| 430 lock_modal_widget->Close(); | 416 lock_modal_widget->Close(); |
| 431 UnblockUserSession(); | 417 UnblockUserSession(); |
| 432 } | 418 } |
| 433 } | 419 } |
| 434 | 420 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 Shell::RootWindowControllerList controllers = | 458 Shell::RootWindowControllerList controllers = |
| 473 Shell::GetInstance()->GetAllRootWindowControllers(); | 459 Shell::GetInstance()->GetAllRootWindowControllers(); |
| 474 | 460 |
| 475 Widget* w1 = CreateTestWidget(gfx::Rect(0, 0, 100, 100)); | 461 Widget* w1 = CreateTestWidget(gfx::Rect(0, 0, 100, 100)); |
| 476 w1->Maximize(); | 462 w1->Maximize(); |
| 477 Widget* w2 = CreateTestWidget(gfx::Rect(0, 0, 100, 100)); | 463 Widget* w2 = CreateTestWidget(gfx::Rect(0, 0, 100, 100)); |
| 478 w2->SetFullscreen(true); | 464 w2->SetFullscreen(true); |
| 479 Widget* w3 = CreateTestWidget(gfx::Rect(600, 0, 100, 100)); | 465 Widget* w3 = CreateTestWidget(gfx::Rect(600, 0, 100, 100)); |
| 480 | 466 |
| 481 EXPECT_EQ(w1->GetNativeWindow()->GetRootWindow(), | 467 EXPECT_EQ(w1->GetNativeWindow()->GetRootWindow(), |
| 482 controllers[0]->root_window()); | 468 controllers[0]->GetRootWindow()); |
| 483 EXPECT_EQ(w2->GetNativeWindow()->GetRootWindow(), | 469 EXPECT_EQ(w2->GetNativeWindow()->GetRootWindow(), |
| 484 controllers[0]->root_window()); | 470 controllers[0]->GetRootWindow()); |
| 485 EXPECT_EQ(w3->GetNativeWindow()->GetRootWindow(), | 471 EXPECT_EQ(w3->GetNativeWindow()->GetRootWindow(), |
| 486 controllers[1]->root_window()); | 472 controllers[1]->GetRootWindow()); |
| 487 | 473 |
| 488 w1->Activate(); | 474 w1->Activate(); |
| 489 EXPECT_EQ(NULL, controllers[0]->GetWindowForFullscreenMode()); | 475 EXPECT_EQ(NULL, controllers[0]->GetWindowForFullscreenMode()); |
| 490 EXPECT_EQ(NULL, controllers[1]->GetWindowForFullscreenMode()); | 476 EXPECT_EQ(NULL, controllers[1]->GetWindowForFullscreenMode()); |
| 491 | 477 |
| 492 w2->Activate(); | 478 w2->Activate(); |
| 493 EXPECT_EQ(w2->GetNativeWindow(), | 479 EXPECT_EQ(w2->GetNativeWindow(), |
| 494 controllers[0]->GetWindowForFullscreenMode()); | 480 controllers[0]->GetWindowForFullscreenMode()); |
| 495 EXPECT_EQ(NULL, controllers[1]->GetWindowForFullscreenMode()); | 481 EXPECT_EQ(NULL, controllers[1]->GetWindowForFullscreenMode()); |
| 496 | 482 |
| 497 // Verify that the first root window controller remains in fullscreen mode | 483 // Verify that the first root window controller remains in fullscreen mode |
| 498 // when a window on the other display is activated. | 484 // when a window on the other display is activated. |
| 499 w3->Activate(); | 485 w3->Activate(); |
| 500 EXPECT_EQ(w2->GetNativeWindow(), | 486 EXPECT_EQ(w2->GetNativeWindow(), |
| 501 controllers[0]->GetWindowForFullscreenMode()); | 487 controllers[0]->GetWindowForFullscreenMode()); |
| 502 EXPECT_EQ(NULL, controllers[1]->GetWindowForFullscreenMode()); | 488 EXPECT_EQ(NULL, controllers[1]->GetWindowForFullscreenMode()); |
| 503 } | 489 } |
| 504 | 490 |
| 505 // Test that user session window can't be focused if user session blocked by | 491 // Test that user session window can't be focused if user session blocked by |
| 506 // some overlapping UI. | 492 // some overlapping UI. |
| 507 TEST_F(RootWindowControllerTest, FocusBlockedWindow) { | 493 TEST_F(RootWindowControllerTest, FocusBlockedWindow) { |
| 508 UpdateDisplay("600x600"); | 494 UpdateDisplay("600x600"); |
| 509 RootWindowController* controller = | 495 RootWindowController* controller = |
| 510 Shell::GetInstance()->GetPrimaryRootWindowController(); | 496 Shell::GetInstance()->GetPrimaryRootWindowController(); |
| 511 aura::Window* lock_container = Shell::GetContainer( | 497 aura::Window* lock_container = |
| 512 controller->root_window(), kShellWindowId_LockScreenContainer); | 498 controller->GetContainer(kShellWindowId_LockScreenContainer); |
| 513 aura::Window* lock_window = Widget::CreateWindowWithParentAndBounds(NULL, | 499 aura::Window* lock_window = Widget::CreateWindowWithParentAndBounds(NULL, |
| 514 lock_container, gfx::Rect(0, 0, 100, 100))->GetNativeView(); | 500 lock_container, gfx::Rect(0, 0, 100, 100))->GetNativeView(); |
| 515 lock_window->Show(); | 501 lock_window->Show(); |
| 516 aura::Window* session_window = | 502 aura::Window* session_window = |
| 517 CreateTestWidget(gfx::Rect(0, 0, 100, 100))->GetNativeView(); | 503 CreateTestWidget(gfx::Rect(0, 0, 100, 100))->GetNativeView(); |
| 518 session_window->Show(); | 504 session_window->Show(); |
| 519 | 505 |
| 520 for (int block_reason = FIRST_BLOCK_REASON; | 506 for (int block_reason = FIRST_BLOCK_REASON; |
| 521 block_reason < NUMBER_OF_BLOCK_REASONS; | 507 block_reason < NUMBER_OF_BLOCK_REASONS; |
| 522 ++block_reason) { | 508 ++block_reason) { |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 768 | 754 |
| 769 modal_widget->Close(); | 755 modal_widget->Close(); |
| 770 | 756 |
| 771 // Verify that mouse events are now unblocked to the root window. | 757 // Verify that mouse events are now unblocked to the root window. |
| 772 root_window_event_generator.ClickLeftButton(); | 758 root_window_event_generator.ClickLeftButton(); |
| 773 EXPECT_EQ(2, handler->num_mouse_events() / 2); | 759 EXPECT_EQ(2, handler->num_mouse_events() / 2); |
| 774 } | 760 } |
| 775 | 761 |
| 776 } // namespace test | 762 } // namespace test |
| 777 } // namespace ash | 763 } // namespace ash |
| OLD | NEW |