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

Unified Diff: chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc

Issue 23205027: Correctly restore the auto managed window to the original bounds when becoming single window (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698