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

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

Issue 555243002: mac: Refactor browser_window_controller layout logic. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@fullscreen_layout
Patch Set: Comments from andresantoso. Renames, header file changes, no functional changes. 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
OLDNEW
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 #ifndef CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_PRIVATE_H_ 5 #ifndef CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_PRIVATE_H_
6 #define CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_PRIVATE_H_ 6 #define CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_PRIVATE_H_
7 7
8 #import "chrome/browser/ui/cocoa/browser_window_controller.h" 8 #import "chrome/browser/ui/cocoa/browser_window_controller.h"
9 #import "chrome/browser/ui/cocoa/presentation_mode_controller.h" 9 #import "chrome/browser/ui/cocoa/presentation_mode_controller.h"
10 10
11 @class BrowserWindowLayout;
12
11 // Private methods for the |BrowserWindowController|. This category should 13 // Private methods for the |BrowserWindowController|. This category should
12 // contain the private methods used by different parts of the BWC; private 14 // contain the private methods used by different parts of the BWC; private
13 // methods used only by single parts should be declared in their own file. 15 // methods used only by single parts should be declared in their own file.
14 // TODO(viettrungluu): [crbug.com/35543] work on splitting out stuff from the 16 // TODO(viettrungluu): [crbug.com/35543] work on splitting out stuff from the
15 // BWC, and figuring out which methods belong here (need to unravel 17 // BWC, and figuring out which methods belong here (need to unravel
16 // "dependencies"). 18 // "dependencies").
17 @interface BrowserWindowController(Private) 19 @interface BrowserWindowController(Private)
18 20
19 // Create the appropriate tab strip controller based on whether or not side 21 // Create the appropriate tab strip controller based on whether or not side
20 // tabs are enabled. Replaces the current controller. 22 // tabs are enabled. Replaces the current controller.
21 - (void)createTabStripController; 23 - (void)createTabStripController;
22 24
23 // Saves the window's position in the local state preferences. 25 // Saves the window's position in the local state preferences.
24 - (void)saveWindowPositionIfNeeded; 26 - (void)saveWindowPositionIfNeeded;
25 27
26 // We need to adjust where sheets come out of the window, as by default they 28 // We need to adjust where sheets come out of the window, as by default they
27 // erupt from the omnibox, which is rather weird. 29 // erupt from the omnibox, which is rather weird.
28 - (NSRect)window:(NSWindow*)window 30 - (NSRect)window:(NSWindow*)window
29 willPositionSheet:(NSWindow*)sheet 31 willPositionSheet:(NSWindow*)sheet
30 usingRect:(NSRect)defaultSheetRect; 32 usingRect:(NSRect)defaultSheetRect;
31 33
32 // Repositions the window's subviews. From the top down: toolbar, normal 34 // Repositions the window's subviews. From the top down: toolbar, normal
33 // bookmark bar (if shown), infobar, NTP detached bookmark bar (if shown), 35 // bookmark bar (if shown), infobar, NTP detached bookmark bar (if shown),
34 // content area, download shelf (if any). 36 // content area, download shelf (if any).
35 - (void)layoutSubviews; 37 - (void)layoutSubviews;
36 38
37 // Find the total height of the floating bar (in presentation mode). Safe to
38 // call even when not in presentation mode.
39 - (CGFloat)floatingBarHeight;
40
41 // Shows the informational "how to exit fullscreen" bubble. 39 // Shows the informational "how to exit fullscreen" bubble.
42 - (void)showFullscreenExitBubbleIfNecessary; 40 - (void)showFullscreenExitBubbleIfNecessary;
43 - (void)destroyFullscreenExitBubbleIfNecessary; 41 - (void)destroyFullscreenExitBubbleIfNecessary;
44 42
45 // Lays out the tab strip at the given maximum y-coordinate, with the given 43 // Lays out the tab strip at the given maximum y-coordinate, with the given
46 // width, possibly for fullscreen mode; returns the new maximum y (below the 44 // width, possibly for fullscreen mode; returns the new maximum y (below the
47 // tab strip). This is safe to call even when there is no tab strip. 45 // tab strip). This is safe to call even when there is no tab strip.
48 - (CGFloat)layoutTabStripAtMaxY:(CGFloat)maxY 46 - (CGFloat)layoutTabStripAtMaxY:(CGFloat)maxY
49 width:(CGFloat)width 47 width:(CGFloat)width
50 fullscreen:(BOOL)fullscreen; 48 fullscreen:(BOOL)fullscreen;
51 49
52 // Lays out the toolbar (or just location bar for popups) at the given maximum
53 // y-coordinate, with the given width; returns the new maximum y (below the
54 // toolbar).
55 - (CGFloat)layoutToolbarAtMinX:(CGFloat)minX
56 maxY:(CGFloat)maxY
57 width:(CGFloat)width;
58
59 // Returns YES if the bookmark bar should be placed below the infobar, NO 50 // Returns YES if the bookmark bar should be placed below the infobar, NO
60 // otherwise. 51 // otherwise.
61 - (BOOL)placeBookmarkBarBelowInfoBar; 52 - (BOOL)placeBookmarkBarBelowInfoBar;
62 53
63 // Lays out the bookmark bar at the given maximum y-coordinate, with the given
64 // width; returns the new maximum y (below the bookmark bar). Note that one must
65 // call it with the appropriate |maxY| which depends on whether or not the
66 // bookmark bar is shown as the NTP bubble or not (use
67 // |-placeBookmarkBarBelowInfoBar|).
68 - (CGFloat)layoutBookmarkBarAtMinX:(CGFloat)minX
69 maxY:(CGFloat)maxY
70 width:(CGFloat)width;
71
72 // Lay out the view which draws the background for the floating bar when in
73 // presentation mode, with the given frame and presentation-mode-status. Should
74 // be called even when not in presentation mode to hide the backing view.
75 - (void)layoutFloatingBarBackingView:(NSRect)frame
76 presentationMode:(BOOL)presentationMode;
77
78 // Lays out the infobar at the given maximum y-coordinate, with the given width;
79 // returns the new maximum y (below the infobar).
80 - (CGFloat)layoutInfoBarAtMinX:(CGFloat)minX
81 maxY:(CGFloat)maxY
82 width:(CGFloat)width;
83
84 // Lays out the download shelf, if there is one, at the given minimum
85 // y-coordinate, with the given width; returns the new minimum y (above the
86 // download shelf). This is safe to call even if there is no download shelf.
87 - (CGFloat)layoutDownloadShelfAtMinX:(CGFloat)minX
88 minY:(CGFloat)minY
89 width:(CGFloat)width;
90 54
91 // Lays out the tab content area in the given frame. If the height changes, 55 // Lays out the tab content area in the given frame. If the height changes,
92 // sends a message to the renderer to resize. 56 // sends a message to the renderer to resize.
93 - (void)layoutTabContentArea:(NSRect)frame; 57 - (void)layoutTabContentArea:(NSRect)frame;
94 58
95 // Updates whether the bottom two corners are rounded. 59 // Updates whether the bottom two corners are rounded.
96 - (void)updateRoundedBottomCorners; 60 - (void)updateRoundedBottomCorners;
97 61
98 // Sets the toolbar's height to a value appropriate for the given compression. 62 // Sets the toolbar's height to a value appropriate for the given compression.
99 // Also adjusts the bookmark bar's height by the opposite amount in order to 63 // Also adjusts the bookmark bar's height by the opposite amount in order to
(...skipping 30 matching lines...) Expand all
130 - (void)enableBarVisibilityUpdates; 94 - (void)enableBarVisibilityUpdates;
131 - (void)disableBarVisibilityUpdates; 95 - (void)disableBarVisibilityUpdates;
132 96
133 // If there are no visibility locks and bar visibity updates are enabled, hides 97 // If there are no visibility locks and bar visibity updates are enabled, hides
134 // the bar with |animation| and |delay|. Otherwise, does nothing. 98 // the bar with |animation| and |delay|. Otherwise, does nothing.
135 - (void)hideOverlayIfPossibleWithAnimation:(BOOL)animation delay:(BOOL)delay; 99 - (void)hideOverlayIfPossibleWithAnimation:(BOOL)animation delay:(BOOL)delay;
136 100
137 // The opacity for the toolbar divider; 0 means that it shouldn't be shown. 101 // The opacity for the toolbar divider; 0 means that it shouldn't be shown.
138 - (CGFloat)toolbarDividerOpacity; 102 - (CGFloat)toolbarDividerOpacity;
139 103
140 // Ensures the z-order of subviews is correct.
141 - (void)updateSubviewZOrder:(BOOL)inPresentationMode;
142
143 // Update visibility of the infobar tip, depending on the state of the window. 104 // Update visibility of the infobar tip, depending on the state of the window.
144 - (void)updateInfoBarTipVisibility; 105 - (void)updateInfoBarTipVisibility;
145 106
146 // Returns the max top arrow height for infobar. 107 // Returns the max top arrow height for infobar.
147 - (NSInteger)infoBarMaxTopArrowHeight; 108 - (NSInteger)infoBarMaxTopArrowHeight;
148 109
149 // Configures the presentationModeController_ right after it is constructed. 110 // Configures the presentationModeController_ right after it is constructed.
150 - (void)configurePresentationModeController; 111 - (void)configurePresentationModeController;
151 112
152 // Allows the omnibox to slide. Also prepares UI for several fullscreen modes. 113 // Allows the omnibox to slide. Also prepares UI for several fullscreen modes.
153 // This method gets called when entering AppKit fullscren, or when entering 114 // This method gets called when entering AppKit fullscren, or when entering
154 // Immersive fullscreen. Expects fullscreenStyle_ to be set. 115 // Immersive fullscreen. Expects fullscreenStyle_ to be set.
155 - (void)adjustUIForSlidingFullscreenStyle:(fullscreen_mac::SlidingStyle)style; 116 - (void)adjustUIForSlidingFullscreenStyle:(fullscreen_mac::SlidingStyle)style;
156 117
157 // This method gets called when exiting AppKit fullscreen, or when exiting 118 // This method gets called when exiting AppKit fullscreen, or when exiting
158 // Immersive fullscreen. It performs some common UI changes, and stops the 119 // Immersive fullscreen. It performs some common UI changes, and stops the
159 // omnibox from sliding. 120 // omnibox from sliding.
160 - (void)adjustUIForExitingFullscreenAndStopOmniboxSliding; 121 - (void)adjustUIForExitingFullscreenAndStopOmniboxSliding;
161 122
162 // Exposed for testing. 123 // Exposed for testing.
163 // Creates a PresentationModeController with the given style. 124 // Creates a PresentationModeController with the given style.
164 - (PresentationModeController*)newPresentationModeControllerWithStyle: 125 - (PresentationModeController*)newPresentationModeControllerWithStyle:
165 (fullscreen_mac::SlidingStyle)style; 126 (fullscreen_mac::SlidingStyle)style;
166 127
167 // Toggles the AppKit Fullscreen API. By default, doing so enters Canonical 128 // Toggles the AppKit Fullscreen API. By default, doing so enters Canonical
168 // Fullscreen. 129 // Fullscreen.
169 - (void)enterAppKitFullscreen; 130 - (void)enterAppKitFullscreen;
170 - (void)exitAppKitFullscreen; 131 - (void)exitAppKitFullscreen;
171 132
133 // Updates |layout| with the full set of parameters required to statelessly
134 // determine the layout of the views managed by this controller.
135 - (void)updateLayoutParameters:(BrowserWindowLayout*)layout;
136
137 // Applies a layout to the views managed by this controller.
138 - (void)applyLayout:(BrowserWindowLayout*)layout;
139
140 // Ensures that the window's content view's subviews have the correct
141 // z-ordering. Will add or remove subviews as necessary.
142 - (void)updateSubviewZOrder;
143
144 // Performs updateSubviewZOrder when this controller is not in fullscreen.
145 - (void)updateSubviewZOrderNormal;
146
147 // Performs updateSubviewZOrder when this controller is in fullscreen.
148 - (void)updateSubviewZOrderFullscreen;
149
150 // Sets the content view's subviews. Attempts to not touch the tabContentArea
151 // to prevent redraws.
152 - (void)setContentViewSubviews:(NSArray*)subviews;
153
154 // A hack required to get NSThemeFrame sub layers to order correctly. See
155 // implementation for more details.
156 - (void)updateSubviewZOrderHack;
157
172 @end // @interface BrowserWindowController(Private) 158 @end // @interface BrowserWindowController(Private)
173 159
174 #endif // CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_PRIVATE_H_ 160 #endif // CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_PRIVATE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698