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

Side by Side Diff: ash/wm/overview/window_selector_unittest.cc

Issue 588193003: Defer maximize mode bounds updates until after exiting overview. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 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 <algorithm> 5 #include <algorithm>
6 6
7 #include "ash/accessibility_delegate.h" 7 #include "ash/accessibility_delegate.h"
8 #include "ash/drag_drop/drag_drop_controller.h" 8 #include "ash/drag_drop/drag_drop_controller.h"
9 #include "ash/root_window_controller.h" 9 #include "ash/root_window_controller.h"
10 #include "ash/screen_util.h" 10 #include "ash/screen_util.h"
11 #include "ash/shelf/shelf.h" 11 #include "ash/shelf/shelf.h"
12 #include "ash/shelf/shelf_widget.h" 12 #include "ash/shelf/shelf_widget.h"
13 #include "ash/shell.h" 13 #include "ash/shell.h"
14 #include "ash/shell_window_ids.h" 14 #include "ash/shell_window_ids.h"
15 #include "ash/test/ash_test_base.h" 15 #include "ash/test/ash_test_base.h"
16 #include "ash/test/shelf_test_api.h" 16 #include "ash/test/shelf_test_api.h"
17 #include "ash/test/shelf_view_test_api.h" 17 #include "ash/test/shelf_view_test_api.h"
18 #include "ash/test/shell_test_api.h" 18 #include "ash/test/shell_test_api.h"
19 #include "ash/test/test_shelf_delegate.h" 19 #include "ash/test/test_shelf_delegate.h"
20 #include "ash/wm/maximize_mode/maximize_mode_controller.h"
20 #include "ash/wm/mru_window_tracker.h" 21 #include "ash/wm/mru_window_tracker.h"
21 #include "ash/wm/overview/window_grid.h" 22 #include "ash/wm/overview/window_grid.h"
22 #include "ash/wm/overview/window_selector.h" 23 #include "ash/wm/overview/window_selector.h"
23 #include "ash/wm/overview/window_selector_controller.h" 24 #include "ash/wm/overview/window_selector_controller.h"
24 #include "ash/wm/overview/window_selector_item.h" 25 #include "ash/wm/overview/window_selector_item.h"
25 #include "ash/wm/panels/panel_layout_manager.h" 26 #include "ash/wm/panels/panel_layout_manager.h"
26 #include "ash/wm/window_state.h" 27 #include "ash/wm/window_state.h"
27 #include "ash/wm/window_util.h" 28 #include "ash/wm/window_util.h"
28 #include "ash/wm/wm_event.h" 29 #include "ash/wm/wm_event.h"
29 #include "base/basictypes.h" 30 #include "base/basictypes.h"
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 wm::WindowState* window_state = wm::GetWindowState(window1.get()); 428 wm::WindowState* window_state = wm::GetWindowState(window1.get());
428 window_state->Maximize(); 429 window_state->Maximize();
429 ash::ShelfWidget* shelf = Shell::GetPrimaryRootWindowController()->shelf(); 430 ash::ShelfWidget* shelf = Shell::GetPrimaryRootWindowController()->shelf();
430 EXPECT_TRUE(shelf->GetDimsShelf()); 431 EXPECT_TRUE(shelf->GetDimsShelf());
431 ToggleOverview(); 432 ToggleOverview();
432 EXPECT_FALSE(shelf->GetDimsShelf()); 433 EXPECT_FALSE(shelf->GetDimsShelf());
433 ToggleOverview(); 434 ToggleOverview();
434 EXPECT_TRUE(shelf->GetDimsShelf()); 435 EXPECT_TRUE(shelf->GetDimsShelf());
435 } 436 }
436 437
438 // Tests that entering overview when a fullscreen window is active in maximized
439 // mode correctly applies the transformations to the window and correctly
440 // updates the window bounds on exiting overview mode: http://crbug.com/401664.
441 TEST_F(WindowSelectorTest, FullscreenWindowMaximizeMode) {
442 gfx::Rect bounds(0, 0, 400, 400);
443 scoped_ptr<aura::Window> window1(CreateWindow(bounds));
444 scoped_ptr<aura::Window> window2(CreateWindow(bounds));
445 Shell::GetInstance()->maximize_mode_controller()->
446 EnableMaximizeModeWindowManager(true);
447 wm::ActivateWindow(window2.get());
448 wm::ActivateWindow(window1.get());
449 gfx::Rect normal_window_bounds(window1->bounds());
450 const wm::WMEvent toggle_fullscreen_event(wm::WM_EVENT_TOGGLE_FULLSCREEN);
451 wm::GetWindowState(window1.get())->OnWMEvent(&toggle_fullscreen_event);
452 gfx::Rect fullscreen_window_bounds(window1->bounds());
453 EXPECT_NE(normal_window_bounds.ToString(),
454 fullscreen_window_bounds.ToString());
455 EXPECT_EQ(fullscreen_window_bounds.ToString(),
456 window2->GetTargetBounds().ToString());
457 ToggleOverview();
458 // Window 2 would normally resize to normal window bounds on showing the shelf
459 // for overview but this is deferred until overview is exited.
460 EXPECT_EQ(fullscreen_window_bounds.ToString(),
461 window2->GetTargetBounds().ToString());
462 EXPECT_FALSE(WindowsOverlapping(window1.get(), window2.get()));
463 ToggleOverview();
464
465 // Since the fullscreen window is still active, window2 will still have the
466 // larger bounds.
467 EXPECT_EQ(fullscreen_window_bounds.ToString(),
468 window2->GetTargetBounds().ToString());
469
470 // Enter overview again and select window 2. Selecting window 2 should show
471 // the shelf bringing window2 back to the normal bounds.
472 ToggleOverview();
473 ClickWindow(window2.get());
474 EXPECT_EQ(normal_window_bounds.ToString(),
475 window2->GetTargetBounds().ToString());
476 }
477
437 // Tests that beginning window selection hides the app list. 478 // Tests that beginning window selection hides the app list.
438 TEST_F(WindowSelectorTest, SelectingHidesAppList) { 479 TEST_F(WindowSelectorTest, SelectingHidesAppList) {
439 gfx::Rect bounds(0, 0, 400, 400); 480 gfx::Rect bounds(0, 0, 400, 400);
440 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 481 scoped_ptr<aura::Window> window1(CreateWindow(bounds));
441 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 482 scoped_ptr<aura::Window> window2(CreateWindow(bounds));
442 Shell::GetInstance()->ShowAppList(NULL); 483 Shell::GetInstance()->ShowAppList(NULL);
443 EXPECT_TRUE(Shell::GetInstance()->GetAppListTargetVisibility()); 484 EXPECT_TRUE(Shell::GetInstance()->GetAppListTargetVisibility());
444 ToggleOverview(); 485 ToggleOverview();
445 EXPECT_FALSE(Shell::GetInstance()->GetAppListTargetVisibility()); 486 EXPECT_FALSE(Shell::GetInstance()->GetAppListTargetVisibility());
446 ToggleOverview(); 487 ToggleOverview();
(...skipping 742 matching lines...) Expand 10 before | Expand all | Expand 10 after
1189 // Switch to overview mode. 1230 // Switch to overview mode.
1190 ToggleOverview(); 1231 ToggleOverview();
1191 ASSERT_TRUE(IsSelecting()); 1232 ASSERT_TRUE(IsSelecting());
1192 1233
1193 // Tap should now exit overview mode. 1234 // Tap should now exit overview mode.
1194 generator.GestureTapAt(point_in_background_page); 1235 generator.GestureTapAt(point_in_background_page);
1195 EXPECT_FALSE(IsSelecting()); 1236 EXPECT_FALSE(IsSelecting());
1196 } 1237 }
1197 1238
1198 } // namespace ash 1239 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698