summaryrefslogtreecommitdiffstats
path: root/chrome/browser/window_sizer_unittest.cc
diff options
context:
space:
mode:
authorpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-29 20:47:50 +0000
committerpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-29 20:47:50 +0000
commit2cc782d14e688f2d06f6d469ec11f9fc295b9546 (patch)
tree25f412731b68cf3c1aea1b82ed1820cdf3b2992c /chrome/browser/window_sizer_unittest.cc
parentb2d8eb460632ddb2636bd636c54ea57635b85072 (diff)
downloadchromium_src-2cc782d14e688f2d06f6d469ec11f9fc295b9546.zip
chromium_src-2cc782d14e688f2d06f6d469ec11f9fc295b9546.tar.gz
chromium_src-2cc782d14e688f2d06f6d469ec11f9fc295b9546.tar.bz2
Be less aggressive about resizing Chrome windows when restoring them. Original patch by Yuzo Fujishima (see http://codereview.chromium.org/115180 ), r=me.
BUG=9587 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17233 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/window_sizer_unittest.cc')
-rw-r--r--chrome/browser/window_sizer_unittest.cc240
1 files changed, 119 insertions, 121 deletions
diff --git a/chrome/browser/window_sizer_unittest.cc b/chrome/browser/window_sizer_unittest.cc
index 0cc2461c..d443892 100644
--- a/chrome/browser/window_sizer_unittest.cc
+++ b/chrome/browser/window_sizer_unittest.cc
@@ -252,7 +252,6 @@ TEST(WindowSizerTest, DefaultSizeCase) {
// Test that the next opened window is positioned appropriately given the
// bounds of an existing window of the same type.
TEST(WindowSizerTest, LastWindowBoundsCase) {
-
{ // normal, in the middle of the screen somewhere.
gfx::Rect window_bounds;
bool maximized = false;
@@ -263,6 +262,18 @@ TEST(WindowSizerTest, LastWindowBoundsCase) {
EXPECT_EQ(gfx::Rect(20, 20, 500, 400), window_bounds);
}
+ { // too small to satisify the minimum visibility condition.
+ gfx::Rect window_bounds;
+ bool maximized = false;
+ GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
+ gfx::Rect(10, 10, 29, 29), false, LAST_ACTIVE,
+ &window_bounds, &maximized);
+ EXPECT_FALSE(maximized);
+ EXPECT_EQ(gfx::Rect(20, 20, 30 /* not 29 */, 30 /* not 29 */),
+ window_bounds);
+ }
+
+
{ // normal, but maximized
gfx::Rect window_bounds;
bool maximized = false;
@@ -273,34 +284,60 @@ TEST(WindowSizerTest, LastWindowBoundsCase) {
EXPECT_EQ(gfx::Rect(20, 20, 500, 400), window_bounds);
}
- { // offset would put the new window offscreen at the bottom
+ { // offset would put the new window offscreen at the bottom but the minimum
+ // visibility condition is barely satisfied without relocation.
+ gfx::Rect window_bounds;
+ bool maximized = false;
+ GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
+ gfx::Rect(10, 728, 500, 400), false, LAST_ACTIVE,
+ &window_bounds, &maximized);
+ EXPECT_FALSE(maximized);
+ EXPECT_EQ(gfx::Rect(20, 738, 500, 400), window_bounds);
+ }
+
+ { // offset would put the new window offscreen at the bottom and the minimum
+ // visibility condition is satisified by relocation.
+ gfx::Rect window_bounds;
+ bool maximized = false;
+ GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
+ gfx::Rect(10, 729, 500, 400), false, LAST_ACTIVE,
+ &window_bounds, &maximized);
+ EXPECT_FALSE(maximized);
+ EXPECT_EQ(gfx::Rect(20, 738 /* not 739 */, 500, 400), window_bounds);
+ }
+
+ { // offset would put the new window offscreen at the right but the minimum
+ // visibility condition is barely satisfied without relocation.
gfx::Rect window_bounds;
bool maximized = false;
GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
- gfx::Rect(10, 360, 500, 400), false, LAST_ACTIVE,
+ gfx::Rect(984, 10, 500, 400), false, LAST_ACTIVE,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(20, 358, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(994, 20, 500, 400), window_bounds);
}
- { // offset would put the new window offscreen at the right
+ { // offset would put the new window offscreen at the right and the minimum
+ // visibility condition is satisified by relocation.
gfx::Rect window_bounds;
bool maximized = false;
GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
- gfx::Rect(520, 10, 500, 400), false, LAST_ACTIVE,
+ gfx::Rect(985, 10, 500, 400), false, LAST_ACTIVE,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(514, 20, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(994 /* not 995 */, 20, 500, 400), window_bounds);
}
- { // offset would put the new window offscreen at the bottom right
+ { // offset would put the new window offscreen at the bottom right and the
+ // minimum visibility condition is satisified by relocation.
gfx::Rect window_bounds;
bool maximized = false;
GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
- gfx::Rect(520, 360, 500, 400), false, LAST_ACTIVE,
+ gfx::Rect(985, 729, 500, 400), false, LAST_ACTIVE,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(514, 358, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(994 /* not 995 */, 738 /* not 739 */, 500, 400),
+ window_bounds);
}
}
@@ -353,160 +390,148 @@ TEST(WindowSizerTest, PersistedBoundsCase) {
EXPECT_EQ(initial_bounds, window_bounds);
}
- { // a little off the left
+ { // off the left but the minimum visibility condition is barely satisfied
+ // without relocaiton.
+ gfx::Rect initial_bounds(-470, 50, 500, 400);
+
gfx::Rect window_bounds;
bool maximized;
GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
- gfx::Rect(-10, 50, 500, 400), false, PERSISTED,
+ initial_bounds, false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(10, 50, 500, 400), window_bounds);
+ EXPECT_EQ(initial_bounds, window_bounds);
}
- { // a little off the top
+ { // off the left and the minimum visibility condition is satisfied by
+ // relocation.
gfx::Rect window_bounds;
bool maximized;
GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
- gfx::Rect(50, -10, 500, 400), false, PERSISTED,
+ gfx::Rect(-471, 50, 500, 400), false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(50, 10, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(-470 /* not -471 */, 50, 500, 400), window_bounds);
}
- { // a little off the right
- gfx::Rect window_bounds;
- bool maximized;
- GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
- gfx::Rect(534, 50, 500, 400), false, PERSISTED,
- &window_bounds, &maximized);
- EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(514, 50, 500, 400), window_bounds);
- }
+ { // off the top but the minimum visibility condition is barely satisified
+ // without relocation.
+ gfx::Rect initial_bounds(50, -370, 500, 400);
- { // a little off the bottom
gfx::Rect window_bounds;
bool maximized;
GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
- gfx::Rect(50, 378, 500, 400), false, PERSISTED,
+ initial_bounds, false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(50, 358, 500, 400), window_bounds);
+ EXPECT_EQ(initial_bounds, window_bounds);
}
- { // a little off the topleft
+ { // off the top and the minimum visibility condition is satisified by
+ // relocation.
gfx::Rect window_bounds;
bool maximized;
GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
- gfx::Rect(-10, -10, 500, 400), false, PERSISTED,
+ gfx::Rect(50, -371, 500, 400), false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(10, 10, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(50, -370 /* not -371 */, 500, 400), window_bounds);
}
- { // a little off the topright
+ { // off the right but the minimum visibility condition is barely satisified
+ // without relocation.
+ gfx::Rect initial_bounds(994, 50, 500, 400);
+
gfx::Rect window_bounds;
bool maximized;
GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
- gfx::Rect(534, -10, 500, 400), false, PERSISTED,
+ initial_bounds, false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(514, 10, 500, 400), window_bounds);
+ EXPECT_EQ(initial_bounds, window_bounds);
}
- { // a little off the bottomleft
+ { // off the right and the minimum visibility condition is satisified by
+ // relocation.
gfx::Rect window_bounds;
bool maximized;
GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
- gfx::Rect(-10, 378, 500, 400), false, PERSISTED,
+ gfx::Rect(995, 50, 500, 400), false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(10, 358, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(994 /* not 995 */, 50, 500, 400), window_bounds);
}
- { // a little off the bottomright
+ { // off the bottom but the minimum visibility condition is barely satisified
+ // without relocation.
+ gfx::Rect initial_bounds(50, 738, 500, 400);
+
gfx::Rect window_bounds;
bool maximized;
GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
- gfx::Rect(534, 378, 500, 400), false, PERSISTED,
+ initial_bounds, false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(514, 358, 500, 400), window_bounds);
- }
-
- { // split across two, bias right
- gfx::Rect initial_bounds(-50, 50, 500, 400);
- gfx::Rect window_bounds;
- bool maximized;
- GetWindowBounds(tentwentyfour, tentwentyfour, left_nonprimary,
- initial_bounds, false, PERSISTED, &window_bounds,
- &maximized);
- EXPECT_FALSE(maximized);
- EXPECT_EQ(initial_bounds, window_bounds);
-
- initial_bounds.Offset(tentwentyfour.width(), 0);
- GetWindowBounds(tentwentyfour, tentwentyfour, right_nonprimary,
- initial_bounds, false, PERSISTED, &window_bounds,
- &maximized);
- EXPECT_FALSE(maximized);
EXPECT_EQ(initial_bounds, window_bounds);
}
- { // split across two, bias left
- gfx::Rect initial_bounds(-450, 50, 500, 400);
+ { // off the bottom and the minimum visibility condition is satisified by
+ // relocation.
gfx::Rect window_bounds;
bool maximized;
- GetWindowBounds(tentwentyfour, tentwentyfour, left_nonprimary,
- initial_bounds, false, PERSISTED, &window_bounds,
- &maximized);
- EXPECT_FALSE(maximized);
- EXPECT_EQ(initial_bounds, window_bounds);
-
- initial_bounds.Offset(tentwentyfour.width(), 0);
- GetWindowBounds(tentwentyfour, tentwentyfour, right_nonprimary,
- initial_bounds, false, PERSISTED, &window_bounds,
- &maximized);
+ GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
+ gfx::Rect(50, 739, 500, 400), false, PERSISTED,
+ &window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(initial_bounds, window_bounds);
+ EXPECT_EQ(gfx::Rect(50, 738 /* not 739 */, 500, 400), window_bounds);
}
- { // split across two, a little off left
+ { // off the topleft and the minimum visibility condition is satisified by
+ // relocation.
gfx::Rect window_bounds;
bool maximized;
- GetWindowBounds(tentwentyfour, tentwentyfour, top_nonprimary,
- gfx::Rect(-50, -50, 500, 400), false, PERSISTED,
+ GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
+ gfx::Rect(-471, -371, 500, 400), false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(10, -50, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(-470 /* not -471 */, -370 /* not -371 */, 500, 400),
+ window_bounds);
}
- { // split across two, a little off right
+ { // off the topright and the minimum visibility condition is satisified by
+ // relocation.
gfx::Rect window_bounds;
bool maximized;
- GetWindowBounds(tentwentyfour, tentwentyfour, top_nonprimary,
- gfx::Rect(534, -50, 500, 400), false, PERSISTED,
+ GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
+ gfx::Rect(995, -371, 500, 400), false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(514, -50, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(994 /* not 995 */, -370 /* not -371 */, 500, 400),
+ window_bounds);
}
- { // split across two, a little off top
+ { // off the bottomleft and the minimum visibility condition is satisified by
+ // relocation.
gfx::Rect window_bounds;
bool maximized;
- GetWindowBounds(tentwentyfour, tentwentyfour, left_nonprimary,
- gfx::Rect(-50, -50, 500, 400), false, PERSISTED,
+ GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
+ gfx::Rect(-471, 739, 500, 400), false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(-50, 10, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(-470 /* not -471 */, 738 /* not 739 */, 500, 400),
+ window_bounds);
}
- { // split across two, a little off bottom
+ { // off the bottomright and the minimum visibility condition is satisified by
+ // relocation.
gfx::Rect window_bounds;
bool maximized;
- GetWindowBounds(tentwentyfour, tentwentyfour, left_nonprimary,
- gfx::Rect(-50, 378, 500, 400), false, PERSISTED,
+ GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
+ gfx::Rect(995, 739, 500, 400), false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(-50, 358, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(994 /* not 995 */, 738 /* not 739 */, 500, 400),
+ window_bounds);
}
{ // entirely off left (monitor was detached since last run)
@@ -516,7 +541,7 @@ TEST(WindowSizerTest, PersistedBoundsCase) {
gfx::Rect(-700, 50, 500, 400), false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(10, 50, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(-470 /* not -700 */, 50, 500, 400), window_bounds);
}
{ // entirely off top (monitor was detached since last run)
@@ -526,7 +551,7 @@ TEST(WindowSizerTest, PersistedBoundsCase) {
gfx::Rect(50, -500, 500, 400), false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(50, 10, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(50, -370 /* not -500 */, 500, 400), window_bounds);
}
{ // entirely off right (monitor was detached since last run)
@@ -536,7 +561,7 @@ TEST(WindowSizerTest, PersistedBoundsCase) {
gfx::Rect(1200, 50, 500, 400), false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(514, 50, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(994 /* not 1200 */, 50, 500, 400), window_bounds);
}
{ // entirely off bottom (monitor was detached since last run)
@@ -546,44 +571,17 @@ TEST(WindowSizerTest, PersistedBoundsCase) {
gfx::Rect(50, 800, 500, 400), false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(50, 358, 500, 400), window_bounds);
+ EXPECT_EQ(gfx::Rect(50, 738 /* not 800 */, 500, 400), window_bounds);
}
- { // width and height too large (monitor screen resolution changed since last
- // run)
+ { // width and height too small
gfx::Rect window_bounds;
bool maximized;
GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(),
- gfx::Rect(10, 10, 1200, 900), false, PERSISTED,
+ gfx::Rect(10, 10, 29, 29), false, PERSISTED,
&window_bounds, &maximized);
EXPECT_FALSE(maximized);
- EXPECT_EQ(gfx::Rect(10, 10, 1004, 748), window_bounds);
- }
-
- { // Handles taskbar offset on the top.
- gfx::Rect initial_bounds(10, 10, 500, 400);
-
- gfx::Rect window_bounds;
- bool maximized;
- GetWindowBounds(tentwentyfour, taskbar_top_work_area, gfx::Rect(),
- initial_bounds, false, PERSISTED, &window_bounds,
- &maximized);
- EXPECT_FALSE(maximized);
- initial_bounds.Offset(taskbar_top_work_area.x(), taskbar_top_work_area.y());
- EXPECT_EQ(initial_bounds, window_bounds);
- }
-
- { // Handles taskbar offset on the left.
- gfx::Rect initial_bounds(10, 10, 500, 400);
-
- gfx::Rect window_bounds;
- bool maximized;
- GetWindowBounds(tentwentyfour, taskbar_left_work_area, gfx::Rect(),
- initial_bounds, false, PERSISTED, &window_bounds,
- &maximized);
- EXPECT_FALSE(maximized);
- initial_bounds.Offset(taskbar_left_work_area.x(),
- taskbar_left_work_area.y());
- EXPECT_EQ(initial_bounds, window_bounds);
+ EXPECT_EQ(gfx::Rect(10, 10, 30 /* not 29 */, 30 /* not 29 */),
+ window_bounds);
}
}