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

Side by Side Diff: ash/wm/dock/docked_window_resizer_unittest.cc

Issue 138003007: [Cleanup] Screen cleanup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: make sure screen_for_shutdown is reset everytime Created 6 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « ash/wm/dock/docked_window_resizer.cc ('k') | ash/wm/drag_window_resizer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (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/root_window_controller.h" 8 #include "ash/root_window_controller.h"
9 #include "ash/screen_ash.h" 9 #include "ash/screen_util.h"
10 #include "ash/shelf/shelf.h" 10 #include "ash/shelf/shelf.h"
11 #include "ash/shelf/shelf_layout_manager.h" 11 #include "ash/shelf/shelf_layout_manager.h"
12 #include "ash/shelf/shelf_model.h" 12 #include "ash/shelf/shelf_model.h"
13 #include "ash/shelf/shelf_types.h" 13 #include "ash/shelf/shelf_types.h"
14 #include "ash/shelf/shelf_widget.h" 14 #include "ash/shelf/shelf_widget.h"
15 #include "ash/shell.h" 15 #include "ash/shell.h"
16 #include "ash/shell_window_ids.h" 16 #include "ash/shell_window_ids.h"
17 #include "ash/test/ash_test_base.h" 17 #include "ash/test/ash_test_base.h"
18 #include "ash/test/cursor_manager_test_api.h" 18 #include "ash/test/cursor_manager_test_api.h"
19 #include "ash/test/shell_test_api.h" 19 #include "ash/test/shell_test_api.h"
(...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 // Dock two windows, undock one. 700 // Dock two windows, undock one.
701 // Test the docked windows area size and default container resizing. 701 // Test the docked windows area size and default container resizing.
702 TEST_P(DockedWindowResizerTest, AttachTwoWindowsDetachOne) { 702 TEST_P(DockedWindowResizerTest, AttachTwoWindowsDetachOne) {
703 if (!SupportsHostWindowResize()) 703 if (!SupportsHostWindowResize())
704 return; 704 return;
705 UpdateDisplay("600x600"); 705 UpdateDisplay("600x600");
706 706
707 scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 707 scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
708 scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 201))); 708 scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 201)));
709 // Work area should cover the whole screen. 709 // Work area should cover the whole screen.
710 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width(), 710 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width(),
711 ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 711 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
712 712
713 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 713 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
714 // A window should be docked at the right edge. 714 // A window should be docked at the right edge.
715 EXPECT_EQ(w1->GetRootWindow()->bounds().right(), 715 EXPECT_EQ(w1->GetRootWindow()->bounds().right(),
716 w1->GetBoundsInScreen().right()); 716 w1->GetBoundsInScreen().right());
717 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); 717 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
718 DockedWindowLayoutManager* manager = 718 DockedWindowLayoutManager* manager =
719 static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager()); 719 static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager());
720 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 720 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
721 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 721 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 } 772 }
773 773
774 // Dock one of the windows. Maximize other testing desktop resizing. 774 // Dock one of the windows. Maximize other testing desktop resizing.
775 TEST_P(DockedWindowResizerTest, AttachWindowMaximizeOther) { 775 TEST_P(DockedWindowResizerTest, AttachWindowMaximizeOther) {
776 if (!SupportsHostWindowResize()) 776 if (!SupportsHostWindowResize())
777 return; 777 return;
778 778
779 scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 779 scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
780 scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 201))); 780 scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 201)));
781 // Work area should cover the whole screen. 781 // Work area should cover the whole screen.
782 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width(), 782 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width(),
783 ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 783 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
784 784
785 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 785 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
786 // A window should be docked at the right edge. 786 // A window should be docked at the right edge.
787 EXPECT_EQ(w1->GetRootWindow()->bounds().right(), 787 EXPECT_EQ(w1->GetRootWindow()->bounds().right(),
788 w1->GetBoundsInScreen().right()); 788 w1->GetBoundsInScreen().right());
789 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); 789 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
790 DockedWindowLayoutManager* manager = 790 DockedWindowLayoutManager* manager =
791 static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager()); 791 static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager());
792 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 792 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
793 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 793 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
(...skipping 13 matching lines...) Expand all
807 // The second window should be floating on the desktop. 807 // The second window should be floating on the desktop.
808 EXPECT_EQ(w2->GetRootWindow()->bounds().right() - 808 EXPECT_EQ(w2->GetRootWindow()->bounds().right() -
809 (w2->bounds().width()/2 + 20), 809 (w2->bounds().width()/2 + 20),
810 w2->GetBoundsInScreen().right()); 810 w2->GetBoundsInScreen().right());
811 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id()); 811 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id());
812 // Dock width should be set to remaining single docked window. 812 // Dock width should be set to remaining single docked window.
813 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); 813 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
814 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 814 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
815 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 815 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
816 // Desktop work area should now shrink. 816 // Desktop work area should now shrink.
817 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() - 817 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
818 docked_width(manager) - min_dock_gap(), 818 docked_width(manager) - min_dock_gap(),
819 ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 819 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
820 820
821 // Maximize the second window - Maximized area should be shrunk. 821 // Maximize the second window - Maximized area should be shrunk.
822 const gfx::Rect restored_bounds = w2->bounds(); 822 const gfx::Rect restored_bounds = w2->bounds();
823 wm::WindowState* w2_state = wm::GetWindowState(w2.get()); 823 wm::WindowState* w2_state = wm::GetWindowState(w2.get());
824 w2_state->Maximize(); 824 w2_state->Maximize();
825 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() - 825 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
826 docked_width(manager) - min_dock_gap(), 826 docked_width(manager) - min_dock_gap(),
827 w2->bounds().width()); 827 w2->bounds().width());
828 828
829 // Detach the first window (this should require very little drag). 829 // Detach the first window (this should require very little drag).
830 ASSERT_NO_FATAL_FAILURE(DragStart(w1.get())); 830 ASSERT_NO_FATAL_FAILURE(DragStart(w1.get()));
831 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 831 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
832 DragMove(-35, 10); 832 DragMove(-35, 10);
833 // Alignment is set to "NONE" when drag starts. 833 // Alignment is set to "NONE" when drag starts.
834 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager)); 834 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
835 // Release the mouse and the window should be no longer attached to the edge. 835 // Release the mouse and the window should be no longer attached to the edge.
836 DragEnd(); 836 DragEnd();
837 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager)); 837 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
838 // Dock should get shrunk and desktop should get expanded. 838 // Dock should get shrunk and desktop should get expanded.
839 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w1->parent()->id()); 839 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w1->parent()->id());
840 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id()); 840 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id());
841 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager)); 841 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
842 EXPECT_EQ(0, docked_width(manager)); 842 EXPECT_EQ(0, docked_width(manager));
843 // The second window should now get resized and take up the whole screen. 843 // The second window should now get resized and take up the whole screen.
844 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width(), 844 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width(),
845 w2->bounds().width()); 845 w2->bounds().width());
846 846
847 // Dock the first window to the left edge. 847 // Dock the first window to the left edge.
848 // Click at an offset from origin to prevent snapping. 848 // Click at an offset from origin to prevent snapping.
849 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin(w1.get(), 10, 0)); 849 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin(w1.get(), 10, 0));
850 // Drag left to get pointer touching the screen edge. 850 // Drag left to get pointer touching the screen edge.
851 DragMove(-w1->bounds().x() - 10, 0); 851 DragMove(-w1->bounds().x() - 10, 0);
852 // Alignment set to "NONE" during the drag of the window when none are docked. 852 // Alignment set to "NONE" during the drag of the window when none are docked.
853 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager)); 853 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
854 // Release the mouse and the window should be now attached to the edge. 854 // Release the mouse and the window should be now attached to the edge.
855 DragEnd(); 855 DragEnd();
856 // Dock should get expanded and desktop should get shrunk. 856 // Dock should get expanded and desktop should get shrunk.
857 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); 857 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
858 EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager)); 858 EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
859 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 859 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
860 // Second window should still be in the desktop. 860 // Second window should still be in the desktop.
861 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id()); 861 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w2->parent()->id());
862 // Maximized window should be shrunk. 862 // Maximized window should be shrunk.
863 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() - 863 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
864 docked_width(manager) - min_dock_gap(), 864 docked_width(manager) - min_dock_gap(),
865 w2->bounds().width()); 865 w2->bounds().width());
866 866
867 // Unmaximize the second window. 867 // Unmaximize the second window.
868 w2_state->Restore(); 868 w2_state->Restore();
869 // Its bounds should get restored. 869 // Its bounds should get restored.
870 EXPECT_EQ(restored_bounds, w2->bounds()); 870 EXPECT_EQ(restored_bounds, w2->bounds());
871 } 871 }
872 872
873 // Dock one window. Test the sticky behavior near screen or desktop edge. 873 // Dock one window. Test the sticky behavior near screen or desktop edge.
874 TEST_P(DockedWindowResizerTest, AttachOneTestSticky) { 874 TEST_P(DockedWindowResizerTest, AttachOneTestSticky) {
875 if (!SupportsHostWindowResize()) 875 if (!SupportsHostWindowResize())
876 return; 876 return;
877 877
878 scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 878 scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
879 scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 201))); 879 scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 201)));
880 // Work area should cover the whole screen. 880 // Work area should cover the whole screen.
881 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width(), 881 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width(),
882 ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 882 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
883 883
884 DragToVerticalPositionAndToEdge(DOCKED_EDGE_LEFT, w1.get(), 20); 884 DragToVerticalPositionAndToEdge(DOCKED_EDGE_LEFT, w1.get(), 20);
885 // A window should be docked at the left edge. 885 // A window should be docked at the left edge.
886 EXPECT_EQ(w1->GetRootWindow()->bounds().x(), 886 EXPECT_EQ(w1->GetRootWindow()->bounds().x(),
887 w1->GetBoundsInScreen().x()); 887 w1->GetBoundsInScreen().x());
888 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); 888 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
889 DockedWindowLayoutManager* manager = 889 DockedWindowLayoutManager* manager =
890 static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager()); 890 static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager());
891 // The first window should be docked. 891 // The first window should be docked.
892 EXPECT_EQ(w1->GetRootWindow()->bounds().x(), 892 EXPECT_EQ(w1->GetRootWindow()->bounds().x(),
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
954 // Release the mouse and the window should be attached to the edge. 954 // Release the mouse and the window should be attached to the edge.
955 DragEnd(); 955 DragEnd();
956 // Both windows are docked now. 956 // Both windows are docked now.
957 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); 957 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
958 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id()); 958 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
959 // Dock should get expanded and desktop should get shrunk. 959 // Dock should get expanded and desktop should get shrunk.
960 EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager)); 960 EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
961 EXPECT_EQ(std::max(w1->bounds().width(), w2->bounds().width()), 961 EXPECT_EQ(std::max(w1->bounds().width(), w2->bounds().width()),
962 docked_width(manager)); 962 docked_width(manager));
963 // Desktop work area should now shrink by dock width. 963 // Desktop work area should now shrink by dock width.
964 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() - 964 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
965 docked_width(manager) - min_dock_gap(), 965 docked_width(manager) - min_dock_gap(),
966 ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 966 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
967 } 967 }
968 968
969 // Dock two windows, resize one. 969 // Dock two windows, resize one.
970 // Test the docked windows area size and remaining desktop resizing. 970 // Test the docked windows area size and remaining desktop resizing.
971 TEST_P(DockedWindowResizerTest, ResizeOneOfTwoWindows) { 971 TEST_P(DockedWindowResizerTest, ResizeOneOfTwoWindows) {
972 if (!SupportsHostWindowResize()) 972 if (!SupportsHostWindowResize())
973 return; 973 return;
974 974
975 // Wider display to start since panels are limited to half the display width. 975 // Wider display to start since panels are limited to half the display width.
976 UpdateDisplay("1000x600"); 976 UpdateDisplay("1000x600");
977 scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 977 scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
978 scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 201))); 978 scoped_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 201)));
979 // Work area should cover the whole screen. 979 // Work area should cover the whole screen.
980 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width(), 980 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width(),
981 ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 981 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
982 982
983 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 983 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
984 // A window should be docked at the right edge. 984 // A window should be docked at the right edge.
985 EXPECT_EQ(w1->GetRootWindow()->bounds().right(), 985 EXPECT_EQ(w1->GetRootWindow()->bounds().right(),
986 w1->GetBoundsInScreen().right()); 986 w1->GetBoundsInScreen().right());
987 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); 987 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
988 DockedWindowLayoutManager* manager = 988 DockedWindowLayoutManager* manager =
989 static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager()); 989 static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager());
990 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 990 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
991 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 991 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
(...skipping 22 matching lines...) Expand all
1014 // Dock should still have both windows in it. 1014 // Dock should still have both windows in it.
1015 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); 1015 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
1016 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id()); 1016 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
1017 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1017 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1018 // w1 is now wider than before. The dock should expand and be as wide as w1. 1018 // w1 is now wider than before. The dock should expand and be as wide as w1.
1019 EXPECT_EQ(previous_width + kResizeSpan1, w1->bounds().width()); 1019 EXPECT_EQ(previous_width + kResizeSpan1, w1->bounds().width());
1020 // Both windows should get resized since they both don't have min/max size. 1020 // Both windows should get resized since they both don't have min/max size.
1021 EXPECT_EQ(w1->bounds().width(), w2->bounds().width()); 1021 EXPECT_EQ(w1->bounds().width(), w2->bounds().width());
1022 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1022 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1023 // Desktop work area should shrink. 1023 // Desktop work area should shrink.
1024 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() - 1024 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
1025 docked_width(manager) - min_dock_gap(), 1025 docked_width(manager) - min_dock_gap(),
1026 ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 1026 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
1027 1027
1028 // Resize the first window left by more than the dock maximum width. 1028 // Resize the first window left by more than the dock maximum width.
1029 // This should cause the window width to be restricted by maximum dock width. 1029 // This should cause the window width to be restricted by maximum dock width.
1030 previous_width = w1->bounds().width(); 1030 previous_width = w1->bounds().width();
1031 const int kResizeSpan2 = 250; 1031 const int kResizeSpan2 = 250;
1032 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w1.get(), 1032 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w1.get(),
1033 0, 20, 1033 0, 20,
1034 HTLEFT)); 1034 HTLEFT));
1035 DragMove(-kResizeSpan2, 0); 1035 DragMove(-kResizeSpan2, 0);
1036 // Alignment set to "RIGHT" during the drag because dock has a window in it. 1036 // Alignment set to "RIGHT" during the drag because dock has a window in it.
1037 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1037 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1038 // Release the mouse and the window should be attached to the edge. 1038 // Release the mouse and the window should be attached to the edge.
1039 DragEnd(); 1039 DragEnd();
1040 // Dock should still have both windows in it. 1040 // Dock should still have both windows in it.
1041 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); 1041 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
1042 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id()); 1042 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
1043 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1043 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1044 // w1 is now as wide as the maximum dock width and the dock should get 1044 // w1 is now as wide as the maximum dock width and the dock should get
1045 // resized to the maximum width. 1045 // resized to the maximum width.
1046 EXPECT_EQ(max_width(), w1->bounds().width()); 1046 EXPECT_EQ(max_width(), w1->bounds().width());
1047 // Both windows should get resized since they both don't have min/max size. 1047 // Both windows should get resized since they both don't have min/max size.
1048 EXPECT_EQ(w1->bounds().width(), w2->bounds().width()); 1048 EXPECT_EQ(w1->bounds().width(), w2->bounds().width());
1049 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1049 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1050 // Desktop work area should shrink. 1050 // Desktop work area should shrink.
1051 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() - 1051 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
1052 docked_width(manager) - min_dock_gap(), 1052 docked_width(manager) - min_dock_gap(),
1053 ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 1053 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
1054 1054
1055 // Resize the first window right to get it completely inside the docked area. 1055 // Resize the first window right to get it completely inside the docked area.
1056 previous_width = w1->bounds().width(); 1056 previous_width = w1->bounds().width();
1057 const int kResizeSpan3 = 100; 1057 const int kResizeSpan3 = 100;
1058 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w1.get(), 1058 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w1.get(),
1059 0, 20, 1059 0, 20,
1060 HTLEFT)); 1060 HTLEFT));
1061 DragMove(kResizeSpan3, 0); 1061 DragMove(kResizeSpan3, 0);
1062 // Alignment set to "RIGHT" during the drag because dock has a window in it. 1062 // Alignment set to "RIGHT" during the drag because dock has a window in it.
1063 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1063 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1064 // Release the mouse and the window should be docked. 1064 // Release the mouse and the window should be docked.
1065 DragEnd(); 1065 DragEnd();
1066 // Dock should still have both windows in it. 1066 // Dock should still have both windows in it.
1067 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); 1067 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
1068 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id()); 1068 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
1069 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1069 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1070 // w1 should be narrower than before by the length of the drag. 1070 // w1 should be narrower than before by the length of the drag.
1071 EXPECT_EQ(previous_width - kResizeSpan3, w1->bounds().width()); 1071 EXPECT_EQ(previous_width - kResizeSpan3, w1->bounds().width());
1072 // Both windows should get resized since they both don't have min/max size. 1072 // Both windows should get resized since they both don't have min/max size.
1073 EXPECT_EQ(w1->bounds().width(), w2->bounds().width()); 1073 EXPECT_EQ(w1->bounds().width(), w2->bounds().width());
1074 // The dock should be as wide as w1 or w2. 1074 // The dock should be as wide as w1 or w2.
1075 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1075 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1076 // Desktop work area should shrink. 1076 // Desktop work area should shrink.
1077 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w2.get()).width() - 1077 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
1078 docked_width(manager) - min_dock_gap(), 1078 docked_width(manager) - min_dock_gap(),
1079 ScreenAsh::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 1079 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
1080 1080
1081 // Resize the first window left to be overhang again. 1081 // Resize the first window left to be overhang again.
1082 previous_width = w1->bounds().width(); 1082 previous_width = w1->bounds().width();
1083 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w1.get(), 1083 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w1.get(),
1084 0, 20, 1084 0, 20,
1085 HTLEFT)); 1085 HTLEFT));
1086 DragMove(-kResizeSpan3, 0); 1086 DragMove(-kResizeSpan3, 0);
1087 DragEnd(); 1087 DragEnd();
1088 EXPECT_EQ(previous_width + kResizeSpan3, w1->bounds().width()); 1088 EXPECT_EQ(previous_width + kResizeSpan3, w1->bounds().width());
1089 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); 1089 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
(...skipping 10 matching lines...) Expand all
1100 // Release the mouse and the window should be no longer attached to the edge. 1100 // Release the mouse and the window should be no longer attached to the edge.
1101 DragEnd(); 1101 DragEnd();
1102 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w1->parent()->id()); 1102 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w1->parent()->id());
1103 // Dock should be as wide as w2 (and same as ideal width). 1103 // Dock should be as wide as w2 (and same as ideal width).
1104 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1104 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1105 EXPECT_EQ(ideal_width(), docked_width(manager)); 1105 EXPECT_EQ(ideal_width(), docked_width(manager));
1106 EXPECT_EQ(w2->bounds().width(), docked_width(manager)); 1106 EXPECT_EQ(w2->bounds().width(), docked_width(manager));
1107 // The second window should be still docked. 1107 // The second window should be still docked.
1108 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id()); 1108 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w2->parent()->id());
1109 // Desktop work area should be inset. 1109 // Desktop work area should be inset.
1110 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w1.get()).width() - 1110 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w1.get()).width() -
1111 docked_width(manager) - min_dock_gap(), 1111 docked_width(manager) - min_dock_gap(),
1112 ScreenAsh::GetDisplayWorkAreaBoundsInParent(w1.get()).width()); 1112 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w1.get()).width());
1113 } 1113 }
1114 1114
1115 // Dock a window, resize it and test that undocking it preserves the width. 1115 // Dock a window, resize it and test that undocking it preserves the width.
1116 TEST_P(DockedWindowResizerTest, ResizingKeepsWidth) { 1116 TEST_P(DockedWindowResizerTest, ResizingKeepsWidth) {
1117 if (!SupportsHostWindowResize()) 1117 if (!SupportsHostWindowResize())
1118 return; 1118 return;
1119 1119
1120 // Wider display to start since panels are limited to half the display width. 1120 // Wider display to start since panels are limited to half the display width.
1121 UpdateDisplay("1000x600"); 1121 UpdateDisplay("1000x600");
1122 scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 1122 scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
1298 } 1298 }
1299 1299
1300 // Tests that dragging a window down to shelf attaches a panel but does not 1300 // Tests that dragging a window down to shelf attaches a panel but does not
1301 // attach a regular window. 1301 // attach a regular window.
1302 TEST_P(DockedWindowResizerTest, DragToShelf) { 1302 TEST_P(DockedWindowResizerTest, DragToShelf) {
1303 if (!SupportsHostWindowResize()) 1303 if (!SupportsHostWindowResize())
1304 return; 1304 return;
1305 1305
1306 scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 1306 scoped_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
1307 // Work area should cover the whole screen. 1307 // Work area should cover the whole screen.
1308 EXPECT_EQ(ScreenAsh::GetDisplayBoundsInParent(w1.get()).width(), 1308 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w1.get()).width(),
1309 ScreenAsh::GetDisplayWorkAreaBoundsInParent(w1.get()).width()); 1309 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w1.get()).width());
1310 1310
1311 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 1311 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
1312 // A window should be docked at the right edge. 1312 // A window should be docked at the right edge.
1313 EXPECT_EQ(w1->GetRootWindow()->bounds().right(), 1313 EXPECT_EQ(w1->GetRootWindow()->bounds().right(),
1314 w1->GetBoundsInScreen().right()); 1314 w1->GetBoundsInScreen().right());
1315 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); 1315 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
1316 DockedWindowLayoutManager* manager = 1316 DockedWindowLayoutManager* manager =
1317 static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager()); 1317 static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager());
1318 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1318 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1319 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1319 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1444 static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager()); 1444 static_cast<DockedWindowLayoutManager*>(w1->parent()->layout_manager());
1445 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1445 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1446 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1446 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1447 EXPECT_TRUE(window_state->IsDocked()); 1447 EXPECT_TRUE(window_state->IsDocked());
1448 EXPECT_FALSE(window_state->IsSnapped()); 1448 EXPECT_FALSE(window_state->IsSnapped());
1449 1449
1450 // Side snap at right edge. 1450 // Side snap at right edge.
1451 internal::SnapSizer::SnapWindow(window_state, 1451 internal::SnapSizer::SnapWindow(window_state,
1452 internal::SnapSizer::RIGHT_EDGE); 1452 internal::SnapSizer::RIGHT_EDGE);
1453 // The window should be snapped at the right edge and the dock should close. 1453 // The window should be snapped at the right edge and the dock should close.
1454 gfx::Rect work_area(ScreenAsh::GetDisplayWorkAreaBoundsInParent(w1.get())); 1454 gfx::Rect work_area(ScreenUtil::GetDisplayWorkAreaBoundsInParent(w1.get()));
1455 EXPECT_EQ(0, docked_width(manager)); 1455 EXPECT_EQ(0, docked_width(manager));
1456 EXPECT_EQ(work_area.height(), w1->bounds().height()); 1456 EXPECT_EQ(work_area.height(), w1->bounds().height());
1457 EXPECT_EQ(work_area.right(), w1->bounds().right()); 1457 EXPECT_EQ(work_area.right(), w1->bounds().right());
1458 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w1->parent()->id()); 1458 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w1->parent()->id());
1459 EXPECT_FALSE(window_state->IsDocked()); 1459 EXPECT_FALSE(window_state->IsDocked());
1460 EXPECT_TRUE(window_state->IsSnapped()); 1460 EXPECT_TRUE(window_state->IsSnapped());
1461 1461
1462 // Dock again. 1462 // Dock again.
1463 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 1463 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
1464 // A window should be docked at the right edge. 1464 // A window should be docked at the right edge.
1465 EXPECT_EQ(w1->GetRootWindow()->bounds().right(), 1465 EXPECT_EQ(w1->GetRootWindow()->bounds().right(),
1466 w1->GetBoundsInScreen().right()); 1466 w1->GetBoundsInScreen().right());
1467 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id()); 1467 EXPECT_EQ(internal::kShellWindowId_DockedContainer, w1->parent()->id());
1468 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1468 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1469 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1469 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1470 EXPECT_TRUE(window_state->IsDocked()); 1470 EXPECT_TRUE(window_state->IsDocked());
1471 EXPECT_FALSE(window_state->IsSnapped()); 1471 EXPECT_FALSE(window_state->IsSnapped());
1472 1472
1473 // Side snap at left edge. 1473 // Side snap at left edge.
1474 internal::SnapSizer::SnapWindow(window_state, 1474 internal::SnapSizer::SnapWindow(window_state,
1475 internal::SnapSizer::LEFT_EDGE); 1475 internal::SnapSizer::LEFT_EDGE);
1476 // The window should be snapped at the right edge and the dock should close. 1476 // The window should be snapped at the right edge and the dock should close.
1477 EXPECT_EQ(work_area.ToString(), 1477 EXPECT_EQ(work_area.ToString(),
1478 ScreenAsh::GetDisplayWorkAreaBoundsInParent(w1.get()).ToString()); 1478 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w1.get()).ToString());
1479 EXPECT_EQ(0, docked_width(manager)); 1479 EXPECT_EQ(0, docked_width(manager));
1480 EXPECT_EQ(work_area.height(), w1->bounds().height()); 1480 EXPECT_EQ(work_area.height(), w1->bounds().height());
1481 EXPECT_EQ(work_area.x(), w1->bounds().x()); 1481 EXPECT_EQ(work_area.x(), w1->bounds().x());
1482 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w1->parent()->id()); 1482 EXPECT_EQ(internal::kShellWindowId_DefaultContainer, w1->parent()->id());
1483 EXPECT_FALSE(window_state->IsDocked()); 1483 EXPECT_FALSE(window_state->IsDocked());
1484 EXPECT_TRUE(window_state->IsSnapped()); 1484 EXPECT_TRUE(window_state->IsSnapped());
1485 } 1485 }
1486 1486
1487 // Tests run twice - on both panels and normal windows 1487 // Tests run twice - on both panels and normal windows
1488 INSTANTIATE_TEST_CASE_P(NormalOrPanel, 1488 INSTANTIATE_TEST_CASE_P(NormalOrPanel,
1489 DockedWindowResizerTest, 1489 DockedWindowResizerTest,
1490 testing::Values(ui::wm::WINDOW_TYPE_NORMAL, 1490 testing::Values(ui::wm::WINDOW_TYPE_NORMAL,
1491 ui::wm::WINDOW_TYPE_PANEL)); 1491 ui::wm::WINDOW_TYPE_PANEL));
1492 } // namespace internal 1492 } // namespace internal
1493 } // namespace ash 1493 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/dock/docked_window_resizer.cc ('k') | ash/wm/drag_window_resizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698