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

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

Issue 2808723004: Renames WmShell to ShellPort (Closed)
Patch Set: feedback Created 3 years, 8 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 #include <vector> 6 #include <vector>
7 7
8 #include "ash/accessibility_delegate.h" 8 #include "ash/accessibility_delegate.h"
9 #include "ash/accessibility_types.h" 9 #include "ash/accessibility_types.h"
10 #include "ash/drag_drop/drag_drop_controller.h" 10 #include "ash/drag_drop/drag_drop_controller.h"
11 #include "ash/shelf/wm_shelf.h" 11 #include "ash/shelf/wm_shelf.h"
12 #include "ash/shell.h" 12 #include "ash/shell.h"
13 #include "ash/shell_port.h"
13 #include "ash/system/tray/system_tray.h" 14 #include "ash/system/tray/system_tray.h"
14 #include "ash/test/ash_test_base.h" 15 #include "ash/test/ash_test_base.h"
15 #include "ash/test/shelf_view_test_api.h" 16 #include "ash/test/shelf_view_test_api.h"
16 #include "ash/test/shell_test_api.h" 17 #include "ash/test/shell_test_api.h"
17 #include "ash/test/test_app_list_view_presenter_impl.h" 18 #include "ash/test/test_app_list_view_presenter_impl.h"
18 #include "ash/test/test_shelf_delegate.h" 19 #include "ash/test/test_shelf_delegate.h"
19 #include "ash/wm/maximize_mode/maximize_mode_controller.h" 20 #include "ash/wm/maximize_mode/maximize_mode_controller.h"
20 #include "ash/wm/overview/window_grid.h" 21 #include "ash/wm/overview/window_grid.h"
21 #include "ash/wm/overview/window_selector.h" 22 #include "ash/wm/overview/window_selector.h"
22 #include "ash/wm/overview/window_selector_controller.h" 23 #include "ash/wm/overview/window_selector_controller.h"
23 #include "ash/wm/overview/window_selector_item.h" 24 #include "ash/wm/overview/window_selector_item.h"
24 #include "ash/wm/panels/panel_layout_manager.h" 25 #include "ash/wm/panels/panel_layout_manager.h"
25 #include "ash/wm/window_state.h" 26 #include "ash/wm/window_state.h"
26 #include "ash/wm/window_state_aura.h" 27 #include "ash/wm/window_state_aura.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 "ash/wm/workspace/workspace_window_resizer.h" 30 #include "ash/wm/workspace/workspace_window_resizer.h"
30 #include "ash/wm_shell.h"
31 #include "ash/wm_window.h" 31 #include "ash/wm_window.h"
32 #include "base/strings/utf_string_conversions.h" 32 #include "base/strings/utf_string_conversions.h"
33 #include "base/test/user_action_tester.h" 33 #include "base/test/user_action_tester.h"
34 #include "ui/aura/client/aura_constants.h" 34 #include "ui/aura/client/aura_constants.h"
35 #include "ui/aura/client/focus_client.h" 35 #include "ui/aura/client/focus_client.h"
36 #include "ui/aura/test/test_windows.h" 36 #include "ui/aura/test/test_windows.h"
37 #include "ui/aura/window.h" 37 #include "ui/aura/window.h"
38 #include "ui/base/hit_test.h" 38 #include "ui/base/hit_test.h"
39 #include "ui/compositor/scoped_animation_duration_scale_mode.h" 39 #include "ui/compositor/scoped_animation_duration_scale_mode.h"
40 #include "ui/display/display_layout.h" 40 #include "ui/display/display_layout.h"
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 std::unique_ptr<test::ShelfViewTestAPI> shelf_view_test_; 334 std::unique_ptr<test::ShelfViewTestAPI> shelf_view_test_;
335 335
336 DISALLOW_COPY_AND_ASSIGN(WindowSelectorTest); 336 DISALLOW_COPY_AND_ASSIGN(WindowSelectorTest);
337 }; 337 };
338 338
339 // Tests that the text field in the overview menu is repositioned and resized 339 // Tests that the text field in the overview menu is repositioned and resized
340 // after a screen rotation. 340 // after a screen rotation.
341 TEST_F(WindowSelectorTest, OverviewScreenRotation) { 341 TEST_F(WindowSelectorTest, OverviewScreenRotation) {
342 // TODO: fails in mash because rotation is not supported. 342 // TODO: fails in mash because rotation is not supported.
343 // http://crbug.com/695556 343 // http://crbug.com/695556
344 if (WmShell::Get()->IsRunningInMash()) 344 if (ShellPort::Get()->IsRunningInMash())
345 return; 345 return;
346 346
347 gfx::Rect bounds(0, 0, 400, 300); 347 gfx::Rect bounds(0, 0, 400, 300);
348 std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); 348 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
349 std::unique_ptr<aura::Window> panel1(CreatePanelWindow(bounds)); 349 std::unique_ptr<aura::Window> panel1(CreatePanelWindow(bounds));
350 350
351 // In overview mode the windows should no longer overlap and the text filter 351 // In overview mode the windows should no longer overlap and the text filter
352 // widget should be focused. 352 // widget should be focused.
353 ToggleOverview(); 353 ToggleOverview();
354 354
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 std::unique_ptr<aura::Window> panel1(CreatePanelWindow(bounds)); 412 std::unique_ptr<aura::Window> panel1(CreatePanelWindow(bounds));
413 std::unique_ptr<aura::Window> panel2(CreatePanelWindow(bounds)); 413 std::unique_ptr<aura::Window> panel2(CreatePanelWindow(bounds));
414 414
415 EXPECT_TRUE(WindowsOverlapping(window1.get(), window2.get())); 415 EXPECT_TRUE(WindowsOverlapping(window1.get(), window2.get()));
416 EXPECT_TRUE(WindowsOverlapping(panel1.get(), panel2.get())); 416 EXPECT_TRUE(WindowsOverlapping(panel1.get(), panel2.get()));
417 wm::ActivateWindow(window2.get()); 417 wm::ActivateWindow(window2.get());
418 EXPECT_FALSE(wm::IsActiveWindow(window1.get())); 418 EXPECT_FALSE(wm::IsActiveWindow(window1.get()));
419 EXPECT_TRUE(wm::IsActiveWindow(window2.get())); 419 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
420 EXPECT_EQ(window2.get(), wm::GetFocusedWindow()); 420 EXPECT_EQ(window2.get(), wm::GetFocusedWindow());
421 // TODO: mash doesn't support CursorClient. http://crbug.com/637853. 421 // TODO: mash doesn't support CursorClient. http://crbug.com/637853.
422 if (!WmShell::Get()->IsRunningInMash()) { 422 if (!ShellPort::Get()->IsRunningInMash()) {
423 // Hide the cursor before entering overview to test that it will be shown. 423 // Hide the cursor before entering overview to test that it will be shown.
424 aura::client::GetCursorClient(root_window)->HideCursor(); 424 aura::client::GetCursorClient(root_window)->HideCursor();
425 } 425 }
426 426
427 // In overview mode the windows should no longer overlap and the text filter 427 // In overview mode the windows should no longer overlap and the text filter
428 // widget should be focused. 428 // widget should be focused.
429 ToggleOverview(); 429 ToggleOverview();
430 EXPECT_EQ(text_filter_widget()->GetNativeWindow(), wm::GetFocusedWindow()); 430 EXPECT_EQ(text_filter_widget()->GetNativeWindow(), wm::GetFocusedWindow());
431 EXPECT_FALSE(WindowsOverlapping(window1.get(), window2.get())); 431 EXPECT_FALSE(WindowsOverlapping(window1.get(), window2.get()));
432 EXPECT_FALSE(WindowsOverlapping(window1.get(), panel1.get())); 432 EXPECT_FALSE(WindowsOverlapping(window1.get(), panel1.get()));
433 EXPECT_FALSE(WindowsOverlapping(panel1.get(), panel2.get())); 433 EXPECT_FALSE(WindowsOverlapping(panel1.get(), panel2.get()));
434 434
435 // Clicking window 1 should activate it. 435 // Clicking window 1 should activate it.
436 ClickWindow(window1.get()); 436 ClickWindow(window1.get());
437 EXPECT_TRUE(wm::IsActiveWindow(window1.get())); 437 EXPECT_TRUE(wm::IsActiveWindow(window1.get()));
438 EXPECT_FALSE(wm::IsActiveWindow(window2.get())); 438 EXPECT_FALSE(wm::IsActiveWindow(window2.get()));
439 EXPECT_EQ(window1.get(), wm::GetFocusedWindow()); 439 EXPECT_EQ(window1.get(), wm::GetFocusedWindow());
440 440
441 // TODO: mash doesn't support CursorClient. http://crbug.com/637853. 441 // TODO: mash doesn't support CursorClient. http://crbug.com/637853.
442 if (!WmShell::Get()->IsRunningInMash()) { 442 if (!ShellPort::Get()->IsRunningInMash()) {
443 // Cursor should have been unlocked. 443 // Cursor should have been unlocked.
444 EXPECT_FALSE(aura::client::GetCursorClient(root_window)->IsCursorLocked()); 444 EXPECT_FALSE(aura::client::GetCursorClient(root_window)->IsCursorLocked());
445 } 445 }
446 } 446 }
447 447
448 // Tests activating minimized window. 448 // Tests activating minimized window.
449 TEST_F(WindowSelectorTest, ActivateMinimized) { 449 TEST_F(WindowSelectorTest, ActivateMinimized) {
450 gfx::Rect bounds(0, 0, 400, 400); 450 gfx::Rect bounds(0, 0, 400, 400);
451 std::unique_ptr<aura::Window> window(CreateWindow(bounds)); 451 std::unique_ptr<aura::Window> window(CreateWindow(bounds));
452 452
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 generator.GestureTapAt( 548 generator.GestureTapAt(
549 GetTransformedTargetBounds(window2.get()).CenterPoint()); 549 GetTransformedTargetBounds(window2.get()).CenterPoint());
550 EXPECT_EQ(window2.get(), wm::GetFocusedWindow()); 550 EXPECT_EQ(window2.get(), wm::GetFocusedWindow());
551 } 551 }
552 552
553 // Tests that the user action WindowSelector_ActiveWindowChanged is 553 // Tests that the user action WindowSelector_ActiveWindowChanged is
554 // recorded when the mouse/touchscreen/keyboard are used to select a window 554 // recorded when the mouse/touchscreen/keyboard are used to select a window
555 // in overview mode which is different from the previously-active window. 555 // in overview mode which is different from the previously-active window.
556 TEST_F(WindowSelectorTest, ActiveWindowChangedUserActionRecorded) { 556 TEST_F(WindowSelectorTest, ActiveWindowChangedUserActionRecorded) {
557 // TODO: fails because of metrics. http://crbug.com/698129. 557 // TODO: fails because of metrics. http://crbug.com/698129.
558 if (WmShell::Get()->IsRunningInMash()) 558 if (ShellPort::Get()->IsRunningInMash())
559 return; 559 return;
560 560
561 base::UserActionTester user_action_tester; 561 base::UserActionTester user_action_tester;
562 gfx::Rect bounds(0, 0, 400, 400); 562 gfx::Rect bounds(0, 0, 400, 400);
563 std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); 563 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
564 std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); 564 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
565 565
566 // Tap on |window2| to activate it and exit overview. 566 // Tap on |window2| to activate it and exit overview.
567 wm::ActivateWindow(window1.get()); 567 wm::ActivateWindow(window1.get());
568 ToggleOverview(); 568 ToggleOverview();
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
923 // the shelf bringing window2 back to the normal bounds. 923 // the shelf bringing window2 back to the normal bounds.
924 ToggleOverview(); 924 ToggleOverview();
925 ClickWindow(window2.get()); 925 ClickWindow(window2.get());
926 EXPECT_EQ(normal_window_bounds.ToString(), 926 EXPECT_EQ(normal_window_bounds.ToString(),
927 window2->GetTargetBounds().ToString()); 927 window2->GetTargetBounds().ToString());
928 } 928 }
929 929
930 // Tests that beginning window selection hides the app list. 930 // Tests that beginning window selection hides the app list.
931 TEST_F(WindowSelectorTest, SelectingHidesAppList) { 931 TEST_F(WindowSelectorTest, SelectingHidesAppList) {
932 // TODO: fails in mash because of AppListPresenter. http://crbug.com/696028. 932 // TODO: fails in mash because of AppListPresenter. http://crbug.com/696028.
933 if (WmShell::Get()->IsRunningInMash()) 933 if (ShellPort::Get()->IsRunningInMash())
934 return; 934 return;
935 935
936 gfx::Rect bounds(0, 0, 400, 400); 936 gfx::Rect bounds(0, 0, 400, 400);
937 std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); 937 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
938 std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); 938 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
939 939
940 // The tested behavior relies on the app list presenter delegate. 940 // The tested behavior relies on the app list presenter delegate.
941 test::TestAppListViewPresenterImpl app_list_presenter_impl; 941 test::TestAppListViewPresenterImpl app_list_presenter_impl;
942 942
943 app_list_presenter_impl.Show( 943 app_list_presenter_impl.Show(
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
1216 wm::ActivateWindow(window2); 1216 wm::ActivateWindow(window2);
1217 wm::ActivateWindow(window1); 1217 wm::ActivateWindow(window1);
1218 1218
1219 ToggleOverview(); 1219 ToggleOverview();
1220 } 1220 }
1221 1221
1222 // Tests removing a display during overview. 1222 // Tests removing a display during overview.
1223 TEST_F(WindowSelectorTest, RemoveDisplay) { 1223 TEST_F(WindowSelectorTest, RemoveDisplay) {
1224 // TODO: hits CHECK in stl as order of |ShelfModel::items_| is wrong. 1224 // TODO: hits CHECK in stl as order of |ShelfModel::items_| is wrong.
1225 // http://crbug.com/698878. 1225 // http://crbug.com/698878.
1226 if (WmShell::Get()->IsRunningInMash()) 1226 if (ShellPort::Get()->IsRunningInMash())
1227 return; 1227 return;
1228 1228
1229 UpdateDisplay("400x400,400x400"); 1229 UpdateDisplay("400x400,400x400");
1230 gfx::Rect bounds1(0, 0, 100, 100); 1230 gfx::Rect bounds1(0, 0, 100, 100);
1231 gfx::Rect bounds2(450, 0, 100, 100); 1231 gfx::Rect bounds2(450, 0, 100, 100);
1232 std::unique_ptr<aura::Window> window1(CreateWindow(bounds1)); 1232 std::unique_ptr<aura::Window> window1(CreateWindow(bounds1));
1233 std::unique_ptr<aura::Window> window2(CreateWindow(bounds2)); 1233 std::unique_ptr<aura::Window> window2(CreateWindow(bounds2));
1234 std::unique_ptr<aura::Window> window3(CreatePanelWindow(bounds1)); 1234 std::unique_ptr<aura::Window> window3(CreatePanelWindow(bounds1));
1235 std::unique_ptr<aura::Window> window4(CreatePanelWindow(bounds2)); 1235 std::unique_ptr<aura::Window> window4(CreatePanelWindow(bounds2));
1236 1236
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1302 gfx::Rect label_bounds = label->GetWidget()->GetWindowBoundsInScreen(); 1302 gfx::Rect label_bounds = label->GetWidget()->GetWindowBoundsInScreen();
1303 label_bounds.Inset(kWindowMargin, kWindowMargin); 1303 label_bounds.Inset(kWindowMargin, kWindowMargin);
1304 EXPECT_EQ(window_item->target_bounds(), label_bounds); 1304 EXPECT_EQ(window_item->target_bounds(), label_bounds);
1305 } 1305 }
1306 1306
1307 // Tests that overview updates the window positions if the display orientation 1307 // Tests that overview updates the window positions if the display orientation
1308 // changes. 1308 // changes.
1309 TEST_F(WindowSelectorTest, DisplayOrientationChanged) { 1309 TEST_F(WindowSelectorTest, DisplayOrientationChanged) {
1310 // TODO: fails in mash because rotation is not supported. 1310 // TODO: fails in mash because rotation is not supported.
1311 // http://crbug.com/695556 1311 // http://crbug.com/695556
1312 if (WmShell::Get()->IsRunningInMash()) 1312 if (ShellPort::Get()->IsRunningInMash())
1313 return; 1313 return;
1314 1314
1315 aura::Window* root_window = Shell::Get()->GetPrimaryRootWindow(); 1315 aura::Window* root_window = Shell::Get()->GetPrimaryRootWindow();
1316 UpdateDisplay("600x200"); 1316 UpdateDisplay("600x200");
1317 EXPECT_EQ("0,0 600x200", root_window->bounds().ToString()); 1317 EXPECT_EQ("0,0 600x200", root_window->bounds().ToString());
1318 gfx::Rect window_bounds(0, 0, 150, 150); 1318 gfx::Rect window_bounds(0, 0, 150, 150);
1319 std::vector<std::unique_ptr<aura::Window>> windows; 1319 std::vector<std::unique_ptr<aura::Window>> windows;
1320 for (int i = 0; i < 3; i++) 1320 for (int i = 0; i < 3; i++)
1321 windows.push_back(base::WrapUnique(CreateWindow(window_bounds))); 1321 windows.push_back(base::WrapUnique(CreateWindow(window_bounds)));
1322 1322
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
1437 SendKey(ui::VKEY_RIGHT); 1437 SendKey(ui::VKEY_RIGHT);
1438 EXPECT_EQ(GetSelectedWindow(), 1438 EXPECT_EQ(GetSelectedWindow(),
1439 WmWindow::GetAuraWindow(overview_root2[1]->GetWindow())); 1439 WmWindow::GetAuraWindow(overview_root2[1]->GetWindow()));
1440 } 1440 }
1441 1441
1442 // Tests first monitor when display order doesn't match left to right screen 1442 // Tests first monitor when display order doesn't match left to right screen
1443 // positions. 1443 // positions.
1444 TEST_F(WindowSelectorTest, MultiMonitorReversedOrder) { 1444 TEST_F(WindowSelectorTest, MultiMonitorReversedOrder) {
1445 // TODO: SetLayoutForCurrentDisplays() needs to ported to mash. 1445 // TODO: SetLayoutForCurrentDisplays() needs to ported to mash.
1446 // http://crbug.com/698043. 1446 // http://crbug.com/698043.
1447 if (WmShell::Get()->IsRunningInMash()) 1447 if (ShellPort::Get()->IsRunningInMash())
1448 return; 1448 return;
1449 1449
1450 UpdateDisplay("400x400,400x400"); 1450 UpdateDisplay("400x400,400x400");
1451 Shell::Get()->display_manager()->SetLayoutForCurrentDisplays( 1451 Shell::Get()->display_manager()->SetLayoutForCurrentDisplays(
1452 display::test::CreateDisplayLayout(display_manager(), 1452 display::test::CreateDisplayLayout(display_manager(),
1453 display::DisplayPlacement::LEFT, 0)); 1453 display::DisplayPlacement::LEFT, 0));
1454 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); 1454 aura::Window::Windows root_windows = Shell::GetAllRootWindows();
1455 gfx::Rect bounds1(-350, 0, 100, 100); 1455 gfx::Rect bounds1(-350, 0, 100, 100);
1456 gfx::Rect bounds2(0, 0, 100, 100); 1456 gfx::Rect bounds2(0, 0, 100, 100);
1457 std::unique_ptr<aura::Window> window2(CreateWindow(bounds2)); 1457 std::unique_ptr<aura::Window> window2(CreateWindow(bounds2));
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
1854 aura::client::WINDOW_MOVE_SOURCE_MOUSE)); 1854 aura::client::WINDOW_MOVE_SOURCE_MOUSE));
1855 ASSERT_TRUE(resizer.get()); 1855 ASSERT_TRUE(resizer.get());
1856 gfx::Point location = resizer->GetInitialLocation(); 1856 gfx::Point location = resizer->GetInitialLocation();
1857 location.Offset(20, 20); 1857 location.Offset(20, 20);
1858 resizer->Drag(location, 0); 1858 resizer->Drag(location, 0);
1859 ToggleOverview(); 1859 ToggleOverview();
1860 resizer->RevertDrag(); 1860 resizer->RevertDrag();
1861 } 1861 }
1862 1862
1863 } // namespace ash 1863 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698