| 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 <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "ash/display/display_layout.h" | 9 #include "ash/display/display_layout.h" |
| 10 #include "ash/display/display_manager.h" | 10 #include "ash/display/display_manager.h" |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 #include "ui/wm/core/window_util.h" | 39 #include "ui/wm/core/window_util.h" |
| 40 | 40 |
| 41 namespace ash { | 41 namespace ash { |
| 42 namespace { | 42 namespace { |
| 43 | 43 |
| 44 class MaximizeDelegateView : public views::WidgetDelegateView { | 44 class MaximizeDelegateView : public views::WidgetDelegateView { |
| 45 public: | 45 public: |
| 46 explicit MaximizeDelegateView(const gfx::Rect& initial_bounds) | 46 explicit MaximizeDelegateView(const gfx::Rect& initial_bounds) |
| 47 : initial_bounds_(initial_bounds) { | 47 : initial_bounds_(initial_bounds) { |
| 48 } | 48 } |
| 49 virtual ~MaximizeDelegateView() {} | 49 ~MaximizeDelegateView() override {} |
| 50 | 50 |
| 51 virtual bool GetSavedWindowPlacement( | 51 bool GetSavedWindowPlacement(const views::Widget* widget, |
| 52 const views::Widget* widget, | 52 gfx::Rect* bounds, |
| 53 gfx::Rect* bounds, | 53 ui::WindowShowState* show_state) const override { |
| 54 ui::WindowShowState* show_state) const override { | |
| 55 *bounds = initial_bounds_; | 54 *bounds = initial_bounds_; |
| 56 *show_state = ui::SHOW_STATE_MAXIMIZED; | 55 *show_state = ui::SHOW_STATE_MAXIMIZED; |
| 57 return true; | 56 return true; |
| 58 } | 57 } |
| 59 | 58 |
| 60 private: | 59 private: |
| 61 const gfx::Rect initial_bounds_; | 60 const gfx::Rect initial_bounds_; |
| 62 | 61 |
| 63 DISALLOW_COPY_AND_ASSIGN(MaximizeDelegateView); | 62 DISALLOW_COPY_AND_ASSIGN(MaximizeDelegateView); |
| 64 }; | 63 }; |
| 65 | 64 |
| 66 class TestShellObserver : public ShellObserver { | 65 class TestShellObserver : public ShellObserver { |
| 67 public: | 66 public: |
| 68 TestShellObserver() : call_count_(0), | 67 TestShellObserver() : call_count_(0), |
| 69 is_fullscreen_(false) { | 68 is_fullscreen_(false) { |
| 70 Shell::GetInstance()->AddShellObserver(this); | 69 Shell::GetInstance()->AddShellObserver(this); |
| 71 } | 70 } |
| 72 | 71 |
| 73 virtual ~TestShellObserver() { | 72 ~TestShellObserver() override { |
| 74 Shell::GetInstance()->RemoveShellObserver(this); | 73 Shell::GetInstance()->RemoveShellObserver(this); |
| 75 } | 74 } |
| 76 | 75 |
| 77 virtual void OnFullscreenStateChanged(bool is_fullscreen, | 76 void OnFullscreenStateChanged(bool is_fullscreen, |
| 78 aura::Window* root_window) override { | 77 aura::Window* root_window) override { |
| 79 call_count_++; | 78 call_count_++; |
| 80 is_fullscreen_ = is_fullscreen; | 79 is_fullscreen_ = is_fullscreen; |
| 81 } | 80 } |
| 82 | 81 |
| 83 int call_count() const { | 82 int call_count() const { |
| 84 return call_count_; | 83 return call_count_; |
| 85 } | 84 } |
| 86 | 85 |
| 87 bool is_fullscreen() const { | 86 bool is_fullscreen() const { |
| 88 return is_fullscreen_; | 87 return is_fullscreen_; |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 // WindowObserver implementation used by DontClobberRestoreBoundsWindowObserver. | 305 // WindowObserver implementation used by DontClobberRestoreBoundsWindowObserver. |
| 307 // This code mirrors what BrowserFrameAsh does. In particular when this code | 306 // This code mirrors what BrowserFrameAsh does. In particular when this code |
| 308 // sees the window was maximized it changes the bounds of a secondary | 307 // sees the window was maximized it changes the bounds of a secondary |
| 309 // window. The secondary window mirrors the status window. | 308 // window. The secondary window mirrors the status window. |
| 310 class DontClobberRestoreBoundsWindowObserver : public aura::WindowObserver { | 309 class DontClobberRestoreBoundsWindowObserver : public aura::WindowObserver { |
| 311 public: | 310 public: |
| 312 DontClobberRestoreBoundsWindowObserver() : window_(NULL) {} | 311 DontClobberRestoreBoundsWindowObserver() : window_(NULL) {} |
| 313 | 312 |
| 314 void set_window(aura::Window* window) { window_ = window; } | 313 void set_window(aura::Window* window) { window_ = window; } |
| 315 | 314 |
| 316 virtual void OnWindowPropertyChanged(aura::Window* window, | 315 void OnWindowPropertyChanged(aura::Window* window, |
| 317 const void* key, | 316 const void* key, |
| 318 intptr_t old) override { | 317 intptr_t old) override { |
| 319 if (!window_) | 318 if (!window_) |
| 320 return; | 319 return; |
| 321 | 320 |
| 322 if (wm::GetWindowState(window)->IsMaximized()) { | 321 if (wm::GetWindowState(window)->IsMaximized()) { |
| 323 aura::Window* w = window_; | 322 aura::Window* w = window_; |
| 324 window_ = NULL; | 323 window_ = NULL; |
| 325 | 324 |
| 326 gfx::Rect shelf_bounds(Shell::GetPrimaryRootWindowController()-> | 325 gfx::Rect shelf_bounds(Shell::GetPrimaryRootWindowController()-> |
| 327 GetShelfLayoutManager()->GetIdealBounds()); | 326 GetShelfLayoutManager()->GetIdealBounds()); |
| 328 const gfx::Rect& window_bounds(w->bounds()); | 327 const gfx::Rect& window_bounds(w->bounds()); |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 522 EXPECT_EQ(6, observer.call_count()); | 521 EXPECT_EQ(6, observer.call_count()); |
| 523 EXPECT_FALSE(observer.is_fullscreen()); | 522 EXPECT_FALSE(observer.is_fullscreen()); |
| 524 } | 523 } |
| 525 | 524 |
| 526 // Following "Solo" tests were originally written for BaseLayoutManager. | 525 // Following "Solo" tests were originally written for BaseLayoutManager. |
| 527 namespace { | 526 namespace { |
| 528 | 527 |
| 529 class WorkspaceLayoutManagerSoloTest : public test::AshTestBase { | 528 class WorkspaceLayoutManagerSoloTest : public test::AshTestBase { |
| 530 public: | 529 public: |
| 531 WorkspaceLayoutManagerSoloTest() {} | 530 WorkspaceLayoutManagerSoloTest() {} |
| 532 virtual ~WorkspaceLayoutManagerSoloTest() {} | 531 ~WorkspaceLayoutManagerSoloTest() override {} |
| 533 | 532 |
| 534 aura::Window* CreateTestWindow(const gfx::Rect& bounds) { | 533 aura::Window* CreateTestWindow(const gfx::Rect& bounds) { |
| 535 return CreateTestWindowInShellWithBounds(bounds); | 534 return CreateTestWindowInShellWithBounds(bounds); |
| 536 } | 535 } |
| 537 | 536 |
| 538 private: | 537 private: |
| 539 DISALLOW_COPY_AND_ASSIGN(WorkspaceLayoutManagerSoloTest); | 538 DISALLOW_COPY_AND_ASSIGN(WorkspaceLayoutManagerSoloTest); |
| 540 }; | 539 }; |
| 541 | 540 |
| 542 } // namespace | 541 } // namespace |
| (...skipping 24 matching lines...) Expand all Loading... |
| 567 } | 566 } |
| 568 | 567 |
| 569 // A WindowDelegate which sets the focus when the window | 568 // A WindowDelegate which sets the focus when the window |
| 570 // becomes visible. | 569 // becomes visible. |
| 571 class FocusDelegate : public aura::test::TestWindowDelegate { | 570 class FocusDelegate : public aura::test::TestWindowDelegate { |
| 572 public: | 571 public: |
| 573 FocusDelegate() | 572 FocusDelegate() |
| 574 : window_(NULL), | 573 : window_(NULL), |
| 575 show_state_(ui::SHOW_STATE_END) { | 574 show_state_(ui::SHOW_STATE_END) { |
| 576 } | 575 } |
| 577 virtual ~FocusDelegate() {} | 576 ~FocusDelegate() override {} |
| 578 | 577 |
| 579 void set_window(aura::Window* window) { window_ = window; } | 578 void set_window(aura::Window* window) { window_ = window; } |
| 580 | 579 |
| 581 // aura::test::TestWindowDelegate overrides: | 580 // aura::test::TestWindowDelegate overrides: |
| 582 virtual void OnWindowTargetVisibilityChanged(bool visible) override { | 581 void OnWindowTargetVisibilityChanged(bool visible) override { |
| 583 if (window_) { | 582 if (window_) { |
| 584 if (visible) | 583 if (visible) |
| 585 window_->Focus(); | 584 window_->Focus(); |
| 586 show_state_ = window_->GetProperty(aura::client::kShowStateKey); | 585 show_state_ = window_->GetProperty(aura::client::kShowStateKey); |
| 587 } | 586 } |
| 588 } | 587 } |
| 589 | 588 |
| 590 ui::WindowShowState GetShowStateAndReset() { | 589 ui::WindowShowState GetShowStateAndReset() { |
| 591 ui::WindowShowState ret = show_state_; | 590 ui::WindowShowState ret = show_state_; |
| 592 show_state_ = ui::SHOW_STATE_END; | 591 show_state_ = ui::SHOW_STATE_END; |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 781 EXPECT_EQ(window_bounds.ToString(), window->bounds().ToString()); | 780 EXPECT_EQ(window_bounds.ToString(), window->bounds().ToString()); |
| 782 } | 781 } |
| 783 | 782 |
| 784 // Following tests are written to test the backdrop functionality. | 783 // Following tests are written to test the backdrop functionality. |
| 785 | 784 |
| 786 namespace { | 785 namespace { |
| 787 | 786 |
| 788 class WorkspaceLayoutManagerBackdropTest : public test::AshTestBase { | 787 class WorkspaceLayoutManagerBackdropTest : public test::AshTestBase { |
| 789 public: | 788 public: |
| 790 WorkspaceLayoutManagerBackdropTest() {} | 789 WorkspaceLayoutManagerBackdropTest() {} |
| 791 virtual ~WorkspaceLayoutManagerBackdropTest() {} | 790 ~WorkspaceLayoutManagerBackdropTest() override {} |
| 792 | 791 |
| 793 virtual void SetUp() override { | 792 void SetUp() override { |
| 794 test::AshTestBase::SetUp(); | 793 test::AshTestBase::SetUp(); |
| 795 UpdateDisplay("800x600"); | 794 UpdateDisplay("800x600"); |
| 796 default_container_ = Shell::GetContainer(Shell::GetPrimaryRootWindow(), | 795 default_container_ = Shell::GetContainer(Shell::GetPrimaryRootWindow(), |
| 797 kShellWindowId_DefaultContainer); | 796 kShellWindowId_DefaultContainer); |
| 798 } | 797 } |
| 799 | 798 |
| 800 aura::Window* CreateTestWindow(const gfx::Rect& bounds) { | 799 aura::Window* CreateTestWindow(const gfx::Rect& bounds) { |
| 801 aura::Window* window = CreateTestWindowInShellWithBounds(bounds); | 800 aura::Window* window = CreateTestWindowInShellWithBounds(bounds); |
| 802 return window; | 801 return window; |
| 803 } | 802 } |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 969 shelf_layout_manager->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN); | 968 shelf_layout_manager->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN); |
| 970 shelf_layout_manager->UpdateVisibilityState(); | 969 shelf_layout_manager->UpdateVisibilityState(); |
| 971 | 970 |
| 972 EXPECT_GT(default_container()->children()[0]->bounds().height(), | 971 EXPECT_GT(default_container()->children()[0]->bounds().height(), |
| 973 reduced_bounds.height()); | 972 reduced_bounds.height()); |
| 974 } | 973 } |
| 975 | 974 |
| 976 class WorkspaceLayoutManagerKeyboardTest : public test::AshTestBase { | 975 class WorkspaceLayoutManagerKeyboardTest : public test::AshTestBase { |
| 977 public: | 976 public: |
| 978 WorkspaceLayoutManagerKeyboardTest() {} | 977 WorkspaceLayoutManagerKeyboardTest() {} |
| 979 virtual ~WorkspaceLayoutManagerKeyboardTest() {} | 978 ~WorkspaceLayoutManagerKeyboardTest() override {} |
| 980 | 979 |
| 981 virtual void SetUp() override { | 980 void SetUp() override { |
| 982 test::AshTestBase::SetUp(); | 981 test::AshTestBase::SetUp(); |
| 983 UpdateDisplay("800x600"); | 982 UpdateDisplay("800x600"); |
| 984 aura::Window* default_container = Shell::GetContainer( | 983 aura::Window* default_container = Shell::GetContainer( |
| 985 Shell::GetPrimaryRootWindow(), kShellWindowId_DefaultContainer); | 984 Shell::GetPrimaryRootWindow(), kShellWindowId_DefaultContainer); |
| 986 layout_manager_ = static_cast<WorkspaceLayoutManager*>( | 985 layout_manager_ = static_cast<WorkspaceLayoutManager*>( |
| 987 default_container->layout_manager()); | 986 default_container->layout_manager()); |
| 988 } | 987 } |
| 989 | 988 |
| 990 aura::Window* CreateTestWindow(const gfx::Rect& bounds) { | 989 aura::Window* CreateTestWindow(const gfx::Rect& bounds) { |
| 991 return CreateTestWindowInShellWithBounds(bounds); | 990 return CreateTestWindowInShellWithBounds(bounds); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1041 gfx::Insets restore_work_area_insets_; | 1040 gfx::Insets restore_work_area_insets_; |
| 1042 gfx::Rect keyboard_bounds_; | 1041 gfx::Rect keyboard_bounds_; |
| 1043 WorkspaceLayoutManager* layout_manager_; | 1042 WorkspaceLayoutManager* layout_manager_; |
| 1044 | 1043 |
| 1045 DISALLOW_COPY_AND_ASSIGN(WorkspaceLayoutManagerKeyboardTest); | 1044 DISALLOW_COPY_AND_ASSIGN(WorkspaceLayoutManagerKeyboardTest); |
| 1046 }; | 1045 }; |
| 1047 | 1046 |
| 1048 class FakeTextInputClient : public ui::DummyTextInputClient { | 1047 class FakeTextInputClient : public ui::DummyTextInputClient { |
| 1049 public: | 1048 public: |
| 1050 explicit FakeTextInputClient(gfx::NativeWindow window) : window_(window) {} | 1049 explicit FakeTextInputClient(gfx::NativeWindow window) : window_(window) {} |
| 1051 virtual ~FakeTextInputClient() {} | 1050 ~FakeTextInputClient() override {} |
| 1052 | 1051 |
| 1053 virtual gfx::NativeWindow GetAttachedWindow() const override { | 1052 gfx::NativeWindow GetAttachedWindow() const override { return window_; } |
| 1054 return window_; | |
| 1055 } | |
| 1056 | 1053 |
| 1057 private: | 1054 private: |
| 1058 gfx::NativeWindow window_; | 1055 gfx::NativeWindow window_; |
| 1059 | 1056 |
| 1060 DISALLOW_COPY_AND_ASSIGN(FakeTextInputClient); | 1057 DISALLOW_COPY_AND_ASSIGN(FakeTextInputClient); |
| 1061 }; | 1058 }; |
| 1062 | 1059 |
| 1063 // Tests that when a child window gains focus the top level window containing it | 1060 // Tests that when a child window gains focus the top level window containing it |
| 1064 // is resized to fit the remaining workspace area. | 1061 // is resized to fit the remaining workspace area. |
| 1065 TEST_F(WorkspaceLayoutManagerKeyboardTest, ChildWindowFocused) { | 1062 TEST_F(WorkspaceLayoutManagerKeyboardTest, ChildWindowFocused) { |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1151 occluded_window_bounds.width(), | 1148 occluded_window_bounds.width(), |
| 1152 occluded_window_bounds.height()).ToString(), | 1149 occluded_window_bounds.height()).ToString(), |
| 1153 window->bounds().ToString()); | 1150 window->bounds().ToString()); |
| 1154 HideKeyboard(); | 1151 HideKeyboard(); |
| 1155 EXPECT_EQ(occluded_window_bounds.ToString(), window->bounds().ToString()); | 1152 EXPECT_EQ(occluded_window_bounds.ToString(), window->bounds().ToString()); |
| 1156 | 1153 |
| 1157 Blur(&text_input_client); | 1154 Blur(&text_input_client); |
| 1158 } | 1155 } |
| 1159 | 1156 |
| 1160 } // namespace ash | 1157 } // namespace ash |
| OLD | NEW |