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

Side by Side Diff: chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc

Issue 424463002: Makes a window that has been resized to maximized bounds, then maximized and then restored shrink (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Maximizes a window that has been resized to maximized bounds (fixed a test) Created 6 years, 4 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/scoped_target_root_window.h" 5 #include "ash/scoped_target_root_window.h"
6 #include "ash/screen_util.h" 6 #include "ash/screen_util.h"
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/test/ash_test_base.h" 8 #include "ash/test/ash_test_base.h"
9 #include "ash/test/test_shell_delegate.h" 9 #include "ash/test/test_shell_delegate.h"
10 #include "ash/wm/window_positioner.h" 10 #include "ash/wm/window_positioner.h"
(...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 Browser::CreateParams(Browser::TYPE_POPUP, profile.get(), 745 Browser::CreateParams(Browser::TYPE_POPUP, profile.get(),
746 chrome::HOST_DESKTOP_TYPE_ASH))); 746 chrome::HOST_DESKTOP_TYPE_ASH)));
747 747
748 // Tabbed windows should retrieve the saved window state - since there is a 748 // Tabbed windows should retrieve the saved window state - since there is a
749 // top window. 749 // top window.
750 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, 750 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED,
751 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED, 751 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED,
752 ui::SHOW_STATE_NORMAL, 752 ui::SHOW_STATE_NORMAL,
753 BOTH, 753 BOTH,
754 browser_window->browser(), 754 browser_window->browser(),
755 p1600x1200,
755 p1600x1200)); 756 p1600x1200));
757 // A window that is less than the whole work area is set to default state.
msw 2014/08/05 16:44:38 nit: s/that is less/smaller/
varkha 2014/08/05 17:55:23 Done.
756 EXPECT_EQ(ui::SHOW_STATE_DEFAULT, 758 EXPECT_EQ(ui::SHOW_STATE_DEFAULT,
757 GetWindowShowState(ui::SHOW_STATE_DEFAULT, 759 GetWindowShowState(ui::SHOW_STATE_DEFAULT,
758 ui::SHOW_STATE_NORMAL, 760 ui::SHOW_STATE_NORMAL,
759 BOTH, 761 BOTH,
760 browser_window->browser(), 762 browser_window->browser(),
763 p1280x1024,
764 p1600x1200));
765 // A window that is sized to occupy the whole work area is maximized.
766 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED,
767 GetWindowShowState(ui::SHOW_STATE_DEFAULT,
768 ui::SHOW_STATE_NORMAL,
769 BOTH,
770 browser_window->browser(),
771 p1600x1200,
761 p1600x1200)); 772 p1600x1200));
762 // Non tabbed windows should always follow the window saved visibility state. 773 // Non tabbed windows should always follow the window saved visibility state.
763 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, 774 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED,
764 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED, 775 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED,
765 ui::SHOW_STATE_NORMAL, 776 ui::SHOW_STATE_NORMAL,
766 BOTH, 777 BOTH,
767 browser_popup->browser(), 778 browser_popup->browser(),
779 p1600x1200,
768 p1600x1200)); 780 p1600x1200));
769 // The non tabbed window will take the status of the last active of its kind. 781 // The non tabbed window will take the status of the last active of its kind.
770 EXPECT_EQ(ui::SHOW_STATE_NORMAL, 782 EXPECT_EQ(ui::SHOW_STATE_NORMAL,
771 GetWindowShowState(ui::SHOW_STATE_DEFAULT, 783 GetWindowShowState(ui::SHOW_STATE_DEFAULT,
772 ui::SHOW_STATE_NORMAL, 784 ui::SHOW_STATE_NORMAL,
773 BOTH, 785 BOTH,
774 browser_popup->browser(), 786 browser_popup->browser(),
787 p1600x1200,
775 p1600x1200)); 788 p1600x1200));
776 789
777 // Now create a top level window and check again for both. Only the tabbed 790 // Now create a top level window and check again for both. Only the tabbed
778 // window should follow the top level window's state. 791 // window should follow the top level window's state.
779 // Creating a browser & window to play with. 792 // Creating a browser & window to play with.
780 scoped_ptr<TestBrowserWindowAura> browser_window2(CreateTestBrowserWindow( 793 scoped_ptr<TestBrowserWindowAura> browser_window2(CreateTestBrowserWindow(
781 CreateTestWindowInShellWithId(3), 794 CreateTestWindowInShellWithId(3),
782 gfx::Rect(16, 32, 640, 320), 795 gfx::Rect(16, 32, 640, 320),
783 Browser::CreateParams(Browser::TYPE_TABBED, profile.get(), 796 Browser::CreateParams(Browser::TYPE_TABBED, profile.get(),
784 chrome::HOST_DESKTOP_TYPE_ASH))); 797 chrome::HOST_DESKTOP_TYPE_ASH)));
785 798
786 // A tabbed window should now take the top level window state. 799 // A tabbed window should now take the top level window state.
787 EXPECT_EQ(ui::SHOW_STATE_DEFAULT, 800 EXPECT_EQ(ui::SHOW_STATE_DEFAULT,
788 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED, 801 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED,
789 ui::SHOW_STATE_DEFAULT, 802 ui::SHOW_STATE_DEFAULT,
790 BOTH, 803 BOTH,
791 browser_window->browser(), 804 browser_window->browser(),
805 p1600x1200,
792 p1600x1200)); 806 p1600x1200));
793 // Non tabbed windows should always follow the window saved visibility state. 807 // Non tabbed windows should always follow the window saved visibility state.
794 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, 808 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED,
795 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED, 809 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED,
796 ui::SHOW_STATE_MINIMIZED, 810 ui::SHOW_STATE_MINIMIZED,
797 BOTH, 811 BOTH,
798 browser_popup->browser(), 812 browser_popup->browser(),
813 p1600x1200,
799 p1600x1200)); 814 p1600x1200));
800 815
801 // In smaller screen resolutions we default to maximized if there is no other 816 // In smaller screen resolutions we default to maximized if there is no other
802 // window visible. 817 // window visible.
803 int min_size = ash::WindowPositioner::GetForceMaximizedWidthLimit() / 2; 818 int min_size = ash::WindowPositioner::GetForceMaximizedWidthLimit() / 2;
804 if (min_size > 0) { 819 if (min_size > 0) {
805 const gfx::Rect tiny_screen(0, 0, min_size, min_size); 820 const gfx::Rect tiny_screen(0, 0, min_size, min_size);
806 EXPECT_EQ(ui::SHOW_STATE_DEFAULT, 821 EXPECT_EQ(ui::SHOW_STATE_DEFAULT,
807 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED, 822 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED,
808 ui::SHOW_STATE_DEFAULT, 823 ui::SHOW_STATE_DEFAULT,
809 BOTH, 824 BOTH,
810 browser_window->browser(), 825 browser_window->browser(),
826 tiny_screen,
811 tiny_screen)); 827 tiny_screen));
812 browser_window->Hide(); 828 browser_window->Hide();
813 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, 829 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED,
814 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED, 830 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED,
815 ui::SHOW_STATE_DEFAULT, 831 ui::SHOW_STATE_DEFAULT,
816 BOTH, 832 BOTH,
817 browser_window2->browser(), 833 browser_window2->browser(),
834 tiny_screen,
818 tiny_screen)); 835 tiny_screen));
819 836
820 } 837 }
821 } 838 }
822 839
823 // Test that the default show state override behavior is properly handled. 840 // Test that the default show state override behavior is properly handled.
824 TEST_F(WindowSizerAshTest, TestShowStateDefaults) { 841 TEST_F(WindowSizerAshTest, TestShowStateDefaults) {
825 // Creating a browser & window to play with. 842 // Creating a browser & window to play with.
826 scoped_ptr<TestingProfile> profile(new TestingProfile()); 843 scoped_ptr<TestingProfile> profile(new TestingProfile());
827 844
(...skipping 11 matching lines...) Expand all
839 Browser::CreateParams(Browser::TYPE_POPUP, profile.get(), 856 Browser::CreateParams(Browser::TYPE_POPUP, profile.get(),
840 chrome::HOST_DESKTOP_TYPE_ASH))); 857 chrome::HOST_DESKTOP_TYPE_ASH)));
841 858
842 // Check that a browser creation state always get used if not given as 859 // Check that a browser creation state always get used if not given as
843 // SHOW_STATE_DEFAULT. On Windows ASH it should be SHOW_STATE_MAXIMIZED. 860 // SHOW_STATE_DEFAULT. On Windows ASH it should be SHOW_STATE_MAXIMIZED.
844 ui::WindowShowState window_show_state = 861 ui::WindowShowState window_show_state =
845 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED, 862 GetWindowShowState(ui::SHOW_STATE_MAXIMIZED,
846 ui::SHOW_STATE_MAXIMIZED, 863 ui::SHOW_STATE_MAXIMIZED,
847 DEFAULT, 864 DEFAULT,
848 browser_window->browser(), 865 browser_window->browser(),
866 p1600x1200,
849 p1600x1200); 867 p1600x1200);
850 #if defined(OS_WIN) 868 #if defined(OS_WIN)
851 EXPECT_EQ(window_show_state, ui::SHOW_STATE_MAXIMIZED); 869 EXPECT_EQ(window_show_state, ui::SHOW_STATE_MAXIMIZED);
852 #else 870 #else
853 EXPECT_EQ(window_show_state, ui::SHOW_STATE_DEFAULT); 871 EXPECT_EQ(window_show_state, ui::SHOW_STATE_DEFAULT);
854 #endif 872 #endif
855 873
856 browser_window->browser()->set_initial_show_state(ui::SHOW_STATE_MINIMIZED); 874 browser_window->browser()->set_initial_show_state(ui::SHOW_STATE_MINIMIZED);
857 EXPECT_EQ(GetWindowShowState(ui::SHOW_STATE_MAXIMIZED, 875 EXPECT_EQ(GetWindowShowState(ui::SHOW_STATE_MAXIMIZED,
858 ui::SHOW_STATE_MAXIMIZED, 876 ui::SHOW_STATE_MAXIMIZED,
859 BOTH, 877 BOTH,
860 browser_window->browser(), 878 browser_window->browser(),
879 p1600x1200,
861 p1600x1200), ui::SHOW_STATE_MINIMIZED); 880 p1600x1200), ui::SHOW_STATE_MINIMIZED);
862 browser_window->browser()->set_initial_show_state(ui::SHOW_STATE_NORMAL); 881 browser_window->browser()->set_initial_show_state(ui::SHOW_STATE_NORMAL);
863 EXPECT_EQ(GetWindowShowState(ui::SHOW_STATE_MAXIMIZED, 882 EXPECT_EQ(GetWindowShowState(ui::SHOW_STATE_MAXIMIZED,
864 ui::SHOW_STATE_MAXIMIZED, 883 ui::SHOW_STATE_MAXIMIZED,
865 BOTH, 884 BOTH,
866 browser_window->browser(), 885 browser_window->browser(),
886 p1600x1200,
867 p1600x1200), ui::SHOW_STATE_NORMAL); 887 p1600x1200), ui::SHOW_STATE_NORMAL);
868 browser_window->browser()->set_initial_show_state(ui::SHOW_STATE_MAXIMIZED); 888 browser_window->browser()->set_initial_show_state(ui::SHOW_STATE_MAXIMIZED);
869 EXPECT_EQ(GetWindowShowState(ui::SHOW_STATE_NORMAL, 889 EXPECT_EQ(GetWindowShowState(ui::SHOW_STATE_NORMAL,
870 ui::SHOW_STATE_NORMAL, 890 ui::SHOW_STATE_NORMAL,
871 BOTH, 891 BOTH,
872 browser_window->browser(), 892 browser_window->browser(),
893 p1600x1200,
873 p1600x1200), ui::SHOW_STATE_MAXIMIZED); 894 p1600x1200), ui::SHOW_STATE_MAXIMIZED);
874 895
875 // Check that setting the maximized command line option is forcing the 896 // Check that setting the maximized command line option is forcing the
876 // maximized state. 897 // maximized state.
877 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kStartMaximized); 898 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kStartMaximized);
878 899
879 browser_window->browser()->set_initial_show_state(ui::SHOW_STATE_NORMAL); 900 browser_window->browser()->set_initial_show_state(ui::SHOW_STATE_NORMAL);
880 EXPECT_EQ(GetWindowShowState(ui::SHOW_STATE_NORMAL, 901 EXPECT_EQ(GetWindowShowState(ui::SHOW_STATE_NORMAL,
881 ui::SHOW_STATE_NORMAL, 902 ui::SHOW_STATE_NORMAL,
882 BOTH, 903 BOTH,
883 browser_window->browser(), 904 browser_window->browser(),
905 p1600x1200,
884 p1600x1200), ui::SHOW_STATE_MAXIMIZED); 906 p1600x1200), ui::SHOW_STATE_MAXIMIZED);
885 907
886 // The popup should favor the initial show state over the command line. 908 // The popup should favor the initial show state over the command line.
887 EXPECT_EQ(GetWindowShowState(ui::SHOW_STATE_NORMAL, 909 EXPECT_EQ(GetWindowShowState(ui::SHOW_STATE_NORMAL,
888 ui::SHOW_STATE_NORMAL, 910 ui::SHOW_STATE_NORMAL,
889 BOTH, 911 BOTH,
890 browser_popup->browser(), 912 browser_popup->browser(),
913 p1600x1200,
891 p1600x1200), ui::SHOW_STATE_NORMAL); 914 p1600x1200), ui::SHOW_STATE_NORMAL);
892 } 915 }
893 916
894 // Test that the target root window is used as the destionation of 917 TEST_F(WindowSizerAshTest, DefaultStateBecomesMaximized) {
918 // Create a browser which we can use to pass into the GetWindowBounds
msw 2014/08/05 16:44:38 nit: remove "which we can use "
varkha 2014/08/05 17:55:23 Done. Here and elsewhere in this file.
919 // function.
920 scoped_ptr<TestingProfile> profile(new TestingProfile());
921 Browser::CreateParams native_params(profile.get(),
922 chrome::HOST_DESKTOP_TYPE_ASH);
923 scoped_ptr<Browser> browser(
924 chrome::CreateBrowserWithTestWindowForParams(&native_params));
925
926 gfx::Rect display_bounds = ash::Shell::GetInstance()->GetScreen()->
927 GetPrimaryDisplay().bounds();
928 gfx::Rect specified_bounds = display_bounds;
929
930 // Make a window bigger than the display work area.
931 specified_bounds.Inset(-20, -20);
932 ui::WindowShowState show_state = ui::SHOW_STATE_DEFAULT;
933 gfx::Rect bounds;
934 WindowSizer::GetBrowserWindowBoundsAndShowState(
935 std::string(), specified_bounds, browser.get(), &bounds, &show_state);
936 // The window should start maximized with its restore bounds shrunken.
937 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, show_state);
938 EXPECT_NE(display_bounds.ToString(), bounds.ToString());
939 EXPECT_TRUE(display_bounds.Contains(bounds));
940
941 // Make a window smaller than the display work area.
942 specified_bounds.Inset(100, 100);
943 show_state = ui::SHOW_STATE_DEFAULT;
944 WindowSizer::GetBrowserWindowBoundsAndShowState(
945 std::string(), specified_bounds, browser.get(), &bounds, &show_state);
946 // The window should start in default state.
947 EXPECT_EQ(ui::SHOW_STATE_DEFAULT, show_state);
948 EXPECT_EQ(specified_bounds.ToString(), bounds.ToString());
949 }
950
951 // Test that the target root window is used as the destination of
895 // the non browser window. This differ from PersistedBoundsCase 952 // the non browser window. This differ from PersistedBoundsCase
896 // in that this uses real ash shell implementations + StateProvider 953 // in that this uses real ash shell implementations + StateProvider
897 // TargetDisplayProvider, rather than mocks. 954 // TargetDisplayProvider, rather than mocks.
898 TEST_F(WindowSizerAshTest, DefaultBoundsInTargetDisplay) { 955 TEST_F(WindowSizerAshTest, DefaultBoundsInTargetDisplay) {
899 if (!SupportsMultipleDisplays() || !chrome::ShouldOpenAshOnStartup()) 956 if (!SupportsMultipleDisplays() || !chrome::ShouldOpenAshOnStartup())
900 return; 957 return;
901 UpdateDisplay("500x500,600x600"); 958 UpdateDisplay("500x500,600x600");
902 { 959 {
903 aura::Window* first_root = 960 aura::Window* first_root =
904 ash::Shell::GetAllRootWindows()[0]; 961 ash::Shell::GetAllRootWindows()[0];
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
939 CreateTestWindowInShellWithId(1), 996 CreateTestWindowInShellWithId(1),
940 gfx::Rect(16, 32, 640, 320), 997 gfx::Rect(16, 32, 640, 320),
941 trusted_popup_create_params)); 998 trusted_popup_create_params));
942 // Trusted popup windows should follow the saved show state and ignore the 999 // Trusted popup windows should follow the saved show state and ignore the
943 // last show state. 1000 // last show state.
944 EXPECT_EQ(ui::SHOW_STATE_DEFAULT, 1001 EXPECT_EQ(ui::SHOW_STATE_DEFAULT,
945 GetWindowShowState(ui::SHOW_STATE_DEFAULT, 1002 GetWindowShowState(ui::SHOW_STATE_DEFAULT,
946 ui::SHOW_STATE_NORMAL, 1003 ui::SHOW_STATE_NORMAL,
947 BOTH, 1004 BOTH,
948 trusted_popup->browser(), 1005 trusted_popup->browser(),
1006 p1280x1024,
1007 p1600x1200));
1008 // A popup that is sized to occupy the whole work area is maximized.
1009 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED,
1010 GetWindowShowState(ui::SHOW_STATE_DEFAULT,
1011 ui::SHOW_STATE_NORMAL,
1012 BOTH,
1013 trusted_popup->browser(),
1014 p1600x1200,
949 p1600x1200)); 1015 p1600x1200));
950 } 1016 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698