OLD | NEW |
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 <algorithm> | 5 #include <algorithm> |
6 #include <set> | 6 #include <set> |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
848 child2->OnNativeWidgetMove(); | 848 child2->OnNativeWidgetMove(); |
849 EXPECT_EQ(child2, widget_bounds_changed()); | 849 EXPECT_EQ(child2, widget_bounds_changed()); |
850 | 850 |
851 child1->OnNativeWidgetSizeChanged(gfx::Size()); | 851 child1->OnNativeWidgetSizeChanged(gfx::Size()); |
852 EXPECT_EQ(child1, widget_bounds_changed()); | 852 EXPECT_EQ(child1, widget_bounds_changed()); |
853 | 853 |
854 child2->OnNativeWidgetSizeChanged(gfx::Size()); | 854 child2->OnNativeWidgetSizeChanged(gfx::Size()); |
855 EXPECT_EQ(child2, widget_bounds_changed()); | 855 EXPECT_EQ(child2, widget_bounds_changed()); |
856 } | 856 } |
857 | 857 |
858 // Tests that SetBounds() and GetWindowBoundsInScreen() is symmetric when the | |
859 // widget is visible and not maximized or fullscreen. | |
860 TEST_F(WidgetTest, GetWindowBoundsInScreen) { | |
861 // Choose test coordinates away from edges and dimensions that are "small" | |
862 // (but not too small) to ensure the OS doesn't try to adjust them. | |
863 const gfx::Rect kTestBounds(150, 150, 400, 300); | |
864 const gfx::Size kTestSize(200, 180); | |
865 | |
866 // First test a toplevel widget. | |
867 Widget* widget = CreateTopLevelPlatformWidget(); | |
868 widget->Show(); | |
869 | |
870 EXPECT_NE(kTestSize.ToString(), | |
871 widget->GetWindowBoundsInScreen().size().ToString()); | |
872 widget->SetSize(kTestSize); | |
873 EXPECT_EQ(kTestSize.ToString(), | |
874 widget->GetWindowBoundsInScreen().size().ToString()); | |
875 | |
876 EXPECT_NE(kTestBounds.ToString(), | |
877 widget->GetWindowBoundsInScreen().ToString()); | |
878 widget->SetBounds(kTestBounds); | |
879 EXPECT_EQ(kTestBounds.ToString(), | |
880 widget->GetWindowBoundsInScreen().ToString()); | |
881 | |
882 // Changing just the size should not change the origin. | |
883 widget->SetSize(kTestSize); | |
884 EXPECT_EQ(kTestBounds.origin().ToString(), | |
885 widget->GetWindowBoundsInScreen().origin().ToString()); | |
886 | |
887 widget->CloseNow(); | |
888 | |
889 // Same tests with a frameless window. | |
890 widget = CreateTopLevelFramelessPlatformWidget(); | |
891 widget->Show(); | |
892 | |
893 EXPECT_NE(kTestSize.ToString(), | |
894 widget->GetWindowBoundsInScreen().size().ToString()); | |
895 widget->SetSize(kTestSize); | |
896 EXPECT_EQ(kTestSize.ToString(), | |
897 widget->GetWindowBoundsInScreen().size().ToString()); | |
898 | |
899 EXPECT_NE(kTestBounds.ToString(), | |
900 widget->GetWindowBoundsInScreen().ToString()); | |
901 widget->SetBounds(kTestBounds); | |
902 EXPECT_EQ(kTestBounds.ToString(), | |
903 widget->GetWindowBoundsInScreen().ToString()); | |
904 | |
905 // For a frameless widget, the client bounds should also match. | |
906 EXPECT_EQ(kTestBounds.ToString(), | |
907 widget->GetClientAreaBoundsInScreen().ToString()); | |
908 | |
909 // Verify origin is stable for a frameless window as well. | |
910 widget->SetSize(kTestSize); | |
911 EXPECT_EQ(kTestBounds.origin().ToString(), | |
912 widget->GetWindowBoundsInScreen().origin().ToString()); | |
913 | |
914 widget->CloseNow(); | |
915 } | |
916 | |
917 #if defined(false) | 858 #if defined(false) |
918 // Aura needs shell to maximize/fullscreen window. | 859 // Aura needs shell to maximize/fullscreen window. |
919 // NativeWidgetGtk doesn't implement GetRestoredBounds. | 860 // NativeWidgetGtk doesn't implement GetRestoredBounds. |
920 TEST_F(WidgetTest, GetRestoredBounds) { | 861 TEST_F(WidgetTest, GetRestoredBounds) { |
921 Widget* toplevel = CreateTopLevelPlatformWidget(); | 862 Widget* toplevel = CreateTopLevelPlatformWidget(); |
922 EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(), | 863 EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(), |
923 toplevel->GetRestoredBounds().ToString()); | 864 toplevel->GetRestoredBounds().ToString()); |
924 toplevel->Show(); | 865 toplevel->Show(); |
925 toplevel->Maximize(); | 866 toplevel->Maximize(); |
926 RunPendingMessages(); | 867 RunPendingMessages(); |
(...skipping 1552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2479 EXPECT_EQ(3, view->GetEventCount(ui::ET_MOUSE_PRESSED)); | 2420 EXPECT_EQ(3, view->GetEventCount(ui::ET_MOUSE_PRESSED)); |
2480 EXPECT_EQ(3, view->GetEventCount(ui::ET_MOUSE_RELEASED)); | 2421 EXPECT_EQ(3, view->GetEventCount(ui::ET_MOUSE_RELEASED)); |
2481 EXPECT_EQ(1, view->GetEventCount(ui::ET_MOUSE_DRAGGED)); | 2422 EXPECT_EQ(1, view->GetEventCount(ui::ET_MOUSE_DRAGGED)); |
2482 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, view->last_flags()); | 2423 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, view->last_flags()); |
2483 | 2424 |
2484 widget->CloseNow(); | 2425 widget->CloseNow(); |
2485 } | 2426 } |
2486 | 2427 |
2487 } // namespace test | 2428 } // namespace test |
2488 } // namespace views | 2429 } // namespace views |
OLD | NEW |