Chromium Code Reviews| Index: chrome/browser/ui/cocoa/fullscreen_toolbar_controller.mm |
| diff --git a/chrome/browser/ui/cocoa/fullscreen_toolbar_controller.mm b/chrome/browser/ui/cocoa/fullscreen_toolbar_controller.mm |
| index b9d25dbd5fd73413928ee15b42ce813f8e2cedaf..fce01d39e9181cdf9d0b6048b1ab8b211c36dde6 100644 |
| --- a/chrome/browser/ui/cocoa/fullscreen_toolbar_controller.mm |
| +++ b/chrome/browser/ui/cocoa/fullscreen_toolbar_controller.mm |
| @@ -9,15 +9,16 @@ |
| #include "base/command_line.h" |
| #import "base/mac/mac_util.h" |
| #include "base/mac/sdk_forward_declarations.h" |
| +#include "chrome/browser/profiles/profile.h" |
| #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
| #import "chrome/browser/ui/cocoa/fullscreen/fullscreen_menubar_tracker.h" |
| #import "chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_animation_controller.h" |
| #import "chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_mouse_tracker.h" |
| #import "chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_visibility_lock_controller.h" |
| #include "chrome/common/chrome_switches.h" |
| +#include "chrome/common/pref_names.h" |
| #include "ui/base/cocoa/appkit_utils.h" |
| #import "ui/base/cocoa/nsview_additions.h" |
| -#import "ui/base/cocoa/tracking_area.h" |
| namespace { |
| @@ -26,7 +27,7 @@ const CGFloat kHideFraction = 0.0; |
| const CGFloat kShowFraction = 1.0; |
| // The amount by which the toolbar is offset downwards (to avoid the menu) |
| -// when the toolbar style is OMNIBOX_TABS_HIDDEN. (We can't use |
| +// when the toolbar style is TOOLBAR_HIDDEN. (We can't use |
| // |-[NSMenu menuBarHeight]| since it returns 0 when the menu bar is hidden.) |
| const CGFloat kToolbarVerticalOffset = 22; |
| @@ -59,14 +60,12 @@ const CGFloat kToolbarVerticalOffset = 22; |
| @implementation FullscreenToolbarController |
| -@synthesize slidingStyle = slidingStyle_; |
| +@synthesize toolbarStyle = toolbarStyle_; |
| -- (id)initWithBrowserController:(BrowserWindowController*)controller |
| - style:(FullscreenSlidingStyle)style { |
| +- (id)initWithBrowserController:(BrowserWindowController*)controller { |
| if ((self = [super init])) { |
| browserController_ = controller; |
| systemFullscreenMode_ = base::mac::kFullScreenModeNormal; |
| - slidingStyle_ = style; |
| animationController_.reset(new FullscreenToolbarAnimationController(self)); |
| visibilityLockController_.reset( |
| [[FullscreenToolbarVisibilityLockController alloc] |
| @@ -79,6 +78,7 @@ const CGFloat kToolbarVerticalOffset = 22; |
| - (void)dealloc { |
| DCHECK(!inFullscreenMode_); |
| + browserController_ = nil; |
| [super dealloc]; |
| } |
| @@ -86,6 +86,8 @@ const CGFloat kToolbarVerticalOffset = 22; |
| DCHECK(!inFullscreenMode_); |
| inFullscreenMode_ = YES; |
| + [self updateToolbarStyle]; |
| + |
| menubarTracker_.reset([[FullscreenMenubarTracker alloc] |
| initWithFullscreenToolbarController:self]); |
| mouseTracker_.reset([[FullscreenToolbarMouseTracker alloc] |
| @@ -110,7 +112,9 @@ const CGFloat kToolbarVerticalOffset = 22; |
| } |
| - (void)exitFullscreenMode { |
| - DCHECK(inFullscreenMode_); |
| + if (!inFullscreenMode_) |
|
erikchen
2016/11/02 00:25:36
why the move away from DCHECK?
spqchan
2016/11/02 20:00:27
Whoops, this shouldn't be here. Thanks for catchin
|
| + return; |
| + |
| inFullscreenMode_ = NO; |
| [self cleanup]; |
| @@ -158,6 +162,22 @@ const CGFloat kToolbarVerticalOffset = 22; |
| systemFullscreenMode_ = mode; |
| } |
| +- (void)updateToolbarStyle { |
| + FullscreenToolbarStyle oldStyle = toolbarStyle_; |
| + |
| + if ([browserController_ isFullscreenForTabContentOrExtension]) { |
| + toolbarStyle_ = FullscreenToolbarStyle::TOOLBAR_NONE; |
| + } else { |
| + PrefService* prefs = [browserController_ profile]->GetPrefs(); |
| + toolbarStyle_ = prefs->GetBoolean(prefs::kShowFullscreenToolbar) |
| + ? FullscreenToolbarStyle::TOOLBAR_PRESENT |
| + : FullscreenToolbarStyle::TOOLBAR_HIDDEN; |
| + } |
| + |
| + if (oldStyle != toolbarStyle_) |
| + [self updateToolbar]; |
| +} |
| + |
| - (void)updateToolbar { |
| [browserController_ layoutSubviews]; |
| animationController_->ToolbarDidUpdate(); |
| @@ -202,12 +222,12 @@ const CGFloat kToolbarVerticalOffset = 22; |
| if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode)) |
| return kHideFraction; |
| - switch (slidingStyle_) { |
| - case FullscreenSlidingStyle::OMNIBOX_TABS_PRESENT: |
| + switch (toolbarStyle_) { |
| + case FullscreenToolbarStyle::TOOLBAR_PRESENT: |
| return kShowFraction; |
| - case FullscreenSlidingStyle::OMNIBOX_TABS_NONE: |
| + case FullscreenToolbarStyle::TOOLBAR_NONE: |
| return kHideFraction; |
| - case FullscreenSlidingStyle::OMNIBOX_TABS_HIDDEN: |
| + case FullscreenToolbarStyle::TOOLBAR_HIDDEN: |
| if ([self mustShowFullscreenToolbar]) |
| return kShowFraction; |
| @@ -222,10 +242,10 @@ const CGFloat kToolbarVerticalOffset = 22; |
| if (!inFullscreenMode_) |
| return NO; |
| - if (slidingStyle_ == FullscreenSlidingStyle::OMNIBOX_TABS_PRESENT) |
| + if (toolbarStyle_ == FullscreenToolbarStyle::TOOLBAR_PRESENT) |
| return YES; |
| - if (slidingStyle_ == FullscreenSlidingStyle::OMNIBOX_TABS_NONE) |
| + if (toolbarStyle_ == FullscreenToolbarStyle::TOOLBAR_NONE) |
| return NO; |
| FullscreenMenubarState menubarState = [menubarTracker_ state]; |
| @@ -304,9 +324,6 @@ const CGFloat kToolbarVerticalOffset = 22; |
| menubarTracker_.reset(); |
| mouseTracker_.reset(); |
| - |
| - // No more calls back up to the BWC. |
| - browserController_ = nil; |
|
erikchen
2016/11/02 00:25:36
why did you get rid of this? It seems important.
spqchan
2016/11/02 20:00:27
I didn't get rid of it, I moved it into dealloc. S
|
| } |
| - (BOOL)shouldShowMenubarInImmersiveFullscreen { |