| Index: chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc
|
| diff --git a/chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc b/chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc
|
| index 4f574c655a463838e2c12729256385c5e0e66403..b3d460b9da729d70d642a24a601faca6adb7cbc2 100644
|
| --- a/chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc
|
| +++ b/chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc
|
| @@ -2,8 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/browser/ui/window_sizer/window_sizer_common_unittest.h"
|
| -
|
| +#include "ash/screen_ash.h"
|
| #include "ash/shell.h"
|
| #include "ash/test/ash_test_base.h"
|
| #include "ash/test/test_shell_delegate.h"
|
| @@ -11,6 +10,7 @@
|
| #include "ash/wm/window_util.h"
|
| #include "base/compiler_specific.h"
|
| #include "chrome/browser/ui/browser.h"
|
| +#include "chrome/browser/ui/window_sizer/window_sizer_common_unittest.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/test/base/testing_profile.h"
|
| #include "content/public/test/render_view_test.h"
|
| @@ -21,7 +21,7 @@
|
| #include "ui/aura/root_window.h"
|
| #include "ui/aura/test/test_windows.h"
|
|
|
| -typedef ash::test::AshTestBase WindowSizerTest;
|
| +typedef ash::test::AshTestBase WindowSizerAshTest;
|
|
|
| namespace {
|
|
|
| @@ -61,6 +61,8 @@ class TestBrowserWindowAura : public TestBrowserWindow {
|
| Browser::CreateParams create_params = params;
|
| create_params.window = this;
|
| browser_.reset(new Browser(create_params));
|
| + if (browser_->is_type_tabbed() || browser_->is_app())
|
| + ash::wm::SetWindowPositionManaged(native_window_.get(), true);
|
| }
|
|
|
| private:
|
| @@ -92,7 +94,7 @@ scoped_ptr<TestBrowserWindowAura> CreateTestBrowserWindow(
|
|
|
| // Test that the window is sized appropriately for the first run experience
|
| // where the default window bounds calculation is invoked.
|
| -TEST_F(WindowSizerTest, DefaultSizeCase) {
|
| +TEST_F(WindowSizerAshTest, DefaultSizeCase) {
|
| int grid = WindowSizer::kDesktopBorderSize;
|
| { // 4:3 monitor case, 1024x768, no taskbar
|
| gfx::Rect window_bounds;
|
| @@ -214,7 +216,7 @@ TEST_F(WindowSizerTest, DefaultSizeCase) {
|
|
|
| // Test that the next opened window is positioned appropriately given the
|
| // bounds of an existing window of the same type.
|
| -TEST_F(WindowSizerTest, LastWindowBoundsCase) {
|
| +TEST_F(WindowSizerAshTest, LastWindowBoundsCase) {
|
| { // normal, in the middle of the screen somewhere.
|
| gfx::Rect window_bounds;
|
| GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
|
| @@ -272,7 +274,7 @@ TEST_F(WindowSizerTest, LastWindowBoundsCase) {
|
| }
|
|
|
| // Test that the window opened is sized appropriately given persisted sizes.
|
| -TEST_F(WindowSizerTest, PersistedBoundsCase) {
|
| +TEST_F(WindowSizerAshTest, PersistedBoundsCase) {
|
| { // normal, in the middle of the screen somewhere.
|
| gfx::Rect initial_bounds(WindowSizer::kDesktopBorderSize,
|
| WindowSizer::kDesktopBorderSize, 500, 400);
|
| @@ -367,7 +369,7 @@ TEST_F(WindowSizerTest, PersistedBoundsCase) {
|
| // are run on Mac, and the *WithNonAggressiveRepositioning tests are run on
|
| // other platforms.
|
|
|
| -TEST_F(WindowSizerTest, LastWindowOffscreenWithNonAggressiveRepositioning) {
|
| +TEST_F(WindowSizerAshTest, LastWindowOffscreenWithNonAggressiveRepositioning) {
|
| { // taskbar on left.
|
| gfx::Rect window_bounds;
|
| GetWindowBounds(p1024x768, taskbar_left_work_area, gfx::Rect(),
|
| @@ -442,7 +444,7 @@ TEST_F(WindowSizerTest, LastWindowOffscreenWithNonAggressiveRepositioning) {
|
| }
|
|
|
| // Test the placement of newly created windows.
|
| -TEST_F(WindowSizerTest, PlaceNewWindows) {
|
| +TEST_F(WindowSizerAshTest, PlaceNewWindows) {
|
| // Create a browser which we can use to pass into the GetWindowBounds
|
| // function.
|
| scoped_ptr<TestingProfile> profile(new TestingProfile());
|
| @@ -473,46 +475,7 @@ TEST_F(WindowSizerTest, PlaceNewWindows) {
|
| gfx::Rect(32, 48, 256, 512),
|
| Browser::CreateParams(Browser::TYPE_POPUP, profile.get(),
|
| chrome::HOST_DESKTOP_TYPE_ASH)));
|
| -
|
| browser_window->Show();
|
| - { // With a shown window it's size should get returned.
|
| - gfx::Rect window_bounds;
|
| - GetWindowBounds(p1600x1200, p1600x1200, gfx::Rect(),
|
| - gfx::Rect(50, 100, 300, 150), bottom_s1600x1200,
|
| - PERSISTED, browser.get(), gfx::Rect(), &window_bounds);
|
| - // The position should be right flush.
|
| - EXPECT_EQ("960,32 640x320", window_bounds.ToString());
|
| - }
|
| -
|
| - { // With the window shown - but more on the right side then on the left
|
| - // side (and partially out of the screen), it should default to the other
|
| - // side and inside the screen.
|
| - browser_window->GetNativeWindow()->SetBounds(
|
| - gfx::Rect(1000, 600, 640, 320));
|
| - gfx::Rect window_bounds;
|
| - GetWindowBounds(p1600x1200, p1600x1200, gfx::Rect(),
|
| - gfx::Rect(50, 100, 300, 150), bottom_s1600x1200,
|
| - PERSISTED, browser.get(), gfx::Rect(), &window_bounds);
|
| - // The position should be left & bottom flush.
|
| - EXPECT_EQ("0,600 640x320", window_bounds.ToString());
|
| - }
|
| -
|
| - { // If the second windows right side is already over the right side of the
|
| - // screen, it will not move back into the screen.
|
| - browser_window->GetNativeWindow()->SetBounds(
|
| - gfx::Rect(1000, 600, 640, 320));
|
| - gfx::Rect window_bounds;
|
| - GetWindowBounds(p1600x1200, p1600x1200, gfx::Rect(),
|
| - gfx::Rect(50, 100, 300, 150), bottom_s1600x1200,
|
| - PERSISTED, browser.get(), gfx::Rect(), &window_bounds);
|
| - // The position should be left & bottom flush.
|
| - EXPECT_EQ("0,600 640x320", window_bounds.ToString());
|
| - // If the other window was already beyond the point to get right flush
|
| - // it will remain where it is.
|
| - EXPECT_EQ("1000,600 640x320",
|
| - browser_window->GetNativeWindow()->bounds().ToString());
|
| - }
|
| -
|
| { // Make sure that popups do not get changed.
|
| gfx::Rect window_bounds;
|
| GetWindowBounds(p1600x1200, p1600x1200, gfx::Rect(),
|
| @@ -551,7 +514,7 @@ TEST_F(WindowSizerTest, PlaceNewWindows) {
|
| // Test the placement of newly created windows on an empty desktop.
|
| // This test supplements "PlaceNewWindows" by testing the creation of a newly
|
| // created browser window on an empty desktop.
|
| -TEST_F(WindowSizerTest, PlaceNewBrowserWindowOnEmptyDesktop) {
|
| +TEST_F(WindowSizerAshTest, PlaceNewBrowserWindowOnEmptyDesktop) {
|
| // Create a browser which we can use to pass into the GetWindowBounds
|
| // function.
|
| scoped_ptr<TestingProfile> profile(new TestingProfile());
|
| @@ -627,9 +590,11 @@ TEST_F(WindowSizerTest, PlaceNewBrowserWindowOnEmptyDesktop) {
|
| #endif
|
|
|
| // Test the placement of newly created windows on multiple dislays.
|
| -TEST_F(WindowSizerTest, MAYBE_PlaceNewWindowsOnMultipleDisplays) {
|
| +TEST_F(WindowSizerAshTest, MAYBE_PlaceNewWindowsOnMultipleDisplays) {
|
| UpdateDisplay("1600x1200,1600x1200");
|
| - const gfx::Rect secondary(1600, 0, 1600, 1200);
|
| + gfx::Rect primary_bounds = ash::Shell::GetInstance()->GetScreen()->
|
| + GetPrimaryDisplay().bounds();
|
| + gfx::Rect secondary_bounds = ash::ScreenAsh::GetSecondaryDisplay().bounds();
|
|
|
| ash::Shell::GetInstance()->set_active_root_window(
|
| ash::Shell::GetPrimaryRootWindow());
|
| @@ -647,7 +612,7 @@ TEST_F(WindowSizerTest, MAYBE_PlaceNewWindowsOnMultipleDisplays) {
|
|
|
| scoped_ptr<BrowserWindow> another_browser_window(CreateTestBrowserWindow(
|
| CreateTestWindowInShellWithId(1),
|
| - gfx::Rect(1600 - 200, 10, 300, 300),
|
| + gfx::Rect(400, 10, 300, 300),
|
| Browser::CreateParams(profile.get(), chrome::HOST_DESKTOP_TYPE_ASH)));
|
| another_browser_window->Show();
|
|
|
| @@ -665,31 +630,36 @@ TEST_F(WindowSizerTest, MAYBE_PlaceNewWindowsOnMultipleDisplays) {
|
| // First new window should be in the primary.
|
| {
|
| gfx::Rect window_bounds;
|
| - GetWindowBounds(p1600x1200, p1600x1200, secondary,
|
| - gfx::Rect(), secondary,
|
| + GetWindowBounds(p1600x1200, p1600x1200, secondary_bounds,
|
| + gfx::Rect(), secondary_bounds,
|
| PERSISTED, new_browser_window->browser(),
|
| gfx::Rect(), &window_bounds);
|
| - EXPECT_EQ("0,10 300x300", window_bounds.ToString());
|
| + // TODO(oshima): Use exact bounds when the window_sizer_ash is
|
| + // moved to ash and changed to include the result from
|
| + // RearrangeVisibleWindowOnShow.
|
| + EXPECT_TRUE(primary_bounds.Contains(window_bounds));
|
| }
|
|
|
| // Move the window to the right side of the secondary display and create a new
|
| - // window. It should be opened then on the left side on the secondary display.
|
| + // window. It should be opened then on the secondary display.
|
| {
|
| gfx::Display second_display = ash::Shell::GetScreen()->
|
| GetDisplayNearestPoint(gfx::Point(1600 + 100,10));
|
| browser_window->GetNativeWindow()->SetBoundsInScreen(
|
| - gfx::Rect(secondary.CenterPoint().x() + 300, 10, 200, 200),
|
| + gfx::Rect(secondary_bounds.CenterPoint().x() - 100, 10, 200, 200),
|
| second_display);
|
| browser_window->Activate();
|
| EXPECT_NE(ash::Shell::GetPrimaryRootWindow(),
|
| ash::Shell::GetActiveRootWindow());
|
| -
|
| gfx::Rect window_bounds;
|
| - GetWindowBounds(p1600x1200, p1600x1200, secondary,
|
| - gfx::Rect(), secondary,
|
| + GetWindowBounds(p1600x1200, p1600x1200, secondary_bounds,
|
| + gfx::Rect(), secondary_bounds,
|
| PERSISTED, new_browser_window->browser(),
|
| gfx::Rect(), &window_bounds);
|
| - EXPECT_EQ("1600,10 200x200", window_bounds.ToString());
|
| + // TODO(oshima): Use exact bounds when the window_sizer_ash is
|
| + // moved to ash and changed to include the result from
|
| + // RearrangeVisibleWindowOnShow.
|
| + EXPECT_TRUE(secondary_bounds.Contains(window_bounds));
|
| }
|
|
|
| // Activate another window in the primary display and create a new window.
|
| @@ -700,16 +670,19 @@ TEST_F(WindowSizerTest, MAYBE_PlaceNewWindowsOnMultipleDisplays) {
|
| ash::Shell::GetActiveRootWindow());
|
|
|
| gfx::Rect window_bounds;
|
| - GetWindowBounds(p1600x1200, p1600x1200, secondary,
|
| - gfx::Rect(), secondary,
|
| + GetWindowBounds(p1600x1200, p1600x1200, secondary_bounds,
|
| + gfx::Rect(), secondary_bounds,
|
| PERSISTED, new_browser_window->browser(),
|
| gfx::Rect(), &window_bounds);
|
| - EXPECT_EQ("0,10 300x300", window_bounds.ToString());
|
| + // TODO(oshima): Use exact bounds when the window_sizer_ash is
|
| + // moved to ash and changed to include the result from
|
| + // RearrangeVisibleWindowOnShow.
|
| + EXPECT_TRUE(primary_bounds.Contains(window_bounds));
|
| }
|
| }
|
|
|
| // Test that the show state is properly returned for non default cases.
|
| -TEST_F(WindowSizerTest, TestShowState) {
|
| +TEST_F(WindowSizerAshTest, TestShowState) {
|
| scoped_ptr<TestingProfile> profile(new TestingProfile());
|
|
|
| // Creating a browser & window to play with.
|
| @@ -802,7 +775,7 @@ TEST_F(WindowSizerTest, TestShowState) {
|
| }
|
|
|
| // Test that the default show state override behavior is properly handled.
|
| -TEST_F(WindowSizerTest, TestShowStateDefaults) {
|
| +TEST_F(WindowSizerAshTest, TestShowStateDefaults) {
|
| // Creating a browser & window to play with.
|
| scoped_ptr<TestingProfile> profile(new TestingProfile());
|
|
|
|
|