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

Unified Diff: chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_controller.mm

Issue 2505653003: [Mac[ FullscreenToolbarController Refactor (Closed)
Patch Set: nits Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_controller.mm
diff --git a/chrome/browser/ui/cocoa/fullscreen_toolbar_controller.mm b/chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_controller.mm
similarity index 80%
rename from chrome/browser/ui/cocoa/fullscreen_toolbar_controller.mm
rename to chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_controller.mm
index 323680b4afc7f12a1e82c28b80bab7163554db6e..63c3b141a5f08626c0be02c44e629a253313a3b7 100644
--- a/chrome/browser/ui/cocoa/fullscreen_toolbar_controller.mm
+++ b/chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_controller.mm
@@ -1,14 +1,10 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#import "chrome/browser/ui/cocoa/fullscreen_toolbar_controller.h"
-
-#include <algorithm>
+#import "chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_controller.h"
#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"
@@ -18,8 +14,6 @@
#import "chrome/browser/ui/cocoa/fullscreen/immersive_fullscreen_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"
namespace {
@@ -30,14 +24,12 @@ const CGFloat kShowFraction = 1.0;
// The amount by which the toolbar is offset downwards (to avoid the menu)
// 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;
+const CGFloat kToolbarVerticalOffset = -22;
} // end namespace
@implementation FullscreenToolbarController
-@synthesize toolbarStyle = toolbarStyle_;
-
- (id)initWithBrowserController:(BrowserWindowController*)controller {
if ((self = [super init])) {
browserController_ = controller;
@@ -104,59 +96,6 @@ const CGFloat kToolbarVerticalOffset = 22;
animationController_->AnimateToolbarForTabstripChanges();
}
-- (void)updateToolbarStyleExitingTabFullscreen:(BOOL)isExitingTabFullscreen {
- FullscreenToolbarStyle oldStyle = toolbarStyle_;
-
- if ([browserController_ isFullscreenForTabContentOrExtension] &&
- !isExitingTabFullscreen) {
- 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();
- [mouseTracker_ updateTrackingArea];
-}
-
-- (BrowserWindowController*)browserWindowController {
- return browserController_;
-}
-
-- (FullscreenToolbarVisibilityLockController*)visibilityLockController {
- return visibilityLockController_.get();
-}
-
-// This method works, but is fragile.
-//
-// It gets used during view layout, which sometimes needs to be done at the
-// beginning of an animation. As such, this method needs to reflect the
-// menubarOffset expected at the end of the animation. This information is not
-// readily available. (The layout logic needs a refactor).
-//
-// For AppKit Fullscreen, the menubar always starts hidden, and
-// menubarFraction_ always starts at 0, so the logic happens to work. For
-// Immersive Fullscreen, this class controls the visibility of the menu bar, so
-// the logic is correct and not fragile.
-- (CGFloat)menubarOffset {
- if ([browserController_ isInAppKitFullscreen]) {
- return -std::floor([menubarTracker_ menubarFraction] *
- kToolbarVerticalOffset);
- }
-
- return [immersiveFullscreenController_ shouldShowMenubar]
- ? -kToolbarVerticalOffset
- : 0;
-}
-
- (CGFloat)toolbarFraction {
if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode))
return kHideFraction;
@@ -177,6 +116,22 @@ const CGFloat kToolbarVerticalOffset = 22;
}
}
+- (FullscreenToolbarLayout)computeLayout {
+ FullscreenToolbarLayout layout;
+ layout.toolbarStyle = toolbarStyle_;
+ layout.toolbarFraction = [self toolbarFraction];
+
+ if ([browserController_ isInAppKitFullscreen]) {
+ layout.menubarOffset = [menubarTracker_ menubarFraction];
+ } else {
+ layout.menubarOffset =
+ [immersiveFullscreenController_ shouldShowMenubar] ? 1 : 0;
+ }
+ layout.menubarOffset *= kToolbarVerticalOffset;
+
+ return layout;
+}
+
- (BOOL)mustShowFullscreenToolbar {
if (!inFullscreenMode_)
return NO;
@@ -193,14 +148,44 @@ const CGFloat kToolbarVerticalOffset = 22;
[visibilityLockController_ isToolbarVisibilityLocked];
}
+- (void)updateToolbarFrame:(NSRect)frame {
+ if (mouseTracker_.get())
+ [mouseTracker_ updateToolbarFrame:frame];
+}
+
+- (void)updateToolbarStyleExitingTabFullscreen:(BOOL)isExitingTabFullscreen {
+ FullscreenToolbarStyle oldStyle = toolbarStyle_;
+
+ if ([browserController_ isFullscreenForTabContentOrExtension] &&
+ !isExitingTabFullscreen) {
+ 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 updateToolbarLayout];
+}
+
+- (void)updateToolbarLayout {
+ [browserController_ layoutSubviews];
+ animationController_->ToolbarDidUpdate();
+ [mouseTracker_ updateTrackingArea];
+}
+
- (BOOL)isInFullscreen {
return inFullscreenMode_;
}
-- (void)updateToolbarFrame:(NSRect)frame {
- if (mouseTracker_.get())
- [mouseTracker_ updateToolbarFrame:frame];
+- (BrowserWindowController*)browserWindowController {
+ return browserController_;
}
-@end
+- (FullscreenToolbarVisibilityLockController*)visibilityLockController {
+ return visibilityLockController_.get();
+}
+@end

Powered by Google App Engine
This is Rietveld 408576698