| 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_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 #include "base/mac/mac_util.h" | 10 #include "base/mac/mac_util.h" |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 CGFloat yOffset = 0; | 199 CGFloat yOffset = 0; |
| 200 if ([self isInFullscreenWithOmniboxSliding]) { | 200 if ([self isInFullscreenWithOmniboxSliding]) { |
| 201 switch (fullscreenStyle_) { | 201 switch (fullscreenStyle_) { |
| 202 case fullscreen_mac::OMNIBOX_TABS_PRESENT: | 202 case fullscreen_mac::OMNIBOX_TABS_PRESENT: |
| 203 // In system fullscreen mode, |yOffset| accounts for the extra offset | 203 // In system fullscreen mode, |yOffset| accounts for the extra offset |
| 204 // needed to dodge the menu bar. | 204 // needed to dodge the menu bar. |
| 205 yOffset = -std::floor( | 205 yOffset = -std::floor( |
| 206 (floatingBarShownFraction_) * | 206 (floatingBarShownFraction_) * |
| 207 [presentationModeController_ floatingBarVerticalOffset]); | 207 [presentationModeController_ floatingBarVerticalOffset]); |
| 208 break; | 208 break; |
| 209 case fullscreen_mac::OMNIBOX_PRESENT: { | |
| 210 // At rest: omnibox showing. yOffset should be tabstrip height | |
| 211 // When cursor is at top: everything shows. yOffset should be -menubar | |
| 212 // height. | |
| 213 CGFloat tabStripHeight = 0; | |
| 214 if ([self hasTabStrip]) | |
| 215 tabStripHeight = NSHeight([[self tabStripView] frame]); | |
| 216 yOffset = std::floor( | |
| 217 (1 - floatingBarShownFraction_) * tabStripHeight - | |
| 218 floatingBarShownFraction_ * | |
| 219 [presentationModeController_ floatingBarVerticalOffset]); | |
| 220 break; | |
| 221 } | |
| 222 case fullscreen_mac::OMNIBOX_TABS_HIDDEN: | 209 case fullscreen_mac::OMNIBOX_TABS_HIDDEN: |
| 223 // In presentation mode, |yOffset| accounts for the sliding position of | 210 // In presentation mode, |yOffset| accounts for the sliding position of |
| 224 // the floating bar and the extra offset needed to dodge the menu bar. | 211 // the floating bar and the extra offset needed to dodge the menu bar. |
| 225 yOffset = | 212 yOffset = |
| 226 std::floor((1 - floatingBarShownFraction_) * floatingBarHeight) - | 213 std::floor((1 - floatingBarShownFraction_) * floatingBarHeight) - |
| 227 [presentationModeController_ floatingBarVerticalOffset]; | 214 [presentationModeController_ floatingBarVerticalOffset]; |
| 228 break; | 215 break; |
| 229 } | 216 } |
| 230 } | 217 } |
| 231 | 218 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 262 | 249 |
| 263 // Place the find bar immediately below the toolbar/attached bookmark bar. In | 250 // Place the find bar immediately below the toolbar/attached bookmark bar. In |
| 264 // presentation mode, it hangs off the top of the screen when the bar is | 251 // presentation mode, it hangs off the top of the screen when the bar is |
| 265 // hidden. | 252 // hidden. |
| 266 [findBarCocoaController_ positionFindBarViewAtMaxY:maxY maxWidth:width]; | 253 [findBarCocoaController_ positionFindBarViewAtMaxY:maxY maxWidth:width]; |
| 267 [fullscreenExitBubbleController_ positionInWindowAtTop:maxY width:width]; | 254 [fullscreenExitBubbleController_ positionInWindowAtTop:maxY width:width]; |
| 268 | 255 |
| 269 if ([self isInFullscreenWithOmniboxSliding]) { | 256 if ([self isInFullscreenWithOmniboxSliding]) { |
| 270 switch (fullscreenStyle_) { | 257 switch (fullscreenStyle_) { |
| 271 case fullscreen_mac::OMNIBOX_TABS_PRESENT: | 258 case fullscreen_mac::OMNIBOX_TABS_PRESENT: |
| 272 case fullscreen_mac::OMNIBOX_PRESENT: | 259 // Do nothing in Canonical Fullscreen. All content slides. |
| 273 // Do nothing in Canonical Fullscreen and Simplified Fullscreen. All | |
| 274 // content slides. | |
| 275 break; | 260 break; |
| 276 case fullscreen_mac::OMNIBOX_TABS_HIDDEN: | 261 case fullscreen_mac::OMNIBOX_TABS_HIDDEN: |
| 277 // If in presentation mode, reset |maxY| to top of screen, so that the | 262 // If in presentation mode, reset |maxY| to top of screen, so that the |
| 278 // floating bar slides over the things which appear to be in the content | 263 // floating bar slides over the things which appear to be in the content |
| 279 // area. | 264 // area. |
| 280 maxY = NSMaxY(contentBounds); | 265 maxY = NSMaxY(contentBounds); |
| 281 break; | 266 break; |
| 282 } | 267 } |
| 283 } | 268 } |
| 284 | 269 |
| (...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 758 | 743 |
| 759 // Create the fullscreen window. | 744 // Create the fullscreen window. |
| 760 fullscreenWindow_.reset([[self createFullscreenWindow] retain]); | 745 fullscreenWindow_.reset([[self createFullscreenWindow] retain]); |
| 761 savedRegularWindow_ = [[self window] retain]; | 746 savedRegularWindow_ = [[self window] retain]; |
| 762 savedRegularWindowFrame_ = [savedRegularWindow_ frame]; | 747 savedRegularWindowFrame_ = [savedRegularWindow_ frame]; |
| 763 | 748 |
| 764 [self moveViewsForImmersiveFullscreen:YES | 749 [self moveViewsForImmersiveFullscreen:YES |
| 765 regularWindow:[self window] | 750 regularWindow:[self window] |
| 766 fullscreenWindow:fullscreenWindow_.get()]; | 751 fullscreenWindow:fullscreenWindow_.get()]; |
| 767 | 752 |
| 768 // When simplified fullscreen is enabled, do not enter presentation mode. | 753 fullscreen_mac::SlidingStyle style = fullscreen_mac::OMNIBOX_TABS_HIDDEN; |
| 769 const CommandLine* command_line = CommandLine::ForCurrentProcess(); | |
| 770 fullscreen_mac::SlidingStyle style; | |
| 771 if (command_line->HasSwitch(switches::kEnableSimplifiedFullscreen)) { | |
| 772 style = fullscreen_mac::OMNIBOX_PRESENT; | |
| 773 } else { | |
| 774 style = fullscreen_mac::OMNIBOX_TABS_HIDDEN; | |
| 775 } | |
| 776 [self adjustUIForSlidingFullscreenStyle:style]; | 754 [self adjustUIForSlidingFullscreenStyle:style]; |
| 777 | 755 |
| 778 // AppKit is helpful and prevents NSWindows from having the same height as | 756 // AppKit is helpful and prevents NSWindows from having the same height as |
| 779 // the screen while the menu bar is showing. This only applies to windows on | 757 // the screen while the menu bar is showing. This only applies to windows on |
| 780 // a secondary screen, in a separate space. Calling [NSWindow | 758 // a secondary screen, in a separate space. Calling [NSWindow |
| 781 // setFrame:display:] with the screen's height will always reduce the | 759 // setFrame:display:] with the screen's height will always reduce the |
| 782 // height by the height of the MenuBar. Calling the method with any other | 760 // height by the height of the MenuBar. Calling the method with any other |
| 783 // height works fine. The relevant method in the 10.10 AppKit SDK is called: | 761 // height works fine. The relevant method in the 10.10 AppKit SDK is called: |
| 784 // _canAdjustSizeForScreensHaveSeparateSpacesIfFillingSecondaryScreen | 762 // _canAdjustSizeForScreensHaveSeparateSpacesIfFillingSecondaryScreen |
| 785 // | 763 // |
| (...skipping 21 matching lines...) Expand all Loading... |
| 807 const CGDisplayReservationInterval kFadeDurationSeconds = 0.6; | 785 const CGDisplayReservationInterval kFadeDurationSeconds = 0.6; |
| 808 Boolean didFadeOut = NO; | 786 Boolean didFadeOut = NO; |
| 809 CGDisplayFadeReservationToken token; | 787 CGDisplayFadeReservationToken token; |
| 810 if (CGAcquireDisplayFadeReservation(kFadeDurationSeconds, &token) | 788 if (CGAcquireDisplayFadeReservation(kFadeDurationSeconds, &token) |
| 811 == kCGErrorSuccess) { | 789 == kCGErrorSuccess) { |
| 812 didFadeOut = YES; | 790 didFadeOut = YES; |
| 813 CGDisplayFade(token, kFadeDurationSeconds / 2, kCGDisplayBlendNormal, | 791 CGDisplayFade(token, kFadeDurationSeconds / 2, kCGDisplayBlendNormal, |
| 814 kCGDisplayBlendSolidColor, 0.0, 0.0, 0.0, /*synchronous=*/true); | 792 kCGDisplayBlendSolidColor, 0.0, 0.0, 0.0, /*synchronous=*/true); |
| 815 } | 793 } |
| 816 | 794 |
| 817 // When simplified fullscreen is enabled, the menubar status is managed | |
| 818 // directly by BWC. | |
| 819 const CommandLine* command_line = CommandLine::ForCurrentProcess(); | |
| 820 if (command_line->HasSwitch(switches::kEnableSimplifiedFullscreen)) { | |
| 821 // TODO(rohitrao): Add code to manage the menubar here. | |
| 822 } | |
| 823 | |
| 824 [self windowWillExitFullScreen:nil]; | 795 [self windowWillExitFullScreen:nil]; |
| 825 | 796 |
| 826 [self moveViewsForImmersiveFullscreen:NO | 797 [self moveViewsForImmersiveFullscreen:NO |
| 827 regularWindow:savedRegularWindow_ | 798 regularWindow:savedRegularWindow_ |
| 828 fullscreenWindow:fullscreenWindow_.get()]; | 799 fullscreenWindow:fullscreenWindow_.get()]; |
| 829 | 800 |
| 830 // When exiting fullscreen mode, we need to call layoutSubviews manually. | 801 // When exiting fullscreen mode, we need to call layoutSubviews manually. |
| 831 [savedRegularWindow_ autorelease]; | 802 [savedRegularWindow_ autorelease]; |
| 832 savedRegularWindow_ = nil; | 803 savedRegularWindow_ = nil; |
| 833 fullscreenWindow_.reset(); | 804 fullscreenWindow_.reset(); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 910 - (void)windowWillEnterFullScreen:(NSNotification*)notification { | 881 - (void)windowWillEnterFullScreen:(NSNotification*)notification { |
| 911 if (notification) // For System Fullscreen when non-nil. | 882 if (notification) // For System Fullscreen when non-nil. |
| 912 [self registerForContentViewResizeNotifications]; | 883 [self registerForContentViewResizeNotifications]; |
| 913 | 884 |
| 914 NSWindow* window = [self window]; | 885 NSWindow* window = [self window]; |
| 915 savedRegularWindowFrame_ = [window frame]; | 886 savedRegularWindowFrame_ = [window frame]; |
| 916 BOOL mode = enteringPresentationMode_ || | 887 BOOL mode = enteringPresentationMode_ || |
| 917 browser_->fullscreen_controller()->IsWindowFullscreenForTabOrPending(); | 888 browser_->fullscreen_controller()->IsWindowFullscreenForTabOrPending(); |
| 918 enteringAppKitFullscreen_ = YES; | 889 enteringAppKitFullscreen_ = YES; |
| 919 | 890 |
| 920 fullscreen_mac::SlidingStyle style; | 891 fullscreen_mac::SlidingStyle style = |
| 921 const CommandLine* command_line = CommandLine::ForCurrentProcess(); | 892 mode ? fullscreen_mac::OMNIBOX_TABS_HIDDEN |
| 922 if (command_line->HasSwitch(switches::kEnableSimplifiedFullscreen)) | 893 : fullscreen_mac::OMNIBOX_TABS_PRESENT; |
| 923 style = fullscreen_mac::OMNIBOX_PRESENT; | |
| 924 else if (mode) | |
| 925 style = fullscreen_mac::OMNIBOX_TABS_HIDDEN; | |
| 926 else | |
| 927 style = fullscreen_mac::OMNIBOX_TABS_PRESENT; | |
| 928 | 894 |
| 929 [self adjustUIForSlidingFullscreenStyle:style]; | 895 [self adjustUIForSlidingFullscreenStyle:style]; |
| 930 } | 896 } |
| 931 | 897 |
| 932 - (void)windowDidEnterFullScreen:(NSNotification*)notification { | 898 - (void)windowDidEnterFullScreen:(NSNotification*)notification { |
| 933 // In Yosemite, some combination of the titlebar and toolbar always show in | 899 // In Yosemite, some combination of the titlebar and toolbar always show in |
| 934 // full-screen mode. We do not want either to show. Search for the window that | 900 // full-screen mode. We do not want either to show. Search for the window that |
| 935 // contains the views, and hide it. There is no need to ever unhide the view. | 901 // contains the views, and hide it. There is no need to ever unhide the view. |
| 936 // http://crbug.com/380235 | 902 // http://crbug.com/380235 |
| 937 if (base::mac::IsOSYosemiteOrLater()) { | 903 if (base::mac::IsOSYosemiteOrLater()) { |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1159 | 1125 |
| 1160 - (void)exitAppKitFullscreen { | 1126 - (void)exitAppKitFullscreen { |
| 1161 DCHECK(base::mac::IsOSLionOrLater()); | 1127 DCHECK(base::mac::IsOSLionOrLater()); |
| 1162 if (FramedBrowserWindow* framedBrowserWindow = | 1128 if (FramedBrowserWindow* framedBrowserWindow = |
| 1163 base::mac::ObjCCast<FramedBrowserWindow>([self window])) { | 1129 base::mac::ObjCCast<FramedBrowserWindow>([self window])) { |
| 1164 [framedBrowserWindow toggleSystemFullScreen]; | 1130 [framedBrowserWindow toggleSystemFullScreen]; |
| 1165 } | 1131 } |
| 1166 } | 1132 } |
| 1167 | 1133 |
| 1168 @end // @implementation BrowserWindowController(Private) | 1134 @end // @implementation BrowserWindowController(Private) |
| OLD | NEW |