diff options
author | jackhou <jackhou@chromium.org> | 2015-08-03 16:38:48 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-03 23:39:28 +0000 |
commit | 1456431501bdaf8c9362e25343b7393126a722af (patch) | |
tree | f682273f7c1eea4c52acc78f72b42fb579e5957f | |
parent | 2121ad985525090fa7bc834ff9c0aa38668dc039 (diff) | |
download | chromium_src-1456431501bdaf8c9362e25343b7393126a722af.zip chromium_src-1456431501bdaf8c9362e25343b7393126a722af.tar.gz chromium_src-1456431501bdaf8c9362e25343b7393126a722af.tar.bz2 |
[Views] Fix WidgetTest.GetRestoredBounds
Test was failing on Mac because ViewsTestHelperMac::TearDown()
now DCHECKs that all Widgets are closed (added in r334985). Fix
this by closing the Widget at end of test.
Also re-enable this test on Win. It's unfortunately still broken on
Linux (see bug).
Also re-write the test a bit to make it clearer.
BUG=378134, 515369
Review URL: https://codereview.chromium.org/1268643002
Cr-Commit-Position: refs/heads/master@{#341643}
-rw-r--r-- | ui/views/widget/widget_unittest.cc | 65 |
1 files changed, 42 insertions, 23 deletions
diff --git a/ui/views/widget/widget_unittest.cc b/ui/views/widget/widget_unittest.cc index e701563..cdea30f 100644 --- a/ui/views/widget/widget_unittest.cc +++ b/ui/views/widget/widget_unittest.cc @@ -41,6 +41,7 @@ #if defined(OS_MACOSX) #include "base/mac/mac_util.h" +#include "ui/base/test/scoped_fake_nswindow_fullscreen.h" #endif namespace views { @@ -1158,49 +1159,67 @@ TEST_F(WidgetTest, GetWindowBoundsInScreen) { widget->CloseNow(); } -// Before being enabled on Mac, this was #ifdef(false). -// TODO(tapted): Fix this for DesktopNativeWidgets on other platforms. +// Non-Desktop widgets need the shell to maximize/fullscreen window. +// Disable on Linux because windows restore to the wrong bounds. +// See http://crbug.com/515369. +#if defined(OS_CHROMEOS) || defined(OS_LINUX) +#define MAYBE_GetRestoredBounds DISABLED_GetRestoredBounds +#else +#define MAYBE_GetRestoredBounds GetRestoredBounds +#endif + +// Test that GetRestoredBounds() returns the original bounds of the window. +TEST_F(WidgetTest, MAYBE_GetRestoredBounds) { #if defined(OS_MACOSX) -// Aura needs shell to maximize/fullscreen window. -// NativeWidgetGtk doesn't implement GetRestoredBounds. -TEST_F(WidgetTest, GetRestoredBounds) { - Widget* toplevel = CreateTopLevelPlatformWidget(); - EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(), - toplevel->GetRestoredBounds().ToString()); + // Fullscreen on Mac requires an interactive UI test, fake them here. + ui::test::ScopedFakeNSWindowFullscreen fake_fullscreen; +#endif + + Widget* toplevel = CreateNativeDesktopWidget(); toplevel->Show(); + // Initial restored bounds have non-zero size. + EXPECT_FALSE(toplevel->GetRestoredBounds().IsEmpty()); + + const gfx::Rect bounds(100, 100, 200, 200); + toplevel->SetBounds(bounds); + EXPECT_EQ(bounds, toplevel->GetWindowBoundsInScreen()); + EXPECT_EQ(bounds, toplevel->GetRestoredBounds()); + toplevel->Maximize(); RunPendingMessages(); #if defined(OS_MACOSX) // Current expectation on Mac is to do nothing on Maximize. - EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(), - toplevel->GetRestoredBounds().ToString()); + EXPECT_EQ(toplevel->GetWindowBoundsInScreen(), toplevel->GetRestoredBounds()); #else - EXPECT_NE(toplevel->GetWindowBoundsInScreen().ToString(), - toplevel->GetRestoredBounds().ToString()); + EXPECT_NE(toplevel->GetWindowBoundsInScreen(), toplevel->GetRestoredBounds()); #endif - EXPECT_GT(toplevel->GetRestoredBounds().width(), 0); - EXPECT_GT(toplevel->GetRestoredBounds().height(), 0); + EXPECT_EQ(bounds, toplevel->GetRestoredBounds()); toplevel->Restore(); RunPendingMessages(); - EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(), - toplevel->GetRestoredBounds().ToString()); + EXPECT_EQ(bounds, toplevel->GetWindowBoundsInScreen()); + EXPECT_EQ(bounds, toplevel->GetRestoredBounds()); toplevel->SetFullscreen(true); RunPendingMessages(); if (IsTestingSnowLeopard()) { // Fullscreen not implemented for Snow Leopard. - EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(), - toplevel->GetRestoredBounds().ToString()); + EXPECT_EQ(toplevel->GetWindowBoundsInScreen(), + toplevel->GetRestoredBounds()); } else { - EXPECT_NE(toplevel->GetWindowBoundsInScreen().ToString(), - toplevel->GetRestoredBounds().ToString()); + EXPECT_NE(toplevel->GetWindowBoundsInScreen(), + toplevel->GetRestoredBounds()); } - EXPECT_GT(toplevel->GetRestoredBounds().width(), 0); - EXPECT_GT(toplevel->GetRestoredBounds().height(), 0); + EXPECT_EQ(bounds, toplevel->GetRestoredBounds()); + + toplevel->SetFullscreen(false); + RunPendingMessages(); + EXPECT_EQ(bounds, toplevel->GetWindowBoundsInScreen()); + EXPECT_EQ(bounds, toplevel->GetRestoredBounds()); + + toplevel->CloseNow(); } -#endif // The key-event propagation from Widget happens differently on aura and // non-aura systems because of the difference in IME. So this test works only on |