OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 #import "chrome/browser/ui/cocoa/browser_window_controller.h" | 5 #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
6 | 6 |
7 #include "base/mac/mac_util.h" | 7 #include "base/mac/mac_util.h" |
8 #import "base/mac/scoped_nsobject.h" | 8 #import "base/mac/scoped_nsobject.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 namespace { | 242 namespace { |
243 | 243 |
244 // Verifies that the toolbar, infobar, tab content area, and download shelf | 244 // Verifies that the toolbar, infobar, tab content area, and download shelf |
245 // completely fill the area under the tabstrip. | 245 // completely fill the area under the tabstrip. |
246 void CheckViewPositions(BrowserWindowController* controller) { | 246 void CheckViewPositions(BrowserWindowController* controller) { |
247 NSRect contentView = [[[controller window] contentView] bounds]; | 247 NSRect contentView = [[[controller window] contentView] bounds]; |
248 NSRect tabstrip = [[controller tabStripView] frame]; | 248 NSRect tabstrip = [[controller tabStripView] frame]; |
249 NSRect toolbar = [[controller toolbarView] frame]; | 249 NSRect toolbar = [[controller toolbarView] frame]; |
250 NSRect infobar = [[controller infoBarContainerView] frame]; | 250 NSRect infobar = [[controller infoBarContainerView] frame]; |
251 NSRect contentArea = [[controller tabContentArea] frame]; | 251 NSRect contentArea = [[controller tabContentArea] frame]; |
252 NSRect download = [[[controller downloadShelf] view] frame]; | 252 NSRect download = NSZeroRect; |
| 253 if ([[[controller downloadShelf] view] superview]) |
| 254 download = [[[controller downloadShelf] view] frame]; |
253 | 255 |
254 EXPECT_EQ(NSMinY(contentView), NSMinY(download)); | 256 EXPECT_EQ(NSMinY(contentView), NSMinY(download)); |
255 EXPECT_EQ(NSMaxY(download), NSMinY(contentArea)); | 257 EXPECT_EQ(NSMaxY(download), NSMinY(contentArea)); |
256 EXPECT_EQ(NSMaxY(contentArea), NSMinY(infobar)); | 258 EXPECT_EQ(NSMaxY(contentArea), NSMinY(infobar)); |
257 | 259 |
258 // Bookmark bar frame is random memory when hidden. | 260 // Bookmark bar frame is random memory when hidden. |
259 if ([controller bookmarkBarVisible]) { | 261 if ([controller bookmarkBarVisible]) { |
260 NSRect bookmark = [[controller bookmarkView] frame]; | 262 NSRect bookmark = [[controller bookmarkView] frame]; |
261 EXPECT_EQ(NSMaxY(infobar), NSMinY(bookmark)); | 263 EXPECT_EQ(NSMaxY(infobar), NSMinY(bookmark)); |
262 EXPECT_EQ(NSMaxY(bookmark), NSMinY(toolbar)); | 264 EXPECT_EQ(NSMaxY(bookmark), NSMinY(toolbar)); |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 NSView* infobar = [controller_ infoBarContainerView]; | 409 NSView* infobar = [controller_ infoBarContainerView]; |
408 | 410 |
409 // We need to muck with the views a bit to put us in a consistent state before | 411 // We need to muck with the views a bit to put us in a consistent state before |
410 // we start resizing. In particular, we need to move the tab strip to be | 412 // we start resizing. In particular, we need to move the tab strip to be |
411 // immediately above the content area, since we layout views to be directly | 413 // immediately above the content area, since we layout views to be directly |
412 // under the tab strip. | 414 // under the tab strip. |
413 NSRect tabstripFrame = [tabstrip frame]; | 415 NSRect tabstripFrame = [tabstrip frame]; |
414 tabstripFrame.origin.y = NSMaxY([contentView frame]); | 416 tabstripFrame.origin.y = NSMaxY([contentView frame]); |
415 [tabstrip setFrame:tabstripFrame]; | 417 [tabstrip setFrame:tabstripFrame]; |
416 | 418 |
417 // The download shelf is created lazily. Force-create it and set its initial | 419 // Make the download shelf and set its initial height to 0. |
418 // height to 0. | 420 [controller_ createAndAddDownloadShelf]; |
419 NSView* download = [[controller_ downloadShelf] view]; | 421 NSView* download = [[controller_ downloadShelf] view]; |
420 NSRect downloadFrame = [download frame]; | 422 NSRect downloadFrame = [download frame]; |
421 downloadFrame.size.height = 0; | 423 downloadFrame.size.height = 0; |
422 [download setFrame:downloadFrame]; | 424 [download setFrame:downloadFrame]; |
423 | 425 |
424 // Force a layout and check each view's frame. | 426 // Force a layout and check each view's frame. |
425 [controller_ layoutSubviews]; | 427 [controller_ layoutSubviews]; |
426 CheckViewPositions(controller_); | 428 CheckViewPositions(controller_); |
427 | 429 |
428 // Expand the infobar to 60px and recheck | 430 // Expand the infobar to 60px and recheck |
(...skipping 29 matching lines...) Expand all Loading... |
458 // We need to muck with the views a bit to put us in a consistent state before | 460 // We need to muck with the views a bit to put us in a consistent state before |
459 // we start resizing. In particular, we need to move the tab strip to be | 461 // we start resizing. In particular, we need to move the tab strip to be |
460 // immediately above the content area, since we layout views to be directly | 462 // immediately above the content area, since we layout views to be directly |
461 // under the tab strip. | 463 // under the tab strip. |
462 NSRect tabstripFrame = [tabstrip frame]; | 464 NSRect tabstripFrame = [tabstrip frame]; |
463 tabstripFrame.origin.y = NSMaxY([contentView frame]); | 465 tabstripFrame.origin.y = NSMaxY([contentView frame]); |
464 [tabstrip setFrame:tabstripFrame]; | 466 [tabstrip setFrame:tabstripFrame]; |
465 | 467 |
466 // The download shelf is created lazily. Force-create it and set its initial | 468 // The download shelf is created lazily. Force-create it and set its initial |
467 // height to 0. | 469 // height to 0. |
| 470 [controller_ createAndAddDownloadShelf]; |
468 NSView* download = [[controller_ downloadShelf] view]; | 471 NSView* download = [[controller_ downloadShelf] view]; |
469 NSRect downloadFrame = [download frame]; | 472 NSRect downloadFrame = [download frame]; |
470 downloadFrame.size.height = 0; | 473 downloadFrame.size.height = 0; |
471 [download setFrame:downloadFrame]; | 474 [download setFrame:downloadFrame]; |
472 | 475 |
473 // Force a layout and check each view's frame. | 476 // Force a layout and check each view's frame. |
474 [controller_ layoutSubviews]; | 477 [controller_ layoutSubviews]; |
475 CheckViewPositions(controller_); | 478 CheckViewPositions(controller_); |
476 | 479 |
477 // Add the bookmark bar and recheck. | 480 // Add the bookmark bar and recheck. |
478 [controller_ resizeView:bookmark newHeight:40]; | 481 [controller_ resizeView:bookmark newHeight:40]; |
479 CheckViewPositions(controller_); | 482 CheckViewPositions(controller_); |
480 | 483 |
481 // Expand the infobar to 60px and recheck | 484 // Expand the infobar to 60px and recheck |
482 [controller_ resizeView:infobar newHeight:60]; | 485 [controller_ resizeView:infobar newHeight:60]; |
483 CheckViewPositions(controller_); | 486 CheckViewPositions(controller_); |
484 | 487 |
485 // Expand the toolbar to 64px and recheck | 488 // Expand the toolbar to 64px and recheck |
486 [controller_ resizeView:toolbar newHeight:64]; | 489 [controller_ resizeView:toolbar newHeight:64]; |
487 CheckViewPositions(controller_); | 490 CheckViewPositions(controller_); |
488 | 491 |
489 // Add a 30px download shelf and recheck | 492 // Add a 30px download shelf and recheck |
490 [controller_ resizeView:download newHeight:30]; | 493 [controller_ resizeView:download newHeight:30]; |
491 CheckViewPositions(controller_); | 494 CheckViewPositions(controller_); |
492 | 495 |
493 // Remove the bookmark bar and recheck | 496 // Remove the bookmark bar and recheck |
494 profile()->GetPrefs()->SetBoolean(bookmarks::prefs::kShowBookmarkBar, false); | 497 profile()->GetPrefs()->SetBoolean(bookmarks::prefs::kShowBookmarkBar, false); |
| 498 [controller_ browserWindow]->BookmarkBarStateChanged( |
| 499 BookmarkBar::DONT_ANIMATE_STATE_CHANGE); |
495 [controller_ resizeView:bookmark newHeight:0]; | 500 [controller_ resizeView:bookmark newHeight:0]; |
496 CheckViewPositions(controller_); | 501 CheckViewPositions(controller_); |
497 | 502 |
498 // Shrink the infobar to 0px and toolbar to 39px and recheck | 503 // Shrink the infobar to 0px and toolbar to 39px and recheck |
499 [controller_ resizeView:infobar newHeight:0]; | 504 [controller_ resizeView:infobar newHeight:0]; |
500 [controller_ resizeView:toolbar newHeight:39]; | 505 [controller_ resizeView:toolbar newHeight:39]; |
501 CheckViewPositions(controller_); | 506 CheckViewPositions(controller_); |
502 } | 507 } |
503 | 508 |
504 // Make sure, by default, the bookmark bar and the toolbar are the same width. | 509 // Make sure, by default, the bookmark bar and the toolbar are the same width. |
505 TEST_F(BrowserWindowControllerTest, BookmarkBarIsSameWidth) { | 510 TEST_F(BrowserWindowControllerTest, BookmarkBarIsSameWidth) { |
506 // Set the pref to the bookmark bar is visible when the toolbar is | 511 // Set the pref to the bookmark bar is visible when the toolbar is |
507 // first created. | 512 // first created. |
508 profile()->GetPrefs()->SetBoolean(bookmarks::prefs::kShowBookmarkBar, true); | 513 profile()->GetPrefs()->SetBoolean(bookmarks::prefs::kShowBookmarkBar, true); |
509 | 514 |
510 // Make sure the bookmark bar is the same width as the toolbar | 515 // Make sure the bookmark bar is the same width as the toolbar |
511 NSView* bookmarkBarView = [controller_ bookmarkView]; | 516 NSView* bookmarkBarView = [controller_ bookmarkView]; |
512 NSView* toolbarView = [controller_ toolbarView]; | 517 NSView* toolbarView = [controller_ toolbarView]; |
513 EXPECT_EQ([toolbarView frame].size.width, | 518 EXPECT_EQ([toolbarView frame].size.width, |
514 [bookmarkBarView frame].size.width); | 519 [bookmarkBarView frame].size.width); |
515 } | 520 } |
516 | 521 |
517 TEST_F(BrowserWindowControllerTest, TestTopRightForBubble) { | 522 TEST_F(BrowserWindowControllerTest, TestTopRightForBubble) { |
518 // The bookmark bubble must be attached to a lit and visible star. | 523 // The bookmark bubble must be attached to a lit and visible star. |
519 [controller_ setStarredState:YES]; | 524 [controller_ setStarredState:YES]; |
520 NSPoint p = [controller_ bookmarkBubblePoint]; | 525 NSPoint p = [controller_ bookmarkBubblePoint]; // Window coordinates. |
521 NSRect all = [[controller_ window] frame]; | 526 NSRect all = [[controller_ window] frame]; // Screen coordinates. |
522 | 527 |
523 // As a sanity check make sure the point is vaguely in the top right | 528 // As a sanity check make sure the point is vaguely in the top right |
524 // of the window. | 529 // of the window. |
525 EXPECT_GT(p.y, all.origin.y + (all.size.height/2)); | 530 EXPECT_GT(p.y, all.size.height / 2); |
526 EXPECT_GT(p.x, all.origin.x + (all.size.width/2)); | 531 EXPECT_GT(p.x, all.size.width / 2); |
527 } | 532 } |
528 | 533 |
529 // By the "zoom frame", we mean what Apple calls the "standard frame". | 534 // By the "zoom frame", we mean what Apple calls the "standard frame". |
530 TEST_F(BrowserWindowControllerTest, TestZoomFrame) { | 535 TEST_F(BrowserWindowControllerTest, TestZoomFrame) { |
531 NSWindow* window = [controller_ window]; | 536 NSWindow* window = [controller_ window]; |
532 ASSERT_TRUE(window); | 537 ASSERT_TRUE(window); |
533 NSRect screenFrame = [[window screen] visibleFrame]; | 538 NSRect screenFrame = [[window screen] visibleFrame]; |
534 ASSERT_FALSE(NSIsEmptyRect(screenFrame)); | 539 ASSERT_FALSE(NSIsEmptyRect(screenFrame)); |
535 | 540 |
536 // Minimum zoomed width is the larger of 60% of available horizontal space or | 541 // Minimum zoomed width is the larger of 60% of available horizontal space or |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
881 testFullscreenWindow_.reset( | 886 testFullscreenWindow_.reset( |
882 [[NSWindow alloc] initWithContentRect:NSMakeRect(0,0,400,400) | 887 [[NSWindow alloc] initWithContentRect:NSMakeRect(0,0,400,400) |
883 styleMask:NSBorderlessWindowMask | 888 styleMask:NSBorderlessWindowMask |
884 backing:NSBackingStoreBuffered | 889 backing:NSBackingStoreBuffered |
885 defer:NO]); | 890 defer:NO]); |
886 return testFullscreenWindow_.get(); | 891 return testFullscreenWindow_.get(); |
887 } | 892 } |
888 @end | 893 @end |
889 | 894 |
890 /* TODO(???): test other methods of BrowserWindowController */ | 895 /* TODO(???): test other methods of BrowserWindowController */ |
OLD | NEW |