OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "ash/wm/dock/docked_window_resizer.h" | 5 #include "ash/wm/dock/docked_window_resizer.h" |
6 | 6 |
7 #include "ash/ash_switches.h" | 7 #include "ash/ash_switches.h" |
8 #include "ash/launcher/launcher.h" | 8 #include "ash/launcher/launcher.h" |
9 #include "ash/launcher/launcher_model.h" | 9 #include "ash/launcher/launcher_model.h" |
10 #include "ash/root_window_controller.h" | 10 #include "ash/root_window_controller.h" |
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 EXPECT_EQ(w1->GetRootWindow()->bounds().right(), | 556 EXPECT_EQ(w1->GetRootWindow()->bounds().right(), |
557 w1->GetBoundsInScreen().right()); | 557 w1->GetBoundsInScreen().right()); |
558 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); | 558 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); |
559 | 559 |
560 // The second window should be near the left edge but not snapped. | 560 // The second window should be near the left edge but not snapped. |
561 // Normal window will get side-maximized while panels will not. | 561 // Normal window will get side-maximized while panels will not. |
562 EXPECT_EQ(w2->GetRootWindow()->bounds().x(), w2->GetBoundsInScreen().x()); | 562 EXPECT_EQ(w2->GetRootWindow()->bounds().x(), w2->GetBoundsInScreen().x()); |
563 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id()); | 563 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id()); |
564 } | 564 } |
565 | 565 |
566 // Reverting drag | 566 // Tests that reverting a drag restores docked state if a window was docked. |
567 TEST_P(DockedWindowResizerTest, RevertDragRestoresAttachment) { | 567 TEST_P(DockedWindowResizerTest, RevertDragRestoresAttachment) { |
568 if (!SupportsHostWindowResize()) | 568 if (!SupportsHostWindowResize()) |
569 return; | 569 return; |
570 | 570 |
571 scoped_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); | 571 scoped_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); |
572 DragRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(), 0); | 572 DragRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(), 0); |
573 | 573 |
574 // The window should be attached and snapped to the right edge. | 574 // The window should be attached and snapped to the right edge. |
575 EXPECT_EQ(window->GetRootWindow()->bounds().right(), | 575 EXPECT_EQ(window->GetRootWindow()->bounds().right(), |
576 window->GetBoundsInScreen().right()); | 576 window->GetBoundsInScreen().right()); |
577 EXPECT_EQ(internal::kShellWindowId_DockedContainer, window->parent()->id()); | 577 EXPECT_EQ(internal::kShellWindowId_DockedContainer, window->parent()->id()); |
578 | 578 |
579 // Drag the window out but revert the drag | 579 // Drag the window out but revert the drag |
580 ASSERT_NO_FATAL_FAILURE(DragStart(window.get())); | 580 ASSERT_NO_FATAL_FAILURE(DragStart(window.get())); |
581 DragMove(-50, 0); | 581 DragMove(-50, 0); |
582 DragRevert(); | 582 DragRevert(); |
583 EXPECT_EQ(internal::kShellWindowId_DockedContainer, window->parent()->id()); | 583 EXPECT_EQ(internal::kShellWindowId_DockedContainer, window->parent()->id()); |
584 | 584 |
585 // Detach window. | 585 // Detach window. |
586 ASSERT_NO_FATAL_FAILURE(DragStart(window.get())); | 586 ASSERT_NO_FATAL_FAILURE(DragStart(window.get())); |
587 DragMove(-50, 0); | 587 DragMove(-50, 0); |
588 DragEnd(); | 588 DragEnd(); |
589 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, | 589 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, |
590 window->parent()->id()); | 590 window->parent()->id()); |
591 } | 591 } |
592 | 592 |
| 593 // Tests that reverting drag restores undocked state if a window was not docked. |
| 594 TEST_P(DockedWindowResizerTest, RevertDockedDragRevertsAttachment) { |
| 595 if (!SupportsHostWindowResize()) |
| 596 return; |
| 597 scoped_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); |
| 598 int previous_container_id = window->parent()->id(); |
| 599 // Drag the window out but revert the drag |
| 600 ASSERT_NO_FATAL_FAILURE(DragStart(window.get())); |
| 601 DragMove(-50 - window->bounds().x(), 50 - window->bounds().y()); |
| 602 EXPECT_EQ(CorrectContainerIdDuringDrag(), window->parent()->id()); |
| 603 DragRevert(); |
| 604 EXPECT_EQ(previous_container_id, window->parent()->id()); |
| 605 } |
| 606 |
593 // Move a docked window to the second display | 607 // Move a docked window to the second display |
594 TEST_P(DockedWindowResizerTest, DragAcrossDisplays) { | 608 TEST_P(DockedWindowResizerTest, DragAcrossDisplays) { |
595 if (!SupportsMultipleDisplays()) | 609 if (!SupportsMultipleDisplays()) |
596 return; | 610 return; |
597 | 611 |
598 UpdateDisplay("800x800,800x800"); | 612 UpdateDisplay("800x800,800x800"); |
599 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | 613 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
600 EXPECT_EQ(2, static_cast<int>(root_windows.size())); | 614 EXPECT_EQ(2, static_cast<int>(root_windows.size())); |
601 scoped_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); | 615 scoped_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); |
602 gfx::Rect initial_bounds = window->GetBoundsInScreen(); | 616 gfx::Rect initial_bounds = window->GetBoundsInScreen(); |
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1153 child->GetBoundsInScreen().origin().ToString()); | 1167 child->GetBoundsInScreen().origin().ToString()); |
1154 } | 1168 } |
1155 | 1169 |
1156 // Tests run twice - on both panels and normal windows | 1170 // Tests run twice - on both panels and normal windows |
1157 INSTANTIATE_TEST_CASE_P(NormalOrPanel, | 1171 INSTANTIATE_TEST_CASE_P(NormalOrPanel, |
1158 DockedWindowResizerTest, | 1172 DockedWindowResizerTest, |
1159 testing::Values(aura::client::WINDOW_TYPE_NORMAL, | 1173 testing::Values(aura::client::WINDOW_TYPE_NORMAL, |
1160 aura::client::WINDOW_TYPE_PANEL)); | 1174 aura::client::WINDOW_TYPE_PANEL)); |
1161 } // namespace internal | 1175 } // namespace internal |
1162 } // namespace ash | 1176 } // namespace ash |
OLD | NEW |