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

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

Issue 18576005: [Mac] Adds a flag to force 10.6-style fullscreen for testing. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Remove broken DCHECK. Created 7 years, 5 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_private.h" 5 #import "chrome/browser/ui/cocoa/browser_window_controller_private.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #import "base/mac/scoped_nsobject.h" 10 #import "base/mac/scoped_nsobject.h"
11 #include "base/prefs/pref_service.h" 11 #include "base/prefs/pref_service.h"
12 #include "chrome/browser/browser_process.h" 12 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/fullscreen.h"
13 #include "chrome/browser/prefs/scoped_user_pref_update.h" 14 #include "chrome/browser/prefs/scoped_user_pref_update.h"
14 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/profiles/profile_info_util.h" 16 #include "chrome/browser/profiles/profile_info_util.h"
16 #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h" 17 #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h"
17 #include "chrome/browser/ui/browser.h" 18 #include "chrome/browser/ui/browser.h"
18 #include "chrome/browser/ui/browser_window_state.h" 19 #include "chrome/browser/ui/browser_window_state.h"
19 #import "chrome/browser/ui/cocoa/browser/avatar_button_controller.h" 20 #import "chrome/browser/ui/cocoa/browser/avatar_button_controller.h"
20 #import "chrome/browser/ui/cocoa/dev_tools_controller.h" 21 #import "chrome/browser/ui/cocoa/dev_tools_controller.h"
21 #import "chrome/browser/ui/cocoa/fast_resize_view.h" 22 #import "chrome/browser/ui/cocoa/fast_resize_view.h"
22 #import "chrome/browser/ui/cocoa/find_bar/find_bar_cocoa_controller.h" 23 #import "chrome/browser/ui/cocoa/find_bar/find_bar_cocoa_controller.h"
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 maxY + badgeYOffset); 312 maxY + badgeYOffset);
312 [avatarButton setFrameOrigin:origin]; 313 [avatarButton setFrameOrigin:origin];
313 [avatarButton setHidden:NO]; // Make sure it's shown. 314 [avatarButton setHidden:NO]; // Make sure it's shown.
314 } 315 }
315 316
316 // Calculate the right indentation. The default indentation built into the 317 // Calculate the right indentation. The default indentation built into the
317 // tabstrip leaves enough room for the fullscreen button or presentation mode 318 // tabstrip leaves enough room for the fullscreen button or presentation mode
318 // toggle button on Lion. On non-Lion systems, the right indent needs to be 319 // toggle button on Lion. On non-Lion systems, the right indent needs to be
319 // adjusted to make room for the new tab button when an avatar is present. 320 // adjusted to make room for the new tab button when an avatar is present.
320 CGFloat rightIndent = 0; 321 CGFloat rightIndent = 0;
321 if (base::mac::IsOSLionOrLater()) { 322 if (base::mac::IsOSLionOrLater() &&
323 [[self window] isKindOfClass:[FramedBrowserWindow class]]) {
322 FramedBrowserWindow* window = 324 FramedBrowserWindow* window =
323 static_cast<FramedBrowserWindow*>([self window]); 325 static_cast<FramedBrowserWindow*>([self window]);
324 DCHECK([window isKindOfClass:[FramedBrowserWindow class]]);
325 rightIndent += -[window fullScreenButtonOriginAdjustment].x; 326 rightIndent += -[window fullScreenButtonOriginAdjustment].x;
326 } else if ([self shouldShowAvatar]) { 327 } else if ([self shouldShowAvatar]) {
327 rightIndent += kAvatarTabStripShrink; 328 rightIndent += kAvatarTabStripShrink;
328 NSButton* labelButton = [avatarButtonController_ labelButtonView]; 329 NSButton* labelButton = [avatarButtonController_ labelButtonView];
329 if (labelButton) 330 if (labelButton)
330 rightIndent += NSWidth([labelButton frame]) + kAvatarRightOffset; 331 rightIndent += NSWidth([labelButton frame]) + kAvatarRightOffset;
331 } 332 }
332 [tabStripController_ setRightIndentForControls:rightIndent]; 333 [tabStripController_ setRightIndentForControls:rightIndent];
333 334
334 // Go ahead and layout the tabs. 335 // Go ahead and layout the tabs.
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 NSRect bookmarkFrame = [[bookmarkBarController_ view] frame]; 486 NSRect bookmarkFrame = [[bookmarkBarController_ view] frame];
486 bookmarkFrame.size.height = bookmarkFrame.size.height - deltaH; 487 bookmarkFrame.size.height = bookmarkFrame.size.height - deltaH;
487 [[toolbarController_ view] setFrame:toolbarFrame]; 488 [[toolbarController_ view] setFrame:toolbarFrame];
488 [[bookmarkBarController_ view] setFrame:bookmarkFrame]; 489 [[bookmarkBarController_ view] setFrame:bookmarkFrame];
489 [self layoutSubviews]; 490 [self layoutSubviews];
490 } 491 }
491 492
492 // Fullscreen and presentation mode methods 493 // Fullscreen and presentation mode methods
493 494
494 - (BOOL)shouldShowPresentationModeToggle { 495 - (BOOL)shouldShowPresentationModeToggle {
495 return base::mac::IsOSLionOrLater() && [self isFullscreen]; 496 return chrome::mac::SupportsSystemFullscreen() && [self isFullscreen];
496 } 497 }
497 498
498 - (void)moveViewsForFullscreenForSnowLeopard:(BOOL)fullscreen 499 - (void)moveViewsForFullscreenForSnowLeopard:(BOOL)fullscreen
499 regularWindow:(NSWindow*)regularWindow 500 regularWindow:(NSWindow*)regularWindow
500 fullscreenWindow:(NSWindow*)fullscreenWindow { 501 fullscreenWindow:(NSWindow*)fullscreenWindow {
501 // This method is only for Snow Leopard. 502 // This method is only for systems without fullscreen support.
502 DCHECK(base::mac::IsOSSnowLeopard()); 503 DCHECK(!chrome::mac::SupportsSystemFullscreen());
503 504
504 NSWindow* sourceWindow = fullscreen ? regularWindow : fullscreenWindow; 505 NSWindow* sourceWindow = fullscreen ? regularWindow : fullscreenWindow;
505 NSWindow* destWindow = fullscreen ? fullscreenWindow : regularWindow; 506 NSWindow* destWindow = fullscreen ? fullscreenWindow : regularWindow;
506 507
507 // Close the bookmark bubble, if it's open. Use |-ok:| instead of |-cancel:| 508 // Close the bookmark bubble, if it's open. Use |-ok:| instead of |-cancel:|
508 // or |-close| because that matches the behavior when the bubble loses key 509 // or |-close| because that matches the behavior when the bubble loses key
509 // status. 510 // status.
510 [bookmarkBubbleController_ ok:self]; 511 [bookmarkBubbleController_ ok:self];
511 512
512 // Save the current first responder so we can restore after views are moved. 513 // Save the current first responder so we can restore after views are moved.
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 } else { 607 } else {
607 [presentationModeController_ exitPresentationMode]; 608 [presentationModeController_ exitPresentationMode];
608 presentationModeController_.reset(); 609 presentationModeController_.reset();
609 } 610 }
610 611
611 [self adjustUIForPresentationMode:presentationMode]; 612 [self adjustUIForPresentationMode:presentationMode];
612 [self layoutSubviews]; 613 [self layoutSubviews];
613 } 614 }
614 615
615 - (void)enterFullscreenForSnowLeopard { 616 - (void)enterFullscreenForSnowLeopard {
616 DCHECK(base::mac::IsOSSnowLeopard()); 617 // TODO(rohitrao): This method is misnamed now, since there is a flag that
618 // enables 10.6-style fullscreen on newer OSes.
619 DCHECK(!chrome::mac::SupportsSystemFullscreen());
617 620
618 // Fade to black. 621 // Fade to black.
619 const CGDisplayReservationInterval kFadeDurationSeconds = 0.6; 622 const CGDisplayReservationInterval kFadeDurationSeconds = 0.6;
620 Boolean didFadeOut = NO; 623 Boolean didFadeOut = NO;
621 CGDisplayFadeReservationToken token; 624 CGDisplayFadeReservationToken token;
622 if (CGAcquireDisplayFadeReservation(kFadeDurationSeconds, &token) 625 if (CGAcquireDisplayFadeReservation(kFadeDurationSeconds, &token)
623 == kCGErrorSuccess) { 626 == kCGErrorSuccess) {
624 didFadeOut = YES; 627 didFadeOut = YES;
625 CGDisplayFade(token, kFadeDurationSeconds / 2, kCGDisplayBlendNormal, 628 CGDisplayFade(token, kFadeDurationSeconds / 2, kCGDisplayBlendNormal,
626 kCGDisplayBlendSolidColor, 0.0, 0.0, 0.0, /*synchronous=*/true); 629 kCGDisplayBlendSolidColor, 0.0, 0.0, 0.0, /*synchronous=*/true);
(...skipping 16 matching lines...) Expand all
643 646
644 // Fade back in. 647 // Fade back in.
645 if (didFadeOut) { 648 if (didFadeOut) {
646 CGDisplayFade(token, kFadeDurationSeconds / 2, kCGDisplayBlendSolidColor, 649 CGDisplayFade(token, kFadeDurationSeconds / 2, kCGDisplayBlendSolidColor,
647 kCGDisplayBlendNormal, 0.0, 0.0, 0.0, /*synchronous=*/false); 650 kCGDisplayBlendNormal, 0.0, 0.0, 0.0, /*synchronous=*/false);
648 CGReleaseDisplayFadeReservation(token); 651 CGReleaseDisplayFadeReservation(token);
649 } 652 }
650 } 653 }
651 654
652 - (void)exitFullscreenForSnowLeopard { 655 - (void)exitFullscreenForSnowLeopard {
653 DCHECK(base::mac::IsOSSnowLeopard()); 656 // TODO(rohitrao): This method is misnamed now, since there is a flag that
657 // enables 10.6-style fullscreen on newer OSes.
658 DCHECK(!chrome::mac::SupportsSystemFullscreen());
654 659
655 // Fade to black. 660 // Fade to black.
656 const CGDisplayReservationInterval kFadeDurationSeconds = 0.6; 661 const CGDisplayReservationInterval kFadeDurationSeconds = 0.6;
657 Boolean didFadeOut = NO; 662 Boolean didFadeOut = NO;
658 CGDisplayFadeReservationToken token; 663 CGDisplayFadeReservationToken token;
659 if (CGAcquireDisplayFadeReservation(kFadeDurationSeconds, &token) 664 if (CGAcquireDisplayFadeReservation(kFadeDurationSeconds, &token)
660 == kCGErrorSuccess) { 665 == kCGErrorSuccess) {
661 didFadeOut = YES; 666 didFadeOut = YES;
662 CGDisplayFade(token, kFadeDurationSeconds / 2, kCGDisplayBlendNormal, 667 CGDisplayFade(token, kFadeDurationSeconds / 2, kCGDisplayBlendNormal,
663 kCGDisplayBlendSolidColor, 0.0, 0.0, 0.0, /*synchronous=*/true); 668 kCGDisplayBlendSolidColor, 0.0, 0.0, 0.0, /*synchronous=*/true);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 777
773 NSWindow* window = [self window]; 778 NSWindow* window = [self window];
774 savedRegularWindowFrame_ = [window frame]; 779 savedRegularWindowFrame_ = [window frame];
775 BOOL mode = enteringPresentationMode_ || 780 BOOL mode = enteringPresentationMode_ ||
776 browser_->fullscreen_controller()->IsFullscreenForTabOrPending(); 781 browser_->fullscreen_controller()->IsFullscreenForTabOrPending();
777 enteringFullscreen_ = YES; 782 enteringFullscreen_ = YES;
778 [self setPresentationModeInternal:mode forceDropdown:NO]; 783 [self setPresentationModeInternal:mode forceDropdown:NO];
779 } 784 }
780 785
781 - (void)windowDidEnterFullScreen:(NSNotification*)notification { 786 - (void)windowDidEnterFullScreen:(NSNotification*)notification {
782 if (base::mac::IsOSLionOrLater()) 787 if (chrome::mac::SupportsSystemFullscreen())
783 [self deregisterForContentViewResizeNotifications]; 788 [self deregisterForContentViewResizeNotifications];
784 enteringFullscreen_ = NO; 789 enteringFullscreen_ = NO;
785 enteringPresentationMode_ = NO; 790 enteringPresentationMode_ = NO;
786 [self showFullscreenExitBubbleIfNecessary]; 791 [self showFullscreenExitBubbleIfNecessary];
787 browser_->WindowFullscreenStateChanged(); 792 browser_->WindowFullscreenStateChanged();
788 } 793 }
789 794
790 - (void)windowWillExitFullScreen:(NSNotification*)notification { 795 - (void)windowWillExitFullScreen:(NSNotification*)notification {
791 if (base::mac::IsOSLionOrLater()) 796 if (chrome::mac::SupportsSystemFullscreen())
792 [self registerForContentViewResizeNotifications]; 797 [self registerForContentViewResizeNotifications];
793 [self destroyFullscreenExitBubbleIfNecessary]; 798 [self destroyFullscreenExitBubbleIfNecessary];
794 [self setPresentationModeInternal:NO forceDropdown:NO]; 799 [self setPresentationModeInternal:NO forceDropdown:NO];
795 } 800 }
796 801
797 - (void)windowDidExitFullScreen:(NSNotification*)notification { 802 - (void)windowDidExitFullScreen:(NSNotification*)notification {
798 if (base::mac::IsOSLionOrLater()) 803 if (chrome::mac::SupportsSystemFullscreen())
799 [self deregisterForContentViewResizeNotifications]; 804 [self deregisterForContentViewResizeNotifications];
800 browser_->WindowFullscreenStateChanged(); 805 browser_->WindowFullscreenStateChanged();
801 } 806 }
802 807
803 - (void)windowDidFailToEnterFullScreen:(NSWindow*)window { 808 - (void)windowDidFailToEnterFullScreen:(NSWindow*)window {
804 [self deregisterForContentViewResizeNotifications]; 809 [self deregisterForContentViewResizeNotifications];
805 enteringFullscreen_ = NO; 810 enteringFullscreen_ = NO;
806 [self setPresentationModeInternal:NO forceDropdown:NO]; 811 [self setPresentationModeInternal:NO forceDropdown:NO];
807 812
808 // Force a relayout to try and get the window back into a reasonable state. 813 // Force a relayout to try and get the window back into a reasonable state.
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
962 return browser_window_controller::kCoreAnimationEnabledLazy; 967 return browser_window_controller::kCoreAnimationEnabledLazy;
963 } 968 }
964 if (CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 969 if (CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
965 switches::kUseCoreAnimation) == "disabled") { 970 switches::kUseCoreAnimation) == "disabled") {
966 return browser_window_controller::kCoreAnimationDisabled; 971 return browser_window_controller::kCoreAnimationDisabled;
967 } 972 }
968 return browser_window_controller::kCoreAnimationEnabledAlways; 973 return browser_window_controller::kCoreAnimationEnabledAlways;
969 } 974 }
970 975
971 @end // @implementation BrowserWindowController(Private) 976 @end // @implementation BrowserWindowController(Private)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698