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

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

Issue 1867223004: Convert //ash from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments Created 4 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
« no previous file with comments | « ash/wm/overview/window_selector_item.h ('k') | ash/wm/panels/panel_frame_view.h » ('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 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/ash_switches.h" 9 #include "ash/ash_switches.h"
10 #include "ash/drag_drop/drag_drop_controller.h" 10 #include "ash/drag_drop/drag_drop_controller.h"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 aura::client::SetActivationDelegate(window, 110 aura::client::SetActivationDelegate(window,
111 &non_activatable_activation_delegate_); 111 &non_activatable_activation_delegate_);
112 EXPECT_FALSE(ash::wm::CanActivateWindow(window)); 112 EXPECT_FALSE(ash::wm::CanActivateWindow(window));
113 return window; 113 return window;
114 } 114 }
115 115
116 // Creates a Widget containing a Window with the given |bounds|. This should 116 // Creates a Widget containing a Window with the given |bounds|. This should
117 // be used when the test requires a Widget. For example any test that will 117 // be used when the test requires a Widget. For example any test that will
118 // cause a window to be closed via 118 // cause a window to be closed via
119 // views::Widget::GetWidgetForNativeView(window)->Close(). 119 // views::Widget::GetWidgetForNativeView(window)->Close().
120 scoped_ptr<views::Widget> CreateWindowWidget(const gfx::Rect& bounds) { 120 std::unique_ptr<views::Widget> CreateWindowWidget(const gfx::Rect& bounds) {
121 scoped_ptr<views::Widget> widget(new views::Widget); 121 std::unique_ptr<views::Widget> widget(new views::Widget);
122 views::Widget::InitParams params; 122 views::Widget::InitParams params;
123 params.bounds = bounds; 123 params.bounds = bounds;
124 params.type = views::Widget::InitParams::TYPE_WINDOW; 124 params.type = views::Widget::InitParams::TYPE_WINDOW;
125 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 125 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
126 widget->Init(params); 126 widget->Init(params);
127 widget->Show(); 127 widget->Show();
128 ParentWindowInPrimaryRootWindow(widget->GetNativeWindow()); 128 ParentWindowInPrimaryRootWindow(widget->GetNativeWindow());
129 return widget; 129 return widget;
130 } 130 }
131 131
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 294
295 views::Widget* text_filter_widget() { 295 views::Widget* text_filter_widget() {
296 return ash::Shell::GetInstance()-> 296 return ash::Shell::GetInstance()->
297 window_selector_controller()->window_selector_.get()-> 297 window_selector_controller()->window_selector_.get()->
298 text_filter_widget_.get(); 298 text_filter_widget_.get();
299 } 299 }
300 300
301 private: 301 private:
302 aura::test::TestWindowDelegate delegate_; 302 aura::test::TestWindowDelegate delegate_;
303 NonActivatableActivationDelegate non_activatable_activation_delegate_; 303 NonActivatableActivationDelegate non_activatable_activation_delegate_;
304 scoped_ptr<test::ShelfViewTestAPI> shelf_view_test_; 304 std::unique_ptr<test::ShelfViewTestAPI> shelf_view_test_;
305 305
306 DISALLOW_COPY_AND_ASSIGN(WindowSelectorTest); 306 DISALLOW_COPY_AND_ASSIGN(WindowSelectorTest);
307 }; 307 };
308 308
309 // Tests that the text field in the overview menu is repositioned and resized 309 // Tests that the text field in the overview menu is repositioned and resized
310 // after a screen rotation. 310 // after a screen rotation.
311 #if defined(OS_WIN) && !defined(USE_ASH) 311 #if defined(OS_WIN) && !defined(USE_ASH)
312 // TODO(msw): Broken on Windows. http://crbug.com/584038 312 // TODO(msw): Broken on Windows. http://crbug.com/584038
313 #define MAYBE_OverviewScreenRotation DISABLED_OverviewScreenRotation 313 #define MAYBE_OverviewScreenRotation DISABLED_OverviewScreenRotation
314 #else 314 #else
315 #define MAYBE_OverviewScreenRotation OverviewScreenRotation 315 #define MAYBE_OverviewScreenRotation OverviewScreenRotation
316 #endif 316 #endif
317 TEST_F(WindowSelectorTest, MAYBE_OverviewScreenRotation) { 317 TEST_F(WindowSelectorTest, MAYBE_OverviewScreenRotation) {
318 gfx::Rect bounds(0, 0, 400, 300); 318 gfx::Rect bounds(0, 0, 400, 300);
319 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 319 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
320 scoped_ptr<aura::Window> panel1(CreatePanelWindow(bounds)); 320 std::unique_ptr<aura::Window> panel1(CreatePanelWindow(bounds));
321 321
322 // In overview mode the windows should no longer overlap and the text filter 322 // In overview mode the windows should no longer overlap and the text filter
323 // widget should be focused. 323 // widget should be focused.
324 ToggleOverview(); 324 ToggleOverview();
325 325
326 views::Widget* text_filter = text_filter_widget(); 326 views::Widget* text_filter = text_filter_widget();
327 UpdateDisplay("400x300"); 327 UpdateDisplay("400x300");
328 328
329 // Formula for initial placement found in window_selector.cc using 329 // Formula for initial placement found in window_selector.cc using
330 // width = 400, height = 300: 330 // width = 400, height = 300:
(...skipping 11 matching lines...) Expand all
342 // Uses the same formulas as abuve using width = 300, height = 400. 342 // Uses the same formulas as abuve using width = 300, height = 400.
343 EXPECT_EQ("112,-32 75x32", 343 EXPECT_EQ("112,-32 75x32",
344 text_filter->GetClientAreaBoundsInScreen().ToString()); 344 text_filter->GetClientAreaBoundsInScreen().ToString());
345 } 345 }
346 346
347 // Tests that an a11y alert is sent on entering overview mode. 347 // Tests that an a11y alert is sent on entering overview mode.
348 TEST_F(WindowSelectorTest, A11yAlertOnOverviewMode) { 348 TEST_F(WindowSelectorTest, A11yAlertOnOverviewMode) {
349 gfx::Rect bounds(0, 0, 400, 400); 349 gfx::Rect bounds(0, 0, 400, 400);
350 AccessibilityDelegate* delegate = 350 AccessibilityDelegate* delegate =
351 ash::Shell::GetInstance()->accessibility_delegate(); 351 ash::Shell::GetInstance()->accessibility_delegate();
352 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 352 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
353 EXPECT_NE(delegate->GetLastAccessibilityAlert(), 353 EXPECT_NE(delegate->GetLastAccessibilityAlert(),
354 ui::A11Y_ALERT_WINDOW_OVERVIEW_MODE_ENTERED); 354 ui::A11Y_ALERT_WINDOW_OVERVIEW_MODE_ENTERED);
355 ToggleOverview(); 355 ToggleOverview();
356 EXPECT_EQ(delegate->GetLastAccessibilityAlert(), 356 EXPECT_EQ(delegate->GetLastAccessibilityAlert(),
357 ui::A11Y_ALERT_WINDOW_OVERVIEW_MODE_ENTERED); 357 ui::A11Y_ALERT_WINDOW_OVERVIEW_MODE_ENTERED);
358 } 358 }
359 359
360 // Tests that there are no crashes when there is not enough screen space 360 // Tests that there are no crashes when there is not enough screen space
361 // available to show all of the windows. 361 // available to show all of the windows.
362 TEST_F(WindowSelectorTest, SmallDisplay) { 362 TEST_F(WindowSelectorTest, SmallDisplay) {
363 UpdateDisplay("3x1"); 363 UpdateDisplay("3x1");
364 gfx::Rect bounds(0, 0, 1, 1); 364 gfx::Rect bounds(0, 0, 1, 1);
365 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 365 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
366 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 366 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
367 scoped_ptr<aura::Window> window3(CreateWindow(bounds)); 367 std::unique_ptr<aura::Window> window3(CreateWindow(bounds));
368 scoped_ptr<aura::Window> window4(CreateWindow(bounds)); 368 std::unique_ptr<aura::Window> window4(CreateWindow(bounds));
369 ToggleOverview(); 369 ToggleOverview();
370 } 370 }
371 371
372 // Tests entering overview mode with two windows and selecting one by clicking. 372 // Tests entering overview mode with two windows and selecting one by clicking.
373 TEST_F(WindowSelectorTest, Basic) { 373 TEST_F(WindowSelectorTest, Basic) {
374 gfx::Rect bounds(0, 0, 400, 400); 374 gfx::Rect bounds(0, 0, 400, 400);
375 aura::Window* root_window = Shell::GetPrimaryRootWindow(); 375 aura::Window* root_window = Shell::GetPrimaryRootWindow();
376 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 376 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
377 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 377 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
378 scoped_ptr<aura::Window> panel1(CreatePanelWindow(bounds)); 378 std::unique_ptr<aura::Window> panel1(CreatePanelWindow(bounds));
379 scoped_ptr<aura::Window> panel2(CreatePanelWindow(bounds)); 379 std::unique_ptr<aura::Window> panel2(CreatePanelWindow(bounds));
380 380
381 EXPECT_TRUE(WindowsOverlapping(window1.get(), window2.get())); 381 EXPECT_TRUE(WindowsOverlapping(window1.get(), window2.get()));
382 EXPECT_TRUE(WindowsOverlapping(panel1.get(), panel2.get())); 382 EXPECT_TRUE(WindowsOverlapping(panel1.get(), panel2.get()));
383 wm::ActivateWindow(window2.get()); 383 wm::ActivateWindow(window2.get());
384 EXPECT_FALSE(wm::IsActiveWindow(window1.get())); 384 EXPECT_FALSE(wm::IsActiveWindow(window1.get()));
385 EXPECT_TRUE(wm::IsActiveWindow(window2.get())); 385 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
386 EXPECT_EQ(window2.get(), GetFocusedWindow()); 386 EXPECT_EQ(window2.get(), GetFocusedWindow());
387 // Hide the cursor before entering overview to test that it will be shown. 387 // Hide the cursor before entering overview to test that it will be shown.
388 aura::client::GetCursorClient(root_window)->HideCursor(); 388 aura::client::GetCursorClient(root_window)->HideCursor();
389 389
(...skipping 16 matching lines...) Expand all
406 } 406 }
407 407
408 // Tests that the ordering of windows is near the windows' original positions. 408 // Tests that the ordering of windows is near the windows' original positions.
409 TEST_F(WindowSelectorTest, MinimizeMovement) { 409 TEST_F(WindowSelectorTest, MinimizeMovement) {
410 aura::Window* root_window = Shell::GetPrimaryRootWindow(); 410 aura::Window* root_window = Shell::GetPrimaryRootWindow();
411 gfx::Rect left_bounds(0, 0, root_window->bounds().width() / 2, 411 gfx::Rect left_bounds(0, 0, root_window->bounds().width() / 2,
412 root_window->bounds().height()); 412 root_window->bounds().height());
413 gfx::Rect right_bounds(root_window->bounds().width() / 2, 0, 413 gfx::Rect right_bounds(root_window->bounds().width() / 2, 0,
414 root_window->bounds().width() / 2, 414 root_window->bounds().width() / 2,
415 root_window->bounds().height()); 415 root_window->bounds().height());
416 scoped_ptr<aura::Window> left_window(CreateWindow(left_bounds)); 416 std::unique_ptr<aura::Window> left_window(CreateWindow(left_bounds));
417 scoped_ptr<aura::Window> right_window(CreateWindow(right_bounds)); 417 std::unique_ptr<aura::Window> right_window(CreateWindow(right_bounds));
418 418
419 // The window should stay on the same side of the screen regardless of which 419 // The window should stay on the same side of the screen regardless of which
420 // one was active on entering overview mode. 420 // one was active on entering overview mode.
421 wm::GetWindowState(left_window.get())->Activate(); 421 wm::GetWindowState(left_window.get())->Activate();
422 ToggleOverview(); 422 ToggleOverview();
423 const std::vector<WindowSelectorItem*>& overview1(GetWindowItemsForRoot(0)); 423 const std::vector<WindowSelectorItem*>& overview1(GetWindowItemsForRoot(0));
424 EXPECT_EQ(overview1[0]->GetWindow(), left_window.get()); 424 EXPECT_EQ(overview1[0]->GetWindow(), left_window.get());
425 EXPECT_EQ(overview1[1]->GetWindow(), right_window.get()); 425 EXPECT_EQ(overview1[1]->GetWindow(), right_window.get());
426 ToggleOverview(); 426 ToggleOverview();
427 427
(...skipping 18 matching lines...) Expand all
446 // Tests that the ordering of windows is near the windows' original positions 446 // Tests that the ordering of windows is near the windows' original positions
447 // on a second display. 447 // on a second display.
448 TEST_F(WindowSelectorTest, MinimizeMovementSecondDisplay) { 448 TEST_F(WindowSelectorTest, MinimizeMovementSecondDisplay) {
449 if (!SupportsMultipleDisplays()) 449 if (!SupportsMultipleDisplays())
450 return; 450 return;
451 451
452 // Verify the same works on the second display 452 // Verify the same works on the second display
453 UpdateDisplay("400x400,400x400"); 453 UpdateDisplay("400x400,400x400");
454 gfx::Rect left_bounds(400, 0, 200, 400); 454 gfx::Rect left_bounds(400, 0, 200, 400);
455 gfx::Rect right_bounds(600, 0, 200, 400); 455 gfx::Rect right_bounds(600, 0, 200, 400);
456 scoped_ptr<aura::Window> left_window(CreateWindow(left_bounds)); 456 std::unique_ptr<aura::Window> left_window(CreateWindow(left_bounds));
457 scoped_ptr<aura::Window> right_window(CreateWindow(right_bounds)); 457 std::unique_ptr<aura::Window> right_window(CreateWindow(right_bounds));
458 458
459 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); 459 aura::Window::Windows root_windows = Shell::GetAllRootWindows();
460 EXPECT_EQ(root_windows[1], left_window->GetRootWindow()); 460 EXPECT_EQ(root_windows[1], left_window->GetRootWindow());
461 EXPECT_EQ(root_windows[1], right_window->GetRootWindow()); 461 EXPECT_EQ(root_windows[1], right_window->GetRootWindow());
462 462
463 wm::GetWindowState(left_window.get())->Activate(); 463 wm::GetWindowState(left_window.get())->Activate();
464 ToggleOverview(); 464 ToggleOverview();
465 const std::vector<WindowSelectorItem*>& overview1(GetWindowItemsForRoot(0)); 465 const std::vector<WindowSelectorItem*>& overview1(GetWindowItemsForRoot(0));
466 EXPECT_EQ(overview1[0]->GetWindow(), left_window.get()); 466 EXPECT_EQ(overview1[0]->GetWindow(), left_window.get());
467 EXPECT_EQ(overview1[1]->GetWindow(), right_window.get()); 467 EXPECT_EQ(overview1[1]->GetWindow(), right_window.get());
468 ToggleOverview(); 468 ToggleOverview();
469 469
470 // Active the right window, the order should be the same. 470 // Active the right window, the order should be the same.
471 wm::GetWindowState(right_window.get())->Activate(); 471 wm::GetWindowState(right_window.get())->Activate();
472 ToggleOverview(); 472 ToggleOverview();
473 const std::vector<WindowSelectorItem*>& overview2(GetWindowItemsForRoot(0)); 473 const std::vector<WindowSelectorItem*>& overview2(GetWindowItemsForRoot(0));
474 EXPECT_EQ(overview2[0]->GetWindow(), left_window.get()); 474 EXPECT_EQ(overview2[0]->GetWindow(), left_window.get());
475 EXPECT_EQ(overview2[1]->GetWindow(), right_window.get()); 475 EXPECT_EQ(overview2[1]->GetWindow(), right_window.get());
476 ToggleOverview(); 476 ToggleOverview();
477 } 477 }
478 478
479 // Tests that the ordering of windows is stable across different overview 479 // Tests that the ordering of windows is stable across different overview
480 // sessions even when the windows have the same bounds. 480 // sessions even when the windows have the same bounds.
481 TEST_F(WindowSelectorTest, StableOrder) { 481 TEST_F(WindowSelectorTest, StableOrder) {
482 gfx::Rect bounds(0, 0, 400, 400); 482 gfx::Rect bounds(0, 0, 400, 400);
483 scoped_ptr<aura::Window> window1(CreateWindowWithId(bounds, 1)); 483 std::unique_ptr<aura::Window> window1(CreateWindowWithId(bounds, 1));
484 scoped_ptr<aura::Window> window2(CreateWindowWithId(bounds, 2)); 484 std::unique_ptr<aura::Window> window2(CreateWindowWithId(bounds, 2));
485 485
486 // The initial ordering is not defined, but should remain consistent the next 486 // The initial ordering is not defined, but should remain consistent the next
487 // time overview is started. 487 // time overview is started.
488 wm::GetWindowState(window1.get())->Activate(); 488 wm::GetWindowState(window1.get())->Activate();
489 ToggleOverview(); 489 ToggleOverview();
490 const std::vector<WindowSelectorItem*>& overview1(GetWindowItemsForRoot(0)); 490 const std::vector<WindowSelectorItem*>& overview1(GetWindowItemsForRoot(0));
491 int initial_order[2] = {overview1[0]->GetWindow()->id(), 491 int initial_order[2] = {overview1[0]->GetWindow()->id(),
492 overview1[1]->GetWindow()->id()}; 492 overview1[1]->GetWindow()->id()};
493 ToggleOverview(); 493 ToggleOverview();
494 494
495 // Activate the other window, the order should be the same. 495 // Activate the other window, the order should be the same.
496 wm::GetWindowState(window2.get())->Activate(); 496 wm::GetWindowState(window2.get())->Activate();
497 ToggleOverview(); 497 ToggleOverview();
498 const std::vector<WindowSelectorItem*>& overview2(GetWindowItemsForRoot(0)); 498 const std::vector<WindowSelectorItem*>& overview2(GetWindowItemsForRoot(0));
499 EXPECT_EQ(initial_order[0], overview2[0]->GetWindow()->id()); 499 EXPECT_EQ(initial_order[0], overview2[0]->GetWindow()->id());
500 EXPECT_EQ(initial_order[1], overview2[1]->GetWindow()->id()); 500 EXPECT_EQ(initial_order[1], overview2[1]->GetWindow()->id());
501 ToggleOverview(); 501 ToggleOverview();
502 } 502 }
503 503
504 // Tests entering overview mode with docked windows 504 // Tests entering overview mode with docked windows
505 TEST_F(WindowSelectorTest, BasicWithDocked) { 505 TEST_F(WindowSelectorTest, BasicWithDocked) {
506 // aura::Window* root_window = Shell::GetPrimaryRootWindow(); 506 // aura::Window* root_window = Shell::GetPrimaryRootWindow();
507 gfx::Rect bounds(300, 0, 200, 200); 507 gfx::Rect bounds(300, 0, 200, 200);
508 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 508 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
509 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 509 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
510 scoped_ptr<aura::Window> docked1(CreateWindow(bounds)); 510 std::unique_ptr<aura::Window> docked1(CreateWindow(bounds));
511 scoped_ptr<aura::Window> docked2(CreateWindow(bounds)); 511 std::unique_ptr<aura::Window> docked2(CreateWindow(bounds));
512 512
513 wm::WMEvent dock_event(wm::WM_EVENT_DOCK); 513 wm::WMEvent dock_event(wm::WM_EVENT_DOCK);
514 wm::GetWindowState(docked1.get())->OnWMEvent(&dock_event); 514 wm::GetWindowState(docked1.get())->OnWMEvent(&dock_event);
515 515
516 wm::WindowState* docked_state2 = wm::GetWindowState(docked2.get()); 516 wm::WindowState* docked_state2 = wm::GetWindowState(docked2.get());
517 docked_state2->OnWMEvent(&dock_event); 517 docked_state2->OnWMEvent(&dock_event);
518 wm::WMEvent minimize_event(wm::WM_EVENT_MINIMIZE); 518 wm::WMEvent minimize_event(wm::WM_EVENT_MINIMIZE);
519 docked_state2->OnWMEvent(&minimize_event); 519 docked_state2->OnWMEvent(&minimize_event);
520 520
521 EXPECT_TRUE(WindowsOverlapping(window1.get(), window2.get())); 521 EXPECT_TRUE(WindowsOverlapping(window1.get(), window2.get()));
(...skipping 19 matching lines...) Expand all
541 // Docked window can still be activated, which will exit the overview mode. 541 // Docked window can still be activated, which will exit the overview mode.
542 ClickWindow(docked1.get()); 542 ClickWindow(docked1.get());
543 EXPECT_TRUE(wm::IsActiveWindow(docked1.get())); 543 EXPECT_TRUE(wm::IsActiveWindow(docked1.get()));
544 EXPECT_FALSE( 544 EXPECT_FALSE(
545 ash::Shell::GetInstance()->window_selector_controller()->IsSelecting()); 545 ash::Shell::GetInstance()->window_selector_controller()->IsSelecting());
546 } 546 }
547 547
548 // Tests selecting a window by tapping on it. 548 // Tests selecting a window by tapping on it.
549 TEST_F(WindowSelectorTest, BasicGesture) { 549 TEST_F(WindowSelectorTest, BasicGesture) {
550 gfx::Rect bounds(0, 0, 400, 400); 550 gfx::Rect bounds(0, 0, 400, 400);
551 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 551 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
552 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 552 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
553 wm::ActivateWindow(window1.get()); 553 wm::ActivateWindow(window1.get());
554 EXPECT_EQ(window1.get(), GetFocusedWindow()); 554 EXPECT_EQ(window1.get(), GetFocusedWindow());
555 ToggleOverview(); 555 ToggleOverview();
556 EXPECT_EQ(text_filter_widget()->GetNativeWindow(), GetFocusedWindow()); 556 EXPECT_EQ(text_filter_widget()->GetNativeWindow(), GetFocusedWindow());
557 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), 557 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
558 window2.get()); 558 window2.get());
559 generator.GestureTapAt(gfx::ToEnclosingRect( 559 generator.GestureTapAt(gfx::ToEnclosingRect(
560 GetTransformedTargetBounds(window2.get())).CenterPoint()); 560 GetTransformedTargetBounds(window2.get())).CenterPoint());
561 EXPECT_EQ(window2.get(), GetFocusedWindow()); 561 EXPECT_EQ(window2.get(), GetFocusedWindow());
562 } 562 }
563 563
564 // Tests that the user action WindowSelector_ActiveWindowChanged is 564 // Tests that the user action WindowSelector_ActiveWindowChanged is
565 // recorded when the mouse/touchscreen/keyboard are used to select a window 565 // recorded when the mouse/touchscreen/keyboard are used to select a window
566 // in overview mode which is different from the previously-active window. 566 // in overview mode which is different from the previously-active window.
567 TEST_F(WindowSelectorTest, ActiveWindowChangedUserActionRecorded) { 567 TEST_F(WindowSelectorTest, ActiveWindowChangedUserActionRecorded) {
568 base::UserActionTester user_action_tester; 568 base::UserActionTester user_action_tester;
569 gfx::Rect bounds(0, 0, 400, 400); 569 gfx::Rect bounds(0, 0, 400, 400);
570 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 570 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
571 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 571 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
572 572
573 // Tap on |window2| to activate it and exit overview. 573 // Tap on |window2| to activate it and exit overview.
574 wm::ActivateWindow(window1.get()); 574 wm::ActivateWindow(window1.get());
575 ToggleOverview(); 575 ToggleOverview();
576 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), 576 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
577 window2.get()); 577 window2.get());
578 generator.GestureTapAt( 578 generator.GestureTapAt(
579 gfx::ToEnclosingRect(GetTransformedTargetBounds(window2.get())) 579 gfx::ToEnclosingRect(GetTransformedTargetBounds(window2.get()))
580 .CenterPoint()); 580 .CenterPoint());
581 EXPECT_EQ( 581 EXPECT_EQ(
(...skipping 16 matching lines...) Expand all
598 3, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview)); 598 3, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview));
599 } 599 }
600 600
601 // Tests that the user action WindowSelector_ActiveWindowChanged is not 601 // Tests that the user action WindowSelector_ActiveWindowChanged is not
602 // recorded when the mouse/touchscreen/keyboard are used to select the 602 // recorded when the mouse/touchscreen/keyboard are used to select the
603 // already-active window from overview mode. Also verifies that entering and 603 // already-active window from overview mode. Also verifies that entering and
604 // exiting overview without selecting a window does not record the action. 604 // exiting overview without selecting a window does not record the action.
605 TEST_F(WindowSelectorTest, ActiveWindowChangedUserActionNotRecorded) { 605 TEST_F(WindowSelectorTest, ActiveWindowChangedUserActionNotRecorded) {
606 base::UserActionTester user_action_tester; 606 base::UserActionTester user_action_tester;
607 gfx::Rect bounds(0, 0, 400, 400); 607 gfx::Rect bounds(0, 0, 400, 400);
608 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 608 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
609 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 609 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
610 610
611 // Set |window1| to be initially active. 611 // Set |window1| to be initially active.
612 wm::ActivateWindow(window1.get()); 612 wm::ActivateWindow(window1.get());
613 ToggleOverview(); 613 ToggleOverview();
614 614
615 // Tap on |window1| to exit overview. 615 // Tap on |window1| to exit overview.
616 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), 616 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
617 window1.get()); 617 window1.get());
618 generator.GestureTapAt( 618 generator.GestureTapAt(
619 gfx::ToEnclosingRect(GetTransformedTargetBounds(window1.get())) 619 gfx::ToEnclosingRect(GetTransformedTargetBounds(window1.get()))
(...skipping 21 matching lines...) Expand all
641 ToggleOverview(); 641 ToggleOverview();
642 ToggleOverview(); 642 ToggleOverview();
643 EXPECT_EQ( 643 EXPECT_EQ(
644 0, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview)); 644 0, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview));
645 } 645 }
646 646
647 // Tests that the user action WindowSelector_ActiveWindowChanged is not 647 // Tests that the user action WindowSelector_ActiveWindowChanged is not
648 // recorded when overview mode exits as a result of closing its only window. 648 // recorded when overview mode exits as a result of closing its only window.
649 TEST_F(WindowSelectorTest, ActiveWindowChangedUserActionWindowClose) { 649 TEST_F(WindowSelectorTest, ActiveWindowChangedUserActionWindowClose) {
650 base::UserActionTester user_action_tester; 650 base::UserActionTester user_action_tester;
651 scoped_ptr<views::Widget> widget = 651 std::unique_ptr<views::Widget> widget =
652 CreateWindowWidget(gfx::Rect(0, 0, 400, 400)); 652 CreateWindowWidget(gfx::Rect(0, 0, 400, 400));
653 653
654 ToggleOverview(); 654 ToggleOverview();
655 655
656 aura::Window* window = widget->GetNativeWindow(); 656 aura::Window* window = widget->GetNativeWindow();
657 gfx::RectF bounds = GetTransformedBoundsInRootWindow(window); 657 gfx::RectF bounds = GetTransformedBoundsInRootWindow(window);
658 gfx::Point point(bounds.top_right().x() - 1, bounds.top_right().y() - 1); 658 gfx::Point point(bounds.top_right().x() - 1, bounds.top_right().y() - 1);
659 ui::test::EventGenerator event_generator(window->GetRootWindow(), point); 659 ui::test::EventGenerator event_generator(window->GetRootWindow(), point);
660 660
661 ASSERT_FALSE(widget->IsClosed()); 661 ASSERT_FALSE(widget->IsClosed());
662 event_generator.ClickLeftButton(); 662 event_generator.ClickLeftButton();
663 ASSERT_TRUE(widget->IsClosed()); 663 ASSERT_TRUE(widget->IsClosed());
664 EXPECT_EQ( 664 EXPECT_EQ(
665 0, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview)); 665 0, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview));
666 } 666 }
667 667
668 // Tests that we do not crash and overview mode remains engaged if the desktop 668 // Tests that we do not crash and overview mode remains engaged if the desktop
669 // is tapped while a finger is already down over a window. 669 // is tapped while a finger is already down over a window.
670 TEST_F(WindowSelectorTest, NoCrashWithDesktopTap) { 670 TEST_F(WindowSelectorTest, NoCrashWithDesktopTap) {
671 scoped_ptr<aura::Window> window(CreateWindow(gfx::Rect(200, 300, 250, 450))); 671 std::unique_ptr<aura::Window> window(
672 CreateWindow(gfx::Rect(200, 300, 250, 450)));
672 673
673 ToggleOverview(); 674 ToggleOverview();
674 675
675 gfx::Rect bounds = 676 gfx::Rect bounds =
676 gfx::ToEnclosingRect(GetTransformedBoundsInRootWindow(window.get())); 677 gfx::ToEnclosingRect(GetTransformedBoundsInRootWindow(window.get()));
677 ui::test::EventGenerator event_generator(window->GetRootWindow(), 678 ui::test::EventGenerator event_generator(window->GetRootWindow(),
678 bounds.CenterPoint()); 679 bounds.CenterPoint());
679 680
680 // Press down on the window. 681 // Press down on the window.
681 const int kTouchId = 19; 682 const int kTouchId = 19;
682 event_generator.PressTouchId(kTouchId); 683 event_generator.PressTouchId(kTouchId);
683 684
684 // Tap on the desktop, which should not cause a crash. Overview mode should 685 // Tap on the desktop, which should not cause a crash. Overview mode should
685 // be disengaged. 686 // be disengaged.
686 event_generator.GestureTapAt(gfx::Point(0, 0)); 687 event_generator.GestureTapAt(gfx::Point(0, 0));
687 EXPECT_FALSE(IsSelecting()); 688 EXPECT_FALSE(IsSelecting());
688 689
689 event_generator.ReleaseTouchId(kTouchId); 690 event_generator.ReleaseTouchId(kTouchId);
690 } 691 }
691 692
692 // Tests that we do not crash and a window is selected when appropriate when 693 // Tests that we do not crash and a window is selected when appropriate when
693 // we click on a window during touch. 694 // we click on a window during touch.
694 TEST_F(WindowSelectorTest, ClickOnWindowDuringTouch) { 695 TEST_F(WindowSelectorTest, ClickOnWindowDuringTouch) {
695 gfx::Rect bounds(0, 0, 400, 400); 696 gfx::Rect bounds(0, 0, 400, 400);
696 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 697 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
697 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 698 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
698 wm::ActivateWindow(window2.get()); 699 wm::ActivateWindow(window2.get());
699 EXPECT_FALSE(wm::IsActiveWindow(window1.get())); 700 EXPECT_FALSE(wm::IsActiveWindow(window1.get()));
700 EXPECT_TRUE(wm::IsActiveWindow(window2.get())); 701 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
701 702
702 ToggleOverview(); 703 ToggleOverview();
703 704
704 gfx::Rect window1_bounds = 705 gfx::Rect window1_bounds =
705 gfx::ToEnclosingRect(GetTransformedBoundsInRootWindow(window1.get())); 706 gfx::ToEnclosingRect(GetTransformedBoundsInRootWindow(window1.get()));
706 ui::test::EventGenerator event_generator(window1->GetRootWindow(), 707 ui::test::EventGenerator event_generator(window1->GetRootWindow(),
707 window1_bounds.CenterPoint()); 708 window1_bounds.CenterPoint());
(...skipping 19 matching lines...) Expand all
727 EXPECT_FALSE(IsSelecting()); 728 EXPECT_FALSE(IsSelecting());
728 EXPECT_TRUE(wm::IsActiveWindow(window1.get())); 729 EXPECT_TRUE(wm::IsActiveWindow(window1.get()));
729 EXPECT_FALSE(wm::IsActiveWindow(window2.get())); 730 EXPECT_FALSE(wm::IsActiveWindow(window2.get()));
730 event_generator.ReleaseTouchId(kTouchId); 731 event_generator.ReleaseTouchId(kTouchId);
731 } 732 }
732 733
733 // Tests that a window does not receive located events when in overview mode. 734 // Tests that a window does not receive located events when in overview mode.
734 TEST_F(WindowSelectorTest, WindowDoesNotReceiveEvents) { 735 TEST_F(WindowSelectorTest, WindowDoesNotReceiveEvents) {
735 gfx::Rect window_bounds(20, 10, 200, 300); 736 gfx::Rect window_bounds(20, 10, 200, 300);
736 aura::Window* root_window = Shell::GetPrimaryRootWindow(); 737 aura::Window* root_window = Shell::GetPrimaryRootWindow();
737 scoped_ptr<aura::Window> window(CreateWindow(window_bounds)); 738 std::unique_ptr<aura::Window> window(CreateWindow(window_bounds));
738 739
739 gfx::Point point1(window_bounds.x() + 10, window_bounds.y() + 10); 740 gfx::Point point1(window_bounds.x() + 10, window_bounds.y() + 10);
740 741
741 ui::MouseEvent event1(ui::ET_MOUSE_PRESSED, point1, point1, 742 ui::MouseEvent event1(ui::ET_MOUSE_PRESSED, point1, point1,
742 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE); 743 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE);
743 744
744 ui::EventTarget* root_target = root_window; 745 ui::EventTarget* root_target = root_window;
745 ui::EventTargeter* targeter = root_target->GetEventTargeter(); 746 ui::EventTargeter* targeter = root_target->GetEventTargeter();
746 747
747 // The event should target the window because we are still not in overview 748 // The event should target the window because we are still not in overview
748 // mode. 749 // mode.
749 EXPECT_EQ(window.get(), targeter->FindTargetForEvent(root_target, &event1)); 750 EXPECT_EQ(window.get(), targeter->FindTargetForEvent(root_target, &event1));
750 751
751 ToggleOverview(); 752 ToggleOverview();
752 753
753 // The bounds have changed, take that into account. 754 // The bounds have changed, take that into account.
754 gfx::RectF bounds = GetTransformedBoundsInRootWindow(window.get()); 755 gfx::RectF bounds = GetTransformedBoundsInRootWindow(window.get());
755 gfx::Point point2(bounds.x() + 10, bounds.y() + 10); 756 gfx::Point point2(bounds.x() + 10, bounds.y() + 10);
756 ui::MouseEvent event2(ui::ET_MOUSE_PRESSED, point2, point2, 757 ui::MouseEvent event2(ui::ET_MOUSE_PRESSED, point2, point2,
757 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE); 758 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE);
758 759
759 // Now the transparent window should be intercepting this event. 760 // Now the transparent window should be intercepting this event.
760 EXPECT_NE(window.get(), targeter->FindTargetForEvent(root_target, &event2)); 761 EXPECT_NE(window.get(), targeter->FindTargetForEvent(root_target, &event2));
761 } 762 }
762 763
763 // Tests that clicking on the close button effectively closes the window. 764 // Tests that clicking on the close button effectively closes the window.
764 TEST_F(WindowSelectorTest, CloseButton) { 765 TEST_F(WindowSelectorTest, CloseButton) {
765 scoped_ptr<views::Widget> widget = 766 std::unique_ptr<views::Widget> widget =
766 CreateWindowWidget(gfx::Rect(0, 0, 400, 400)); 767 CreateWindowWidget(gfx::Rect(0, 0, 400, 400));
767 768
768 ToggleOverview(); 769 ToggleOverview();
769 770
770 aura::Window* window = widget->GetNativeWindow(); 771 aura::Window* window = widget->GetNativeWindow();
771 gfx::RectF bounds = GetTransformedBoundsInRootWindow(window); 772 gfx::RectF bounds = GetTransformedBoundsInRootWindow(window);
772 gfx::Point point(bounds.top_right().x() - 1, bounds.top_right().y() - 1); 773 gfx::Point point(bounds.top_right().x() - 1, bounds.top_right().y() - 1);
773 ui::test::EventGenerator event_generator(window->GetRootWindow(), point); 774 ui::test::EventGenerator event_generator(window->GetRootWindow(), point);
774 775
775 EXPECT_FALSE(widget->IsClosed()); 776 EXPECT_FALSE(widget->IsClosed());
776 event_generator.ClickLeftButton(); 777 event_generator.ClickLeftButton();
777 EXPECT_TRUE(widget->IsClosed()); 778 EXPECT_TRUE(widget->IsClosed());
778 } 779 }
779 780
780 // Tests that clicking on the close button on a secondary display effectively 781 // Tests that clicking on the close button on a secondary display effectively
781 // closes the window. 782 // closes the window.
782 TEST_F(WindowSelectorTest, CloseButtonOnMultipleDisplay) { 783 TEST_F(WindowSelectorTest, CloseButtonOnMultipleDisplay) {
783 if (!SupportsMultipleDisplays()) 784 if (!SupportsMultipleDisplays())
784 return; 785 return;
785 786
786 UpdateDisplay("600x400,600x400"); 787 UpdateDisplay("600x400,600x400");
787 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); 788 aura::Window::Windows root_windows = Shell::GetAllRootWindows();
788 789
789 scoped_ptr<aura::Window> window1(CreateWindow(gfx::Rect(650, 300, 250, 450))); 790 std::unique_ptr<aura::Window> window1(
791 CreateWindow(gfx::Rect(650, 300, 250, 450)));
790 792
791 // We need a widget for the close button to work because windows are closed 793 // We need a widget for the close button to work because windows are closed
792 // via the widget. We also use the widget to determine if the window has been 794 // via the widget. We also use the widget to determine if the window has been
793 // closed or not. We explicity create the widget so that the window can be 795 // closed or not. We explicity create the widget so that the window can be
794 // parented to a non-primary root window. 796 // parented to a non-primary root window.
795 scoped_ptr<views::Widget> widget(new views::Widget); 797 std::unique_ptr<views::Widget> widget(new views::Widget);
796 views::Widget::InitParams params; 798 views::Widget::InitParams params;
797 params.bounds = gfx::Rect(650, 0, 400, 400); 799 params.bounds = gfx::Rect(650, 0, 400, 400);
798 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 800 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
799 params.parent = window1->parent(); 801 params.parent = window1->parent();
800 widget->Init(params); 802 widget->Init(params);
801 widget->Show(); 803 widget->Show();
802 804
803 ASSERT_EQ(root_windows[1], window1->GetRootWindow()); 805 ASSERT_EQ(root_windows[1], window1->GetRootWindow());
804 806
805 ToggleOverview(); 807 ToggleOverview();
806 808
807 aura::Window* window2 = widget->GetNativeWindow(); 809 aura::Window* window2 = widget->GetNativeWindow();
808 gfx::RectF bounds = GetTransformedBoundsInRootWindow(window2); 810 gfx::RectF bounds = GetTransformedBoundsInRootWindow(window2);
809 gfx::Point point(bounds.top_right().x() - 1, bounds.top_right().y() - 1); 811 gfx::Point point(bounds.top_right().x() - 1, bounds.top_right().y() - 1);
810 ui::test::EventGenerator event_generator(window2->GetRootWindow(), point); 812 ui::test::EventGenerator event_generator(window2->GetRootWindow(), point);
811 813
812 EXPECT_FALSE(widget->IsClosed()); 814 EXPECT_FALSE(widget->IsClosed());
813 event_generator.ClickLeftButton(); 815 event_generator.ClickLeftButton();
814 EXPECT_TRUE(widget->IsClosed()); 816 EXPECT_TRUE(widget->IsClosed());
815 } 817 }
816 818
817 // Tests entering overview mode with two windows and selecting one. 819 // Tests entering overview mode with two windows and selecting one.
818 TEST_F(WindowSelectorTest, FullscreenWindow) { 820 TEST_F(WindowSelectorTest, FullscreenWindow) {
819 gfx::Rect bounds(0, 0, 400, 400); 821 gfx::Rect bounds(0, 0, 400, 400);
820 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 822 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
821 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 823 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
822 scoped_ptr<aura::Window> panel1(CreatePanelWindow(bounds)); 824 std::unique_ptr<aura::Window> panel1(CreatePanelWindow(bounds));
823 wm::ActivateWindow(window1.get()); 825 wm::ActivateWindow(window1.get());
824 826
825 const wm::WMEvent toggle_fullscreen_event(wm::WM_EVENT_TOGGLE_FULLSCREEN); 827 const wm::WMEvent toggle_fullscreen_event(wm::WM_EVENT_TOGGLE_FULLSCREEN);
826 wm::GetWindowState(window1.get())->OnWMEvent(&toggle_fullscreen_event); 828 wm::GetWindowState(window1.get())->OnWMEvent(&toggle_fullscreen_event);
827 // The panel is hidden in fullscreen mode. 829 // The panel is hidden in fullscreen mode.
828 EXPECT_FALSE(panel1->IsVisible()); 830 EXPECT_FALSE(panel1->IsVisible());
829 EXPECT_TRUE(wm::GetWindowState(window1.get())->IsFullscreen()); 831 EXPECT_TRUE(wm::GetWindowState(window1.get())->IsFullscreen());
830 832
831 // Enter overview and select the fullscreen window. 833 // Enter overview and select the fullscreen window.
832 ToggleOverview(); 834 ToggleOverview();
(...skipping 13 matching lines...) Expand all
846 // again. 848 // again.
847 ToggleOverview(); 849 ToggleOverview();
848 ClickWindow(window2.get()); 850 ClickWindow(window2.get());
849 EXPECT_TRUE(wm::GetWindowState(window1.get())->IsFullscreen()); 851 EXPECT_TRUE(wm::GetWindowState(window1.get())->IsFullscreen());
850 } 852 }
851 853
852 // Tests that the shelf dimming state is removed while in overview and restored 854 // Tests that the shelf dimming state is removed while in overview and restored
853 // on exiting overview. 855 // on exiting overview.
854 TEST_F(WindowSelectorTest, OverviewUndimsShelf) { 856 TEST_F(WindowSelectorTest, OverviewUndimsShelf) {
855 gfx::Rect bounds(0, 0, 400, 400); 857 gfx::Rect bounds(0, 0, 400, 400);
856 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 858 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
857 wm::WindowState* window_state = wm::GetWindowState(window1.get()); 859 wm::WindowState* window_state = wm::GetWindowState(window1.get());
858 window_state->Maximize(); 860 window_state->Maximize();
859 ash::ShelfWidget* shelf = Shell::GetPrimaryRootWindowController()->shelf(); 861 ash::ShelfWidget* shelf = Shell::GetPrimaryRootWindowController()->shelf();
860 EXPECT_TRUE(shelf->GetDimsShelf()); 862 EXPECT_TRUE(shelf->GetDimsShelf());
861 ToggleOverview(); 863 ToggleOverview();
862 EXPECT_FALSE(shelf->GetDimsShelf()); 864 EXPECT_FALSE(shelf->GetDimsShelf());
863 ToggleOverview(); 865 ToggleOverview();
864 EXPECT_TRUE(shelf->GetDimsShelf()); 866 EXPECT_TRUE(shelf->GetDimsShelf());
865 } 867 }
866 868
867 // Tests that entering overview when a fullscreen window is active in maximized 869 // Tests that entering overview when a fullscreen window is active in maximized
868 // mode correctly applies the transformations to the window and correctly 870 // mode correctly applies the transformations to the window and correctly
869 // updates the window bounds on exiting overview mode: http://crbug.com/401664. 871 // updates the window bounds on exiting overview mode: http://crbug.com/401664.
870 TEST_F(WindowSelectorTest, FullscreenWindowMaximizeMode) { 872 TEST_F(WindowSelectorTest, FullscreenWindowMaximizeMode) {
871 gfx::Rect bounds(0, 0, 400, 400); 873 gfx::Rect bounds(0, 0, 400, 400);
872 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 874 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
873 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 875 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
874 Shell::GetInstance()->maximize_mode_controller()-> 876 Shell::GetInstance()->maximize_mode_controller()->
875 EnableMaximizeModeWindowManager(true); 877 EnableMaximizeModeWindowManager(true);
876 wm::ActivateWindow(window2.get()); 878 wm::ActivateWindow(window2.get());
877 wm::ActivateWindow(window1.get()); 879 wm::ActivateWindow(window1.get());
878 gfx::Rect normal_window_bounds(window1->bounds()); 880 gfx::Rect normal_window_bounds(window1->bounds());
879 const wm::WMEvent toggle_fullscreen_event(wm::WM_EVENT_TOGGLE_FULLSCREEN); 881 const wm::WMEvent toggle_fullscreen_event(wm::WM_EVENT_TOGGLE_FULLSCREEN);
880 wm::GetWindowState(window1.get())->OnWMEvent(&toggle_fullscreen_event); 882 wm::GetWindowState(window1.get())->OnWMEvent(&toggle_fullscreen_event);
881 gfx::Rect fullscreen_window_bounds(window1->bounds()); 883 gfx::Rect fullscreen_window_bounds(window1->bounds());
882 EXPECT_NE(normal_window_bounds.ToString(), 884 EXPECT_NE(normal_window_bounds.ToString(),
883 fullscreen_window_bounds.ToString()); 885 fullscreen_window_bounds.ToString());
(...skipping 16 matching lines...) Expand all
900 // the shelf bringing window2 back to the normal bounds. 902 // the shelf bringing window2 back to the normal bounds.
901 ToggleOverview(); 903 ToggleOverview();
902 ClickWindow(window2.get()); 904 ClickWindow(window2.get());
903 EXPECT_EQ(normal_window_bounds.ToString(), 905 EXPECT_EQ(normal_window_bounds.ToString(),
904 window2->GetTargetBounds().ToString()); 906 window2->GetTargetBounds().ToString());
905 } 907 }
906 908
907 // Tests that beginning window selection hides the app list. 909 // Tests that beginning window selection hides the app list.
908 TEST_F(WindowSelectorTest, SelectingHidesAppList) { 910 TEST_F(WindowSelectorTest, SelectingHidesAppList) {
909 gfx::Rect bounds(0, 0, 400, 400); 911 gfx::Rect bounds(0, 0, 400, 400);
910 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 912 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
911 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 913 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
912 Shell::GetInstance()->ShowAppList(nullptr); 914 Shell::GetInstance()->ShowAppList(nullptr);
913 EXPECT_TRUE(Shell::GetInstance()->GetAppListTargetVisibility()); 915 EXPECT_TRUE(Shell::GetInstance()->GetAppListTargetVisibility());
914 ToggleOverview(); 916 ToggleOverview();
915 EXPECT_FALSE(Shell::GetInstance()->GetAppListTargetVisibility()); 917 EXPECT_FALSE(Shell::GetInstance()->GetAppListTargetVisibility());
916 ToggleOverview(); 918 ToggleOverview();
917 } 919 }
918 920
919 // Tests that a minimized window's visibility and layer visibility is correctly 921 // Tests that a minimized window's visibility and layer visibility is correctly
920 // changed when entering overview and restored when leaving overview mode. 922 // changed when entering overview and restored when leaving overview mode.
921 // Crashes after the skia roll in http://crrev.com/274114. 923 // Crashes after the skia roll in http://crrev.com/274114.
922 // http://crbug.com/379570 924 // http://crbug.com/379570
923 TEST_F(WindowSelectorTest, DISABLED_MinimizedWindowVisibility) { 925 TEST_F(WindowSelectorTest, DISABLED_MinimizedWindowVisibility) {
924 gfx::Rect bounds(0, 0, 400, 400); 926 gfx::Rect bounds(0, 0, 400, 400);
925 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 927 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
926 wm::WindowState* window_state = wm::GetWindowState(window1.get()); 928 wm::WindowState* window_state = wm::GetWindowState(window1.get());
927 window_state->Minimize(); 929 window_state->Minimize();
928 EXPECT_FALSE(window1->IsVisible()); 930 EXPECT_FALSE(window1->IsVisible());
929 EXPECT_FALSE(window1->layer()->GetTargetVisibility()); 931 EXPECT_FALSE(window1->layer()->GetTargetVisibility());
930 { 932 {
931 ui::ScopedAnimationDurationScaleMode test_duration_mode( 933 ui::ScopedAnimationDurationScaleMode test_duration_mode(
932 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); 934 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
933 ToggleOverview(); 935 ToggleOverview();
934 EXPECT_TRUE(window1->IsVisible()); 936 EXPECT_TRUE(window1->IsVisible());
935 EXPECT_TRUE(window1->layer()->GetTargetVisibility()); 937 EXPECT_TRUE(window1->layer()->GetTargetVisibility());
936 } 938 }
937 { 939 {
938 ui::ScopedAnimationDurationScaleMode test_duration_mode( 940 ui::ScopedAnimationDurationScaleMode test_duration_mode(
939 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); 941 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
940 ToggleOverview(); 942 ToggleOverview();
941 EXPECT_FALSE(window1->IsVisible()); 943 EXPECT_FALSE(window1->IsVisible());
942 EXPECT_FALSE(window1->layer()->GetTargetVisibility()); 944 EXPECT_FALSE(window1->layer()->GetTargetVisibility());
943 } 945 }
944 } 946 }
945 947
946 // Tests that a bounds change during overview is corrected for. 948 // Tests that a bounds change during overview is corrected for.
947 TEST_F(WindowSelectorTest, BoundsChangeDuringOverview) { 949 TEST_F(WindowSelectorTest, BoundsChangeDuringOverview) {
948 scoped_ptr<aura::Window> window(CreateWindow(gfx::Rect(0, 0, 400, 400))); 950 std::unique_ptr<aura::Window> window(CreateWindow(gfx::Rect(0, 0, 400, 400)));
949 ToggleOverview(); 951 ToggleOverview();
950 gfx::Rect overview_bounds = 952 gfx::Rect overview_bounds =
951 ToEnclosingRect(GetTransformedTargetBounds(window.get())); 953 ToEnclosingRect(GetTransformedTargetBounds(window.get()));
952 window->SetBounds(gfx::Rect(200, 0, 200, 200)); 954 window->SetBounds(gfx::Rect(200, 0, 200, 200));
953 gfx::Rect new_overview_bounds = 955 gfx::Rect new_overview_bounds =
954 ToEnclosingRect(GetTransformedTargetBounds(window.get())); 956 ToEnclosingRect(GetTransformedTargetBounds(window.get()));
955 EXPECT_EQ(overview_bounds.x(), new_overview_bounds.x()); 957 EXPECT_EQ(overview_bounds.x(), new_overview_bounds.x());
956 EXPECT_EQ(overview_bounds.y(), new_overview_bounds.y()); 958 EXPECT_EQ(overview_bounds.y(), new_overview_bounds.y());
957 EXPECT_EQ(overview_bounds.width(), new_overview_bounds.width()); 959 EXPECT_EQ(overview_bounds.width(), new_overview_bounds.width());
958 EXPECT_EQ(overview_bounds.height(), new_overview_bounds.height()); 960 EXPECT_EQ(overview_bounds.height(), new_overview_bounds.height());
959 ToggleOverview(); 961 ToggleOverview();
960 } 962 }
961 963
962 // Tests that a newly created window aborts overview. 964 // Tests that a newly created window aborts overview.
963 TEST_F(WindowSelectorTest, NewWindowCancelsOveriew) { 965 TEST_F(WindowSelectorTest, NewWindowCancelsOveriew) {
964 gfx::Rect bounds(0, 0, 400, 400); 966 gfx::Rect bounds(0, 0, 400, 400);
965 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 967 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
966 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 968 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
967 ToggleOverview(); 969 ToggleOverview();
968 EXPECT_TRUE(IsSelecting()); 970 EXPECT_TRUE(IsSelecting());
969 971
970 // A window being created should exit overview mode. 972 // A window being created should exit overview mode.
971 scoped_ptr<aura::Window> window3(CreateWindow(bounds)); 973 std::unique_ptr<aura::Window> window3(CreateWindow(bounds));
972 EXPECT_FALSE(IsSelecting()); 974 EXPECT_FALSE(IsSelecting());
973 } 975 }
974 976
975 // Tests that a window activation exits overview mode. 977 // Tests that a window activation exits overview mode.
976 TEST_F(WindowSelectorTest, ActivationCancelsOveriew) { 978 TEST_F(WindowSelectorTest, ActivationCancelsOveriew) {
977 gfx::Rect bounds(0, 0, 400, 400); 979 gfx::Rect bounds(0, 0, 400, 400);
978 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 980 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
979 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 981 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
980 window2->Focus(); 982 window2->Focus();
981 ToggleOverview(); 983 ToggleOverview();
982 EXPECT_TRUE(IsSelecting()); 984 EXPECT_TRUE(IsSelecting());
983 985
984 // A window being activated should exit overview mode. 986 // A window being activated should exit overview mode.
985 window1->Focus(); 987 window1->Focus();
986 EXPECT_FALSE(IsSelecting()); 988 EXPECT_FALSE(IsSelecting());
987 989
988 // window1 should be focused after exiting even though window2 was focused on 990 // window1 should be focused after exiting even though window2 was focused on
989 // entering overview because we exited due to an activation. 991 // entering overview because we exited due to an activation.
990 EXPECT_EQ(window1.get(), GetFocusedWindow()); 992 EXPECT_EQ(window1.get(), GetFocusedWindow());
991 } 993 }
992 994
993 // Tests that exiting overview mode without selecting a window restores focus 995 // Tests that exiting overview mode without selecting a window restores focus
994 // to the previously focused window. 996 // to the previously focused window.
995 TEST_F(WindowSelectorTest, CancelRestoresFocus) { 997 TEST_F(WindowSelectorTest, CancelRestoresFocus) {
996 gfx::Rect bounds(0, 0, 400, 400); 998 gfx::Rect bounds(0, 0, 400, 400);
997 scoped_ptr<aura::Window> window(CreateWindow(bounds)); 999 std::unique_ptr<aura::Window> window(CreateWindow(bounds));
998 wm::ActivateWindow(window.get()); 1000 wm::ActivateWindow(window.get());
999 EXPECT_EQ(window.get(), GetFocusedWindow()); 1001 EXPECT_EQ(window.get(), GetFocusedWindow());
1000 1002
1001 // In overview mode, the text filter widget should be focused. 1003 // In overview mode, the text filter widget should be focused.
1002 ToggleOverview(); 1004 ToggleOverview();
1003 EXPECT_EQ(text_filter_widget()->GetNativeWindow(), GetFocusedWindow()); 1005 EXPECT_EQ(text_filter_widget()->GetNativeWindow(), GetFocusedWindow());
1004 1006
1005 // If canceling overview mode, focus should be restored. 1007 // If canceling overview mode, focus should be restored.
1006 ToggleOverview(); 1008 ToggleOverview();
1007 EXPECT_EQ(window.get(), GetFocusedWindow()); 1009 EXPECT_EQ(window.get(), GetFocusedWindow());
1008 } 1010 }
1009 1011
1010 // Tests that overview mode is exited if the last remaining window is destroyed. 1012 // Tests that overview mode is exited if the last remaining window is destroyed.
1011 TEST_F(WindowSelectorTest, LastWindowDestroyed) { 1013 TEST_F(WindowSelectorTest, LastWindowDestroyed) {
1012 gfx::Rect bounds(0, 0, 400, 400); 1014 gfx::Rect bounds(0, 0, 400, 400);
1013 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 1015 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
1014 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 1016 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
1015 ToggleOverview(); 1017 ToggleOverview();
1016 1018
1017 window1.reset(); 1019 window1.reset();
1018 window2.reset(); 1020 window2.reset();
1019 EXPECT_FALSE(IsSelecting()); 1021 EXPECT_FALSE(IsSelecting());
1020 } 1022 }
1021 1023
1022 // Tests that entering overview mode restores a window to its original 1024 // Tests that entering overview mode restores a window to its original
1023 // target location. 1025 // target location.
1024 TEST_F(WindowSelectorTest, QuickReentryRestoresInitialTransform) { 1026 TEST_F(WindowSelectorTest, QuickReentryRestoresInitialTransform) {
1025 gfx::Rect bounds(0, 0, 400, 400); 1027 gfx::Rect bounds(0, 0, 400, 400);
1026 scoped_ptr<aura::Window> window(CreateWindow(bounds)); 1028 std::unique_ptr<aura::Window> window(CreateWindow(bounds));
1027 gfx::Rect initial_bounds = ToEnclosingRect( 1029 gfx::Rect initial_bounds = ToEnclosingRect(
1028 GetTransformedBounds(window.get())); 1030 GetTransformedBounds(window.get()));
1029 ToggleOverview(); 1031 ToggleOverview();
1030 // Quickly exit and reenter overview mode. The window should still be 1032 // Quickly exit and reenter overview mode. The window should still be
1031 // animating when we reenter. We cannot short circuit animations for this but 1033 // animating when we reenter. We cannot short circuit animations for this but
1032 // we also don't have to wait for them to complete. 1034 // we also don't have to wait for them to complete.
1033 { 1035 {
1034 ui::ScopedAnimationDurationScaleMode test_duration_mode( 1036 ui::ScopedAnimationDurationScaleMode test_duration_mode(
1035 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); 1037 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
1036 ToggleOverview(); 1038 ToggleOverview();
1037 ToggleOverview(); 1039 ToggleOverview();
1038 } 1040 }
1039 EXPECT_NE(initial_bounds, ToEnclosingRect( 1041 EXPECT_NE(initial_bounds, ToEnclosingRect(
1040 GetTransformedTargetBounds(window.get()))); 1042 GetTransformedTargetBounds(window.get())));
1041 ToggleOverview(); 1043 ToggleOverview();
1042 EXPECT_FALSE(IsSelecting()); 1044 EXPECT_FALSE(IsSelecting());
1043 EXPECT_EQ(initial_bounds, ToEnclosingRect( 1045 EXPECT_EQ(initial_bounds, ToEnclosingRect(
1044 GetTransformedTargetBounds(window.get()))); 1046 GetTransformedTargetBounds(window.get())));
1045 } 1047 }
1046 1048
1047 // Tests that windows with modal child windows are transformed with the modal 1049 // Tests that windows with modal child windows are transformed with the modal
1048 // child even though not activatable themselves. 1050 // child even though not activatable themselves.
1049 TEST_F(WindowSelectorTest, ModalChild) { 1051 TEST_F(WindowSelectorTest, ModalChild) {
1050 gfx::Rect bounds(0, 0, 400, 400); 1052 gfx::Rect bounds(0, 0, 400, 400);
1051 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 1053 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
1052 scoped_ptr<aura::Window> child1(CreateWindow(bounds)); 1054 std::unique_ptr<aura::Window> child1(CreateWindow(bounds));
1053 child1->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW); 1055 child1->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW);
1054 ::wm::AddTransientChild(window1.get(), child1.get()); 1056 ::wm::AddTransientChild(window1.get(), child1.get());
1055 EXPECT_EQ(window1->parent(), child1->parent()); 1057 EXPECT_EQ(window1->parent(), child1->parent());
1056 ToggleOverview(); 1058 ToggleOverview();
1057 EXPECT_TRUE(window1->IsVisible()); 1059 EXPECT_TRUE(window1->IsVisible());
1058 EXPECT_TRUE(child1->IsVisible()); 1060 EXPECT_TRUE(child1->IsVisible());
1059 EXPECT_EQ(ToEnclosingRect(GetTransformedTargetBounds(child1.get())), 1061 EXPECT_EQ(ToEnclosingRect(GetTransformedTargetBounds(child1.get())),
1060 ToEnclosingRect(GetTransformedTargetBounds(window1.get()))); 1062 ToEnclosingRect(GetTransformedTargetBounds(window1.get())));
1061 ToggleOverview(); 1063 ToggleOverview();
1062 } 1064 }
1063 1065
1064 // Tests that clicking a modal window's parent activates the modal window in 1066 // Tests that clicking a modal window's parent activates the modal window in
1065 // overview. 1067 // overview.
1066 TEST_F(WindowSelectorTest, ClickModalWindowParent) { 1068 TEST_F(WindowSelectorTest, ClickModalWindowParent) {
1067 scoped_ptr<aura::Window> window1(CreateWindow(gfx::Rect(0, 0, 180, 180))); 1069 std::unique_ptr<aura::Window> window1(
1068 scoped_ptr<aura::Window> child1(CreateWindow(gfx::Rect(200, 0, 180, 180))); 1070 CreateWindow(gfx::Rect(0, 0, 180, 180)));
1071 std::unique_ptr<aura::Window> child1(
1072 CreateWindow(gfx::Rect(200, 0, 180, 180)));
1069 child1->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW); 1073 child1->SetProperty(aura::client::kModalKey, ui::MODAL_TYPE_WINDOW);
1070 ::wm::AddTransientChild(window1.get(), child1.get()); 1074 ::wm::AddTransientChild(window1.get(), child1.get());
1071 EXPECT_FALSE(WindowsOverlapping(window1.get(), child1.get())); 1075 EXPECT_FALSE(WindowsOverlapping(window1.get(), child1.get()));
1072 EXPECT_EQ(window1->parent(), child1->parent()); 1076 EXPECT_EQ(window1->parent(), child1->parent());
1073 ToggleOverview(); 1077 ToggleOverview();
1074 // Given that their relative positions are preserved, the windows should still 1078 // Given that their relative positions are preserved, the windows should still
1075 // not overlap. 1079 // not overlap.
1076 EXPECT_FALSE(WindowsOverlapping(window1.get(), child1.get())); 1080 EXPECT_FALSE(WindowsOverlapping(window1.get(), child1.get()));
1077 ClickWindow(window1.get()); 1081 ClickWindow(window1.get());
1078 EXPECT_FALSE(IsSelecting()); 1082 EXPECT_FALSE(IsSelecting());
1079 1083
1080 // Clicking on window1 should activate child1. 1084 // Clicking on window1 should activate child1.
1081 EXPECT_TRUE(wm::IsActiveWindow(child1.get())); 1085 EXPECT_TRUE(wm::IsActiveWindow(child1.get()));
1082 } 1086 }
1083 1087
1084 // Tests that windows remain on the display they are currently on in overview 1088 // Tests that windows remain on the display they are currently on in overview
1085 // mode, and that the close buttons are on matching displays. 1089 // mode, and that the close buttons are on matching displays.
1086 TEST_F(WindowSelectorTest, MultipleDisplays) { 1090 TEST_F(WindowSelectorTest, MultipleDisplays) {
1087 if (!SupportsMultipleDisplays()) 1091 if (!SupportsMultipleDisplays())
1088 return; 1092 return;
1089 1093
1090 UpdateDisplay("600x400,600x400"); 1094 UpdateDisplay("600x400,600x400");
1091 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); 1095 aura::Window::Windows root_windows = Shell::GetAllRootWindows();
1092 gfx::Rect bounds1(0, 0, 400, 400); 1096 gfx::Rect bounds1(0, 0, 400, 400);
1093 gfx::Rect bounds2(650, 0, 400, 400); 1097 gfx::Rect bounds2(650, 0, 400, 400);
1094 1098
1095 scoped_ptr<aura::Window> window1(CreateWindow(bounds1)); 1099 std::unique_ptr<aura::Window> window1(CreateWindow(bounds1));
1096 scoped_ptr<aura::Window> window2(CreateWindow(bounds1)); 1100 std::unique_ptr<aura::Window> window2(CreateWindow(bounds1));
1097 scoped_ptr<aura::Window> window3(CreateWindow(bounds2)); 1101 std::unique_ptr<aura::Window> window3(CreateWindow(bounds2));
1098 scoped_ptr<aura::Window> window4(CreateWindow(bounds2)); 1102 std::unique_ptr<aura::Window> window4(CreateWindow(bounds2));
1099 scoped_ptr<aura::Window> panel1(CreatePanelWindow(bounds1)); 1103 std::unique_ptr<aura::Window> panel1(CreatePanelWindow(bounds1));
1100 scoped_ptr<aura::Window> panel2(CreatePanelWindow(bounds1)); 1104 std::unique_ptr<aura::Window> panel2(CreatePanelWindow(bounds1));
1101 scoped_ptr<aura::Window> panel3(CreatePanelWindow(bounds2)); 1105 std::unique_ptr<aura::Window> panel3(CreatePanelWindow(bounds2));
1102 scoped_ptr<aura::Window> panel4(CreatePanelWindow(bounds2)); 1106 std::unique_ptr<aura::Window> panel4(CreatePanelWindow(bounds2));
1103 EXPECT_EQ(root_windows[0], window1->GetRootWindow()); 1107 EXPECT_EQ(root_windows[0], window1->GetRootWindow());
1104 EXPECT_EQ(root_windows[0], window2->GetRootWindow()); 1108 EXPECT_EQ(root_windows[0], window2->GetRootWindow());
1105 EXPECT_EQ(root_windows[1], window3->GetRootWindow()); 1109 EXPECT_EQ(root_windows[1], window3->GetRootWindow());
1106 EXPECT_EQ(root_windows[1], window4->GetRootWindow()); 1110 EXPECT_EQ(root_windows[1], window4->GetRootWindow());
1107 1111
1108 EXPECT_EQ(root_windows[0], panel1->GetRootWindow()); 1112 EXPECT_EQ(root_windows[0], panel1->GetRootWindow());
1109 EXPECT_EQ(root_windows[0], panel2->GetRootWindow()); 1113 EXPECT_EQ(root_windows[0], panel2->GetRootWindow());
1110 EXPECT_EQ(root_windows[1], panel3->GetRootWindow()); 1114 EXPECT_EQ(root_windows[1], panel3->GetRootWindow());
1111 EXPECT_EQ(root_windows[1], panel4->GetRootWindow()); 1115 EXPECT_EQ(root_windows[1], panel4->GetRootWindow());
1112 1116
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1160 } 1164 }
1161 1165
1162 // Tests removing a display during overview. 1166 // Tests removing a display during overview.
1163 TEST_F(WindowSelectorTest, RemoveDisplay) { 1167 TEST_F(WindowSelectorTest, RemoveDisplay) {
1164 if (!SupportsMultipleDisplays()) 1168 if (!SupportsMultipleDisplays())
1165 return; 1169 return;
1166 1170
1167 UpdateDisplay("400x400,400x400"); 1171 UpdateDisplay("400x400,400x400");
1168 gfx::Rect bounds1(0, 0, 100, 100); 1172 gfx::Rect bounds1(0, 0, 100, 100);
1169 gfx::Rect bounds2(450, 0, 100, 100); 1173 gfx::Rect bounds2(450, 0, 100, 100);
1170 scoped_ptr<aura::Window> window1(CreateWindow(bounds1)); 1174 std::unique_ptr<aura::Window> window1(CreateWindow(bounds1));
1171 scoped_ptr<aura::Window> window2(CreateWindow(bounds2)); 1175 std::unique_ptr<aura::Window> window2(CreateWindow(bounds2));
1172 scoped_ptr<aura::Window> window3(CreatePanelWindow(bounds1)); 1176 std::unique_ptr<aura::Window> window3(CreatePanelWindow(bounds1));
1173 scoped_ptr<aura::Window> window4(CreatePanelWindow(bounds2)); 1177 std::unique_ptr<aura::Window> window4(CreatePanelWindow(bounds2));
1174 1178
1175 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); 1179 aura::Window::Windows root_windows = Shell::GetAllRootWindows();
1176 EXPECT_EQ(root_windows[0], window1->GetRootWindow()); 1180 EXPECT_EQ(root_windows[0], window1->GetRootWindow());
1177 EXPECT_EQ(root_windows[1], window2->GetRootWindow()); 1181 EXPECT_EQ(root_windows[1], window2->GetRootWindow());
1178 EXPECT_EQ(root_windows[0], window3->GetRootWindow()); 1182 EXPECT_EQ(root_windows[0], window3->GetRootWindow());
1179 EXPECT_EQ(root_windows[1], window4->GetRootWindow()); 1183 EXPECT_EQ(root_windows[1], window4->GetRootWindow());
1180 1184
1181 wm::ActivateWindow(window4.get()); 1185 wm::ActivateWindow(window4.get());
1182 wm::ActivateWindow(window3.get()); 1186 wm::ActivateWindow(window3.get());
1183 wm::ActivateWindow(window2.get()); 1187 wm::ActivateWindow(window2.get());
1184 wm::ActivateWindow(window1.get()); 1188 wm::ActivateWindow(window1.get());
1185 1189
1186 ToggleOverview(); 1190 ToggleOverview();
1187 EXPECT_TRUE(IsSelecting()); 1191 EXPECT_TRUE(IsSelecting());
1188 UpdateDisplay("400x400"); 1192 UpdateDisplay("400x400");
1189 EXPECT_FALSE(IsSelecting()); 1193 EXPECT_FALSE(IsSelecting());
1190 } 1194 }
1191 1195
1192 // Tests starting overview during a drag and drop tracking operation. 1196 // Tests starting overview during a drag and drop tracking operation.
1193 // TODO(flackr): Fix memory corruption crash when running locally (not failing 1197 // TODO(flackr): Fix memory corruption crash when running locally (not failing
1194 // on bots). See http://crbug.com/342528. 1198 // on bots). See http://crbug.com/342528.
1195 TEST_F(WindowSelectorTest, DISABLED_DragDropInProgress) { 1199 TEST_F(WindowSelectorTest, DISABLED_DragDropInProgress) {
1196 bool drag_canceled_by_test = false; 1200 bool drag_canceled_by_test = false;
1197 gfx::Rect bounds(0, 0, 400, 400); 1201 gfx::Rect bounds(0, 0, 400, 400);
1198 scoped_ptr<aura::Window> window(CreateWindow(bounds)); 1202 std::unique_ptr<aura::Window> window(CreateWindow(bounds));
1199 test::ShellTestApi shell_test_api(Shell::GetInstance()); 1203 test::ShellTestApi shell_test_api(Shell::GetInstance());
1200 ash::DragDropController* drag_drop_controller = 1204 ash::DragDropController* drag_drop_controller =
1201 shell_test_api.drag_drop_controller(); 1205 shell_test_api.drag_drop_controller();
1202 ui::OSExchangeData data; 1206 ui::OSExchangeData data;
1203 base::ThreadTaskRunnerHandle::Get()->PostTask( 1207 base::ThreadTaskRunnerHandle::Get()->PostTask(
1204 FROM_HERE, 1208 FROM_HERE,
1205 base::Bind(&WindowSelectorTest::ToggleOverview, base::Unretained(this))); 1209 base::Bind(&WindowSelectorTest::ToggleOverview, base::Unretained(this)));
1206 base::ThreadTaskRunnerHandle::Get()->PostTask( 1210 base::ThreadTaskRunnerHandle::Get()->PostTask(
1207 FROM_HERE, 1211 FROM_HERE,
1208 base::Bind(&CancelDrag, drag_drop_controller, &drag_canceled_by_test)); 1212 base::Bind(&CancelDrag, drag_drop_controller, &drag_canceled_by_test));
1209 data.SetString(base::UTF8ToUTF16("I am being dragged")); 1213 data.SetString(base::UTF8ToUTF16("I am being dragged"));
1210 drag_drop_controller->StartDragAndDrop(data, window->GetRootWindow(), 1214 drag_drop_controller->StartDragAndDrop(data, window->GetRootWindow(),
1211 window.get(), gfx::Point(5, 5), ui::DragDropTypes::DRAG_MOVE, 1215 window.get(), gfx::Point(5, 5), ui::DragDropTypes::DRAG_MOVE,
1212 ui::DragDropTypes::DRAG_EVENT_SOURCE_MOUSE); 1216 ui::DragDropTypes::DRAG_EVENT_SOURCE_MOUSE);
1213 RunAllPendingInMessageLoop(); 1217 RunAllPendingInMessageLoop();
1214 EXPECT_FALSE(drag_canceled_by_test); 1218 EXPECT_FALSE(drag_canceled_by_test);
1215 ASSERT_TRUE(IsSelecting()); 1219 ASSERT_TRUE(IsSelecting());
1216 RunAllPendingInMessageLoop(); 1220 RunAllPendingInMessageLoop();
1217 } 1221 }
1218 1222
1219 // Test that a label is created under the window on entering overview mode. 1223 // Test that a label is created under the window on entering overview mode.
1220 TEST_F(WindowSelectorTest, CreateLabelUnderWindow) { 1224 TEST_F(WindowSelectorTest, CreateLabelUnderWindow) {
1221 scoped_ptr<aura::Window> window(CreateWindow(gfx::Rect(0, 0, 100, 100))); 1225 std::unique_ptr<aura::Window> window(CreateWindow(gfx::Rect(0, 0, 100, 100)));
1222 base::string16 window_title = base::UTF8ToUTF16("My window"); 1226 base::string16 window_title = base::UTF8ToUTF16("My window");
1223 window->SetTitle(window_title); 1227 window->SetTitle(window_title);
1224 ToggleOverview(); 1228 ToggleOverview();
1225 WindowSelectorItem* window_item = GetWindowItemsForRoot(0).back(); 1229 WindowSelectorItem* window_item = GetWindowItemsForRoot(0).back();
1226 views::LabelButton* label = GetLabelButtonView(window_item); 1230 views::LabelButton* label = GetLabelButtonView(window_item);
1227 // Has the label view been created? 1231 // Has the label view been created?
1228 ASSERT_TRUE(label); 1232 ASSERT_TRUE(label);
1229 1233
1230 // Verify the label matches the window title. 1234 // Verify the label matches the window title.
1231 EXPECT_EQ(label->GetText(), window_title); 1235 EXPECT_EQ(label->GetText(), window_title);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1270 for (ScopedVector<aura::Window>::iterator iter = windows.begin(); 1274 for (ScopedVector<aura::Window>::iterator iter = windows.begin();
1271 iter != windows.end(); ++iter) { 1275 iter != windows.end(); ++iter) {
1272 EXPECT_TRUE(root_window->bounds().Contains( 1276 EXPECT_TRUE(root_window->bounds().Contains(
1273 ToEnclosingRect(GetTransformedTargetBounds(*iter)))); 1277 ToEnclosingRect(GetTransformedTargetBounds(*iter))));
1274 } 1278 }
1275 } 1279 }
1276 1280
1277 // Tests traversing some windows in overview mode with the tab key. 1281 // Tests traversing some windows in overview mode with the tab key.
1278 TEST_F(WindowSelectorTest, BasicTabKeyNavigation) { 1282 TEST_F(WindowSelectorTest, BasicTabKeyNavigation) {
1279 gfx::Rect bounds(0, 0, 100, 100); 1283 gfx::Rect bounds(0, 0, 100, 100);
1280 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 1284 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
1281 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 1285 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
1282 ToggleOverview(); 1286 ToggleOverview();
1283 1287
1284 const std::vector<WindowSelectorItem*>& overview_windows = 1288 const std::vector<WindowSelectorItem*>& overview_windows =
1285 GetWindowItemsForRoot(0); 1289 GetWindowItemsForRoot(0);
1286 SendKey(ui::VKEY_TAB); 1290 SendKey(ui::VKEY_TAB);
1287 EXPECT_EQ(GetSelectedWindow(), overview_windows[0]->GetWindow()); 1291 EXPECT_EQ(GetSelectedWindow(), overview_windows[0]->GetWindow());
1288 SendKey(ui::VKEY_TAB); 1292 SendKey(ui::VKEY_TAB);
1289 EXPECT_EQ(GetSelectedWindow(), overview_windows[1]->GetWindow()); 1293 EXPECT_EQ(GetSelectedWindow(), overview_windows[1]->GetWindow());
1290 SendKey(ui::VKEY_TAB); 1294 SendKey(ui::VKEY_TAB);
1291 EXPECT_EQ(GetSelectedWindow(), overview_windows[0]->GetWindow()); 1295 EXPECT_EQ(GetSelectedWindow(), overview_windows[0]->GetWindow());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 } 1350 }
1347 1351
1348 // Tests basic selection across multiple monitors. 1352 // Tests basic selection across multiple monitors.
1349 TEST_F(WindowSelectorTest, BasicMultiMonitorArrowKeyNavigation) { 1353 TEST_F(WindowSelectorTest, BasicMultiMonitorArrowKeyNavigation) {
1350 if (!SupportsMultipleDisplays()) 1354 if (!SupportsMultipleDisplays())
1351 return; 1355 return;
1352 1356
1353 UpdateDisplay("400x400,400x400"); 1357 UpdateDisplay("400x400,400x400");
1354 gfx::Rect bounds1(0, 0, 100, 100); 1358 gfx::Rect bounds1(0, 0, 100, 100);
1355 gfx::Rect bounds2(450, 0, 100, 100); 1359 gfx::Rect bounds2(450, 0, 100, 100);
1356 scoped_ptr<aura::Window> window4(CreateWindow(bounds2)); 1360 std::unique_ptr<aura::Window> window4(CreateWindow(bounds2));
1357 scoped_ptr<aura::Window> window3(CreateWindow(bounds2)); 1361 std::unique_ptr<aura::Window> window3(CreateWindow(bounds2));
1358 scoped_ptr<aura::Window> window2(CreateWindow(bounds1)); 1362 std::unique_ptr<aura::Window> window2(CreateWindow(bounds1));
1359 scoped_ptr<aura::Window> window1(CreateWindow(bounds1)); 1363 std::unique_ptr<aura::Window> window1(CreateWindow(bounds1));
1360
1361 1364
1362 ToggleOverview(); 1365 ToggleOverview();
1363 1366
1364 const std::vector<WindowSelectorItem*>& overview_root1 = 1367 const std::vector<WindowSelectorItem*>& overview_root1 =
1365 GetWindowItemsForRoot(0); 1368 GetWindowItemsForRoot(0);
1366 const std::vector<WindowSelectorItem*>& overview_root2 = 1369 const std::vector<WindowSelectorItem*>& overview_root2 =
1367 GetWindowItemsForRoot(1); 1370 GetWindowItemsForRoot(1);
1368 SendKey(ui::VKEY_RIGHT); 1371 SendKey(ui::VKEY_RIGHT);
1369 EXPECT_EQ(GetSelectedWindow(), overview_root1[0]->GetWindow()); 1372 EXPECT_EQ(GetSelectedWindow(), overview_root1[0]->GetWindow());
1370 SendKey(ui::VKEY_RIGHT); 1373 SendKey(ui::VKEY_RIGHT);
1371 EXPECT_EQ(GetSelectedWindow(), overview_root1[1]->GetWindow()); 1374 EXPECT_EQ(GetSelectedWindow(), overview_root1[1]->GetWindow());
1372 SendKey(ui::VKEY_RIGHT); 1375 SendKey(ui::VKEY_RIGHT);
1373 EXPECT_EQ(GetSelectedWindow(), overview_root2[0]->GetWindow()); 1376 EXPECT_EQ(GetSelectedWindow(), overview_root2[0]->GetWindow());
1374 SendKey(ui::VKEY_RIGHT); 1377 SendKey(ui::VKEY_RIGHT);
1375 EXPECT_EQ(GetSelectedWindow(), overview_root2[1]->GetWindow()); 1378 EXPECT_EQ(GetSelectedWindow(), overview_root2[1]->GetWindow());
1376 } 1379 }
1377 1380
1378 // Tests first monitor when display order doesn't match left to right screen 1381 // Tests first monitor when display order doesn't match left to right screen
1379 // positions. 1382 // positions.
1380 TEST_F(WindowSelectorTest, MultiMonitorReversedOrder) { 1383 TEST_F(WindowSelectorTest, MultiMonitorReversedOrder) {
1381 if (!SupportsMultipleDisplays()) 1384 if (!SupportsMultipleDisplays())
1382 return; 1385 return;
1383 1386
1384 UpdateDisplay("400x400,400x400"); 1387 UpdateDisplay("400x400,400x400");
1385 Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays( 1388 Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays(
1386 test::CreateDisplayLayout(display::DisplayPlacement::LEFT, 0)); 1389 test::CreateDisplayLayout(display::DisplayPlacement::LEFT, 0));
1387 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); 1390 aura::Window::Windows root_windows = Shell::GetAllRootWindows();
1388 gfx::Rect bounds1(-350, 0, 100, 100); 1391 gfx::Rect bounds1(-350, 0, 100, 100);
1389 gfx::Rect bounds2(0, 0, 100, 100); 1392 gfx::Rect bounds2(0, 0, 100, 100);
1390 scoped_ptr<aura::Window> window2(CreateWindow(bounds2)); 1393 std::unique_ptr<aura::Window> window2(CreateWindow(bounds2));
1391 scoped_ptr<aura::Window> window1(CreateWindow(bounds1)); 1394 std::unique_ptr<aura::Window> window1(CreateWindow(bounds1));
1392 EXPECT_EQ(root_windows[1], window1->GetRootWindow()); 1395 EXPECT_EQ(root_windows[1], window1->GetRootWindow());
1393 EXPECT_EQ(root_windows[0], window2->GetRootWindow()); 1396 EXPECT_EQ(root_windows[0], window2->GetRootWindow());
1394 1397
1395 ToggleOverview(); 1398 ToggleOverview();
1396 1399
1397 // Coming from the left to right, we should select window1 first being on the 1400 // Coming from the left to right, we should select window1 first being on the
1398 // display to the left. 1401 // display to the left.
1399 SendKey(ui::VKEY_RIGHT); 1402 SendKey(ui::VKEY_RIGHT);
1400 EXPECT_EQ(GetSelectedWindow(), window1.get()); 1403 EXPECT_EQ(GetSelectedWindow(), window1.get());
1401 1404
1402 ToggleOverview(); 1405 ToggleOverview();
1403 ToggleOverview(); 1406 ToggleOverview();
1404 1407
1405 // Coming from right to left, we should select window2 first being on the 1408 // Coming from right to left, we should select window2 first being on the
1406 // display on the right. 1409 // display on the right.
1407 SendKey(ui::VKEY_LEFT); 1410 SendKey(ui::VKEY_LEFT);
1408 EXPECT_EQ(GetSelectedWindow(), window2.get()); 1411 EXPECT_EQ(GetSelectedWindow(), window2.get());
1409 } 1412 }
1410 1413
1411 // Tests three monitors where the grid becomes empty on one of the monitors. 1414 // Tests three monitors where the grid becomes empty on one of the monitors.
1412 TEST_F(WindowSelectorTest, ThreeMonitor) { 1415 TEST_F(WindowSelectorTest, ThreeMonitor) {
1413 if (!SupportsMultipleDisplays()) 1416 if (!SupportsMultipleDisplays())
1414 return; 1417 return;
1415 1418
1416 UpdateDisplay("400x400,400x400,400x400"); 1419 UpdateDisplay("400x400,400x400,400x400");
1417 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); 1420 aura::Window::Windows root_windows = Shell::GetAllRootWindows();
1418 gfx::Rect bounds1(0, 0, 100, 100); 1421 gfx::Rect bounds1(0, 0, 100, 100);
1419 gfx::Rect bounds2(400, 0, 100, 100); 1422 gfx::Rect bounds2(400, 0, 100, 100);
1420 gfx::Rect bounds3(800, 0, 100, 100); 1423 gfx::Rect bounds3(800, 0, 100, 100);
1421 scoped_ptr<aura::Window> window3(CreateWindow(bounds3)); 1424 std::unique_ptr<aura::Window> window3(CreateWindow(bounds3));
1422 scoped_ptr<aura::Window> window2(CreateWindow(bounds2)); 1425 std::unique_ptr<aura::Window> window2(CreateWindow(bounds2));
1423 scoped_ptr<aura::Window> window1(CreateWindow(bounds1)); 1426 std::unique_ptr<aura::Window> window1(CreateWindow(bounds1));
1424 EXPECT_EQ(root_windows[0], window1->GetRootWindow()); 1427 EXPECT_EQ(root_windows[0], window1->GetRootWindow());
1425 EXPECT_EQ(root_windows[1], window2->GetRootWindow()); 1428 EXPECT_EQ(root_windows[1], window2->GetRootWindow());
1426 EXPECT_EQ(root_windows[2], window3->GetRootWindow()); 1429 EXPECT_EQ(root_windows[2], window3->GetRootWindow());
1427 1430
1428 ToggleOverview(); 1431 ToggleOverview();
1429 1432
1430 SendKey(ui::VKEY_RIGHT); 1433 SendKey(ui::VKEY_RIGHT);
1431 SendKey(ui::VKEY_RIGHT); 1434 SendKey(ui::VKEY_RIGHT);
1432 SendKey(ui::VKEY_RIGHT); 1435 SendKey(ui::VKEY_RIGHT);
1433 EXPECT_EQ(GetSelectedWindow(), window3.get()); 1436 EXPECT_EQ(GetSelectedWindow(), window3.get());
(...skipping 13 matching lines...) Expand all
1447 // If the window on the second display is removed, the selected window should 1450 // If the window on the second display is removed, the selected window should
1448 // remain window3. 1451 // remain window3.
1449 EXPECT_EQ(GetSelectedWindow(), window3.get()); 1452 EXPECT_EQ(GetSelectedWindow(), window3.get());
1450 window2.reset(); 1453 window2.reset();
1451 EXPECT_EQ(GetSelectedWindow(), window3.get()); 1454 EXPECT_EQ(GetSelectedWindow(), window3.get());
1452 } 1455 }
1453 1456
1454 // Tests selecting a window in overview mode with the return key. 1457 // Tests selecting a window in overview mode with the return key.
1455 TEST_F(WindowSelectorTest, SelectWindowWithReturnKey) { 1458 TEST_F(WindowSelectorTest, SelectWindowWithReturnKey) {
1456 gfx::Rect bounds(0, 0, 100, 100); 1459 gfx::Rect bounds(0, 0, 100, 100);
1457 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 1460 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
1458 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 1461 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
1459 ToggleOverview(); 1462 ToggleOverview();
1460 1463
1461 // Pressing the return key without a selection widget should not do anything. 1464 // Pressing the return key without a selection widget should not do anything.
1462 SendKey(ui::VKEY_RETURN); 1465 SendKey(ui::VKEY_RETURN);
1463 EXPECT_TRUE(IsSelecting()); 1466 EXPECT_TRUE(IsSelecting());
1464 1467
1465 // Select the first window. 1468 // Select the first window.
1466 ASSERT_TRUE(SelectWindow(window1.get())); 1469 ASSERT_TRUE(SelectWindow(window1.get()));
1467 SendKey(ui::VKEY_RETURN); 1470 SendKey(ui::VKEY_RETURN);
1468 ASSERT_FALSE(IsSelecting()); 1471 ASSERT_FALSE(IsSelecting());
1469 EXPECT_TRUE(wm::IsActiveWindow(window1.get())); 1472 EXPECT_TRUE(wm::IsActiveWindow(window1.get()));
1470 1473
1471 // Select the second window. 1474 // Select the second window.
1472 ToggleOverview(); 1475 ToggleOverview();
1473 ASSERT_TRUE(SelectWindow(window2.get())); 1476 ASSERT_TRUE(SelectWindow(window2.get()));
1474 SendKey(ui::VKEY_RETURN); 1477 SendKey(ui::VKEY_RETURN);
1475 EXPECT_FALSE(IsSelecting()); 1478 EXPECT_FALSE(IsSelecting());
1476 EXPECT_TRUE(wm::IsActiveWindow(window2.get())); 1479 EXPECT_TRUE(wm::IsActiveWindow(window2.get()));
1477 } 1480 }
1478 1481
1479 // Tests that overview mode hides the callout widget. 1482 // Tests that overview mode hides the callout widget.
1480 TEST_F(WindowSelectorTest, WindowOverviewHidesCalloutWidgets) { 1483 TEST_F(WindowSelectorTest, WindowOverviewHidesCalloutWidgets) {
1481 scoped_ptr<aura::Window> panel1(CreatePanelWindow(gfx::Rect(0, 0, 100, 100))); 1484 std::unique_ptr<aura::Window> panel1(
1482 scoped_ptr<aura::Window> panel2(CreatePanelWindow(gfx::Rect(0, 0, 100, 100))); 1485 CreatePanelWindow(gfx::Rect(0, 0, 100, 100)));
1486 std::unique_ptr<aura::Window> panel2(
1487 CreatePanelWindow(gfx::Rect(0, 0, 100, 100)));
1483 PanelLayoutManager* panel_manager = 1488 PanelLayoutManager* panel_manager =
1484 static_cast<PanelLayoutManager*>(panel1->parent()->layout_manager()); 1489 static_cast<PanelLayoutManager*>(panel1->parent()->layout_manager());
1485 1490
1486 // By default, panel callout widgets are visible. 1491 // By default, panel callout widgets are visible.
1487 EXPECT_TRUE( 1492 EXPECT_TRUE(
1488 panel_manager->GetCalloutWidgetForPanel(panel1.get())->IsVisible()); 1493 panel_manager->GetCalloutWidgetForPanel(panel1.get())->IsVisible());
1489 EXPECT_TRUE( 1494 EXPECT_TRUE(
1490 panel_manager->GetCalloutWidgetForPanel(panel2.get())->IsVisible()); 1495 panel_manager->GetCalloutWidgetForPanel(panel2.get())->IsVisible());
1491 1496
1492 // Toggling the overview should hide the callout widgets. 1497 // Toggling the overview should hide the callout widgets.
1493 ToggleOverview(); 1498 ToggleOverview();
1494 EXPECT_FALSE( 1499 EXPECT_FALSE(
1495 panel_manager->GetCalloutWidgetForPanel(panel1.get())->IsVisible()); 1500 panel_manager->GetCalloutWidgetForPanel(panel1.get())->IsVisible());
1496 EXPECT_FALSE( 1501 EXPECT_FALSE(
1497 panel_manager->GetCalloutWidgetForPanel(panel2.get())->IsVisible()); 1502 panel_manager->GetCalloutWidgetForPanel(panel2.get())->IsVisible());
1498 1503
1499 // Ending the overview should show them again. 1504 // Ending the overview should show them again.
1500 ToggleOverview(); 1505 ToggleOverview();
1501 EXPECT_TRUE( 1506 EXPECT_TRUE(
1502 panel_manager->GetCalloutWidgetForPanel(panel1.get())->IsVisible()); 1507 panel_manager->GetCalloutWidgetForPanel(panel1.get())->IsVisible());
1503 EXPECT_TRUE( 1508 EXPECT_TRUE(
1504 panel_manager->GetCalloutWidgetForPanel(panel2.get())->IsVisible()); 1509 panel_manager->GetCalloutWidgetForPanel(panel2.get())->IsVisible());
1505 } 1510 }
1506 1511
1507 // Creates three windows and tests filtering them by title. 1512 // Creates three windows and tests filtering them by title.
1508 TEST_F(WindowSelectorTest, BasicTextFiltering) { 1513 TEST_F(WindowSelectorTest, BasicTextFiltering) {
1509 gfx::Rect bounds(0, 0, 100, 100); 1514 gfx::Rect bounds(0, 0, 100, 100);
1510 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 1515 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
1511 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 1516 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
1512 scoped_ptr<aura::Window> window0(CreateWindow(bounds)); 1517 std::unique_ptr<aura::Window> window0(CreateWindow(bounds));
1513 base::string16 window2_title = base::UTF8ToUTF16("Highway to test"); 1518 base::string16 window2_title = base::UTF8ToUTF16("Highway to test");
1514 base::string16 window1_title = base::UTF8ToUTF16("For those about to test"); 1519 base::string16 window1_title = base::UTF8ToUTF16("For those about to test");
1515 base::string16 window0_title = base::UTF8ToUTF16("We salute you"); 1520 base::string16 window0_title = base::UTF8ToUTF16("We salute you");
1516 window0->SetTitle(window0_title); 1521 window0->SetTitle(window0_title);
1517 window1->SetTitle(window1_title); 1522 window1->SetTitle(window1_title);
1518 window2->SetTitle(window2_title); 1523 window2->SetTitle(window2_title);
1519 ToggleOverview(); 1524 ToggleOverview();
1520 1525
1521 EXPECT_FALSE(selection_widget_active()); 1526 EXPECT_FALSE(selection_widget_active());
1522 EXPECT_FALSE(showing_filter_widget()); 1527 EXPECT_FALSE(showing_filter_widget());
(...skipping 24 matching lines...) Expand all
1547 FilterItems(""); 1552 FilterItems("");
1548 EXPECT_FALSE(showing_filter_widget()); 1553 EXPECT_FALSE(showing_filter_widget());
1549 EXPECT_FALSE(GetWindowItemForWindow(grid_index, window0.get())->dimmed()); 1554 EXPECT_FALSE(GetWindowItemForWindow(grid_index, window0.get())->dimmed());
1550 EXPECT_FALSE(GetWindowItemForWindow(grid_index, window1.get())->dimmed()); 1555 EXPECT_FALSE(GetWindowItemForWindow(grid_index, window1.get())->dimmed());
1551 EXPECT_FALSE(GetWindowItemForWindow(grid_index, window2.get())->dimmed()); 1556 EXPECT_FALSE(GetWindowItemForWindow(grid_index, window2.get())->dimmed());
1552 } 1557 }
1553 1558
1554 // Tests selecting in the overview with dimmed and undimmed items. 1559 // Tests selecting in the overview with dimmed and undimmed items.
1555 TEST_F(WindowSelectorTest, TextFilteringSelection) { 1560 TEST_F(WindowSelectorTest, TextFilteringSelection) {
1556 gfx::Rect bounds(0, 0, 100, 100); 1561 gfx::Rect bounds(0, 0, 100, 100);
1557 scoped_ptr<aura::Window> window2(CreateWindow(bounds)); 1562 std::unique_ptr<aura::Window> window2(CreateWindow(bounds));
1558 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 1563 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
1559 scoped_ptr<aura::Window> window0(CreateWindow(bounds)); 1564 std::unique_ptr<aura::Window> window0(CreateWindow(bounds));
1560 base::string16 window2_title = base::UTF8ToUTF16("Rock and roll"); 1565 base::string16 window2_title = base::UTF8ToUTF16("Rock and roll");
1561 base::string16 window1_title = base::UTF8ToUTF16("Rock and"); 1566 base::string16 window1_title = base::UTF8ToUTF16("Rock and");
1562 base::string16 window0_title = base::UTF8ToUTF16("Rock"); 1567 base::string16 window0_title = base::UTF8ToUTF16("Rock");
1563 window0->SetTitle(window0_title); 1568 window0->SetTitle(window0_title);
1564 window1->SetTitle(window1_title); 1569 window1->SetTitle(window1_title);
1565 window2->SetTitle(window2_title); 1570 window2->SetTitle(window2_title);
1566 ToggleOverview(); 1571 ToggleOverview();
1567 EXPECT_TRUE(SelectWindow(window0.get())); 1572 EXPECT_TRUE(SelectWindow(window0.get()));
1568 EXPECT_TRUE(selection_widget_active()); 1573 EXPECT_TRUE(selection_widget_active());
1569 1574
(...skipping 17 matching lines...) Expand all
1587 // Tests clicking on the desktop itself to cancel overview mode. 1592 // Tests clicking on the desktop itself to cancel overview mode.
1588 TEST_F(WindowSelectorTest, CancelOverviewOnMouseClick) { 1593 TEST_F(WindowSelectorTest, CancelOverviewOnMouseClick) {
1589 // Overview disabled by default. 1594 // Overview disabled by default.
1590 EXPECT_FALSE(IsSelecting()); 1595 EXPECT_FALSE(IsSelecting());
1591 1596
1592 // Point and bounds selected so that they don't intersect. This causes 1597 // Point and bounds selected so that they don't intersect. This causes
1593 // events located at the point to be passed to DesktopBackgroundController, 1598 // events located at the point to be passed to DesktopBackgroundController,
1594 // and not the window. 1599 // and not the window.
1595 gfx::Point point_in_background_page(0, 0); 1600 gfx::Point point_in_background_page(0, 0);
1596 gfx::Rect bounds(10, 10, 100, 100); 1601 gfx::Rect bounds(10, 10, 100, 100);
1597 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 1602 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
1598 ui::test::EventGenerator& generator = GetEventGenerator(); 1603 ui::test::EventGenerator& generator = GetEventGenerator();
1599 // Move mouse to point in the background page. Sending an event here will pass 1604 // Move mouse to point in the background page. Sending an event here will pass
1600 // it to the DesktopBackgroundController in both regular and overview mode. 1605 // it to the DesktopBackgroundController in both regular and overview mode.
1601 generator.MoveMouseTo(point_in_background_page); 1606 generator.MoveMouseTo(point_in_background_page);
1602 1607
1603 // Clicking on the background page while not in overview should not toggle 1608 // Clicking on the background page while not in overview should not toggle
1604 // overview. 1609 // overview.
1605 generator.ClickLeftButton(); 1610 generator.ClickLeftButton();
1606 EXPECT_FALSE(IsSelecting()); 1611 EXPECT_FALSE(IsSelecting());
1607 1612
1608 // Switch to overview mode. 1613 // Switch to overview mode.
1609 ToggleOverview(); 1614 ToggleOverview();
1610 ASSERT_TRUE(IsSelecting()); 1615 ASSERT_TRUE(IsSelecting());
1611 1616
1612 // Click should now exit overview mode. 1617 // Click should now exit overview mode.
1613 generator.ClickLeftButton(); 1618 generator.ClickLeftButton();
1614 EXPECT_FALSE(IsSelecting()); 1619 EXPECT_FALSE(IsSelecting());
1615 } 1620 }
1616 1621
1617 // Tests tapping on the desktop itself to cancel overview mode. 1622 // Tests tapping on the desktop itself to cancel overview mode.
1618 TEST_F(WindowSelectorTest, CancelOverviewOnTap) { 1623 TEST_F(WindowSelectorTest, CancelOverviewOnTap) {
1619 // Overview disabled by default. 1624 // Overview disabled by default.
1620 EXPECT_FALSE(IsSelecting()); 1625 EXPECT_FALSE(IsSelecting());
1621 1626
1622 // Point and bounds selected so that they don't intersect. This causes 1627 // Point and bounds selected so that they don't intersect. This causes
1623 // events located at the point to be passed to DesktopBackgroundController, 1628 // events located at the point to be passed to DesktopBackgroundController,
1624 // and not the window. 1629 // and not the window.
1625 gfx::Point point_in_background_page(0, 0); 1630 gfx::Point point_in_background_page(0, 0);
1626 gfx::Rect bounds(10, 10, 100, 100); 1631 gfx::Rect bounds(10, 10, 100, 100);
1627 scoped_ptr<aura::Window> window1(CreateWindow(bounds)); 1632 std::unique_ptr<aura::Window> window1(CreateWindow(bounds));
1628 ui::test::EventGenerator& generator = GetEventGenerator(); 1633 ui::test::EventGenerator& generator = GetEventGenerator();
1629 1634
1630 // Tapping on the background page while not in overview should not toggle 1635 // Tapping on the background page while not in overview should not toggle
1631 // overview. 1636 // overview.
1632 generator.GestureTapAt(point_in_background_page); 1637 generator.GestureTapAt(point_in_background_page);
1633 EXPECT_FALSE(IsSelecting()); 1638 EXPECT_FALSE(IsSelecting());
1634 1639
1635 // Switch to overview mode. 1640 // Switch to overview mode.
1636 ToggleOverview(); 1641 ToggleOverview();
1637 ASSERT_TRUE(IsSelecting()); 1642 ASSERT_TRUE(IsSelecting());
1638 1643
1639 // Tap should now exit overview mode. 1644 // Tap should now exit overview mode.
1640 generator.GestureTapAt(point_in_background_page); 1645 generator.GestureTapAt(point_in_background_page);
1641 EXPECT_FALSE(IsSelecting()); 1646 EXPECT_FALSE(IsSelecting());
1642 } 1647 }
1643 1648
1644 } // namespace ash 1649 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/overview/window_selector_item.h ('k') | ash/wm/panels/panel_frame_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698