Index: chrome/browser/ui/cocoa/browser_window_controller.h |
diff --git a/chrome/browser/ui/cocoa/browser_window_controller.h b/chrome/browser/ui/cocoa/browser_window_controller.h |
index 75f475ba00d1c1a4e574ad0959e0552ec5cdc9c2..2898aefdbe496eaa0beb9b0b6e01214199678ef5 100644 |
--- a/chrome/browser/ui/cocoa/browser_window_controller.h |
+++ b/chrome/browser/ui/cocoa/browser_window_controller.h |
@@ -43,13 +43,14 @@ class ExclusiveAccessController; |
class ExclusiveAccessContext; |
@class FindBarCocoaController; |
@class FullscreenModeController; |
+@class FullscreenToolbarVisibilityLocksController; |
@class FullscreenWindow; |
class FullscreenLowPowerCoordinatorCocoa; |
@class InfoBarContainerController; |
class LocationBarViewMac; |
@class OverlayableContentsController; |
class PermissionBubbleCocoa; |
-@class FullscreenToolbarController; |
+class FullscreenToolbarLayoutManager; |
class StatusBubbleMac; |
@class TabStripController; |
@class TabStripView; |
@@ -85,8 +86,8 @@ class Command; |
base::scoped_nsobject<DevToolsController> devToolsController_; |
base::scoped_nsobject<OverlayableContentsController> |
overlayableContentsController_; |
- base::scoped_nsobject<FullscreenToolbarController> |
- fullscreenToolbarController_; |
+ std::unique_ptr<FullscreenToolbarLayoutManager> |
+ fullscreenToolbarLayoutManager_; |
std::unique_ptr<ExclusiveAccessController> exclusiveAccessController_; |
base::scoped_nsobject<BrowserWindowFullscreenTransition> |
fullscreenTransition_; |
@@ -161,9 +162,6 @@ class Command; |
// return nil. |
BOOL isUsingCustomAnimation_; |
- // True if the toolbar needs to be shown in fullscreen. |
- BOOL shouldShowFullscreenToolbar_; |
- |
// True if a call to exit AppKit fullscreen was made during the transition to |
// fullscreen. |
BOOL shouldExitAfterEnteringFullscreen_; |
@@ -181,17 +179,6 @@ class Command; |
// The proportion of the floating bar which is shown. |
CGFloat floatingBarShownFraction_; |
- // Various UI elements/events may want to ensure that the floating bar is |
- // visible (in presentation mode), e.g., because of where the mouse is or |
- // where keyboard focus is. Whenever an object requires bar visibility, it has |
- // itself added to |barVisibilityLocks_|. When it no longer requires bar |
- // visibility, it has itself removed. |
- base::scoped_nsobject<NSMutableSet> barVisibilityLocks_; |
- |
- // Bar visibility locks and releases only result (when appropriate) in changes |
- // in visible state when the following is |YES|. |
- BOOL barVisibilityUpdatesEnabled_; |
- |
// If this ivar is set to YES, layoutSubviews calls will be ignored. This is |
// used in fullscreen transition to prevent spurious resize messages from |
// being sent to the renderer, which causes the transition to be janky. |
@@ -457,20 +444,6 @@ class Command; |
// invoked causes all fullscreen modes to exit. |
// |
// ---------------------------------------------------------------------------- |
-// There are 3 "styles" of omnibox sliding. |
-// + OMNIBOX_TABS_PRESENT: Both the omnibox and the tabstrip are present. |
-// Moving the cursor to the top causes the menubar to appear, and everything |
-// else to slide down. |
-// + OMNIBOX_TABS_HIDDEN: Both tabstrip and omnibox are hidden. Moving cursor |
-// to top shows tabstrip, omnibox, and menu bar. |
-// + OMNIBOX_TABS_NONE: Both tabstrip and omnibox are hidden. Moving cursor |
-// to top causes the menubar to appear, but not the tabstrip and omnibox. |
-// |
-// The omnibox sliding styles are used in conjunction with the fullscreen APIs. |
-// There is exactly 1 sliding style active at a time. The sliding is mangaged |
-// by the fullscreenToolbarController_. |
-// |
-// ---------------------------------------------------------------------------- |
// There are several "fullscreen modes" bantered around. Technically, any |
// fullscreen API can be combined with any sliding style. |
// |
@@ -530,9 +503,6 @@ class Command; |
// |bubbleType|. |
- (void)updateFullscreenExitBubble; |
-// Set the toolbar's visibility in fullscreen mode. |
-- (void)setFullscreenToolbarVisible:(BOOL)visible; |
- |
// Returns YES if the browser window is in or entering any fullscreen mode. |
- (BOOL)isInAnyFullscreenMode; |
@@ -544,6 +514,9 @@ class Command; |
// the AppKit Fullscreen API. |
- (BOOL)isInAppKitFullscreen; |
+// Returns YES if the fullscreen is for tab content or an extension. |
+- (BOOL)isFullscreenForTabContentOrExtension; |
+ |
// Enters Immersive Fullscreen for the given URL. |
- (void)enterWebContentFullscreen; |
@@ -554,24 +527,16 @@ class Command; |
// finished. |
- (void)exitFullscreenAnimationFinished; |
-// Resizes the fullscreen window to fit the screen it's currently on. Called by |
-// the FullscreenToolbarController when there is a change in monitor placement |
-// or resolution. |
+// Resizes the fullscreen window to fit the screen it's currently on. Called by |
+// the FullscreenToolbarLayoutManager when there is a change in monitor |
+// placement or resolution. |
- (void)resizeFullscreenWindow; |
-// Query/lock/release the requirement that the tab strip/toolbar/attached |
-// bookmark bar bar cluster is visible (e.g., when one of its elements has |
-// focus). This is required for the floating bar if it's hidden in fullscreen, |
-// but should also be called when not in fullscreen mode; see the comments for |
-// |barVisibilityLocks_| for more details. Double locks/releases by the same |
-// owner are ignored. If |animate:| is YES, then an animation may be |
-// performed. In the case of multiple calls, later calls have precedence with |
-// the rule that |animate:NO| has precedence over |animate:YES|. If |owner| is |
-// nil in isBarVisibilityLockedForOwner, the method returns YES if there are |
-// any locks. |
-- (BOOL)isBarVisibilityLockedForOwner:(id)owner; |
-- (void)lockBarVisibilityForOwner:(id)owner withAnimation:(BOOL)animate; |
-- (void)releaseBarVisibilityForOwner:(id)owner withAnimation:(BOOL)animate; |
+// Methods for querying, locking, and releasing the fullscreen toolbar's |
+// visibility. |
+- (BOOL)isToolbarVisibilityLockedForOwner:(id)owner; |
+- (void)lockToolbarVisibilityForOwner:(id)owner withAnimation:(BOOL)animate; |
+- (void)releaseToolbarVisibilityForOwner:(id)owner withAnimation:(BOOL)animate; |
// Returns YES if any of the views in the floating bar currently has focus. |
- (BOOL)floatingBarHasFocus; |
@@ -579,6 +544,13 @@ class Command; |
// Accessor for the controller managing fullscreen ExclusiveAccessContext. |
- (ExclusiveAccessController*)exclusiveAccessController; |
+// Accessor for the manager managing fullscreen toolbar layout. |
+- (FullscreenToolbarLayoutManager*)fullscreenToolbarLayoutManager; |
+ |
+// Accessor for the controller managing fullscreen toolbar layout. |
+- (FullscreenToolbarVisibilityLocksController*) |
+ fullscreenToolbarVisibilityLocksController; |
+ |
@end // @interface BrowserWindowController(Fullscreen) |
@@ -626,10 +598,11 @@ class Command; |
- (BOOL)isActiveTabContentsControllerResizeBlocked; |
// Returns the fullscreen toolbar controller. |
-- (FullscreenToolbarController*)fullscreenToolbarController; |
+- (FullscreenToolbarLayoutManager*)fullscreenToolbarLayoutManager; |
// Sets the fullscreen toolbar controller. |
-- (void)setFullscreenToolbarController:(FullscreenToolbarController*)controller; |
+- (void)setFullscreenToolbarLayoutManager: |
+ (FullscreenToolbarLayoutManager*)manager; |
@end // @interface BrowserWindowController (TestingAPI) |