OLD | NEW |
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/athena_test_base.h" | 8 #include "athena/test/athena_test_base.h" |
9 #include "athena/wm/public/window_list_provider.h" | 9 #include "athena/wm/public/window_list_provider.h" |
10 #include "athena/wm/split_view_controller.h" | 10 #include "athena/wm/split_view_controller.h" |
11 #include "athena/wm/test/window_manager_impl_test_api.h" | 11 #include "athena/wm/test/window_manager_impl_test_api.h" |
12 #include "athena/wm/window_manager_impl.h" | 12 #include "athena/wm/window_manager_impl.h" |
13 #include "ui/aura/client/window_tree_client.h" | 13 #include "ui/aura/client/window_tree_client.h" |
14 #include "ui/aura/test/test_window_delegate.h" | 14 #include "ui/aura/test/test_window_delegate.h" |
15 #include "ui/aura/window.h" | 15 #include "ui/aura/window.h" |
16 #include "ui/base/hit_test.h" | 16 #include "ui/base/hit_test.h" |
17 #include "ui/events/test/event_generator.h" | 17 #include "ui/events/test/event_generator.h" |
18 #include "ui/gfx/display.h" | 18 #include "ui/gfx/display.h" |
19 #include "ui/gfx/screen.h" | 19 #include "ui/gfx/screen.h" |
20 #include "ui/wm/core/window_util.h" | 20 #include "ui/wm/core/window_util.h" |
21 | 21 |
22 namespace { | |
23 | |
24 scoped_ptr<aura::Window> CreateWindow(aura::WindowDelegate* delegate) { | |
25 scoped_ptr<aura::Window> window(new aura::Window(delegate)); | |
26 window->SetType(ui::wm::WINDOW_TYPE_NORMAL); | |
27 window->Init(aura::WINDOW_LAYER_SOLID_COLOR); | |
28 window->Show(); | |
29 return window.Pass(); | |
30 } | |
31 | |
32 } // namespace | |
33 | |
34 namespace athena { | 22 namespace athena { |
35 | 23 |
36 typedef test::AthenaTestBase WindowManagerTest; | 24 class WindowManagerTest : public test::AthenaTestBase { |
| 25 public: |
| 26 WindowManagerTest() {} |
| 27 virtual ~WindowManagerTest() {} |
| 28 |
| 29 scoped_ptr<aura::Window> CreateWindow(aura::WindowDelegate* delegate) { |
| 30 scoped_ptr<aura::Window> window(CreateTestWindow(delegate, gfx::Rect())); |
| 31 window->Show(); |
| 32 return window.Pass(); |
| 33 } |
| 34 |
| 35 private: |
| 36 DISALLOW_COPY_AND_ASSIGN(WindowManagerTest); |
| 37 }; |
37 | 38 |
38 TEST_F(WindowManagerTest, OverviewModeBasics) { | 39 TEST_F(WindowManagerTest, OverviewModeBasics) { |
39 aura::test::TestWindowDelegate delegate; | 40 aura::test::TestWindowDelegate delegate; |
40 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); | 41 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); |
41 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); | 42 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); |
42 | 43 |
43 test::WindowManagerImplTestApi wm_api; | 44 test::WindowManagerImplTestApi wm_api; |
44 aura::client::ParentWindowWithContext( | |
45 first.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
46 aura::client::ParentWindowWithContext( | |
47 second.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
48 wm::ActivateWindow(second.get()); | 45 wm::ActivateWindow(second.get()); |
49 | 46 |
50 ASSERT_FALSE(WindowManager::GetInstance()->IsOverviewModeActive()); | 47 ASSERT_FALSE(WindowManager::GetInstance()->IsOverviewModeActive()); |
51 EXPECT_EQ(first->bounds().ToString(), second->bounds().ToString()); | 48 EXPECT_EQ(first->bounds().ToString(), second->bounds().ToString()); |
52 EXPECT_EQ(gfx::Screen::GetNativeScreen() | 49 EXPECT_EQ(gfx::Screen::GetNativeScreen() |
53 ->GetPrimaryDisplay() | 50 ->GetPrimaryDisplay() |
54 .work_area() | 51 .work_area() |
55 .size() | 52 .size() |
56 .ToString(), | 53 .ToString(), |
57 first->bounds().size().ToString()); | 54 first->bounds().size().ToString()); |
(...skipping 17 matching lines...) Expand all Loading... |
75 WindowManager::GetInstance()->ToggleOverview(); | 72 WindowManager::GetInstance()->ToggleOverview(); |
76 ASSERT_FALSE(WindowManager::GetInstance()->IsOverviewModeActive()); | 73 ASSERT_FALSE(WindowManager::GetInstance()->IsOverviewModeActive()); |
77 EXPECT_FALSE(first->IsVisible()); | 74 EXPECT_FALSE(first->IsVisible()); |
78 EXPECT_TRUE(second->IsVisible()); | 75 EXPECT_TRUE(second->IsVisible()); |
79 } | 76 } |
80 | 77 |
81 TEST_F(WindowManagerTest, OverviewToSplitViewMode) { | 78 TEST_F(WindowManagerTest, OverviewToSplitViewMode) { |
82 test::WindowManagerImplTestApi wm_api; | 79 test::WindowManagerImplTestApi wm_api; |
83 | 80 |
84 aura::test::TestWindowDelegate delegate; | 81 aura::test::TestWindowDelegate delegate; |
85 scoped_ptr<aura::Window> w1(CreateTestWindow(&delegate, gfx::Rect())); | 82 scoped_ptr<aura::Window> w1(CreateWindow(&delegate)); |
86 scoped_ptr<aura::Window> w2(CreateTestWindow(&delegate, gfx::Rect())); | 83 scoped_ptr<aura::Window> w2(CreateWindow(&delegate)); |
87 scoped_ptr<aura::Window> w3(CreateTestWindow(&delegate, gfx::Rect())); | 84 scoped_ptr<aura::Window> w3(CreateWindow(&delegate)); |
88 wm::ActivateWindow(w3.get()); | 85 wm::ActivateWindow(w3.get()); |
89 | 86 |
90 WindowManager::GetInstance()->ToggleOverview(); | 87 WindowManager::GetInstance()->ToggleOverview(); |
91 EXPECT_TRUE(w1->IsVisible()); | 88 EXPECT_TRUE(w1->IsVisible()); |
92 EXPECT_TRUE(w2->IsVisible()); | 89 EXPECT_TRUE(w2->IsVisible()); |
93 EXPECT_TRUE(w3->IsVisible()); | 90 EXPECT_TRUE(w3->IsVisible()); |
94 | 91 |
95 // Go into split-view mode. | 92 // Go into split-view mode. |
96 WindowOverviewModeDelegate* overview_delegate = wm_api.wm(); | 93 WindowOverviewModeDelegate* overview_delegate = wm_api.wm(); |
97 overview_delegate->OnSplitViewMode(NULL, w2.get()); | 94 overview_delegate->OnSelectSplitViewWindow(w3.get(), NULL, w3.get()); |
98 EXPECT_TRUE(w3->IsVisible()); | 95 EXPECT_TRUE(w3->IsVisible()); |
99 EXPECT_TRUE(w2->IsVisible()); | 96 EXPECT_TRUE(w2->IsVisible()); |
100 EXPECT_FALSE(w1->IsVisible()); | 97 EXPECT_FALSE(w1->IsVisible()); |
101 } | 98 } |
102 | 99 |
| 100 TEST_F(WindowManagerTest, NewWindowFromOverview) { |
| 101 aura::test::TestWindowDelegate delegate; |
| 102 scoped_ptr<aura::Window> w1(CreateWindow(&delegate)); |
| 103 scoped_ptr<aura::Window> w2(CreateWindow(&delegate)); |
| 104 |
| 105 WindowManager::GetInstance()->ToggleOverview(); |
| 106 EXPECT_TRUE(w1->IsVisible()); |
| 107 EXPECT_TRUE(w2->IsVisible()); |
| 108 |
| 109 // Test that opening a new window exits overview mode. The new window could |
| 110 // have been opened by JavaScript or by the home card. |
| 111 scoped_ptr<aura::Window> w3(CreateWindow(&delegate)); |
| 112 |
| 113 ASSERT_FALSE(WindowManager::GetInstance()->IsOverviewModeActive()); |
| 114 EXPECT_TRUE(w3->IsVisible()); |
| 115 EXPECT_TRUE(wm::IsActiveWindow(w3.get())); |
| 116 EXPECT_FALSE(w1->IsVisible()); |
| 117 EXPECT_FALSE(w2->IsVisible()); |
| 118 } |
| 119 |
103 TEST_F(WindowManagerTest, BezelGestureToSplitViewMode) { | 120 TEST_F(WindowManagerTest, BezelGestureToSplitViewMode) { |
104 aura::test::TestWindowDelegate delegate; | 121 aura::test::TestWindowDelegate delegate; |
105 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); | 122 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); |
106 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); | 123 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); |
107 scoped_ptr<aura::Window> third(CreateWindow(&delegate)); | 124 scoped_ptr<aura::Window> third(CreateWindow(&delegate)); |
108 | 125 |
109 test::WindowManagerImplTestApi wm_api; | 126 test::WindowManagerImplTestApi wm_api; |
110 aura::client::ParentWindowWithContext( | |
111 first.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
112 aura::client::ParentWindowWithContext( | |
113 second.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
114 aura::client::ParentWindowWithContext( | |
115 third.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
116 | 127 |
117 // Test that going into split-view mode with two-finger gesture selects the | 128 // Test that going into split-view mode with two-finger gesture selects the |
118 // correct windows on left and right splits. | 129 // correct windows on left and right splits. |
119 ui::test::EventGenerator generator(root_window()); | 130 ui::test::EventGenerator generator(root_window()); |
120 const gfx::Point start_points[2] = { | 131 const gfx::Point start_points[2] = { |
121 gfx::Point(2, 10), gfx::Point(4, 20), | 132 gfx::Point(2, 10), gfx::Point(4, 20), |
122 }; | 133 }; |
123 const int kEventTimeSepration = 16; | 134 const int kEventTimeSepration = 16; |
124 int x_middle = root_window()->bounds().width() / 2; | 135 int x_middle = root_window()->bounds().width() / 2; |
125 generator.GestureMultiFingerScroll( | 136 generator.GestureMultiFingerScroll( |
126 2, start_points, kEventTimeSepration, 1, x_middle, 0); | 137 2, start_points, kEventTimeSepration, 1, x_middle, 0); |
127 ASSERT_TRUE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); | 138 ASSERT_TRUE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); |
128 EXPECT_EQ(second.get(), wm_api.GetSplitViewController()->left_window()); | 139 EXPECT_EQ(second.get(), wm_api.GetSplitViewController()->left_window()); |
129 EXPECT_EQ(third.get(), wm_api.GetSplitViewController()->right_window()); | 140 EXPECT_EQ(third.get(), wm_api.GetSplitViewController()->right_window()); |
130 EXPECT_EQ(second->bounds().size().ToString(), | 141 EXPECT_EQ(second->bounds().size().ToString(), |
131 third->bounds().size().ToString()); | 142 third->bounds().size().ToString()); |
132 } | 143 } |
133 | 144 |
134 TEST_F(WindowManagerTest, BezelGestureToSwitchBetweenWindows) { | 145 TEST_F(WindowManagerTest, BezelGestureToSwitchBetweenWindows) { |
135 aura::test::TestWindowDelegate delegate; | 146 aura::test::TestWindowDelegate delegate; |
136 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); | 147 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); |
137 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); | 148 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); |
138 scoped_ptr<aura::Window> third(CreateWindow(&delegate)); | 149 scoped_ptr<aura::Window> third(CreateWindow(&delegate)); |
139 first->Hide(); | 150 first->Hide(); |
140 second->Hide(); | 151 second->Hide(); |
141 | 152 |
142 test::WindowManagerImplTestApi wm_api; | 153 test::WindowManagerImplTestApi wm_api; |
143 aura::client::ParentWindowWithContext( | |
144 first.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
145 aura::client::ParentWindowWithContext( | |
146 second.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
147 aura::client::ParentWindowWithContext( | |
148 third.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
149 | 154 |
150 EXPECT_EQ(third.get(), | 155 EXPECT_EQ(third.get(), |
151 wm_api.GetWindowListProvider()->GetWindowList().back()); | 156 wm_api.GetWindowListProvider()->GetWindowList().back()); |
152 | 157 |
153 // Do a two-finger swipe from the left bezel. | 158 // Do a two-finger swipe from the left bezel. |
154 ui::test::EventGenerator generator(root_window()); | 159 ui::test::EventGenerator generator(root_window()); |
155 const gfx::Point left_bezel_points[2] = { | 160 const gfx::Point left_bezel_points[2] = { |
156 gfx::Point(2, 10), gfx::Point(4, 20), | 161 gfx::Point(2, 10), gfx::Point(4, 20), |
157 }; | 162 }; |
158 const int kEventTimeSepration = 16; | 163 const int kEventTimeSepration = 16; |
159 int width = root_window()->bounds().width(); | 164 int width = root_window()->bounds().width(); |
160 generator.GestureMultiFingerScroll( | 165 generator.GestureMultiFingerScroll( |
161 2, left_bezel_points, kEventTimeSepration, 1, width, 0); | 166 2, left_bezel_points, kEventTimeSepration, 1, width, 0); |
162 EXPECT_TRUE(wm::IsActiveWindow(second.get())); | 167 EXPECT_TRUE(wm::IsActiveWindow(second.get())); |
163 EXPECT_EQ(second.get(), | 168 EXPECT_EQ(second.get(), |
164 wm_api.GetWindowListProvider()->GetWindowList().back()); | 169 wm_api.GetWindowListProvider()->GetWindowList().back()); |
165 } | 170 } |
166 | 171 |
167 TEST_F(WindowManagerTest, TitleDragSwitchBetweenWindows) { | 172 TEST_F(WindowManagerTest, TitleDragSwitchBetweenWindows) { |
168 aura::test::TestWindowDelegate delegate; | 173 aura::test::TestWindowDelegate delegate; |
169 delegate.set_window_component(HTCAPTION); | 174 delegate.set_window_component(HTCAPTION); |
170 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); | 175 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); |
171 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); | 176 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); |
172 scoped_ptr<aura::Window> third(CreateWindow(&delegate)); | 177 scoped_ptr<aura::Window> third(CreateWindow(&delegate)); |
173 | 178 |
174 test::WindowManagerImplTestApi wm_api; | 179 test::WindowManagerImplTestApi wm_api; |
175 aura::client::ParentWindowWithContext( | |
176 first.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
177 aura::client::ParentWindowWithContext( | |
178 second.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
179 aura::client::ParentWindowWithContext( | |
180 third.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
181 | 180 |
182 EXPECT_EQ(third.get(), | 181 EXPECT_EQ(third.get(), |
183 wm_api.GetWindowListProvider()->GetWindowList().back()); | 182 wm_api.GetWindowListProvider()->GetWindowList().back()); |
184 | 183 |
185 // Do a title-swipe from the top to switch to the previous window. | 184 // Do a title-swipe from the top to switch to the previous window. |
186 ui::test::EventGenerator generator(root_window()); | 185 ui::test::EventGenerator generator(root_window()); |
187 generator.GestureScrollSequence(gfx::Point(20, 10), | 186 generator.GestureScrollSequence(gfx::Point(20, 10), |
188 gfx::Point(20, 400), | 187 gfx::Point(20, 400), |
189 base::TimeDelta::FromMilliseconds(20), | 188 base::TimeDelta::FromMilliseconds(20), |
190 5); | 189 5); |
(...skipping 28 matching lines...) Expand all Loading... |
219 | 218 |
220 TEST_F(WindowManagerTest, TitleDragSwitchBetweenWindowsInSplitViewMode) { | 219 TEST_F(WindowManagerTest, TitleDragSwitchBetweenWindowsInSplitViewMode) { |
221 aura::test::TestWindowDelegate delegate; | 220 aura::test::TestWindowDelegate delegate; |
222 delegate.set_window_component(HTCAPTION); | 221 delegate.set_window_component(HTCAPTION); |
223 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); | 222 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); |
224 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); | 223 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); |
225 scoped_ptr<aura::Window> third(CreateWindow(&delegate)); | 224 scoped_ptr<aura::Window> third(CreateWindow(&delegate)); |
226 scoped_ptr<aura::Window> fourth(CreateWindow(&delegate)); | 225 scoped_ptr<aura::Window> fourth(CreateWindow(&delegate)); |
227 | 226 |
228 test::WindowManagerImplTestApi wm_api; | 227 test::WindowManagerImplTestApi wm_api; |
229 aura::client::ParentWindowWithContext( | |
230 first.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
231 aura::client::ParentWindowWithContext( | |
232 second.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
233 aura::client::ParentWindowWithContext( | |
234 third.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
235 aura::client::ParentWindowWithContext( | |
236 fourth.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
237 | 228 |
238 // Test that going into split-view mode with two-finger gesture selects the | 229 // Test that going into split-view mode with two-finger gesture selects the |
239 // correct windows on left and right splits. | 230 // correct windows on left and right splits. |
240 ui::test::EventGenerator generator(root_window()); | 231 ui::test::EventGenerator generator(root_window()); |
241 const gfx::Point start_points[2] = { | 232 const gfx::Point start_points[2] = { |
242 gfx::Point(2, 10), gfx::Point(4, 20), | 233 gfx::Point(2, 10), gfx::Point(4, 20), |
243 }; | 234 }; |
244 const int kEventTimeSepration = 16; | 235 const int kEventTimeSepration = 16; |
245 int x_middle = root_window()->bounds().width() / 2; | 236 int x_middle = root_window()->bounds().width() / 2; |
246 generator.GestureMultiFingerScroll( | 237 generator.GestureMultiFingerScroll( |
(...skipping 26 matching lines...) Expand all Loading... |
273 ASSERT_EQ(4u, windows.size()); | 264 ASSERT_EQ(4u, windows.size()); |
274 EXPECT_EQ(second.get(), windows[3]); | 265 EXPECT_EQ(second.get(), windows[3]); |
275 EXPECT_EQ(third.get(), windows[2]); | 266 EXPECT_EQ(third.get(), windows[2]); |
276 } | 267 } |
277 | 268 |
278 TEST_F(WindowManagerTest, NewWindowBounds) { | 269 TEST_F(WindowManagerTest, NewWindowBounds) { |
279 aura::test::TestWindowDelegate delegate; | 270 aura::test::TestWindowDelegate delegate; |
280 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); | 271 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); |
281 | 272 |
282 test::WindowManagerImplTestApi wm_api; | 273 test::WindowManagerImplTestApi wm_api; |
283 aura::client::ParentWindowWithContext( | |
284 first.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
285 // The window should have the same size as the container. | 274 // The window should have the same size as the container. |
286 const gfx::Size work_area = | 275 const gfx::Size work_area = |
287 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().work_area().size(); | 276 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().work_area().size(); |
288 EXPECT_EQ(work_area.ToString(), | 277 EXPECT_EQ(work_area.ToString(), |
289 first->bounds().size().ToString()); | 278 first->bounds().size().ToString()); |
290 EXPECT_TRUE(first->bounds().origin().IsOrigin()); | 279 EXPECT_TRUE(first->bounds().origin().IsOrigin()); |
291 | 280 |
292 // A second window should have the same bounds as the first one. | 281 // A second window should have the same bounds as the first one. |
293 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); | 282 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); |
294 aura::client::ParentWindowWithContext( | |
295 second.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
296 EXPECT_EQ(first->bounds().ToString(), second->bounds().ToString()); | 283 EXPECT_EQ(first->bounds().ToString(), second->bounds().ToString()); |
297 | 284 |
298 // Get into split view. | 285 // Get into split view. |
299 wm_api.GetSplitViewController()->ActivateSplitMode(NULL, NULL); | 286 wm_api.GetSplitViewController()->ActivateSplitMode(NULL, NULL); |
300 const gfx::Rect left_bounds = | 287 const gfx::Rect left_bounds = |
301 wm_api.GetSplitViewController()->left_window()->bounds(); | 288 wm_api.GetSplitViewController()->left_window()->bounds(); |
302 EXPECT_NE(work_area.ToString(), | 289 EXPECT_NE(work_area.ToString(), |
303 left_bounds.size().ToString()); | 290 left_bounds.size().ToString()); |
304 | 291 |
305 // A new window should replace the left window when in split view. | 292 // A new window should replace the left window when in split view. |
306 scoped_ptr<aura::Window> third(CreateWindow(&delegate)); | 293 scoped_ptr<aura::Window> third(CreateWindow(&delegate)); |
307 aura::client::ParentWindowWithContext( | |
308 third.get(), ScreenManager::Get()->GetContext(), gfx::Rect()); | |
309 EXPECT_EQ(wm_api.GetSplitViewController()->left_window(), third.get()); | 294 EXPECT_EQ(wm_api.GetSplitViewController()->left_window(), third.get()); |
310 EXPECT_EQ(left_bounds.ToString(), third->bounds().ToString()); | 295 EXPECT_EQ(left_bounds.ToString(), third->bounds().ToString()); |
311 } | 296 } |
312 | 297 |
313 TEST_F(WindowManagerTest, SplitModeActivationByShortcut) { | 298 TEST_F(WindowManagerTest, SplitModeActivationByShortcut) { |
314 test::WindowManagerImplTestApi wm_api; | 299 test::WindowManagerImplTestApi wm_api; |
315 | 300 |
316 aura::test::TestWindowDelegate delegate; | 301 aura::test::TestWindowDelegate delegate; |
317 scoped_ptr<aura::Window> w1(CreateTestWindow(&delegate, gfx::Rect())); | 302 scoped_ptr<aura::Window> w1(CreateTestWindow(&delegate, gfx::Rect())); |
318 w1->Show(); | 303 w1->Show(); |
319 | 304 |
320 ui::test::EventGenerator generator(root_window()); | 305 ui::test::EventGenerator generator(root_window()); |
321 | 306 |
322 // Splitview mode needs at least two windows. | 307 // Splitview mode needs at least two windows. |
323 generator.PressKey(ui::VKEY_F6, ui::EF_CONTROL_DOWN); | 308 generator.PressKey(ui::VKEY_F6, ui::EF_CONTROL_DOWN); |
324 generator.ReleaseKey(ui::VKEY_F6, ui::EF_CONTROL_DOWN); | 309 generator.ReleaseKey(ui::VKEY_F6, ui::EF_CONTROL_DOWN); |
325 EXPECT_FALSE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); | 310 EXPECT_FALSE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); |
326 | 311 |
327 scoped_ptr<aura::Window> w2(CreateTestWindow(&delegate, gfx::Rect())); | 312 scoped_ptr<aura::Window> w2(CreateWindow(&delegate)); |
328 w2->Show(); | 313 w2->Show(); |
329 | 314 |
330 generator.PressKey(ui::VKEY_F6, ui::EF_CONTROL_DOWN); | 315 generator.PressKey(ui::VKEY_F6, ui::EF_CONTROL_DOWN); |
331 generator.ReleaseKey(ui::VKEY_F6, ui::EF_CONTROL_DOWN); | 316 generator.ReleaseKey(ui::VKEY_F6, ui::EF_CONTROL_DOWN); |
332 EXPECT_TRUE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); | 317 EXPECT_TRUE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); |
333 int width = | 318 int width = |
334 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().work_area().width(); | 319 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().work_area().width(); |
335 | 320 |
336 EXPECT_EQ(width / 2, w1->bounds().width()); | 321 EXPECT_EQ(width / 2, w1->bounds().width()); |
337 EXPECT_EQ(width / 2, w2->bounds().width()); | 322 EXPECT_EQ(width / 2, w2->bounds().width()); |
338 | 323 |
339 // Toggle back to normal mode. | 324 // Toggle back to normal mode. |
340 generator.PressKey(ui::VKEY_F6, ui::EF_CONTROL_DOWN); | 325 generator.PressKey(ui::VKEY_F6, ui::EF_CONTROL_DOWN); |
341 generator.ReleaseKey(ui::VKEY_F6, ui::EF_CONTROL_DOWN); | 326 generator.ReleaseKey(ui::VKEY_F6, ui::EF_CONTROL_DOWN); |
342 EXPECT_FALSE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); | 327 EXPECT_FALSE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); |
343 | 328 |
344 EXPECT_EQ(width, w1->bounds().width()); | 329 EXPECT_EQ(width, w1->bounds().width()); |
345 EXPECT_EQ(width, w2->bounds().width()); | 330 EXPECT_EQ(width, w2->bounds().width()); |
346 } | 331 } |
347 | 332 |
348 TEST_F(WindowManagerTest, OverviewModeFromSplitMode) { | 333 TEST_F(WindowManagerTest, OverviewModeFromSplitMode) { |
349 test::WindowManagerImplTestApi wm_api; | 334 test::WindowManagerImplTestApi wm_api; |
350 | 335 |
351 aura::test::TestWindowDelegate delegate; | 336 aura::test::TestWindowDelegate delegate; |
352 scoped_ptr<aura::Window> w1(CreateTestWindow(&delegate, gfx::Rect())); | 337 scoped_ptr<aura::Window> w1(CreateWindow(&delegate)); |
353 scoped_ptr<aura::Window> w2(CreateTestWindow(&delegate, gfx::Rect())); | 338 scoped_ptr<aura::Window> w2(CreateWindow(&delegate)); |
354 scoped_ptr<aura::Window> w3(CreateTestWindow(&delegate, gfx::Rect())); | 339 scoped_ptr<aura::Window> w3(CreateWindow(&delegate)); |
355 | 340 |
356 // Get into split-view mode, and then turn on overview mode. | 341 // Get into split-view mode, and then turn on overview mode. |
357 wm_api.GetSplitViewController()->ActivateSplitMode(NULL, NULL); | 342 wm_api.GetSplitViewController()->ActivateSplitMode(NULL, NULL); |
358 WindowManager::GetInstance()->ToggleOverview(); | 343 WindowManager::GetInstance()->ToggleOverview(); |
359 EXPECT_TRUE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); | 344 EXPECT_TRUE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); |
360 EXPECT_EQ(w3.get(), wm_api.GetSplitViewController()->left_window()); | 345 EXPECT_EQ(w3.get(), wm_api.GetSplitViewController()->left_window()); |
361 EXPECT_EQ(w2.get(), wm_api.GetSplitViewController()->right_window()); | 346 EXPECT_EQ(w2.get(), wm_api.GetSplitViewController()->right_window()); |
362 | 347 |
363 WindowOverviewModeDelegate* overview_delegate = wm_api.wm(); | 348 WindowOverviewModeDelegate* overview_delegate = wm_api.wm(); |
364 overview_delegate->OnSelectWindow(w1.get()); | 349 overview_delegate->OnSelectWindow(w1.get()); |
365 EXPECT_FALSE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); | 350 EXPECT_FALSE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); |
366 EXPECT_TRUE(w1->IsVisible()); | 351 EXPECT_TRUE(w1->IsVisible()); |
367 // Make sure the windows that were in split-view mode are hidden. | 352 // Make sure the windows that were in split-view mode are hidden. |
368 EXPECT_FALSE(w2->IsVisible()); | 353 EXPECT_FALSE(w2->IsVisible()); |
369 EXPECT_FALSE(w3->IsVisible()); | 354 EXPECT_FALSE(w3->IsVisible()); |
370 } | 355 } |
371 | 356 |
372 } // namespace athena | 357 } // namespace athena |
OLD | NEW |