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