| OLD | NEW | 
|---|
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 <vector> | 5 #include <vector> | 
| 6 | 6 | 
| 7 #include "chrome/browser/window_sizer.h" | 7 #include "chrome/browser/window_sizer.h" | 
| 8 #include "base/logging.h" | 8 #include "base/logging.h" | 
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" | 
| 10 | 10 | 
| (...skipping 24 matching lines...) Expand all  Loading... | 
| 35 | 35 | 
| 36 // Testing implementation of WindowSizer::MonitorInfoProvider that we can use | 36 // Testing implementation of WindowSizer::MonitorInfoProvider that we can use | 
| 37 // to fake various monitor layouts and sizes. | 37 // to fake various monitor layouts and sizes. | 
| 38 class TestMonitorInfoProvider : public WindowSizer::MonitorInfoProvider { | 38 class TestMonitorInfoProvider : public WindowSizer::MonitorInfoProvider { | 
| 39  public: | 39  public: | 
| 40   TestMonitorInfoProvider() {} | 40   TestMonitorInfoProvider() {} | 
| 41   virtual ~TestMonitorInfoProvider() {} | 41   virtual ~TestMonitorInfoProvider() {} | 
| 42 | 42 | 
| 43   void AddMonitor(const gfx::Rect& bounds, const gfx::Rect& work_area) { | 43   void AddMonitor(const gfx::Rect& bounds, const gfx::Rect& work_area) { | 
| 44     DCHECK(bounds.Contains(work_area)); | 44     DCHECK(bounds.Contains(work_area)); | 
| 45     monitor_bounds_.push_back(work_area); | 45     monitor_bounds_.push_back(bounds); | 
| 46     work_areas_.push_back(work_area); | 46     work_areas_.push_back(work_area); | 
| 47   } | 47   } | 
| 48 | 48 | 
| 49   // Overridden from WindowSizer::MonitorInfoProvider: | 49   // Overridden from WindowSizer::MonitorInfoProvider: | 
| 50   virtual gfx::Rect GetPrimaryMonitorWorkArea() const { | 50   virtual gfx::Rect GetPrimaryMonitorWorkArea() const { | 
| 51     return work_areas_[0]; | 51     return work_areas_[0]; | 
| 52   } | 52   } | 
| 53 | 53 | 
| 54   virtual gfx::Rect GetPrimaryMonitorBounds() const { | 54   virtual gfx::Rect GetPrimaryMonitorBounds() const { | 
| 55     return monitor_bounds_[0]; | 55     return monitor_bounds_[0]; | 
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 159     sp->SetPersistentState(state, maximized, true); | 159     sp->SetPersistentState(state, maximized, true); | 
| 160   else if (source == LAST_ACTIVE) | 160   else if (source == LAST_ACTIVE) | 
| 161     sp->SetLastActiveState(state, true); | 161     sp->SetLastActiveState(state, true); | 
| 162   WindowSizer sizer(sp, mip); | 162   WindowSizer sizer(sp, mip); | 
| 163   sizer.DetermineWindowBounds(gfx::Rect(), out_bounds, out_maximized); | 163   sizer.DetermineWindowBounds(gfx::Rect(), out_bounds, out_maximized); | 
| 164 } | 164 } | 
| 165 | 165 | 
| 166 // Test that the window is sized appropriately for the first run experience | 166 // Test that the window is sized appropriately for the first run experience | 
| 167 // where the default window bounds calculation is invoked. | 167 // where the default window bounds calculation is invoked. | 
| 168 TEST(WindowSizerTest, DefaultSizeCase) { | 168 TEST(WindowSizerTest, DefaultSizeCase) { | 
| 169 |  | 
| 170   { // 4:3 monitor case, 1024x768, no taskbar | 169   { // 4:3 monitor case, 1024x768, no taskbar | 
| 171     gfx::Rect window_bounds; | 170     gfx::Rect window_bounds; | 
| 172     bool maximized; | 171     bool maximized; | 
| 173     GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(), gfx::Rect(), | 172     GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(), gfx::Rect(), | 
| 174                     false, DEFAULT, &window_bounds, &maximized); | 173                     false, DEFAULT, &window_bounds, &maximized); | 
| 175     EXPECT_FALSE(maximized); | 174     EXPECT_FALSE(maximized); | 
| 176     EXPECT_EQ(gfx::Rect(10, 10, 1004, 748), window_bounds); | 175     EXPECT_EQ(gfx::Rect(10, 10, 1004, 748), window_bounds); | 
| 177   } | 176   } | 
| 178 | 177 | 
| 179   { // 4:3 monitor case, 1024x768, taskbar on bottom | 178   { // 4:3 monitor case, 1024x768, taskbar on bottom | 
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 255   { // normal, in the middle of the screen somewhere. | 254   { // normal, in the middle of the screen somewhere. | 
| 256     gfx::Rect window_bounds; | 255     gfx::Rect window_bounds; | 
| 257     bool maximized = false; | 256     bool maximized = false; | 
| 258     GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(), | 257     GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(), | 
| 259                     gfx::Rect(10, 10, 500, 400), false, LAST_ACTIVE, | 258                     gfx::Rect(10, 10, 500, 400), false, LAST_ACTIVE, | 
| 260                     &window_bounds, &maximized); | 259                     &window_bounds, &maximized); | 
| 261     EXPECT_FALSE(maximized); | 260     EXPECT_FALSE(maximized); | 
| 262     EXPECT_EQ(gfx::Rect(20, 20, 500, 400), window_bounds); | 261     EXPECT_EQ(gfx::Rect(20, 20, 500, 400), window_bounds); | 
| 263   } | 262   } | 
| 264 | 263 | 
|  | 264   { // taskbar on left. | 
|  | 265     gfx::Rect window_bounds; | 
|  | 266     bool maximized = false; | 
|  | 267     GetWindowBounds(tentwentyfour, taskbar_left_work_area, gfx::Rect(), | 
|  | 268                     gfx::Rect(10, 10, 500, 400), false, LAST_ACTIVE, | 
|  | 269                     &window_bounds, &maximized); | 
|  | 270     EXPECT_FALSE(maximized); | 
|  | 271     EXPECT_EQ(gfx::Rect(127, 20, 500, 400), window_bounds); | 
|  | 272   } | 
|  | 273 | 
|  | 274   { // taskbar on top. | 
|  | 275     gfx::Rect window_bounds; | 
|  | 276     bool maximized = false; | 
|  | 277     GetWindowBounds(tentwentyfour, taskbar_top_work_area, gfx::Rect(), | 
|  | 278                     gfx::Rect(10, 10, 500, 400), false, LAST_ACTIVE, | 
|  | 279                     &window_bounds, &maximized); | 
|  | 280     EXPECT_FALSE(maximized); | 
|  | 281     EXPECT_EQ(gfx::Rect(20, 54, 500, 400), window_bounds); | 
|  | 282   } | 
|  | 283 | 
| 265   { // too small to satisify the minimum visibility condition. | 284   { // too small to satisify the minimum visibility condition. | 
| 266     gfx::Rect window_bounds; | 285     gfx::Rect window_bounds; | 
| 267     bool maximized = false; | 286     bool maximized = false; | 
| 268     GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(), | 287     GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(), | 
| 269                     gfx::Rect(10, 10, 29, 29), false, LAST_ACTIVE, | 288                     gfx::Rect(10, 10, 29, 29), false, LAST_ACTIVE, | 
| 270                     &window_bounds, &maximized); | 289                     &window_bounds, &maximized); | 
| 271     EXPECT_FALSE(maximized); | 290     EXPECT_FALSE(maximized); | 
| 272     EXPECT_EQ(gfx::Rect(20, 20, 30 /* not 29 */, 30 /* not 29 */), | 291     EXPECT_EQ(gfx::Rect(20, 20, 30 /* not 29 */, 30 /* not 29 */), | 
| 273               window_bounds); | 292               window_bounds); | 
| 274   } | 293   } | 
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 336                     gfx::Rect(985, 729, 500, 400), false, LAST_ACTIVE, | 355                     gfx::Rect(985, 729, 500, 400), false, LAST_ACTIVE, | 
| 337                     &window_bounds, &maximized); | 356                     &window_bounds, &maximized); | 
| 338     EXPECT_FALSE(maximized); | 357     EXPECT_FALSE(maximized); | 
| 339     EXPECT_EQ(gfx::Rect(994 /* not 995 */, 738 /* not 739 */, 500, 400), | 358     EXPECT_EQ(gfx::Rect(994 /* not 995 */, 738 /* not 739 */, 500, 400), | 
| 340               window_bounds); | 359               window_bounds); | 
| 341   } | 360   } | 
| 342 } | 361 } | 
| 343 | 362 | 
| 344 // Test that the window opened is sized appropriately given persisted sizes. | 363 // Test that the window opened is sized appropriately given persisted sizes. | 
| 345 TEST(WindowSizerTest, PersistedBoundsCase) { | 364 TEST(WindowSizerTest, PersistedBoundsCase) { | 
| 346 |  | 
| 347   { // normal, in the middle of the screen somewhere. | 365   { // normal, in the middle of the screen somewhere. | 
| 348     gfx::Rect initial_bounds(10, 10, 500, 400); | 366     gfx::Rect initial_bounds(10, 10, 500, 400); | 
| 349 | 367 | 
| 350     gfx::Rect window_bounds; | 368     gfx::Rect window_bounds; | 
| 351     bool maximized; | 369     bool maximized; | 
| 352     GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(), initial_bounds, | 370     GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(), initial_bounds, | 
| 353                     false, PERSISTED, &window_bounds, &maximized); | 371                     false, PERSISTED, &window_bounds, &maximized); | 
| 354     EXPECT_FALSE(maximized); | 372     EXPECT_FALSE(maximized); | 
| 355     EXPECT_EQ(initial_bounds, window_bounds); | 373     EXPECT_EQ(initial_bounds, window_bounds); | 
| 356   } | 374   } | 
| (...skipping 29 matching lines...) Expand all  Loading... | 
| 386     GetWindowBounds(tentwentyfour, tentwentyfour, left_nonprimary, | 404     GetWindowBounds(tentwentyfour, tentwentyfour, left_nonprimary, | 
| 387                     initial_bounds, true, PERSISTED, &window_bounds, | 405                     initial_bounds, true, PERSISTED, &window_bounds, | 
| 388                     &maximized); | 406                     &maximized); | 
| 389     EXPECT_TRUE(maximized); | 407     EXPECT_TRUE(maximized); | 
| 390     EXPECT_EQ(initial_bounds, window_bounds); | 408     EXPECT_EQ(initial_bounds, window_bounds); | 
| 391   } | 409   } | 
| 392 | 410 | 
| 393   { // off the left but the minimum visibility condition is barely satisfied | 411   { // off the left but the minimum visibility condition is barely satisfied | 
| 394     // without relocaiton. | 412     // without relocaiton. | 
| 395     gfx::Rect initial_bounds(-470, 50, 500, 400); | 413     gfx::Rect initial_bounds(-470, 50, 500, 400); | 
| 396 | 414 | 
| 397     gfx::Rect window_bounds; | 415     gfx::Rect window_bounds; | 
| 398     bool maximized; | 416     bool maximized; | 
| 399     GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(), | 417     GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(), | 
| 400                     initial_bounds, false, PERSISTED, | 418                     initial_bounds, false, PERSISTED, | 
| 401                     &window_bounds, &maximized); | 419                     &window_bounds, &maximized); | 
| 402     EXPECT_FALSE(maximized); | 420     EXPECT_FALSE(maximized); | 
| 403     EXPECT_EQ(initial_bounds, window_bounds); | 421     EXPECT_EQ(initial_bounds, window_bounds); | 
| 404   } | 422   } | 
| 405 | 423 | 
| 406   { // off the left and the minimum visibility condition is satisfied by | 424   { // off the left and the minimum visibility condition is satisfied by | 
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 578     gfx::Rect window_bounds; | 596     gfx::Rect window_bounds; | 
| 579     bool maximized; | 597     bool maximized; | 
| 580     GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(), | 598     GetWindowBounds(tentwentyfour, tentwentyfour, gfx::Rect(), | 
| 581                     gfx::Rect(10, 10, 29, 29), false, PERSISTED, | 599                     gfx::Rect(10, 10, 29, 29), false, PERSISTED, | 
| 582                     &window_bounds, &maximized); | 600                     &window_bounds, &maximized); | 
| 583     EXPECT_FALSE(maximized); | 601     EXPECT_FALSE(maximized); | 
| 584     EXPECT_EQ(gfx::Rect(10, 10, 30 /* not 29 */, 30 /* not 29 */), | 602     EXPECT_EQ(gfx::Rect(10, 10, 30 /* not 29 */, 30 /* not 29 */), | 
| 585               window_bounds); | 603               window_bounds); | 
| 586   } | 604   } | 
| 587 } | 605 } | 
| OLD | NEW | 
|---|