Updating XTBs based on .GRDs from branch master
[chromium-blink-merge.git] / ash / wm / gestures / overview_gesture_handler_unittest.cc
blob620d4734ea5235d31e3a7ffaf292c00a52b813bf
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ash/root_window_controller.h"
6 #include "ash/shell.h"
7 #include "ash/test/ash_test_base.h"
8 #include "ash/wm/overview/window_selector_controller.h"
9 #include "ui/aura/test/test_window_delegate.h"
10 #include "ui/aura/test/test_windows.h"
11 #include "ui/aura/window.h"
12 #include "ui/aura/window_event_dispatcher.h"
13 #include "ui/events/test/event_generator.h"
14 #include "ui/views/widget/widget.h"
16 namespace ash {
18 class OverviewGestureHandlerTest : public test::AshTestBase {
19 public:
20 OverviewGestureHandlerTest() {}
21 ~OverviewGestureHandlerTest() override {}
23 aura::Window* CreateWindow(const gfx::Rect& bounds) {
24 return CreateTestWindowInShellWithDelegate(&delegate_, -1, bounds);
27 bool IsSelecting() {
28 return ash::Shell::GetInstance()->window_selector_controller()->
29 IsSelecting();
32 private:
33 aura::test::TestWindowDelegate delegate_;
35 DISALLOW_COPY_AND_ASSIGN(OverviewGestureHandlerTest);
38 // Tests a swipe up with three fingers to enter and a swipe down to exit
39 // overview.
40 TEST_F(OverviewGestureHandlerTest, VerticalSwipes) {
41 gfx::Rect bounds(0, 0, 400, 400);
42 aura::Window* root_window = Shell::GetPrimaryRootWindow();
43 scoped_ptr<aura::Window> window1(CreateWindow(bounds));
44 scoped_ptr<aura::Window> window2(CreateWindow(bounds));
45 ui::test::EventGenerator generator(root_window, root_window);
46 generator.ScrollSequence(gfx::Point(), base::TimeDelta::FromMilliseconds(5),
47 0, -500, 100, 3);
48 EXPECT_TRUE(IsSelecting());
50 // Swiping up again does nothing.
51 generator.ScrollSequence(gfx::Point(), base::TimeDelta::FromMilliseconds(5),
52 0, -500, 100, 3);
53 EXPECT_TRUE(IsSelecting());
55 // Swiping down exits.
56 generator.ScrollSequence(gfx::Point(), base::TimeDelta::FromMilliseconds(5),
57 0, 500, 100, 3);
58 EXPECT_FALSE(IsSelecting());
60 // Swiping down again does nothing.
61 generator.ScrollSequence(gfx::Point(), base::TimeDelta::FromMilliseconds(5),
62 0, 500, 100, 3);
63 EXPECT_FALSE(IsSelecting());
66 // Tests that a mostly horizontal swipe does not trigger overview.
67 TEST_F(OverviewGestureHandlerTest, HorizontalSwipes) {
68 gfx::Rect bounds(0, 0, 400, 400);
69 aura::Window* root_window = Shell::GetPrimaryRootWindow();
70 scoped_ptr<aura::Window> window1(CreateWindow(bounds));
71 scoped_ptr<aura::Window> window2(CreateWindow(bounds));
72 ui::test::EventGenerator generator(root_window, root_window);
73 generator.ScrollSequence(gfx::Point(), base::TimeDelta::FromMilliseconds(5),
74 600, -500, 100, 3);
75 EXPECT_FALSE(IsSelecting());
77 generator.ScrollSequence(gfx::Point(), base::TimeDelta::FromMilliseconds(5),
78 -600, -500, 100, 3);
79 EXPECT_FALSE(IsSelecting());
82 // Tests a swipe up with three fingers without releasing followed by a swipe
83 // down by a lesser amount which should still be enough to exit.
84 TEST_F(OverviewGestureHandlerTest, SwipeUpDownWithoutReleasing) {
85 gfx::Rect bounds(0, 0, 400, 400);
86 aura::Window* root_window = Shell::GetPrimaryRootWindow();
87 scoped_ptr<aura::Window> window1(CreateWindow(bounds));
88 scoped_ptr<aura::Window> window2(CreateWindow(bounds));
89 ui::test::EventGenerator generator(root_window, root_window);
90 base::TimeDelta timestamp = base::TimeDelta::FromInternalValue(
91 base::TimeTicks::Now().ToInternalValue());
92 gfx::Point start;
93 int num_fingers = 3;
94 base::TimeDelta step_delay(base::TimeDelta::FromMilliseconds(5));
95 ui::ScrollEvent fling_cancel(ui::ET_SCROLL_FLING_CANCEL,
96 start,
97 timestamp,
99 0, 0,
100 0, 0,
101 num_fingers);
102 generator.Dispatch(&fling_cancel);
104 // Scroll up by 1000px.
105 for (int i = 0; i < 100; ++i) {
106 timestamp += step_delay;
107 ui::ScrollEvent move(ui::ET_SCROLL,
108 start,
109 timestamp,
111 0, -10,
112 0, -10,
113 num_fingers);
114 generator.Dispatch(&move);
117 EXPECT_TRUE(IsSelecting());
119 // Without releasing scroll back down by 600px.
120 for (int i = 0; i < 60; ++i) {
121 timestamp += step_delay;
122 ui::ScrollEvent move(ui::ET_SCROLL,
123 start,
124 timestamp,
126 0, 10,
127 0, 10,
128 num_fingers);
129 generator.Dispatch(&move);
132 EXPECT_FALSE(IsSelecting());
133 ui::ScrollEvent fling_start(ui::ET_SCROLL_FLING_START,
134 start,
135 timestamp,
137 0, 10,
138 0, 10,
139 num_fingers);
140 generator.Dispatch(&fling_start);
143 } // namespace ash