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

Side by Side Diff: ash/wm/window_cycle_controller_unittest.cc

Issue 2249583002: Revert "Enable ash window cycle UI by default." (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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/common/wm/window_cycle_list.cc ('k') | ash/wm/window_mirror_view.cc » ('j') | 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 "ash/common/wm/window_cycle_controller.h" 5 #include "ash/common/wm/window_cycle_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 9
10 #include "ash/aura/wm_window_aura.h" 10 #include "ash/aura/wm_window_aura.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 71
72 class WindowCycleControllerTest : public test::AshTestBase { 72 class WindowCycleControllerTest : public test::AshTestBase {
73 public: 73 public:
74 WindowCycleControllerTest() {} 74 WindowCycleControllerTest() {}
75 ~WindowCycleControllerTest() override {} 75 ~WindowCycleControllerTest() override {}
76 76
77 void SetUp() override { 77 void SetUp() override {
78 test::AshTestBase::SetUp(); 78 test::AshTestBase::SetUp();
79 ASSERT_TRUE(test::TestShelfDelegate::instance()); 79 ASSERT_TRUE(test::TestShelfDelegate::instance());
80 80
81 WindowCycleList::DisableInitialDelayForTesting();
82
83 shelf_view_test_.reset(new test::ShelfViewTestAPI( 81 shelf_view_test_.reset(new test::ShelfViewTestAPI(
84 test::ShelfTestAPI(Shelf::ForPrimaryDisplay()).shelf_view())); 82 test::ShelfTestAPI(Shelf::ForPrimaryDisplay()).shelf_view()));
85 shelf_view_test_->SetAnimationDuration(1); 83 shelf_view_test_->SetAnimationDuration(1);
86 } 84 }
87 85
88 aura::Window* CreatePanelWindow() { 86 aura::Window* CreatePanelWindow() {
89 gfx::Rect rect(100, 100); 87 gfx::Rect rect(100, 100);
90 aura::Window* window = CreateTestWindowInShellWithDelegateAndType( 88 aura::Window* window = CreateTestWindowInShellWithDelegateAndType(
91 NULL, ui::wm::WINDOW_TYPE_PANEL, 0, rect); 89 NULL, ui::wm::WINDOW_TYPE_PANEL, 0, rect);
92 test::TestShelfDelegate::instance()->AddShelfItem(window); 90 test::TestShelfDelegate::instance()->AddShelfItem(window);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 // Pressing and releasing Alt-tab again should cycle back to the most- 166 // Pressing and releasing Alt-tab again should cycle back to the most-
169 // recently-used window in the current child order. 167 // recently-used window in the current child order.
170 controller->HandleCycleWindow(WindowCycleController::FORWARD); 168 controller->HandleCycleWindow(WindowCycleController::FORWARD);
171 controller->StopCycling(); 169 controller->StopCycling();
172 EXPECT_TRUE(wm::IsActiveWindow(window0.get())); 170 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
173 171
174 // Pressing Alt-tab multiple times without releasing Alt should cycle through 172 // Pressing Alt-tab multiple times without releasing Alt should cycle through
175 // all the windows and wrap around. 173 // all the windows and wrap around.
176 controller->HandleCycleWindow(WindowCycleController::FORWARD); 174 controller->HandleCycleWindow(WindowCycleController::FORWARD);
177 EXPECT_TRUE(controller->IsCycling()); 175 EXPECT_TRUE(controller->IsCycling());
176 EXPECT_TRUE(wm::IsActiveWindow(window1.get()));
178 177
179 controller->HandleCycleWindow(WindowCycleController::FORWARD); 178 controller->HandleCycleWindow(WindowCycleController::FORWARD);
180 EXPECT_TRUE(controller->IsCycling()); 179 EXPECT_TRUE(controller->IsCycling());
180 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
181 181
182 controller->HandleCycleWindow(WindowCycleController::FORWARD); 182 controller->HandleCycleWindow(WindowCycleController::FORWARD);
183 EXPECT_TRUE(controller->IsCycling()); 183 EXPECT_TRUE(controller->IsCycling());
184 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
184 185
185 controller->StopCycling(); 186 controller->StopCycling();
186 EXPECT_FALSE(controller->IsCycling()); 187 EXPECT_FALSE(controller->IsCycling());
187 EXPECT_TRUE(wm::IsActiveWindow(window0.get())); 188 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
188 189
189 // Reset our stacking order. 190 // Reset our stacking order.
190 wm::ActivateWindow(window2.get()); 191 wm::ActivateWindow(window2.get());
191 wm::ActivateWindow(window1.get()); 192 wm::ActivateWindow(window1.get());
192 wm::ActivateWindow(window0.get()); 193 wm::ActivateWindow(window0.get());
193 194
194 // Likewise we can cycle backwards through the windows. 195 // Likewise we can cycle backwards through all the windows.
195 controller->HandleCycleWindow(WindowCycleController::BACKWARD); 196 controller->HandleCycleWindow(WindowCycleController::BACKWARD);
197 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
196 controller->HandleCycleWindow(WindowCycleController::BACKWARD); 198 controller->HandleCycleWindow(WindowCycleController::BACKWARD);
199 EXPECT_TRUE(wm::IsActiveWindow(window1.get()));
200 controller->HandleCycleWindow(WindowCycleController::BACKWARD);
201 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
197 controller->StopCycling(); 202 controller->StopCycling();
198 EXPECT_TRUE(wm::IsActiveWindow(window1.get())); 203 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
199
200 // Reset our stacking order.
201 wm::ActivateWindow(window2.get());
202 wm::ActivateWindow(window1.get());
203 wm::ActivateWindow(window0.get());
204 204
205 // When the screen is locked, cycling window does not take effect. 205 // When the screen is locked, cycling window does not take effect.
206 WmShell::Get()->GetSessionStateDelegate()->LockScreen(); 206 WmShell::Get()->GetSessionStateDelegate()->LockScreen();
207 EXPECT_TRUE(wm::IsActiveWindow(window0.get())); 207 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
208 controller->HandleCycleWindow(WindowCycleController::FORWARD); 208 controller->HandleCycleWindow(WindowCycleController::FORWARD);
209 EXPECT_FALSE(controller->IsCycling()); 209 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
210 controller->HandleCycleWindow(WindowCycleController::BACKWARD);
211 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
210 212
211 // Unlock, it works again.
212 WmShell::Get()->GetSessionStateDelegate()->UnlockScreen(); 213 WmShell::Get()->GetSessionStateDelegate()->UnlockScreen();
213 EXPECT_TRUE(wm::IsActiveWindow(window0.get())); 214 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
214 controller->HandleCycleWindow(WindowCycleController::FORWARD); 215 controller->HandleCycleWindow(WindowCycleController::FORWARD);
216 EXPECT_TRUE(wm::IsActiveWindow(window1.get()));
215 controller->HandleCycleWindow(WindowCycleController::FORWARD); 217 controller->HandleCycleWindow(WindowCycleController::FORWARD);
216 controller->StopCycling();
217 EXPECT_TRUE(wm::IsActiveWindow(window2.get())); 218 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
218 219
219 // When a modal window is active, cycling window does not take effect. 220 // When a modal window is active, cycling window does not take effect.
220 aura::Window* modal_container = Shell::GetContainer( 221 aura::Window* modal_container = Shell::GetContainer(
221 Shell::GetPrimaryRootWindow(), kShellWindowId_SystemModalContainer); 222 Shell::GetPrimaryRootWindow(), kShellWindowId_SystemModalContainer);
222 std::unique_ptr<Window> modal_window( 223 std::unique_ptr<Window> modal_window(
223 CreateTestWindowWithId(-2, modal_container)); 224 CreateTestWindowWithId(-2, modal_container));
224 modal_window->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_SYSTEM); 225 modal_window->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_SYSTEM);
225 wm::ActivateWindow(modal_window.get()); 226 wm::ActivateWindow(modal_window.get());
226 EXPECT_TRUE(wm::IsActiveWindow(modal_window.get())); 227 EXPECT_TRUE(wm::IsActiveWindow(modal_window.get()));
227 controller->HandleCycleWindow(WindowCycleController::FORWARD); 228 controller->HandleCycleWindow(WindowCycleController::FORWARD);
228 EXPECT_TRUE(wm::IsActiveWindow(modal_window.get())); 229 EXPECT_TRUE(wm::IsActiveWindow(modal_window.get()));
229 EXPECT_FALSE(controller->IsCycling());
230 EXPECT_FALSE(wm::IsActiveWindow(window0.get())); 230 EXPECT_FALSE(wm::IsActiveWindow(window0.get()));
231 EXPECT_FALSE(wm::IsActiveWindow(window1.get())); 231 EXPECT_FALSE(wm::IsActiveWindow(window1.get()));
232 EXPECT_FALSE(wm::IsActiveWindow(window2.get())); 232 EXPECT_FALSE(wm::IsActiveWindow(window2.get()));
233 controller->HandleCycleWindow(WindowCycleController::BACKWARD); 233 controller->HandleCycleWindow(WindowCycleController::BACKWARD);
234 EXPECT_TRUE(wm::IsActiveWindow(modal_window.get())); 234 EXPECT_TRUE(wm::IsActiveWindow(modal_window.get()));
235 EXPECT_FALSE(controller->IsCycling());
236 EXPECT_FALSE(wm::IsActiveWindow(window0.get())); 235 EXPECT_FALSE(wm::IsActiveWindow(window0.get()));
237 EXPECT_FALSE(wm::IsActiveWindow(window1.get())); 236 EXPECT_FALSE(wm::IsActiveWindow(window1.get()));
238 EXPECT_FALSE(wm::IsActiveWindow(window2.get())); 237 EXPECT_FALSE(wm::IsActiveWindow(window2.get()));
239 } 238 }
240 239
241 // Cycles between a maximized and normal window. 240 // Cycles between a maximized and normal window.
242 TEST_F(WindowCycleControllerTest, MaximizedWindow) { 241 TEST_F(WindowCycleControllerTest, MaximizedWindow) {
243 // Create a couple of test windows. 242 // Create a couple of test windows.
244 std::unique_ptr<Window> window0(CreateTestWindowInShellWithId(0)); 243 std::unique_ptr<Window> window0(CreateTestWindowInShellWithId(0));
245 std::unique_ptr<Window> window1(CreateTestWindowInShellWithId(1)); 244 std::unique_ptr<Window> window1(CreateTestWindowInShellWithId(1));
246 wm::WindowState* window1_state = wm::GetWindowState(window1.get()); 245 wm::WindowState* window1_state = wm::GetWindowState(window1.get());
247 window1_state->Maximize(); 246 window1_state->Maximize();
248 window1_state->Activate(); 247 window1_state->Activate();
249 EXPECT_TRUE(window1_state->IsActive()); 248 EXPECT_TRUE(window1_state->IsActive());
250 249
251 // Rotate focus, this should move focus to window0. 250 // Rotate focus, this should move focus to window0.
252 WindowCycleController* controller = WmShell::Get()->window_cycle_controller(); 251 WindowCycleController* controller = WmShell::Get()->window_cycle_controller();
253 controller->HandleCycleWindow(WindowCycleController::FORWARD); 252 controller->HandleCycleWindow(WindowCycleController::FORWARD);
254 controller->StopCycling();
255 EXPECT_TRUE(wm::GetWindowState(window0.get())->IsActive()); 253 EXPECT_TRUE(wm::GetWindowState(window0.get())->IsActive());
256 EXPECT_FALSE(window1_state->IsActive());
257 254
258 // One more time. 255 // One more time.
259 controller->HandleCycleWindow(WindowCycleController::FORWARD); 256 controller->HandleCycleWindow(WindowCycleController::FORWARD);
260 controller->StopCycling();
261 EXPECT_TRUE(window1_state->IsActive()); 257 EXPECT_TRUE(window1_state->IsActive());
262 } 258 }
263 259
264 // Cycles to a minimized window. 260 // Cycles to a minimized window.
265 TEST_F(WindowCycleControllerTest, Minimized) { 261 TEST_F(WindowCycleControllerTest, Minimized) {
266 // Create a couple of test windows. 262 // Create a couple of test windows.
267 std::unique_ptr<Window> window0(CreateTestWindowInShellWithId(0)); 263 std::unique_ptr<Window> window0(CreateTestWindowInShellWithId(0));
268 std::unique_ptr<Window> window1(CreateTestWindowInShellWithId(1)); 264 std::unique_ptr<Window> window1(CreateTestWindowInShellWithId(1));
269 wm::WindowState* window0_state = wm::GetWindowState(window0.get()); 265 wm::WindowState* window0_state = wm::GetWindowState(window0.get());
270 wm::WindowState* window1_state = wm::GetWindowState(window1.get()); 266 wm::WindowState* window1_state = wm::GetWindowState(window1.get());
271 267
272 window1_state->Minimize(); 268 window1_state->Minimize();
273 window0_state->Activate(); 269 window0_state->Activate();
274 EXPECT_TRUE(window0_state->IsActive()); 270 EXPECT_TRUE(window0_state->IsActive());
275 271
276 // Rotate focus, this should move focus to window1 and unminimize it. 272 // Rotate focus, this should move focus to window1 and unminimize it.
277 WindowCycleController* controller = WmShell::Get()->window_cycle_controller(); 273 WindowCycleController* controller = WmShell::Get()->window_cycle_controller();
278 controller->HandleCycleWindow(WindowCycleController::FORWARD); 274 controller->HandleCycleWindow(WindowCycleController::FORWARD);
279 controller->StopCycling();
280 EXPECT_FALSE(window0_state->IsActive());
281 EXPECT_FALSE(window1_state->IsMinimized()); 275 EXPECT_FALSE(window1_state->IsMinimized());
282 EXPECT_TRUE(window1_state->IsActive()); 276 EXPECT_TRUE(window1_state->IsActive());
283 277
284 // One more time back to w0. 278 // One more time back to w0.
285 controller->HandleCycleWindow(WindowCycleController::FORWARD); 279 controller->HandleCycleWindow(WindowCycleController::FORWARD);
286 controller->StopCycling();
287 EXPECT_TRUE(window0_state->IsActive()); 280 EXPECT_TRUE(window0_state->IsActive());
288 } 281 }
289 282
290 TEST_F(WindowCycleControllerTest, AlwaysOnTopWindow) { 283 TEST_F(WindowCycleControllerTest, AlwaysOnTopWindow) {
291 WindowCycleController* controller = WmShell::Get()->window_cycle_controller(); 284 WindowCycleController* controller = WmShell::Get()->window_cycle_controller();
292 285
293 // Set up several windows to use to test cycling. 286 // Set up several windows to use to test cycling.
294 std::unique_ptr<Window> window0(CreateTestWindowInShellWithId(0)); 287 std::unique_ptr<Window> window0(CreateTestWindowInShellWithId(0));
295 std::unique_ptr<Window> window1(CreateTestWindowInShellWithId(1)); 288 std::unique_ptr<Window> window1(CreateTestWindowInShellWithId(1));
296 289
297 Window* top_container = Shell::GetContainer( 290 Window* top_container = Shell::GetContainer(
298 Shell::GetPrimaryRootWindow(), kShellWindowId_AlwaysOnTopContainer); 291 Shell::GetPrimaryRootWindow(), kShellWindowId_AlwaysOnTopContainer);
299 std::unique_ptr<Window> window2(CreateTestWindowWithId(2, top_container)); 292 std::unique_ptr<Window> window2(CreateTestWindowWithId(2, top_container));
300 wm::ActivateWindow(window0.get()); 293 wm::ActivateWindow(window0.get());
301 294
302 // Simulate pressing and releasing Alt-tab. 295 // Simulate pressing and releasing Alt-tab.
303 EXPECT_TRUE(wm::IsActiveWindow(window0.get())); 296 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
304 controller->HandleCycleWindow(WindowCycleController::FORWARD); 297 controller->HandleCycleWindow(WindowCycleController::FORWARD);
305 298
306 // Window lists should return the topmost window in front. 299 // Window lists should return the topmost window in front.
307 ASSERT_TRUE(controller->window_cycle_list()); 300 ASSERT_TRUE(controller->window_cycle_list());
308 ASSERT_EQ(3u, GetWindows(controller).size()); 301 ASSERT_EQ(3u, GetWindows(controller).size());
309 EXPECT_EQ(window0.get(), GetWindows(controller)[0]); 302 EXPECT_EQ(window0.get(), GetWindows(controller)[0]);
310 EXPECT_EQ(window2.get(), GetWindows(controller)[1]); 303 EXPECT_EQ(window2.get(), GetWindows(controller)[1]);
311 EXPECT_EQ(window1.get(), GetWindows(controller)[2]); 304 EXPECT_EQ(window1.get(), GetWindows(controller)[2]);
305
306 controller->StopCycling();
307 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
308
309 controller->HandleCycleWindow(WindowCycleController::FORWARD);
310 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
311
312 controller->StopCycling();
313
314 controller->HandleCycleWindow(WindowCycleController::FORWARD);
315 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
316
317 controller->HandleCycleWindow(WindowCycleController::FORWARD);
318 EXPECT_TRUE(wm::IsActiveWindow(window1.get()));
319
320 controller->HandleCycleWindow(WindowCycleController::FORWARD);
321 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
312 } 322 }
313 323
314 TEST_F(WindowCycleControllerTest, AlwaysOnTopMultiWindow) { 324 TEST_F(WindowCycleControllerTest, AlwaysOnTopMultiWindow) {
315 WindowCycleController* controller = WmShell::Get()->window_cycle_controller(); 325 WindowCycleController* controller = WmShell::Get()->window_cycle_controller();
316 326
317 // Set up several windows to use to test cycling. 327 // Set up several windows to use to test cycling.
318 std::unique_ptr<Window> window0(CreateTestWindowInShellWithId(0)); 328 std::unique_ptr<Window> window0(CreateTestWindowInShellWithId(0));
319 std::unique_ptr<Window> window1(CreateTestWindowInShellWithId(1)); 329 std::unique_ptr<Window> window1(CreateTestWindowInShellWithId(1));
320 330
321 Window* top_container = Shell::GetContainer( 331 Window* top_container = Shell::GetContainer(
322 Shell::GetPrimaryRootWindow(), kShellWindowId_AlwaysOnTopContainer); 332 Shell::GetPrimaryRootWindow(), kShellWindowId_AlwaysOnTopContainer);
323 std::unique_ptr<Window> window2(CreateTestWindowWithId(2, top_container)); 333 std::unique_ptr<Window> window2(CreateTestWindowWithId(2, top_container));
324 std::unique_ptr<Window> window3(CreateTestWindowWithId(3, top_container)); 334 std::unique_ptr<Window> window3(CreateTestWindowWithId(3, top_container));
325 wm::ActivateWindow(window0.get()); 335 wm::ActivateWindow(window0.get());
326 336
327 // Simulate pressing and releasing Alt-tab. 337 // Simulate pressing and releasing Alt-tab.
328 EXPECT_TRUE(wm::IsActiveWindow(window0.get())); 338 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
329 controller->HandleCycleWindow(WindowCycleController::FORWARD); 339 controller->HandleCycleWindow(WindowCycleController::FORWARD);
330 340
331 // Window lists should return the topmost window in front. 341 // Window lists should return the topmost window in front.
332 ASSERT_TRUE(controller->window_cycle_list()); 342 ASSERT_TRUE(controller->window_cycle_list());
333 ASSERT_EQ(4u, GetWindows(controller).size()); 343 ASSERT_EQ(4u, GetWindows(controller).size());
334 EXPECT_EQ(window0.get(), GetWindows(controller)[0]); 344 EXPECT_EQ(window0.get(), GetWindows(controller)[0]);
335 EXPECT_EQ(window3.get(), GetWindows(controller)[1]); 345 EXPECT_EQ(window3.get(), GetWindows(controller)[1]);
336 EXPECT_EQ(window2.get(), GetWindows(controller)[2]); 346 EXPECT_EQ(window2.get(), GetWindows(controller)[2]);
337 EXPECT_EQ(window1.get(), GetWindows(controller)[3]); 347 EXPECT_EQ(window1.get(), GetWindows(controller)[3]);
348
349 controller->StopCycling();
350 EXPECT_TRUE(wm::IsActiveWindow(window3.get()));
351
352 controller->HandleCycleWindow(WindowCycleController::FORWARD);
353 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
354
355 controller->StopCycling();
356
357 controller->HandleCycleWindow(WindowCycleController::FORWARD);
358 EXPECT_TRUE(wm::IsActiveWindow(window3.get()));
359
360 controller->HandleCycleWindow(WindowCycleController::FORWARD);
361 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
362
363 controller->HandleCycleWindow(WindowCycleController::FORWARD);
364 EXPECT_TRUE(wm::IsActiveWindow(window1.get()));
365
366 controller->HandleCycleWindow(WindowCycleController::FORWARD);
367 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
338 } 368 }
339 369
340 TEST_F(WindowCycleControllerTest, AlwaysOnTopMultipleRootWindows) { 370 TEST_F(WindowCycleControllerTest, AlwaysOnTopMultipleRootWindows) {
341 if (!SupportsMultipleDisplays()) 371 if (!SupportsMultipleDisplays())
342 return; 372 return;
343 373
344 // Set up a second root window 374 // Set up a second root window
345 UpdateDisplay("1000x600,600x400"); 375 UpdateDisplay("1000x600,600x400");
346 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); 376 aura::Window::Windows root_windows = Shell::GetAllRootWindows();
347 ASSERT_EQ(2U, root_windows.size()); 377 ASSERT_EQ(2U, root_windows.size());
(...skipping 30 matching lines...) Expand all
378 EXPECT_TRUE(wm::IsActiveWindow(window2.get())); 408 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
379 controller->HandleCycleWindow(WindowCycleController::FORWARD); 409 controller->HandleCycleWindow(WindowCycleController::FORWARD);
380 410
381 // Window lists should return the topmost window in front. 411 // Window lists should return the topmost window in front.
382 ASSERT_TRUE(controller->window_cycle_list()); 412 ASSERT_TRUE(controller->window_cycle_list());
383 ASSERT_EQ(4u, GetWindows(controller).size()); 413 ASSERT_EQ(4u, GetWindows(controller).size());
384 EXPECT_EQ(window2.get(), GetWindows(controller)[0]); 414 EXPECT_EQ(window2.get(), GetWindows(controller)[0]);
385 EXPECT_EQ(window3.get(), GetWindows(controller)[1]); 415 EXPECT_EQ(window3.get(), GetWindows(controller)[1]);
386 EXPECT_EQ(window1.get(), GetWindows(controller)[2]); 416 EXPECT_EQ(window1.get(), GetWindows(controller)[2]);
387 EXPECT_EQ(window0.get(), GetWindows(controller)[3]); 417 EXPECT_EQ(window0.get(), GetWindows(controller)[3]);
418
419 controller->StopCycling();
420 EXPECT_TRUE(wm::IsActiveWindow(window3.get()));
421
422 controller->HandleCycleWindow(WindowCycleController::FORWARD);
423 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
424
425 controller->StopCycling();
426
427 controller->HandleCycleWindow(WindowCycleController::FORWARD);
428 EXPECT_TRUE(wm::IsActiveWindow(window3.get()));
429
430 controller->HandleCycleWindow(WindowCycleController::FORWARD);
431 EXPECT_TRUE(wm::IsActiveWindow(window1.get()));
432
433 controller->HandleCycleWindow(WindowCycleController::FORWARD);
434 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
435
436 controller->HandleCycleWindow(WindowCycleController::FORWARD);
437 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
388 } 438 }
389 439
390 TEST_F(WindowCycleControllerTest, MostRecentlyUsed) { 440 TEST_F(WindowCycleControllerTest, MostRecentlyUsed) {
391 WindowCycleController* controller = WmShell::Get()->window_cycle_controller(); 441 WindowCycleController* controller = WmShell::Get()->window_cycle_controller();
392 442
393 // Set up several windows to use to test cycling. 443 // Set up several windows to use to test cycling.
394 std::unique_ptr<Window> window0(CreateTestWindowInShellWithId(0)); 444 std::unique_ptr<Window> window0(CreateTestWindowInShellWithId(0));
395 std::unique_ptr<Window> window1(CreateTestWindowInShellWithId(1)); 445 std::unique_ptr<Window> window1(CreateTestWindowInShellWithId(1));
396 std::unique_ptr<Window> window2(CreateTestWindowInShellWithId(2)); 446 std::unique_ptr<Window> window2(CreateTestWindowInShellWithId(2));
397 447
398 wm::ActivateWindow(window0.get()); 448 wm::ActivateWindow(window0.get());
399 449
400 // Simulate pressing and releasing Alt-tab. 450 // Simulate pressing and releasing Alt-tab.
401 EXPECT_TRUE(wm::IsActiveWindow(window0.get())); 451 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
402 controller->HandleCycleWindow(WindowCycleController::FORWARD); 452 controller->HandleCycleWindow(WindowCycleController::FORWARD);
403 453
404 // Window lists should return the topmost window in front. 454 // Window lists should return the topmost window in front.
405 ASSERT_TRUE(controller->window_cycle_list()); 455 ASSERT_TRUE(controller->window_cycle_list());
406 ASSERT_EQ(3u, GetWindows(controller).size()); 456 ASSERT_EQ(3u, GetWindows(controller).size());
407 EXPECT_EQ(window0.get(), GetWindows(controller)[0]); 457 EXPECT_EQ(window0.get(), GetWindows(controller)[0]);
408 EXPECT_EQ(window2.get(), GetWindows(controller)[1]); 458 EXPECT_EQ(window2.get(), GetWindows(controller)[1]);
409 EXPECT_EQ(window1.get(), GetWindows(controller)[2]); 459 EXPECT_EQ(window1.get(), GetWindows(controller)[2]);
410 460
411 // Cycling through then stopping the cycling will activate a window.
412 controller->HandleCycleWindow(WindowCycleController::FORWARD); 461 controller->HandleCycleWindow(WindowCycleController::FORWARD);
413 controller->StopCycling(); 462 controller->StopCycling();
414 EXPECT_TRUE(wm::IsActiveWindow(window1.get())); 463 EXPECT_TRUE(wm::IsActiveWindow(window1.get()));
415 464
416 // Cycling alone (without StopCycling()) doesn't activate.
417 controller->HandleCycleWindow(WindowCycleController::FORWARD); 465 controller->HandleCycleWindow(WindowCycleController::FORWARD);
418 EXPECT_FALSE(wm::IsActiveWindow(window0.get())); 466 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
419
420 // Showing the Alt+Tab UI does however deactivate the erstwhile active window.
421 EXPECT_FALSE(wm::IsActiveWindow(window1.get()));
422 467
423 controller->StopCycling(); 468 controller->StopCycling();
469
470 controller->HandleCycleWindow(WindowCycleController::FORWARD);
471 EXPECT_TRUE(wm::IsActiveWindow(window1.get()));
472
473 controller->HandleCycleWindow(WindowCycleController::FORWARD);
474 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
475
476 controller->HandleCycleWindow(WindowCycleController::FORWARD);
477 EXPECT_TRUE(wm::IsActiveWindow(window0.get()));
424 } 478 }
425 479
426 // Tests that beginning window selection hides the app list. 480 // Tests that beginning window selection hides the app list.
427 TEST_F(WindowCycleControllerTest, SelectingHidesAppList) { 481 TEST_F(WindowCycleControllerTest, SelectingHidesAppList) {
428 WindowCycleController* controller = WmShell::Get()->window_cycle_controller(); 482 WindowCycleController* controller = WmShell::Get()->window_cycle_controller();
429 483
430 std::unique_ptr<aura::Window> window0(CreateTestWindowInShellWithId(0)); 484 std::unique_ptr<aura::Window> window0(CreateTestWindowInShellWithId(0));
431 std::unique_ptr<aura::Window> window1(CreateTestWindowInShellWithId(1)); 485 std::unique_ptr<aura::Window> window1(CreateTestWindowInShellWithId(1));
432 WmShell::Get()->ShowAppList(); 486 WmShell::Get()->ShowAppList();
433 EXPECT_TRUE(WmShell::Get()->GetAppListTargetVisibility()); 487 EXPECT_TRUE(WmShell::Get()->GetAppListTargetVisibility());
434 controller->HandleCycleWindow(WindowCycleController::FORWARD); 488 controller->HandleCycleWindow(WindowCycleController::FORWARD);
435 EXPECT_FALSE(WmShell::Get()->GetAppListTargetVisibility()); 489 EXPECT_FALSE(WmShell::Get()->GetAppListTargetVisibility());
436
437 // Make sure that dismissing the app list this way doesn't pass activation
438 // to a different window.
439 EXPECT_FALSE(wm::IsActiveWindow(window0.get()));
440 EXPECT_FALSE(wm::IsActiveWindow(window1.get()));
441 } 490 }
442 491
443 // Tests that cycling through windows doesn't change their minimized state. 492 // Tests that cycling through windows shows and minimizes windows as they
493 // are passed.
444 TEST_F(WindowCycleControllerTest, CyclePreservesMinimization) { 494 TEST_F(WindowCycleControllerTest, CyclePreservesMinimization) {
445 WindowCycleController* controller = WmShell::Get()->window_cycle_controller(); 495 WindowCycleController* controller = WmShell::Get()->window_cycle_controller();
446 496
447 std::unique_ptr<aura::Window> window0(CreateTestWindowInShellWithId(0)); 497 std::unique_ptr<aura::Window> window0(CreateTestWindowInShellWithId(0));
448 std::unique_ptr<aura::Window> window1(CreateTestWindowInShellWithId(1)); 498 std::unique_ptr<aura::Window> window1(CreateTestWindowInShellWithId(1));
449 wm::ActivateWindow(window1.get()); 499 wm::ActivateWindow(window1.get());
450 wm::GetWindowState(window1.get())->Minimize(); 500 wm::GetWindowState(window1.get())->Minimize();
451 wm::ActivateWindow(window0.get()); 501 wm::ActivateWindow(window0.get());
452 EXPECT_TRUE(IsWindowMinimized(window1.get())); 502 EXPECT_TRUE(IsWindowMinimized(window1.get()));
453 503
454 // On window 2. 504 // On window 2.
455 controller->HandleCycleWindow(WindowCycleController::FORWARD); 505 controller->HandleCycleWindow(WindowCycleController::FORWARD);
456 EXPECT_TRUE(IsWindowMinimized(window1.get())); 506 EXPECT_FALSE(IsWindowMinimized(window1.get()));
457 507
458 // Back on window 1. 508 // Back on window 1.
459 controller->HandleCycleWindow(WindowCycleController::FORWARD); 509 controller->HandleCycleWindow(WindowCycleController::FORWARD);
460 EXPECT_TRUE(IsWindowMinimized(window1.get())); 510 EXPECT_TRUE(IsWindowMinimized(window1.get()));
461 511
462 controller->StopCycling(); 512 controller->StopCycling();
463 513
464 EXPECT_TRUE(IsWindowMinimized(window1.get())); 514 EXPECT_TRUE(IsWindowMinimized(window1.get()));
465 } 515 }
466 516
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 generator.PressKey(ui::VKEY_TAB, ui::EF_ALT_DOWN); 609 generator.PressKey(ui::VKEY_TAB, ui::EF_ALT_DOWN);
560 EXPECT_EQ(0u, key_count.GetCountAndReset()); 610 EXPECT_EQ(0u, key_count.GetCountAndReset());
561 generator.ReleaseKey(ui::VKEY_TAB, ui::EF_ALT_DOWN); 611 generator.ReleaseKey(ui::VKEY_TAB, ui::EF_ALT_DOWN);
562 EXPECT_EQ(0u, key_count.GetCountAndReset()); 612 EXPECT_EQ(0u, key_count.GetCountAndReset());
563 generator.ReleaseKey(ui::VKEY_MENU, ui::EF_NONE); 613 generator.ReleaseKey(ui::VKEY_MENU, ui::EF_NONE);
564 EXPECT_TRUE(wm::GetWindowState(w1.get())->IsActive()); 614 EXPECT_TRUE(wm::GetWindowState(w1.get())->IsActive());
565 EXPECT_EQ(0u, key_count.GetCountAndReset()); 615 EXPECT_EQ(0u, key_count.GetCountAndReset());
566 } 616 }
567 617
568 } // namespace ash 618 } // namespace ash
OLDNEW
« no previous file with comments | « ash/common/wm/window_cycle_list.cc ('k') | ash/wm/window_mirror_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698