| 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/wm/workspace/workspace_layout_manager.h" | 5 #include "ash/wm/workspace/workspace_layout_manager.h" |
| 6 | 6 |
| 7 #include "ash/display/display_layout.h" | 7 #include "ash/display/display_layout.h" |
| 8 #include "ash/display/display_manager.h" | 8 #include "ash/display/display_manager.h" |
| 9 #include "ash/root_window_controller.h" | 9 #include "ash/root_window_controller.h" |
| 10 #include "ash/screen_util.h" | 10 #include "ash/screen_util.h" |
| (...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 364 } | 364 } |
| 365 | 365 |
| 366 // Verifies a window created with maximized state has the maximized | 366 // Verifies a window created with maximized state has the maximized |
| 367 // bounds. | 367 // bounds. |
| 368 TEST_F(WorkspaceLayoutManagerTest, MaximizeWithEmptySize) { | 368 TEST_F(WorkspaceLayoutManagerTest, MaximizeWithEmptySize) { |
| 369 scoped_ptr<aura::Window> window( | 369 scoped_ptr<aura::Window> window( |
| 370 aura::test::CreateTestWindowWithBounds(gfx::Rect(0, 0, 0, 0), | 370 aura::test::CreateTestWindowWithBounds(gfx::Rect(0, 0, 0, 0), |
| 371 NULL)); | 371 NULL)); |
| 372 wm::GetWindowState(window.get())->Maximize(); | 372 wm::GetWindowState(window.get())->Maximize(); |
| 373 aura::Window* default_container = Shell::GetContainer( | 373 aura::Window* default_container = Shell::GetContainer( |
| 374 Shell::GetPrimaryRootWindow(), | 374 Shell::GetPrimaryRootWindow(), kShellWindowId_DefaultContainer); |
| 375 internal::kShellWindowId_DefaultContainer); | |
| 376 default_container->AddChild(window.get()); | 375 default_container->AddChild(window.get()); |
| 377 window->Show(); | 376 window->Show(); |
| 378 gfx::Rect work_area( | 377 gfx::Rect work_area( |
| 379 Shell::GetScreen()->GetPrimaryDisplay().work_area()); | 378 Shell::GetScreen()->GetPrimaryDisplay().work_area()); |
| 380 EXPECT_EQ(work_area.ToString(), window->GetBoundsInScreen().ToString()); | 379 EXPECT_EQ(work_area.ToString(), window->GetBoundsInScreen().ToString()); |
| 381 } | 380 } |
| 382 | 381 |
| 383 TEST_F(WorkspaceLayoutManagerTest, WindowShouldBeOnScreenWhenAdded) { | 382 TEST_F(WorkspaceLayoutManagerTest, WindowShouldBeOnScreenWhenAdded) { |
| 384 // Normal window bounds shouldn't be changed. | 383 // Normal window bounds shouldn't be changed. |
| 385 gfx::Rect window_bounds(100, 100, 200, 200); | 384 gfx::Rect window_bounds(100, 100, 200, 200); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 | 510 |
| 512 class WorkspaceLayoutManagerSoloTest : public test::AshTestBase { | 511 class WorkspaceLayoutManagerSoloTest : public test::AshTestBase { |
| 513 public: | 512 public: |
| 514 WorkspaceLayoutManagerSoloTest() {} | 513 WorkspaceLayoutManagerSoloTest() {} |
| 515 virtual ~WorkspaceLayoutManagerSoloTest() {} | 514 virtual ~WorkspaceLayoutManagerSoloTest() {} |
| 516 | 515 |
| 517 virtual void SetUp() OVERRIDE { | 516 virtual void SetUp() OVERRIDE { |
| 518 test::AshTestBase::SetUp(); | 517 test::AshTestBase::SetUp(); |
| 519 UpdateDisplay("800x600"); | 518 UpdateDisplay("800x600"); |
| 520 aura::Window* default_container = Shell::GetContainer( | 519 aura::Window* default_container = Shell::GetContainer( |
| 521 Shell::GetPrimaryRootWindow(), | 520 Shell::GetPrimaryRootWindow(), kShellWindowId_DefaultContainer); |
| 522 internal::kShellWindowId_DefaultContainer); | 521 default_container->SetLayoutManager( |
| 523 default_container->SetLayoutManager(new internal::WorkspaceLayoutManager( | 522 new WorkspaceLayoutManager(Shell::GetPrimaryRootWindow())); |
| 524 Shell::GetPrimaryRootWindow())); | |
| 525 } | 523 } |
| 526 | 524 |
| 527 aura::Window* CreateTestWindow(const gfx::Rect& bounds) { | 525 aura::Window* CreateTestWindow(const gfx::Rect& bounds) { |
| 528 return CreateTestWindowInShellWithBounds(bounds); | 526 return CreateTestWindowInShellWithBounds(bounds); |
| 529 } | 527 } |
| 530 | 528 |
| 531 private: | 529 private: |
| 532 DISALLOW_COPY_AND_ASSIGN(WorkspaceLayoutManagerSoloTest); | 530 DISALLOW_COPY_AND_ASSIGN(WorkspaceLayoutManagerSoloTest); |
| 533 }; | 531 }; |
| 534 | 532 |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 } | 745 } |
| 748 | 746 |
| 749 // Verify if the window is not resized during screen lock. See: crbug.com/173127 | 747 // Verify if the window is not resized during screen lock. See: crbug.com/173127 |
| 750 TEST_F(WorkspaceLayoutManagerSoloTest, NotResizeWhenScreenIsLocked) { | 748 TEST_F(WorkspaceLayoutManagerSoloTest, NotResizeWhenScreenIsLocked) { |
| 751 SetCanLockScreen(true); | 749 SetCanLockScreen(true); |
| 752 scoped_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(1, 2, 3, 4))); | 750 scoped_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(1, 2, 3, 4))); |
| 753 // window with AlwaysOnTop will be managed by BaseLayoutManager. | 751 // window with AlwaysOnTop will be managed by BaseLayoutManager. |
| 754 window->SetProperty(aura::client::kAlwaysOnTopKey, true); | 752 window->SetProperty(aura::client::kAlwaysOnTopKey, true); |
| 755 window->Show(); | 753 window->Show(); |
| 756 | 754 |
| 757 internal::ShelfLayoutManager* shelf = | 755 ShelfLayoutManager* shelf = ShelfLayoutManager::ForShelf(window.get()); |
| 758 internal::ShelfLayoutManager::ForShelf(window.get()); | |
| 759 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 756 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
| 760 | 757 |
| 761 window->SetBounds(ScreenUtil::GetMaximizedWindowBoundsInParent(window.get())); | 758 window->SetBounds(ScreenUtil::GetMaximizedWindowBoundsInParent(window.get())); |
| 762 gfx::Rect window_bounds = window->bounds(); | 759 gfx::Rect window_bounds = window->bounds(); |
| 763 EXPECT_EQ( | 760 EXPECT_EQ( |
| 764 ScreenUtil::GetMaximizedWindowBoundsInParent(window.get()).ToString(), | 761 ScreenUtil::GetMaximizedWindowBoundsInParent(window.get()).ToString(), |
| 765 window_bounds.ToString()); | 762 window_bounds.ToString()); |
| 766 | 763 |
| 767 Shell::GetInstance()->session_state_delegate()->LockScreen(); | 764 Shell::GetInstance()->session_state_delegate()->LockScreen(); |
| 768 shelf->UpdateVisibilityState(); | 765 shelf->UpdateVisibilityState(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 780 namespace { | 777 namespace { |
| 781 | 778 |
| 782 class WorkspaceLayoutManagerBackdropTest : public test::AshTestBase { | 779 class WorkspaceLayoutManagerBackdropTest : public test::AshTestBase { |
| 783 public: | 780 public: |
| 784 WorkspaceLayoutManagerBackdropTest() {} | 781 WorkspaceLayoutManagerBackdropTest() {} |
| 785 virtual ~WorkspaceLayoutManagerBackdropTest() {} | 782 virtual ~WorkspaceLayoutManagerBackdropTest() {} |
| 786 | 783 |
| 787 virtual void SetUp() OVERRIDE { | 784 virtual void SetUp() OVERRIDE { |
| 788 test::AshTestBase::SetUp(); | 785 test::AshTestBase::SetUp(); |
| 789 UpdateDisplay("800x600"); | 786 UpdateDisplay("800x600"); |
| 790 default_container_ = Shell::GetContainer( | 787 default_container_ = Shell::GetContainer(Shell::GetPrimaryRootWindow(), |
| 791 Shell::GetPrimaryRootWindow(), | 788 kShellWindowId_DefaultContainer); |
| 792 internal::kShellWindowId_DefaultContainer); | |
| 793 // We set the size to something smaller then the display to avoid resizing | 789 // We set the size to something smaller then the display to avoid resizing |
| 794 // issues with the shelf. | 790 // issues with the shelf. |
| 795 default_container_->SetBounds(gfx::Rect(0, 0, 800, 500)); | 791 default_container_->SetBounds(gfx::Rect(0, 0, 800, 500)); |
| 796 } | 792 } |
| 797 | 793 |
| 798 aura::Window* CreateTestWindow(const gfx::Rect& bounds) { | 794 aura::Window* CreateTestWindow(const gfx::Rect& bounds) { |
| 799 aura::Window* window = CreateTestWindowInShellWithBounds(bounds); | 795 aura::Window* window = CreateTestWindowInShellWithBounds(bounds); |
| 800 return window; | 796 return window; |
| 801 } | 797 } |
| 802 | 798 |
| 803 // Turn the top window back drop on / off. | 799 // Turn the top window back drop on / off. |
| 804 void ShowTopWindowBackdrop(bool show) { | 800 void ShowTopWindowBackdrop(bool show) { |
| 805 scoped_ptr<ash::internal::WorkspaceLayoutManagerDelegate> backdrop; | 801 scoped_ptr<ash::WorkspaceLayoutManagerDelegate> backdrop; |
| 806 if (show) { | 802 if (show) { |
| 807 backdrop.reset(new ash::internal::WorkspaceBackdropDelegate( | 803 backdrop.reset(new ash::WorkspaceBackdropDelegate(default_container_)); |
| 808 default_container_)); | |
| 809 } | 804 } |
| 810 (static_cast<internal::WorkspaceLayoutManager*> | 805 (static_cast<WorkspaceLayoutManager*>(default_container_->layout_manager())) |
| 811 (default_container_->layout_manager()))->SetMaximizeBackdropDelegate( | 806 ->SetMaximizeBackdropDelegate(backdrop.Pass()); |
| 812 backdrop.Pass()); | |
| 813 // Closing and / or opening can be a delayed operation. | 807 // Closing and / or opening can be a delayed operation. |
| 814 base::MessageLoop::current()->RunUntilIdle(); | 808 base::MessageLoop::current()->RunUntilIdle(); |
| 815 } | 809 } |
| 816 | 810 |
| 817 // Return the default container. | 811 // Return the default container. |
| 818 aura::Window* default_container() { return default_container_; } | 812 aura::Window* default_container() { return default_container_; } |
| 819 | 813 |
| 820 // Return the order of windows (top most first) as they are in the default | 814 // Return the order of windows (top most first) as they are in the default |
| 821 // container. If the window is visible it will be a big letter, otherwise a | 815 // container. If the window is visible it will be a big letter, otherwise a |
| 822 // small one. The backdrop will be an X and unknown windows will be shown as | 816 // small one. The backdrop will be an X and unknown windows will be shown as |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 940 EXPECT_EQ("b,x", | 934 EXPECT_EQ("b,x", |
| 941 GetWindowOrderAsString(backdrop, window1.get(), window2.get(), | 935 GetWindowOrderAsString(backdrop, window1.get(), window2.get(), |
| 942 window3.get())); | 936 window3.get())); |
| 943 ShowTopWindowBackdrop(false); | 937 ShowTopWindowBackdrop(false); |
| 944 EXPECT_EQ("b", | 938 EXPECT_EQ("b", |
| 945 GetWindowOrderAsString(NULL, window1.get(), window2.get(), | 939 GetWindowOrderAsString(NULL, window1.get(), window2.get(), |
| 946 window3.get())); | 940 window3.get())); |
| 947 } | 941 } |
| 948 | 942 |
| 949 } // namespace ash | 943 } // namespace ash |
| OLD | NEW |