Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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/splitview/split_view_controller.h" | 5 #include "ash/wm/splitview/split_view_controller.h" |
| 6 | 6 |
| 7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
| 8 #include "ash/test/ash_test_base.h" | 8 #include "ash/test/ash_test_base.h" |
| 9 #include "ash/wm/overview/window_selector_controller.h" | |
| 9 #include "ash/wm/window_state.h" | 10 #include "ash/wm/window_state.h" |
| 10 #include "ash/wm/window_util.h" | 11 #include "ash/wm/window_util.h" |
| 11 #include "ash/wm/wm_event.h" | 12 #include "ash/wm/wm_event.h" |
| 12 #include "ui/aura/test/test_window_delegate.h" | 13 #include "ui/aura/test/test_window_delegate.h" |
| 13 | 14 |
| 14 namespace ash { | 15 namespace ash { |
| 15 | 16 |
| 16 class SplitViewControllerTest : public test::AshTestBase { | 17 class SplitViewControllerTest : public test::AshTestBase { |
| 17 public: | 18 public: |
| 18 SplitViewControllerTest() {} | 19 SplitViewControllerTest() {} |
| 19 ~SplitViewControllerTest() override {} | 20 ~SplitViewControllerTest() override {} |
| 20 | 21 |
| 21 aura::Window* CreateWindow(const gfx::Rect& bounds) { | 22 aura::Window* CreateWindow(const gfx::Rect& bounds) { |
| 22 aura::Window* window = | 23 aura::Window* window = |
| 23 CreateTestWindowInShellWithDelegate(&delegate_, -1, bounds); | 24 CreateTestWindowInShellWithDelegate(&delegate_, -1, bounds); |
| 24 return window; | 25 return window; |
| 25 } | 26 } |
| 26 | 27 |
| 27 void EndSplitView() { split_view_controller()->EndSplitView(); } | 28 void EndSplitView() { split_view_controller()->EndSplitView(); } |
| 28 | 29 |
| 30 void ToggleOverview() { | |
| 31 Shell::Get()->window_selector_controller()->ToggleOverview(); | |
| 32 } | |
| 33 | |
| 34 std::vector<aura::Window*> GetWindowsInOverviewGrids() { | |
| 35 return Shell::Get() | |
| 36 ->window_selector_controller() | |
| 37 ->GetWindowsListInOverviewGridsForTesting(); | |
| 38 } | |
| 39 | |
| 29 SplitViewController* split_view_controller() { | 40 SplitViewController* split_view_controller() { |
| 30 return Shell::Get()->split_view_controller(); | 41 return Shell::Get()->split_view_controller(); |
| 31 } | 42 } |
| 32 | 43 |
| 33 private: | 44 private: |
| 34 aura::test::TestWindowDelegate delegate_; | 45 aura::test::TestWindowDelegate delegate_; |
| 35 | 46 |
| 36 DISALLOW_COPY_AND_ASSIGN(SplitViewControllerTest); | 47 DISALLOW_COPY_AND_ASSIGN(SplitViewControllerTest); |
| 37 }; | 48 }; |
| 38 | 49 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 97 split_view_controller()->SetRightWindow(window2.get()); | 108 split_view_controller()->SetRightWindow(window2.get()); |
| 98 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), true); | 109 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), true); |
| 99 | 110 |
| 100 window1.reset(); | 111 window1.reset(); |
| 101 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), false); | 112 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), false); |
| 102 } | 113 } |
| 103 | 114 |
| 104 // Tests that if one of the snapped window gets minimized / maximized / full- | 115 // Tests that if one of the snapped window gets minimized / maximized / full- |
| 105 // screened, end the split view mode. | 116 // screened, end the split view mode. |
| 106 TEST_F(SplitViewControllerTest, WindowStateChangeTest) { | 117 TEST_F(SplitViewControllerTest, WindowStateChangeTest) { |
| 107 const gfx::Rect bounds(0, 0, 400, 400); | 118 gfx::Rect bounds(0, 0, 400, 400); |
|
oshima
2017/06/29 17:46:23
why this change?
xdai1
2017/07/06 00:35:49
Sorry, it was a mistake. Bring it back.
| |
| 108 std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); | 119 std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); |
| 109 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), false); | 120 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), false); |
| 110 | 121 |
| 111 split_view_controller()->SetLeftWindow(window1.get()); | 122 split_view_controller()->SetLeftWindow(window1.get()); |
| 112 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), true); | 123 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), true); |
| 113 | 124 |
| 114 wm::WMEvent minimize_event(wm::WM_EVENT_MINIMIZE); | 125 wm::WMEvent minimize_event(wm::WM_EVENT_MINIMIZE); |
| 115 wm::GetWindowState(window1.get())->OnWMEvent(&minimize_event); | 126 wm::GetWindowState(window1.get())->OnWMEvent(&minimize_event); |
| 116 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), false); | 127 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), false); |
| 117 | 128 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 149 EXPECT_EQ(split_view_controller()->right_window(), window2.get()); | 160 EXPECT_EQ(split_view_controller()->right_window(), window2.get()); |
| 150 EXPECT_EQ(split_view_controller()->state(), | 161 EXPECT_EQ(split_view_controller()->state(), |
| 151 SplitViewController::BOTH_SNAPPED); | 162 SplitViewController::BOTH_SNAPPED); |
| 152 | 163 |
| 153 wm::ActivateWindow(window3.get()); | 164 wm::ActivateWindow(window3.get()); |
| 154 EXPECT_EQ(split_view_controller()->right_window(), window3.get()); | 165 EXPECT_EQ(split_view_controller()->right_window(), window3.get()); |
| 155 EXPECT_EQ(split_view_controller()->state(), | 166 EXPECT_EQ(split_view_controller()->state(), |
| 156 SplitViewController::BOTH_SNAPPED); | 167 SplitViewController::BOTH_SNAPPED); |
| 157 } | 168 } |
| 158 | 169 |
| 170 // Tests that if split view mode and overview mode are active at the same time, | |
| 171 // i.e., half of the screen is occupied by a snapped window and half of the | |
| 172 // screen is occupied by the overview windows grid, the next activatable window | |
| 173 // will be picked to snap when exiting the overview mode. | |
| 174 TEST_F(SplitViewControllerTest, ExitOverviewTest) { | |
| 175 const gfx::Rect bounds(0, 0, 400, 400); | |
| 176 std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); | |
| 177 std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); | |
| 178 std::unique_ptr<aura::Window> window3(CreateWindow(bounds)); | |
| 179 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), false); | |
| 180 | |
| 181 ToggleOverview(); | |
| 182 split_view_controller()->SetLeftWindow(window1.get()); | |
| 183 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), true); | |
| 184 EXPECT_EQ(split_view_controller()->state(), | |
| 185 SplitViewController::LEFT_SNAPPED); | |
| 186 EXPECT_EQ(split_view_controller()->left_window(), window1.get()); | |
| 187 | |
| 188 ToggleOverview(); | |
| 189 EXPECT_EQ(split_view_controller()->state(), | |
| 190 SplitViewController::BOTH_SNAPPED); | |
| 191 EXPECT_EQ(split_view_controller()->right_window(), window3.get()); | |
| 192 } | |
| 193 | |
| 194 // Tests that if split view mode is active when entering overview, the overview | |
| 195 // windows grid should show in the non-default side of the screen, and the | |
| 196 // default snapped window should not be shown in the overview window grid. | |
| 197 TEST_F(SplitViewControllerTest, EnterOverviewTest) { | |
| 198 const gfx::Rect bounds(0, 0, 400, 400); | |
| 199 std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); | |
| 200 std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); | |
| 201 std::unique_ptr<aura::Window> window3(CreateWindow(bounds)); | |
| 202 | |
| 203 split_view_controller()->SetLeftWindow(window1.get()); | |
| 204 split_view_controller()->SetRightWindow(window2.get()); | |
| 205 EXPECT_EQ(split_view_controller()->state(), | |
| 206 SplitViewController::BOTH_SNAPPED); | |
| 207 EXPECT_EQ(split_view_controller()->GetDefaultSnappedWindow(), window1.get()); | |
| 208 | |
| 209 ToggleOverview(); | |
| 210 EXPECT_EQ(split_view_controller()->state(), | |
| 211 SplitViewController::LEFT_SNAPPED); | |
| 212 std::vector<aura::Window*> windows = GetWindowsInOverviewGrids(); | |
| 213 auto iter = std::find(windows.begin(), windows.end(), | |
| 214 split_view_controller()->GetDefaultSnappedWindow()); | |
| 215 EXPECT_TRUE(iter == windows.end()); | |
| 216 } | |
| 217 | |
| 159 } // namespace ash | 218 } // namespace ash |
| OLD | NEW |