Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(196)

Side by Side Diff: ash/wm/splitview/split_view_controller_unittest.cc

Issue 2955203002: Cros Tablet Window management - Split Screen part II (Closed)
Patch Set: Rebase. Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW
« ash/wm/overview/window_selector_item.cc ('K') | « ash/wm/overview/window_selector_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698