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 |
858 #if defined(false) | 917 #if defined(false) |
859 // Aura needs shell to maximize/fullscreen window. | 918 // Aura needs shell to maximize/fullscreen window. |
860 // NativeWidgetGtk doesn't implement GetRestoredBounds. | 919 // NativeWidgetGtk doesn't implement GetRestoredBounds. |
861 TEST_F(WidgetTest, GetRestoredBounds) { | 920 TEST_F(WidgetTest, GetRestoredBounds) { |
862 Widget* toplevel = CreateTopLevelPlatformWidget(); | 921 Widget* toplevel = CreateTopLevelPlatformWidget(); |
863 EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(), | 922 EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(), |
864 toplevel->GetRestoredBounds().ToString()); | 923 toplevel->GetRestoredBounds().ToString()); |
865 toplevel->Show(); | 924 toplevel->Show(); |
866 toplevel->Maximize(); | 925 toplevel->Maximize(); |
867 RunPendingMessages(); | 926 RunPendingMessages(); |
(...skipping 1552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2420 EXPECT_EQ(3, view->GetEventCount(ui::ET_MOUSE_PRESSED)); | 2479 EXPECT_EQ(3, view->GetEventCount(ui::ET_MOUSE_PRESSED)); |
2421 EXPECT_EQ(3, view->GetEventCount(ui::ET_MOUSE_RELEASED)); | 2480 EXPECT_EQ(3, view->GetEventCount(ui::ET_MOUSE_RELEASED)); |
2422 EXPECT_EQ(1, view->GetEventCount(ui::ET_MOUSE_DRAGGED)); | 2481 EXPECT_EQ(1, view->GetEventCount(ui::ET_MOUSE_DRAGGED)); |
2423 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, view->last_flags()); | 2482 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, view->last_flags()); |
2424 | 2483 |
2425 widget->CloseNow(); | 2484 widget->CloseNow(); |
2426 } | 2485 } |
2427 | 2486 |
2428 } // namespace test | 2487 } // namespace test |
2429 } // namespace views | 2488 } // namespace views |
OLD | NEW |