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

Side by Side Diff: chrome/browser/ui/cocoa/fullscreen_mode_controller.h

Issue 493143004: mac: Major fullscreen refactor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Respond to rsesek comments. Created 6 years, 3 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_UI_COCOA_FULLSCREEN_MODE_CONTROLLER_H_
6 #define CHROME_BROWSER_UI_COCOA_FULLSCREEN_MODE_CONTROLLER_H_
7
8 #include <Carbon/Carbon.h>
9 #import <Cocoa/Cocoa.h>
10
11 #import "base/mac/scoped_nsobject.h"
12 #import "ui/base/cocoa/tracking_area.h"
13
14 @class BrowserWindowController;
15
16 // This class is responsible for managing the menu bar and tabstrip animation
17 // when in --enable-simplified-fullscreen. By default, in fullscreen, only the
18 // toolbar and not the tabstrip are visible. When the user mouses near the top
19 // of the screen, then the full tabstrip becomes available. If the user mouses
20 // to the very top of the screen, the menubar also becomes visible.
21 //
22 // There is one instance of this class per BrowserWindowController, and it is
23 // created when fullscreen is being entered and is destroyed when fullscreen
24 // is exited.
25 @interface FullscreenModeController : NSObject<NSAnimationDelegate> {
26 @private
27 enum FullscreenToolbarState {
28 kFullscreenToolbarOnly,
29 kFullscreenToolbarAndTabstrip,
30 };
31
32 // The browser for which this is managing fullscreen. Weak, owns self.
33 BrowserWindowController* controller_;
34
35 // The tracking area used to observe the top region of the fullscren window,
36 // to initiate the animations to bring down the tabstrip.
37 ui::ScopedCrTrackingArea trackingArea_;
38
39 // The animation that is either showing or hiding the tabstrip. Nil when no
40 // animation is running.
41 base::scoped_nsobject<NSAnimation> animation_;
42
43 // The current and destination states of |animation_|. When no animation is
44 // running, these values are equal.
45 FullscreenToolbarState destinationState_;
46 FullscreenToolbarState currentState_;
47
48 // A Carbon event handler that tracks the revealed fraction of the menu bar.
49 EventHandlerRef menuBarTrackingHandler_;
50
51 // A fraction in the range [0.0, 1.0] that indicates how much of the
52 // menu bar is visible. Updated via |menuBarTrackingHandler_|.
53 CGFloat menuBarRevealFraction_;
54 }
55
56 // Designated initializer. Must be called after making the window fullscreen.
57 - (id)initWithBrowserWindowController:(BrowserWindowController*)bwc;
58
59 // Returns the pixel height of the menu bar, adjusted for fractional visibility.
60 - (CGFloat)menuBarHeight;
61
62 @end
63
64 #endif // CHROME_BROWSER_UI_COCOA_FULLSCREEN_MODE_CONTROLLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698