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

Side by Side Diff: chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm

Issue 836173002: Mac: Fix sheet positioning on popup windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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 unified diff | Download patch
OLDNEW
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 #import "base/mac/mac_util.h" 7 #import "base/mac/mac_util.h"
8 #include "base/mac/sdk_forward_declarations.h" 8 #include "base/mac/sdk_forward_declarations.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 } 485 }
486 486
487 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, SheetPosition) { 487 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, SheetPosition) {
488 ASSERT_TRUE([controller() isKindOfClass:[BrowserWindowController class]]); 488 ASSERT_TRUE([controller() isKindOfClass:[BrowserWindowController class]]);
489 EXPECT_TRUE([controller() isTabbedWindow]); 489 EXPECT_TRUE([controller() isTabbedWindow]);
490 EXPECT_TRUE([controller() hasTabStrip]); 490 EXPECT_TRUE([controller() hasTabStrip]);
491 EXPECT_FALSE([controller() hasTitleBar]); 491 EXPECT_FALSE([controller() hasTitleBar]);
492 EXPECT_TRUE([controller() hasToolbar]); 492 EXPECT_TRUE([controller() hasToolbar]);
493 EXPECT_FALSE([controller() isBookmarkBarVisible]); 493 EXPECT_FALSE([controller() isBookmarkBarVisible]);
494 494
495 NSRect defaultAlertFrame = NSMakeRect(0, 0, 300, 200); 495 id sheet = MockWindowWithFrame(NSMakeRect(0, 0, 300, 200));
496 id sheet = MockWindowWithFrame(defaultAlertFrame);
497 NSWindow* window = browser()->window()->GetNativeWindow(); 496 NSWindow* window = browser()->window()->GetNativeWindow();
498 NSRect alertFrame = [controller() window:window 497 NSRect contentFrame = [[window contentView] frame];
499 willPositionSheet:nil 498 NSRect defaultLocation =
500 usingRect:defaultAlertFrame]; 499 NSMakeRect(0, NSMaxY(contentFrame), NSWidth(contentFrame), 0);
500
501 NSRect sheetLocation = [controller() window:window
502 willPositionSheet:nil
503 usingRect:defaultLocation];
501 NSRect toolbarFrame = [[[controller() toolbarController] view] frame]; 504 NSRect toolbarFrame = [[[controller() toolbarController] view] frame];
502 EXPECT_EQ(NSMinY(alertFrame), NSMinY(toolbarFrame)); 505 EXPECT_EQ(NSMinY(toolbarFrame), NSMinY(sheetLocation));
503 506
504 // Open sheet with normal browser window, persistent bookmark bar. 507 // Open sheet with normal browser window, persistent bookmark bar.
505 chrome::ToggleBookmarkBarWhenVisible(browser()->profile()); 508 chrome::ToggleBookmarkBarWhenVisible(browser()->profile());
506 EXPECT_TRUE([controller() isBookmarkBarVisible]); 509 EXPECT_TRUE([controller() isBookmarkBarVisible]);
507 alertFrame = [controller() window:window 510 sheetLocation = [controller() window:window
508 willPositionSheet:sheet 511 willPositionSheet:sheet
509 usingRect:defaultAlertFrame]; 512 usingRect:defaultLocation];
510 NSRect bookmarkBarFrame = [[[controller() bookmarkBarController] view] frame]; 513 NSRect bookmarkBarFrame = [[[controller() bookmarkBarController] view] frame];
511 EXPECT_EQ(NSMinY(alertFrame), NSMinY(bookmarkBarFrame)); 514 EXPECT_EQ(NSMinY(bookmarkBarFrame), NSMinY(sheetLocation));
512 515
513 // If the sheet is too large, it should be positioned at the top of the 516 // If the sheet is too large, it should be positioned at the top of the
514 // window. 517 // window.
515 defaultAlertFrame = NSMakeRect(0, 0, 300, 2000); 518 sheet = MockWindowWithFrame(NSMakeRect(0, 0, 300, 2000));
516 sheet = MockWindowWithFrame(defaultAlertFrame); 519 sheetLocation = [controller() window:window
517 alertFrame = [controller() window:window 520 willPositionSheet:sheet
518 willPositionSheet:sheet 521 usingRect:defaultLocation];
519 usingRect:defaultAlertFrame]; 522 EXPECT_EQ(NSHeight([window frame]), NSMinY(sheetLocation));
520 EXPECT_EQ(NSMinY(alertFrame), NSHeight([window frame]));
521 523
522 // Reset the sheet's size. 524 // Reset the sheet's size.
523 defaultAlertFrame = NSMakeRect(0, 0, 300, 200); 525 sheet = MockWindowWithFrame(NSMakeRect(0, 0, 300, 200));
524 sheet = MockWindowWithFrame(defaultAlertFrame);
525 526
526 // Make sure the profile does not have the bookmark visible so that 527 // Make sure the profile does not have the bookmark visible so that
527 // we'll create the shortcut window without the bookmark bar. 528 // we'll create the shortcut window without the bookmark bar.
528 chrome::ToggleBookmarkBarWhenVisible(browser()->profile()); 529 chrome::ToggleBookmarkBarWhenVisible(browser()->profile());
529 // Open application mode window. 530 // Open application mode window.
530 OpenAppShortcutWindow(browser()->profile(), GURL("about:blank")); 531 OpenAppShortcutWindow(browser()->profile(), GURL("about:blank"));
531 Browser* popup_browser = BrowserList::GetInstance( 532 Browser* popup_browser = BrowserList::GetInstance(
532 chrome::GetActiveDesktop())->GetLastActive(); 533 chrome::GetActiveDesktop())->GetLastActive();
533 NSWindow* popupWindow = popup_browser->window()->GetNativeWindow(); 534 NSWindow* popupWindow = popup_browser->window()->GetNativeWindow();
534 BrowserWindowController* popupController = 535 BrowserWindowController* popupController =
535 [BrowserWindowController browserWindowControllerForWindow:popupWindow]; 536 [BrowserWindowController browserWindowControllerForWindow:popupWindow];
536 ASSERT_TRUE([popupController isKindOfClass:[BrowserWindowController class]]); 537 ASSERT_TRUE([popupController isKindOfClass:[BrowserWindowController class]]);
537 EXPECT_FALSE([popupController isTabbedWindow]); 538 EXPECT_FALSE([popupController isTabbedWindow]);
538 EXPECT_FALSE([popupController hasTabStrip]); 539 EXPECT_FALSE([popupController hasTabStrip]);
539 EXPECT_TRUE([popupController hasTitleBar]); 540 EXPECT_TRUE([popupController hasTitleBar]);
540 EXPECT_FALSE([popupController isBookmarkBarVisible]); 541 EXPECT_FALSE([popupController isBookmarkBarVisible]);
541 EXPECT_FALSE([popupController hasToolbar]); 542 EXPECT_FALSE([popupController hasToolbar]);
542 543
543 // Open sheet in an application window. 544 // Open sheet in an application window.
544 [popupController showWindow:nil]; 545 [popupController showWindow:nil];
545 alertFrame = [popupController window:popupWindow 546 sheetLocation = [popupController window:popupWindow
546 willPositionSheet:sheet 547 willPositionSheet:sheet
547 usingRect:defaultAlertFrame]; 548 usingRect:defaultLocation];
548 EXPECT_EQ(NSMinY(alertFrame), 549 EXPECT_EQ(NSHeight([[popupWindow contentView] frame]), NSMinY(sheetLocation));
549 NSHeight([[popupWindow contentView] frame]) -
550 defaultAlertFrame.size.height);
551 550
552 // Close the application window. 551 // Close the application window.
553 popup_browser->tab_strip_model()->CloseSelectedTabs(); 552 popup_browser->tab_strip_model()->CloseSelectedTabs();
554 [popupController close]; 553 [popupController close];
555 } 554 }
556 555
557 // Verify that the info bar tip is hidden when the toolbar is not visible. 556 // Verify that the info bar tip is hidden when the toolbar is not visible.
558 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, 557 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest,
559 InfoBarTipHiddenForWindowWithoutToolbar) { 558 InfoBarTipHiddenForWindowWithoutToolbar) {
560 ShowInfoBar(browser()); 559 ShowInfoBar(browser());
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 VerifyWindowControlsZOrder(); 629 VerifyWindowControlsZOrder();
631 [controller() removeOverlay]; 630 [controller() removeOverlay];
632 VerifyWindowControlsZOrder(); 631 VerifyWindowControlsZOrder();
633 632
634 // Toggle immersive fullscreen, then verify z order. In immersive fullscreen, 633 // Toggle immersive fullscreen, then verify z order. In immersive fullscreen,
635 // there are no window controls. 634 // there are no window controls.
636 [controller() enterImmersiveFullscreen]; 635 [controller() enterImmersiveFullscreen];
637 [controller() exitImmersiveFullscreen]; 636 [controller() exitImmersiveFullscreen];
638 VerifyWindowControlsZOrder(); 637 VerifyWindowControlsZOrder();
639 } 638 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698