1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/ui/window_sizer/window_sizer_common_unittest.h"
7 #include "base/compiler_specific.h"
8 #include "testing/gtest/include/gtest/gtest.h"
10 // Test that the window is sized appropriately for the first run experience
11 // where the default window bounds calculation is invoked.
12 TEST(WindowSizerTest
, DefaultSizeCase
) {
13 { // 4:3 monitor case, 1024x768, no taskbar
14 gfx::Rect window_bounds
;
15 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(), gfx::Rect(),
16 gfx::Rect(), DEFAULT
, NULL
, gfx::Rect(), &window_bounds
);
17 EXPECT_EQ(gfx::Rect(kWindowTilePixels
, kWindowTilePixels
,
18 1024 - kWindowTilePixels
* 2,
19 768 - kWindowTilePixels
* 2),
23 { // 4:3 monitor case, 1024x768, taskbar on bottom
24 gfx::Rect window_bounds
;
25 GetWindowBounds(p1024x768
, taskbar_bottom_work_area
, gfx::Rect(),
26 gfx::Rect(), gfx::Rect(), DEFAULT
, NULL
, gfx::Rect(),
28 EXPECT_EQ(gfx::Rect(kWindowTilePixels
, kWindowTilePixels
,
29 1024 - kWindowTilePixels
* 2,
30 (taskbar_bottom_work_area
.height() -
31 kWindowTilePixels
* 2)),
35 { // 4:3 monitor case, 1024x768, taskbar on right
36 gfx::Rect window_bounds
;
37 GetWindowBounds(p1024x768
, taskbar_right_work_area
, gfx::Rect(),
38 gfx::Rect(), gfx::Rect(), DEFAULT
, NULL
, gfx::Rect(),
40 EXPECT_EQ(gfx::Rect(kWindowTilePixels
, kWindowTilePixels
,
41 taskbar_right_work_area
.width() - kWindowTilePixels
*2,
42 768 - kWindowTilePixels
* 2),
46 { // 4:3 monitor case, 1024x768, taskbar on left
47 gfx::Rect window_bounds
;
48 GetWindowBounds(p1024x768
, taskbar_left_work_area
, gfx::Rect(),
49 gfx::Rect(), gfx::Rect(), DEFAULT
, NULL
, gfx::Rect(),
51 EXPECT_EQ(gfx::Rect(taskbar_left_work_area
.x() + kWindowTilePixels
,
53 taskbar_left_work_area
.width() - kWindowTilePixels
* 2,
54 (taskbar_left_work_area
.height() -
55 kWindowTilePixels
* 2)),
59 { // 4:3 monitor case, 1024x768, taskbar on top
60 gfx::Rect window_bounds
;
61 GetWindowBounds(p1024x768
, taskbar_top_work_area
, gfx::Rect(),
62 gfx::Rect(), gfx::Rect(), DEFAULT
, NULL
, gfx::Rect(),
64 EXPECT_EQ(gfx::Rect(kWindowTilePixels
,
65 taskbar_top_work_area
.y() + kWindowTilePixels
,
66 1024 - kWindowTilePixels
* 2,
67 taskbar_top_work_area
.height() - kWindowTilePixels
* 2),
71 { // 4:3 monitor case, 1280x1024
72 gfx::Rect window_bounds
;
73 GetWindowBounds(p1280x1024
, p1280x1024
, gfx::Rect(), gfx::Rect(),
74 gfx::Rect(), DEFAULT
, NULL
, gfx::Rect(), &window_bounds
);
75 EXPECT_EQ(gfx::Rect(kWindowTilePixels
, kWindowTilePixels
,
77 1024 - kWindowTilePixels
* 2),
81 { // 4:3 monitor case, 1600x1200
82 gfx::Rect window_bounds
;
83 GetWindowBounds(p1600x1200
, p1600x1200
, gfx::Rect(), gfx::Rect(),
84 gfx::Rect(), DEFAULT
, NULL
, gfx::Rect(), &window_bounds
);
85 EXPECT_EQ(gfx::Rect(kWindowTilePixels
, kWindowTilePixels
,
87 1200 - kWindowTilePixels
* 2),
91 { // 16:10 monitor case, 1680x1050
92 gfx::Rect window_bounds
;
93 GetWindowBounds(p1680x1050
, p1680x1050
, gfx::Rect(), gfx::Rect(),
94 gfx::Rect(), DEFAULT
, NULL
, gfx::Rect(), &window_bounds
);
95 EXPECT_EQ(gfx::Rect(kWindowTilePixels
, kWindowTilePixels
,
96 840 - static_cast<int>(kWindowTilePixels
* 1.5),
97 1050 - kWindowTilePixels
* 2),
101 { // 16:10 monitor case, 1920x1200
102 gfx::Rect window_bounds
;
103 GetWindowBounds(p1920x1200
, p1920x1200
, gfx::Rect(), gfx::Rect(),
104 gfx::Rect(), DEFAULT
, NULL
, gfx::Rect(), &window_bounds
);
105 EXPECT_EQ(gfx::Rect(kWindowTilePixels
, kWindowTilePixels
,
106 960 - static_cast<int>(kWindowTilePixels
* 1.5),
107 1200 - kWindowTilePixels
* 2),
112 // Test that the next opened window is positioned appropriately given the
113 // bounds of an existing window of the same type.
114 TEST(WindowSizerTest
, LastWindowBoundsCase
) {
115 { // normal, in the middle of the screen somewhere.
116 gfx::Rect window_bounds
;
117 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
118 gfx::Rect(kWindowTilePixels
, kWindowTilePixels
, 500, 400),
119 gfx::Rect(), LAST_ACTIVE
, NULL
, gfx::Rect(),
121 EXPECT_EQ(gfx::Rect(kWindowTilePixels
* 2,
122 kWindowTilePixels
* 2, 500, 400), window_bounds
);
126 gfx::Rect window_bounds
;
127 GetWindowBounds(p1024x768
, taskbar_top_work_area
, gfx::Rect(),
128 gfx::Rect(kWindowTilePixels
, kWindowTilePixels
, 500, 400),
129 gfx::Rect(), LAST_ACTIVE
, NULL
, gfx::Rect(),
131 EXPECT_EQ(gfx::Rect(kWindowTilePixels
* 2,
132 std::max(kWindowTilePixels
* 2,
133 34 /* toolbar height */),
134 500, 400), window_bounds
);
137 { // Too small to satisify the minimum visibility condition.
138 gfx::Rect window_bounds
;
139 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
140 gfx::Rect(kWindowTilePixels
, kWindowTilePixels
, 29, 29),
141 gfx::Rect(), LAST_ACTIVE
, NULL
, gfx::Rect(),
143 EXPECT_EQ(gfx::Rect(kWindowTilePixels
* 2,
144 kWindowTilePixels
* 2,
152 gfx::Rect window_bounds
;
153 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
154 gfx::Rect(kWindowTilePixels
, kWindowTilePixels
, 500, 400),
155 gfx::Rect(), LAST_ACTIVE
, NULL
, gfx::Rect(),
157 EXPECT_EQ(gfx::Rect(kWindowTilePixels
* 2,
158 kWindowTilePixels
* 2, 500, 400), window_bounds
);
162 // Test that the window opened is sized appropriately given persisted sizes.
163 TEST(WindowSizerTest
, PersistedBoundsCase
) {
164 { // normal, in the middle of the screen somewhere.
165 gfx::Rect
initial_bounds(kWindowTilePixels
, kWindowTilePixels
, 500, 400);
167 gfx::Rect window_bounds
;
168 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(), initial_bounds
,
169 gfx::Rect(), PERSISTED
, NULL
, gfx::Rect(), &window_bounds
);
170 EXPECT_EQ(initial_bounds
.ToString(), window_bounds
.ToString());
174 gfx::Rect
initial_bounds(0, 0, 1024, 768);
176 gfx::Rect window_bounds
;
177 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(), initial_bounds
,
178 gfx::Rect(), PERSISTED
, NULL
, gfx::Rect(), &window_bounds
);
179 EXPECT_EQ(initial_bounds
.ToString(), window_bounds
.ToString());
182 { // normal, on non-primary monitor in negative coords.
183 gfx::Rect
initial_bounds(-600, 10, 500, 400);
185 gfx::Rect window_bounds
;
186 GetWindowBounds(p1024x768
, p1024x768
, left_s1024x768
,
187 initial_bounds
, gfx::Rect(), PERSISTED
, NULL
, gfx::Rect(),
189 EXPECT_EQ(initial_bounds
.ToString(), window_bounds
.ToString());
192 { // normal, on non-primary monitor in negative coords.
193 gfx::Rect
initial_bounds(-1024, 0, 1024, 768);
195 gfx::Rect window_bounds
;
196 GetWindowBounds(p1024x768
, p1024x768
, left_s1024x768
,
197 initial_bounds
, gfx::Rect(), PERSISTED
, NULL
, gfx::Rect(),
199 EXPECT_EQ(initial_bounds
.ToString(), window_bounds
.ToString());
202 { // Non-primary monitor resoultion has changed, but the monitor still
203 // completely contains the window.
205 gfx::Rect
initial_bounds(1074, 50, 600, 500);
207 gfx::Rect window_bounds
;
208 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(1024, 0, 800, 600),
209 initial_bounds
, right_s1024x768
, PERSISTED
, NULL
,
210 gfx::Rect(), &window_bounds
);
211 EXPECT_EQ(initial_bounds
.ToString(), window_bounds
.ToString());
214 { // Non-primary monitor resoultion has changed, and the window is partially
217 gfx::Rect
initial_bounds(1274, 50, 600, 500);
219 gfx::Rect window_bounds
;
220 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(1024, 0, 800, 600),
221 initial_bounds
, right_s1024x768
, PERSISTED
,
222 NULL
, gfx::Rect(), &window_bounds
);
223 EXPECT_EQ("1224,50 600x500", window_bounds
.ToString());
226 { // Non-primary monitor resoultion has changed, and the window is now too
227 // large for the monitor.
229 gfx::Rect
initial_bounds(1274, 50, 900, 700);
231 gfx::Rect window_bounds
;
232 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(1024, 0, 800, 600),
233 initial_bounds
, right_s1024x768
, PERSISTED
,
234 NULL
, gfx::Rect(), &window_bounds
);
235 EXPECT_EQ("1024,0 800x600", window_bounds
.ToString());
238 { // width and height too small
239 gfx::Rect window_bounds
;
240 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
241 gfx::Rect(kWindowTilePixels
, kWindowTilePixels
, 29, 29),
242 gfx::Rect(), PERSISTED
, NULL
, gfx::Rect(), &window_bounds
);
243 EXPECT_EQ(gfx::Rect(kWindowTilePixels
, kWindowTilePixels
,
244 30 /* not 29 */, 30 /* not 29 */),
248 #if defined(OS_MACOSX)
249 { // Saved state is too tall to possibly be resized. Mac resizers
250 // are at the bottom of the window, and no piece of a window can
251 // be moved higher than the menubar. (Perhaps the user changed
252 // resolution to something smaller before relaunching Chrome?)
253 gfx::Rect window_bounds
;
254 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
255 gfx::Rect(kWindowTilePixels
, kWindowTilePixels
, 30, 5000),
256 gfx::Rect(), PERSISTED
, NULL
, gfx::Rect(), &window_bounds
);
257 EXPECT_EQ(p1024x768
.height(), window_bounds
.height());
259 #endif // defined(OS_MACOSX)
262 //////////////////////////////////////////////////////////////////////////////
263 // The following unittests have different results on Mac/non-Mac because we
264 // reposition windows aggressively on Mac. The *WithAggressiveReposition tests
265 // are run on Mac, and the *WithNonAggressiveRepositioning tests are run on
268 #if defined(OS_MACOSX)
269 TEST(WindowSizerTest
, LastWindowOffscreenWithAggressiveRepositioning
) {
270 { // taskbar on left. The new window overlaps slightly with the taskbar, so
271 // it is moved to be flush with the left edge of the work area.
272 gfx::Rect window_bounds
;
273 GetWindowBounds(p1024x768
, taskbar_left_work_area
, gfx::Rect(),
274 gfx::Rect(kWindowTilePixels
, kWindowTilePixels
, 500, 400),
275 gfx::Rect(), LAST_ACTIVE
, NULL
, gfx::Rect(),
277 EXPECT_EQ(gfx::Rect(taskbar_left_work_area
.x(),
278 kWindowTilePixels
* 2, 500, 400), window_bounds
);
281 { // offset would put the new window offscreen at the bottom
282 gfx::Rect window_bounds
;
283 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
284 gfx::Rect(10, 729, 500, 400), gfx::Rect(), LAST_ACTIVE
,
285 NULL
, gfx::Rect(), &window_bounds
);
286 EXPECT_EQ(gfx::Rect(10 + kWindowTilePixels
,
287 0 /* not 729 + kWindowTilePixels */,
292 { // offset would put the new window offscreen at the right
293 gfx::Rect window_bounds
;
294 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
295 gfx::Rect(985, 10, 500, 400), gfx::Rect(), LAST_ACTIVE
,
296 NULL
, gfx::Rect(), &window_bounds
);
297 EXPECT_EQ(gfx::Rect(0 /* not 985 + kWindowTilePixels*/,
298 10 + kWindowTilePixels
,
303 { // offset would put the new window offscreen at the bottom right
304 gfx::Rect window_bounds
;
305 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
306 gfx::Rect(985, 729, 500, 400), gfx::Rect(), LAST_ACTIVE
,
307 NULL
, gfx::Rect(), &window_bounds
);
308 EXPECT_EQ(gfx::Rect(0 /* not 985 + kWindowTilePixels*/,
309 0 /* not 729 + kWindowTilePixels*/,
315 TEST(WindowSizerTest
, PersistedWindowOffscreenWithAggressiveRepositioning
) {
317 gfx::Rect window_bounds
;
318 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
319 gfx::Rect(-471, 50, 500, 400), gfx::Rect(), PERSISTED
,
320 NULL
, gfx::Rect(), &window_bounds
);
321 EXPECT_EQ(gfx::Rect(0 /* not -471 */, 50, 500, 400), window_bounds
);
325 gfx::Rect window_bounds
;
326 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
327 gfx::Rect(50, -370, 500, 400), gfx::Rect(), PERSISTED
,
328 NULL
, gfx::Rect(), &window_bounds
);
329 EXPECT_EQ(gfx::Rect(50, 0, 500, 400), window_bounds
);
333 gfx::Rect window_bounds
;
334 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
335 gfx::Rect(995, 50, 500, 400), gfx::Rect(), PERSISTED
,
336 NULL
, gfx::Rect(), &window_bounds
);
337 EXPECT_EQ(gfx::Rect(0 /* not 995 */, 50, 500, 400), window_bounds
);
341 gfx::Rect window_bounds
;
342 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
343 gfx::Rect(50, 739, 500, 400), gfx::Rect(), PERSISTED
,
344 NULL
, gfx::Rect(), &window_bounds
);
345 EXPECT_EQ(gfx::Rect(50, 0 /* not 739 */, 500, 400), window_bounds
);
349 gfx::Rect window_bounds
;
350 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
351 gfx::Rect(-471, -371, 500, 400), gfx::Rect(), PERSISTED
,
352 NULL
, gfx::Rect(), &window_bounds
);
353 EXPECT_EQ(gfx::Rect(0 /* not -471 */, 0 /* not -371 */, 500, 400),
357 { // off the topright
358 gfx::Rect window_bounds
;
359 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
360 gfx::Rect(995, -371, 500, 400), gfx::Rect(), PERSISTED
,
361 NULL
, gfx::Rect(), &window_bounds
);
362 EXPECT_EQ(gfx::Rect(0 /* not 995 */, 0 /* not -371 */, 500, 400),
366 { // off the bottomleft
367 gfx::Rect window_bounds
;
368 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
369 gfx::Rect(-471, 739, 500, 400), gfx::Rect(), PERSISTED
,
370 NULL
, gfx::Rect(), &window_bounds
);
371 EXPECT_EQ(gfx::Rect(0 /* not -471 */, 0 /* not 739 */, 500, 400),
375 { // off the bottomright
376 gfx::Rect window_bounds
;
377 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
378 gfx::Rect(995, 739, 500, 400), gfx::Rect(), PERSISTED
,
379 NULL
, gfx::Rect(), &window_bounds
);
380 EXPECT_EQ(gfx::Rect(0 /* not 995 */, 0 /* not 739 */, 500, 400),
384 { // entirely off left
385 gfx::Rect window_bounds
;
386 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
387 gfx::Rect(-700, 50, 500, 400), gfx::Rect(), PERSISTED
,
388 NULL
, gfx::Rect(), &window_bounds
);
389 EXPECT_EQ(gfx::Rect(0 /* not -700 */, 50, 500, 400), window_bounds
);
392 { // entirely off left (monitor was detached since last run)
393 gfx::Rect window_bounds
;
394 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
395 gfx::Rect(-700, 50, 500, 400), left_s1024x768
,
396 PERSISTED
, NULL
, gfx::Rect(), &window_bounds
);
397 EXPECT_EQ(gfx::Rect(0, 50, 500, 400), window_bounds
);
400 { // entirely off top
401 gfx::Rect window_bounds
;
402 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
403 gfx::Rect(50, -500, 500, 400), gfx::Rect(), PERSISTED
,
404 NULL
, gfx::Rect(), &window_bounds
);
405 EXPECT_EQ(gfx::Rect(50, 0, 500, 400), window_bounds
);
408 { // entirely off top (monitor was detached since last run)
409 gfx::Rect window_bounds
;
410 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
411 gfx::Rect(50, -500, 500, 400), top_s1024x768
, PERSISTED
,
412 NULL
, gfx::Rect(), &window_bounds
);
413 EXPECT_EQ(gfx::Rect(50, 0, 500, 400), window_bounds
);
416 { // entirely off right
417 gfx::Rect window_bounds
;
418 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
419 gfx::Rect(1200, 50, 500, 400), gfx::Rect(), PERSISTED
,
420 NULL
, gfx::Rect(), &window_bounds
);
421 EXPECT_EQ(gfx::Rect(0 /* not 1200 */, 50, 500, 400), window_bounds
);
424 { // entirely off right (monitor was detached since last run)
425 gfx::Rect window_bounds
;
426 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
427 gfx::Rect(1200, 50, 500, 400), right_s1024x768
, PERSISTED
,
428 NULL
, gfx::Rect(), &window_bounds
);
429 EXPECT_EQ(gfx::Rect(524 /* not 1200 */, 50, 500, 400), window_bounds
);
432 { // entirely off bottom
433 gfx::Rect window_bounds
;
434 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
435 gfx::Rect(50, 800, 500, 400), gfx::Rect(), PERSISTED
,
436 NULL
, gfx::Rect(), &window_bounds
);
437 EXPECT_EQ(gfx::Rect(50, 0 /* not 800 */, 500, 400), window_bounds
);
440 { // entirely off bottom (monitor was detached since last run)
441 gfx::Rect window_bounds
;
442 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
443 gfx::Rect(50, 800, 500, 400), bottom_s1024x768
,
444 PERSISTED
, NULL
, gfx::Rect(), &window_bounds
);
445 EXPECT_EQ(gfx::Rect(50, 368 /* not 800 */, 500, 400), window_bounds
);
448 { // wider than the screen. off both the left and right
449 gfx::Rect window_bounds
;
450 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
451 gfx::Rect(-100, 50, 2000, 400), gfx::Rect(), PERSISTED
,
452 NULL
, gfx::Rect(), &window_bounds
);
453 EXPECT_EQ(gfx::Rect(0 /* not -100 */, 50, 2000, 400), window_bounds
);
457 TEST(WindowSizerTest
, LastWindowOffscreenWithNonAggressiveRepositioning
) {
458 { // taskbar on left.
459 gfx::Rect window_bounds
;
460 GetWindowBounds(p1024x768
, taskbar_left_work_area
, gfx::Rect(),
461 gfx::Rect(kWindowTilePixels
, kWindowTilePixels
, 500, 400),
462 gfx::Rect(), LAST_ACTIVE
, NULL
, gfx::Rect(),
464 EXPECT_EQ(gfx::Rect(kWindowTilePixels
* 2,
465 kWindowTilePixels
* 2, 500, 400), window_bounds
);
468 // Linux does not tile windows, so tile adjustment tests don't make sense.
469 #if !defined(OS_POSIX) || defined(OS_MACOSX)
470 { // offset would put the new window offscreen at the bottom but the minimum
471 // visibility condition is barely satisfied without relocation.
472 gfx::Rect window_bounds
;
473 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
474 gfx::Rect(10, 728, 500, 400), gfx::Rect(), LAST_ACTIVE
,
475 NULL
, gfx::Rect(), &window_bounds
);
476 EXPECT_EQ(gfx::Rect(10 + kWindowTilePixels
, 738,
477 500, 400), window_bounds
);
480 { // offset would put the new window offscreen at the bottom and the minimum
481 // visibility condition is satisified by relocation.
482 gfx::Rect window_bounds
;
483 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
484 gfx::Rect(10, 729, 500, 400), gfx::Rect(), LAST_ACTIVE
,
485 NULL
, gfx::Rect(), &window_bounds
);
486 EXPECT_EQ(gfx::Rect(10 + kWindowTilePixels
, 738 /* not 739 */, 500, 400),
490 { // offset would put the new window offscreen at the right but the minimum
491 // visibility condition is barely satisfied without relocation.
492 gfx::Rect window_bounds
;
493 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
494 gfx::Rect(984, 10, 500, 400), gfx::Rect(), LAST_ACTIVE
,
495 NULL
, gfx::Rect(), &window_bounds
);
496 EXPECT_EQ(gfx::Rect(994, 10 + kWindowTilePixels
, 500, 400), window_bounds
);
499 { // offset would put the new window offscreen at the right and the minimum
500 // visibility condition is satisified by relocation.
501 gfx::Rect window_bounds
;
502 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
503 gfx::Rect(985, 10, 500, 400), gfx::Rect(), LAST_ACTIVE
,
504 NULL
, gfx::Rect(), &window_bounds
);
505 EXPECT_EQ(gfx::Rect(994 /* not 995 */, 10 + kWindowTilePixels
,
506 500, 400), window_bounds
);
509 { // offset would put the new window offscreen at the bottom right and the
510 // minimum visibility condition is satisified by relocation.
511 gfx::Rect window_bounds
;
512 GetWindowBounds(p1024x768
, p1024x768
, gfx::Rect(),
513 gfx::Rect(985, 729, 500, 400), gfx::Rect(), LAST_ACTIVE
,
514 NULL
, gfx::Rect(), &window_bounds
);
515 EXPECT_EQ(gfx::Rect(994 /* not 995 */, 738 /* not 739 */, 500, 400),
518 #endif // !defined(OS_POSIX) || defined(OS_MACOSX)
521 #endif //defined(OS_MACOSX)