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

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: Fix the failed ash_unittest. 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
« no previous file with comments | « ash/wm/splitview/split_view_controller.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 AshTestBase { 17 class SplitViewControllerTest : public 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
39 // Tests the basic functionalities. 50 // Tests the basic functionalities.
40 TEST_F(SplitViewControllerTest, Basic) { 51 TEST_F(SplitViewControllerTest, Basic) {
41 const gfx::Rect bounds(0, 0, 400, 400); 52 const gfx::Rect bounds(0, 0, 400, 400);
42 std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); 53 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
43 std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); 54 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
44 55
45 EXPECT_EQ(split_view_controller()->state(), SplitViewController::NO_SNAP); 56 EXPECT_EQ(split_view_controller()->state(), SplitViewController::NO_SNAP);
46 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), false); 57 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), false);
47 58
48 split_view_controller()->SnapWindow(window1.get(), SplitViewController::LEFT); 59 split_view_controller()->SnapWindow(window1.get(), SplitViewController::LEFT);
49 EXPECT_EQ(split_view_controller()->state(), 60 EXPECT_EQ(split_view_controller()->state(),
50 SplitViewController::LEFT_SNAPPED); 61 SplitViewController::LEFT_SNAPPED);
51 EXPECT_EQ(split_view_controller()->left_window(), window1.get()); 62 EXPECT_EQ(split_view_controller()->left_window(), window1.get());
52 EXPECT_NE(split_view_controller()->left_window(), window2.get()); 63 EXPECT_NE(split_view_controller()->left_window(), window2.get());
53 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), true); 64 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), true);
54 EXPECT_EQ(window1->GetBoundsInScreen(), 65 EXPECT_EQ(window1->GetBoundsInScreen(),
55 split_view_controller()->GetSnappedWindowBoundsInScreen( 66 split_view_controller()->GetSnappedWindowBoundsInScreen(
56 window1.get(), SplitViewController::LEFT_SNAPPED)); 67 window1.get(), SplitViewController::LEFT));
57 68
58 split_view_controller()->SnapWindow(window2.get(), 69 split_view_controller()->SnapWindow(window2.get(),
59 SplitViewController::RIGHT); 70 SplitViewController::RIGHT);
60 EXPECT_EQ(split_view_controller()->state(), 71 EXPECT_EQ(split_view_controller()->state(),
61 SplitViewController::BOTH_SNAPPED); 72 SplitViewController::BOTH_SNAPPED);
62 EXPECT_EQ(split_view_controller()->right_window(), window2.get()); 73 EXPECT_EQ(split_view_controller()->right_window(), window2.get());
63 EXPECT_NE(split_view_controller()->right_window(), window1.get()); 74 EXPECT_NE(split_view_controller()->right_window(), window1.get());
64 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), true); 75 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), true);
65 EXPECT_EQ(window2->GetBoundsInScreen(), 76 EXPECT_EQ(window2->GetBoundsInScreen(),
66 split_view_controller()->GetSnappedWindowBoundsInScreen( 77 split_view_controller()->GetSnappedWindowBoundsInScreen(
67 window2.get(), SplitViewController::RIGHT_SNAPPED)); 78 window2.get(), SplitViewController::RIGHT));
68 79
69 EndSplitView(); 80 EndSplitView();
70 EXPECT_EQ(split_view_controller()->state(), SplitViewController::NO_SNAP); 81 EXPECT_EQ(split_view_controller()->state(), SplitViewController::NO_SNAP);
71 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), false); 82 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), false);
72 } 83 }
73 84
74 // Tests that the default snapped window is the first window that gets snapped. 85 // Tests that the default snapped window is the first window that gets snapped.
75 TEST_F(SplitViewControllerTest, DefaultSnappedWindow) { 86 TEST_F(SplitViewControllerTest, DefaultSnappedWindow) {
76 const gfx::Rect bounds(0, 0, 400, 400); 87 const gfx::Rect bounds(0, 0, 400, 400);
77 std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); 88 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 EXPECT_EQ(split_view_controller()->right_window(), window2.get()); 164 EXPECT_EQ(split_view_controller()->right_window(), window2.get());
154 EXPECT_EQ(split_view_controller()->state(), 165 EXPECT_EQ(split_view_controller()->state(),
155 SplitViewController::BOTH_SNAPPED); 166 SplitViewController::BOTH_SNAPPED);
156 167
157 wm::ActivateWindow(window3.get()); 168 wm::ActivateWindow(window3.get());
158 EXPECT_EQ(split_view_controller()->right_window(), window3.get()); 169 EXPECT_EQ(split_view_controller()->right_window(), window3.get());
159 EXPECT_EQ(split_view_controller()->state(), 170 EXPECT_EQ(split_view_controller()->state(),
160 SplitViewController::BOTH_SNAPPED); 171 SplitViewController::BOTH_SNAPPED);
161 } 172 }
162 173
174 // Tests that if split view mode and overview mode are active at the same time,
175 // i.e., half of the screen is occupied by a snapped window and half of the
176 // screen is occupied by the overview windows grid, the next activatable window
177 // will be picked to snap when exiting the overview mode.
178 TEST_F(SplitViewControllerTest, ExitOverviewTest) {
179 const gfx::Rect bounds(0, 0, 400, 400);
180 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
181 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
182 std::unique_ptr<aura::Window> window3(CreateWindow(bounds));
183 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), false);
184
185 ToggleOverview();
186 split_view_controller()->SnapWindow(window1.get(), SplitViewController::LEFT);
187 EXPECT_EQ(split_view_controller()->IsSplitViewModeActive(), true);
188 EXPECT_EQ(split_view_controller()->state(),
189 SplitViewController::LEFT_SNAPPED);
190 EXPECT_EQ(split_view_controller()->left_window(), window1.get());
191
192 ToggleOverview();
193 EXPECT_EQ(split_view_controller()->state(),
194 SplitViewController::BOTH_SNAPPED);
195 EXPECT_EQ(split_view_controller()->right_window(), window3.get());
196 }
197
198 // Tests that if split view mode is active when entering overview, the overview
199 // windows grid should show in the non-default side of the screen, and the
200 // default snapped window should not be shown in the overview window grid.
201 TEST_F(SplitViewControllerTest, EnterOverviewTest) {
202 const gfx::Rect bounds(0, 0, 400, 400);
203 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
204 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
205 std::unique_ptr<aura::Window> window3(CreateWindow(bounds));
206
207 split_view_controller()->SnapWindow(window1.get(), SplitViewController::LEFT);
208 split_view_controller()->SnapWindow(window2.get(),
209 SplitViewController::RIGHT);
210 EXPECT_EQ(split_view_controller()->state(),
211 SplitViewController::BOTH_SNAPPED);
212 EXPECT_EQ(split_view_controller()->GetDefaultSnappedWindow(), window1.get());
213
214 ToggleOverview();
215 EXPECT_EQ(split_view_controller()->state(),
216 SplitViewController::LEFT_SNAPPED);
217 std::vector<aura::Window*> windows = GetWindowsInOverviewGrids();
218 auto iter = std::find(windows.begin(), windows.end(),
219 split_view_controller()->GetDefaultSnappedWindow());
220 EXPECT_TRUE(iter == windows.end());
221 }
222
163 } // namespace ash 223 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/splitview/split_view_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698