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

Side by Side Diff: athena/wm/window_manager_unittest.cc

Issue 694883002: Do not allow split view to be engaged by a bezel gesture (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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 | « athena/wm/window_manager_impl.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "athena/wm/public/window_manager.h" 5 #include "athena/wm/public/window_manager.h"
6 6
7 #include "athena/screen/public/screen_manager.h" 7 #include "athena/screen/public/screen_manager.h"
8 #include "athena/test/base/athena_test_base.h" 8 #include "athena/test/base/athena_test_base.h"
9 #include "athena/test/base/test_windows.h" 9 #include "athena/test/base/test_windows.h"
10 #include "athena/wm/public/window_list_provider.h" 10 #include "athena/wm/public/window_list_provider.h"
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 // have been opened by JavaScript or by the home card. 169 // have been opened by JavaScript or by the home card.
170 scoped_ptr<aura::Window> w3(CreateAndActivateWindow(&delegate)); 170 scoped_ptr<aura::Window> w3(CreateAndActivateWindow(&delegate));
171 171
172 ASSERT_FALSE(WindowManager::Get()->IsOverviewModeActive()); 172 ASSERT_FALSE(WindowManager::Get()->IsOverviewModeActive());
173 EXPECT_TRUE(w3->IsVisible()); 173 EXPECT_TRUE(w3->IsVisible());
174 EXPECT_TRUE(wm::IsActiveWindow(w3.get())); 174 EXPECT_TRUE(wm::IsActiveWindow(w3.get()));
175 EXPECT_FALSE(w1->IsVisible()); 175 EXPECT_FALSE(w1->IsVisible());
176 EXPECT_FALSE(w2->IsVisible()); 176 EXPECT_FALSE(w2->IsVisible());
177 } 177 }
178 178
179 TEST_F(WindowManagerTest, BezelGestureToSplitViewMode) {
180 aura::test::TestWindowDelegate delegate;
181 scoped_ptr<aura::Window> first(CreateAndActivateWindow(&delegate));
182 scoped_ptr<aura::Window> second(CreateAndActivateWindow(&delegate));
183 scoped_ptr<aura::Window> third(CreateAndActivateWindow(&delegate));
184
185 test::WindowManagerImplTestApi wm_api;
186
187 // Test that going into split-view mode with two-finger gesture selects the
188 // correct windows on left and right splits.
189 ui::test::EventGenerator generator(root_window());
190 const gfx::Point start_points[2] = {
191 gfx::Point(2, 10), gfx::Point(4, 20),
192 };
193 const int kEventTimeSepration = 16;
194 int x_middle = root_window()->bounds().width() / 2;
195 generator.GestureMultiFingerScroll(
196 2, start_points, kEventTimeSepration, 1, x_middle, 0);
197 ASSERT_TRUE(wm_api.GetSplitViewController()->IsSplitViewModeActive());
198 EXPECT_EQ(second.get(), wm_api.GetSplitViewController()->left_window());
199 EXPECT_EQ(third.get(), wm_api.GetSplitViewController()->right_window());
200 EXPECT_EQ(second->bounds().size().ToString(),
201 third->bounds().size().ToString());
202 }
203
204 TEST_F(WindowManagerTest, BezelGestureToSwitchBetweenWindows) {
205 aura::test::TestWindowDelegate delegate;
206 scoped_ptr<aura::Window> first(CreateAndActivateWindow(&delegate));
207 scoped_ptr<aura::Window> second(CreateAndActivateWindow(&delegate));
208 scoped_ptr<aura::Window> third(CreateAndActivateWindow(&delegate));
209 first->Hide();
210 second->Hide();
211
212 test::WindowManagerImplTestApi wm_api;
213
214 EXPECT_EQ(third.get(),
215 wm_api.GetWindowListProvider()->GetWindowList().back());
216
217 // Do a two-finger swipe from the left bezel.
218 ui::test::EventGenerator generator(root_window());
219 const gfx::Point left_bezel_points[2] = {
220 gfx::Point(2, 10), gfx::Point(4, 20),
221 };
222 const int kEventTimeSeparation = 16;
223 int width = root_window()->bounds().width();
224 generator.GestureMultiFingerScroll(
225 2, left_bezel_points, kEventTimeSeparation, 1, width, 0);
226 EXPECT_TRUE(wm::IsActiveWindow(second.get()));
227 EXPECT_EQ(second.get(),
228 wm_api.GetWindowListProvider()->GetWindowList().back());
229
230 // Do a two-finger swipe from the right bezel.
231 const gfx::Point right_bezel_points[2] = {
232 gfx::Point(width - 5, 10),
233 gfx::Point(width - 10, 20)
234 };
235 generator.GestureMultiFingerScroll(
236 2, right_bezel_points, kEventTimeSeparation, 1, -width, 0);
237 EXPECT_TRUE(wm::IsActiveWindow(third.get()));
238 EXPECT_EQ(third.get(),
239 wm_api.GetWindowListProvider()->GetWindowList().back());
240 }
241
242 TEST_F(WindowManagerTest, TitleDragSwitchBetweenWindows) { 179 TEST_F(WindowManagerTest, TitleDragSwitchBetweenWindows) {
243 aura::test::TestWindowDelegate delegate; 180 aura::test::TestWindowDelegate delegate;
244 delegate.set_window_component(HTCAPTION); 181 delegate.set_window_component(HTCAPTION);
245 scoped_ptr<aura::Window> first(CreateAndActivateWindow(&delegate)); 182 scoped_ptr<aura::Window> first(CreateAndActivateWindow(&delegate));
246 scoped_ptr<aura::Window> second(CreateAndActivateWindow(&delegate)); 183 scoped_ptr<aura::Window> second(CreateAndActivateWindow(&delegate));
247 scoped_ptr<aura::Window> third(CreateAndActivateWindow(&delegate)); 184 scoped_ptr<aura::Window> third(CreateAndActivateWindow(&delegate));
248 185
249 test::WindowManagerImplTestApi wm_api; 186 test::WindowManagerImplTestApi wm_api;
250 187
251 EXPECT_EQ(third.get(), 188 EXPECT_EQ(third.get(),
(...skipping 27 matching lines...) Expand all
279 gfx::Point(20, 90), 216 gfx::Point(20, 90),
280 base::TimeDelta::FromMilliseconds(20), 217 base::TimeDelta::FromMilliseconds(20),
281 5); 218 5);
282 EXPECT_TRUE(wm::IsActiveWindow(third.get())); 219 EXPECT_TRUE(wm::IsActiveWindow(third.get()));
283 EXPECT_EQ(third.get(), 220 EXPECT_EQ(third.get(),
284 wm_api.GetWindowListProvider()->GetWindowList().back()); 221 wm_api.GetWindowListProvider()->GetWindowList().back());
285 EXPECT_FALSE(second->IsVisible()); 222 EXPECT_FALSE(second->IsVisible());
286 EXPECT_TRUE(third->IsVisible()); 223 EXPECT_TRUE(third->IsVisible());
287 } 224 }
288 225
289 TEST_F(WindowManagerTest, TitleDragSwitchBetweenWindowsInSplitViewMode) { 226 // Verifies that the correct windows are replaced and the ordering of
227 // the window list changes correctly when the window titlebars are dragged
228 // in split view mode.
229 TEST_F(WindowManagerTest, ReplaceWindowsInSplitViewMode) {
290 aura::test::TestWindowDelegate delegate; 230 aura::test::TestWindowDelegate delegate;
291 delegate.set_window_component(HTCAPTION); 231 delegate.set_window_component(HTCAPTION);
292 scoped_ptr<aura::Window> first(CreateAndActivateWindow(&delegate)); 232 scoped_ptr<aura::Window> first(CreateAndActivateWindow(&delegate));
293 scoped_ptr<aura::Window> second(CreateAndActivateWindow(&delegate)); 233 scoped_ptr<aura::Window> second(CreateAndActivateWindow(&delegate));
294 scoped_ptr<aura::Window> third(CreateAndActivateWindow(&delegate)); 234 scoped_ptr<aura::Window> third(CreateAndActivateWindow(&delegate));
295 scoped_ptr<aura::Window> fourth(CreateAndActivateWindow(&delegate)); 235 scoped_ptr<aura::Window> fourth(CreateAndActivateWindow(&delegate));
296 236
297 test::WindowManagerImplTestApi wm_api; 237 test::WindowManagerImplTestApi wm_api;
238 wm_api.wm()->ToggleSplitView();
239 ASSERT_TRUE(wm_api.GetSplitViewController()->IsSplitViewModeActive());
298 240
299 // Test that going into split-view mode with two-finger gesture selects the 241 // Verify that the left and right windows have been set to the
300 // correct windows on left and right splits. 242 // two windows at the top of the window list.
243 aura::Window::Windows windows =
244 wm_api.GetWindowListProvider()->GetWindowList();
245 ASSERT_EQ(4u, windows.size());
246 EXPECT_EQ(first.get(), windows[0]);
247 EXPECT_EQ(second.get(), windows[1]);
248 EXPECT_EQ(third.get(), windows[2]);
249 EXPECT_EQ(fourth.get(), windows[3]);
250 EXPECT_EQ(fourth.get(), wm_api.GetSplitViewController()->left_window());
251 EXPECT_EQ(third.get(), wm_api.GetSplitViewController()->right_window());
252
253 // Swiping the title of the left window should change it from |fourth|
254 // to |second|. The right window should not change.
301 ui::test::EventGenerator generator(root_window()); 255 ui::test::EventGenerator generator(root_window());
302 const gfx::Point start_points[2] = {
303 gfx::Point(2, 10), gfx::Point(4, 20),
304 };
305 const int kEventTimeSepration = 16;
306 int x_middle = root_window()->bounds().width() / 2;
307 generator.GestureMultiFingerScroll(
308 2, start_points, kEventTimeSepration, 1, x_middle, 0);
309 ASSERT_TRUE(wm_api.GetSplitViewController()->IsSplitViewModeActive());
310 EXPECT_EQ(third.get(), wm_api.GetSplitViewController()->left_window());
311 EXPECT_EQ(fourth.get(), wm_api.GetSplitViewController()->right_window());
312
313 // Swipe the title of the left window. It should switch to |second|.
314 generator.GestureScrollSequence(gfx::Point(20, 10), 256 generator.GestureScrollSequence(gfx::Point(20, 10),
315 gfx::Point(20, 400), 257 gfx::Point(20, 400),
316 base::TimeDelta::FromMilliseconds(20), 258 base::TimeDelta::FromMilliseconds(20),
317 5); 259 5);
318 EXPECT_EQ(second.get(), wm_api.GetSplitViewController()->left_window()); 260 EXPECT_EQ(second.get(), wm_api.GetSplitViewController()->left_window());
319 EXPECT_EQ(fourth.get(), wm_api.GetSplitViewController()->right_window()); 261 EXPECT_EQ(third.get(), wm_api.GetSplitViewController()->right_window());
320 aura::Window::Windows windows = 262
321 wm_api.GetWindowListProvider()->GetWindowList(); 263 // |second| should be placed at the front of the list. The replaced
264 // window (|fourth|) should be stacked behind the non-replaced window
265 // (|third|).
266 windows = wm_api.GetWindowListProvider()->GetWindowList();
322 ASSERT_EQ(4u, windows.size()); 267 ASSERT_EQ(4u, windows.size());
268 EXPECT_EQ(first.get(), windows[0]);
269 EXPECT_EQ(fourth.get(), windows[1]);
270 EXPECT_EQ(third.get(), windows[2]);
323 EXPECT_EQ(second.get(), windows[3]); 271 EXPECT_EQ(second.get(), windows[3]);
324 EXPECT_EQ(fourth.get(), windows[2]);
325 272
326 // Swipe the title of the right window now. It should switch to |third|. 273 // Swiping the title of the right window should change it from |third|
274 // to |fourth|. The left window should not change.
275 int x_middle = root_window()->bounds().width() / 2;
327 generator.GestureScrollSequence(gfx::Point(x_middle + 20, 10), 276 generator.GestureScrollSequence(gfx::Point(x_middle + 20, 10),
328 gfx::Point(x_middle + 20, 400), 277 gfx::Point(x_middle + 20, 400),
329 base::TimeDelta::FromMilliseconds(20), 278 base::TimeDelta::FromMilliseconds(20),
330 5); 279 5);
331 EXPECT_EQ(second.get(), wm_api.GetSplitViewController()->left_window()); 280 EXPECT_EQ(second.get(), wm_api.GetSplitViewController()->left_window());
332 EXPECT_EQ(third.get(), wm_api.GetSplitViewController()->right_window()); 281 EXPECT_EQ(fourth.get(), wm_api.GetSplitViewController()->right_window());
282
283 // |fourth| should be placed at the front of the list. The replaced
284 // window (|third|) should be stacked behind the non-replaced window
285 // (|second|).
333 windows = wm_api.GetWindowListProvider()->GetWindowList(); 286 windows = wm_api.GetWindowListProvider()->GetWindowList();
334 ASSERT_EQ(4u, windows.size()); 287 ASSERT_EQ(4u, windows.size());
335 EXPECT_EQ(third.get(), windows[3]); 288 EXPECT_EQ(first.get(), windows[0]);
289 EXPECT_EQ(third.get(), windows[1]);
336 EXPECT_EQ(second.get(), windows[2]); 290 EXPECT_EQ(second.get(), windows[2]);
291 EXPECT_EQ(fourth.get(), windows[3]);
337 } 292 }
338 293
339 TEST_F(WindowManagerTest, NewWindowBounds) { 294 TEST_F(WindowManagerTest, NewWindowBounds) {
340 aura::test::TestWindowDelegate delegate; 295 aura::test::TestWindowDelegate delegate;
341 scoped_ptr<aura::Window> first(CreateAndActivateWindow(&delegate)); 296 scoped_ptr<aura::Window> first(CreateAndActivateWindow(&delegate));
342 297
343 test::WindowManagerImplTestApi wm_api; 298 test::WindowManagerImplTestApi wm_api;
344 // The window should have the same size as the container. 299 // The window should have the same size as the container.
345 const gfx::Size work_area = 300 const gfx::Size work_area =
346 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().work_area().size(); 301 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().work_area().size();
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 589
635 // Closes a non-visible window (w1). 590 // Closes a non-visible window (w1).
636 w3.reset(); 591 w3.reset();
637 592
638 ASSERT_TRUE(WindowManager::Get()->IsOverviewModeActive()); 593 ASSERT_TRUE(WindowManager::Get()->IsOverviewModeActive());
639 EXPECT_FALSE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); 594 EXPECT_FALSE(wm_api.GetSplitViewController()->IsSplitViewModeActive());
640 EXPECT_TRUE(w2->IsVisible()); 595 EXPECT_TRUE(w2->IsVisible());
641 } 596 }
642 597
643 } // namespace athena 598 } // namespace athena
OLDNEW
« no previous file with comments | « athena/wm/window_manager_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698