Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_H_ | 5 #ifndef CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_H_ |
| 6 #define CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_H_ | 6 #define CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 // A class acting as the Objective-C controller for the Browser | 9 // A class acting as the Objective-C controller for the Browser |
| 10 // object. Handles interactions between Cocoa and the cross-platform | 10 // object. Handles interactions between Cocoa and the cross-platform |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 28 #include "ui/gfx/rect.h" | 28 #include "ui/gfx/rect.h" |
| 29 | 29 |
| 30 @class AvatarButton; | 30 @class AvatarButton; |
| 31 class Browser; | 31 class Browser; |
| 32 class BrowserWindow; | 32 class BrowserWindow; |
| 33 class BrowserWindowCocoa; | 33 class BrowserWindowCocoa; |
| 34 class ConstrainedWindowMac; | 34 class ConstrainedWindowMac; |
| 35 @class DevToolsController; | 35 @class DevToolsController; |
| 36 @class DownloadShelfController; | 36 @class DownloadShelfController; |
| 37 @class FindBarCocoaController; | 37 @class FindBarCocoaController; |
| 38 @class FullscreenController; | 38 @class FullscreenWindow; |
| 39 @class GTMWindowSheetController; | 39 @class GTMWindowSheetController; |
| 40 @class InfoBarContainerController; | 40 @class InfoBarContainerController; |
| 41 class LocationBarViewMac; | 41 class LocationBarViewMac; |
| 42 @class PresentationModeController; | |
| 42 @class PreviewableContentsController; | 43 @class PreviewableContentsController; |
| 43 @class SidebarController; | 44 @class SidebarController; |
| 44 class StatusBubbleMac; | 45 class StatusBubbleMac; |
| 45 class TabContents; | 46 class TabContents; |
| 46 @class TabStripController; | 47 @class TabStripController; |
| 47 @class TabStripView; | 48 @class TabStripView; |
| 48 @class ToolbarController; | 49 @class ToolbarController; |
| 49 | 50 |
| 50 @interface BrowserWindowController : | 51 @interface BrowserWindowController : |
| 51 TabWindowController<NSUserInterfaceValidations, | 52 TabWindowController<NSUserInterfaceValidations, |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 64 scoped_ptr<BrowserWindowCocoa> windowShim_; | 65 scoped_ptr<BrowserWindowCocoa> windowShim_; |
| 65 scoped_nsobject<ToolbarController> toolbarController_; | 66 scoped_nsobject<ToolbarController> toolbarController_; |
| 66 scoped_nsobject<TabStripController> tabStripController_; | 67 scoped_nsobject<TabStripController> tabStripController_; |
| 67 scoped_nsobject<FindBarCocoaController> findBarCocoaController_; | 68 scoped_nsobject<FindBarCocoaController> findBarCocoaController_; |
| 68 scoped_nsobject<InfoBarContainerController> infoBarContainerController_; | 69 scoped_nsobject<InfoBarContainerController> infoBarContainerController_; |
| 69 scoped_nsobject<DownloadShelfController> downloadShelfController_; | 70 scoped_nsobject<DownloadShelfController> downloadShelfController_; |
| 70 scoped_nsobject<BookmarkBarController> bookmarkBarController_; | 71 scoped_nsobject<BookmarkBarController> bookmarkBarController_; |
| 71 scoped_nsobject<DevToolsController> devToolsController_; | 72 scoped_nsobject<DevToolsController> devToolsController_; |
| 72 scoped_nsobject<SidebarController> sidebarController_; | 73 scoped_nsobject<SidebarController> sidebarController_; |
| 73 scoped_nsobject<PreviewableContentsController> previewableContentsController_; | 74 scoped_nsobject<PreviewableContentsController> previewableContentsController_; |
| 74 scoped_nsobject<FullscreenController> fullscreenController_; | 75 scoped_nsobject<PresentationModeController> presentationModeController_; |
| 75 | 76 |
| 76 // Strong. StatusBubble is a special case of a strong reference that | 77 // Strong. StatusBubble is a special case of a strong reference that |
| 77 // we don't wrap in a scoped_ptr because it is acting the same | 78 // we don't wrap in a scoped_ptr because it is acting the same |
| 78 // as an NSWindowController in that it wraps a window that must | 79 // as an NSWindowController in that it wraps a window that must |
| 79 // be shut down before our destructors are called. | 80 // be shut down before our destructors are called. |
| 80 StatusBubbleMac* statusBubble_; | 81 StatusBubbleMac* statusBubble_; |
| 81 | 82 |
| 82 BookmarkBubbleController* bookmarkBubbleController_; // Weak. | 83 BookmarkBubbleController* bookmarkBubbleController_; // Weak. |
| 83 BOOL initializing_; // YES while we are currently in initWithBrowser: | 84 BOOL initializing_; // YES while we are currently in initWithBrowser: |
| 84 BOOL ownsBrowser_; // Only ever NO when testing | 85 BOOL ownsBrowser_; // Only ever NO when testing |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 104 // The raw accumulated zoom value and the actual zoom increments made for an | 105 // The raw accumulated zoom value and the actual zoom increments made for an |
| 105 // an in-progress pinch gesture. | 106 // an in-progress pinch gesture. |
| 106 CGFloat totalMagnifyGestureAmount_; | 107 CGFloat totalMagnifyGestureAmount_; |
| 107 NSInteger currentZoomStepDelta_; | 108 NSInteger currentZoomStepDelta_; |
| 108 | 109 |
| 109 // The view that shows the incognito badge or the multi-profile avatar icon. | 110 // The view that shows the incognito badge or the multi-profile avatar icon. |
| 110 // Nil if neither is present. Needed to access the view to move it to/from the | 111 // Nil if neither is present. Needed to access the view to move it to/from the |
| 111 // fullscreen window. | 112 // fullscreen window. |
| 112 scoped_nsobject<AvatarButton> avatarButton_; | 113 scoped_nsobject<AvatarButton> avatarButton_; |
| 113 | 114 |
| 115 // The view that shows the presentation mode toggle when in Lion fullscreen | |
| 116 // mode. Nil if not in fullscreen mode or not on Lion. | |
| 117 scoped_nsobject<NSButton> presentationModeToggleButton_; | |
| 118 | |
| 114 // Lazily created view which draws the background for the floating set of bars | 119 // Lazily created view which draws the background for the floating set of bars |
| 115 // in fullscreen mode (for window types having a floating bar; it remains nil | 120 // in presentation mode (for window types having a floating bar; it remains |
| 116 // for those which don't). | 121 // nil for those which don't). |
| 117 scoped_nsobject<NSView> floatingBarBackingView_; | 122 scoped_nsobject<NSView> floatingBarBackingView_; |
| 118 | 123 |
| 119 // Tracks whether the floating bar is above or below the bookmark bar, in | 124 // Tracks whether the floating bar is above or below the bookmark bar, in |
| 120 // terms of z-order. | 125 // terms of z-order. |
| 121 BOOL floatingBarAboveBookmarkBar_; | 126 BOOL floatingBarAboveBookmarkBar_; |
| 122 | 127 |
| 123 // The proportion of the floating bar which is shown (in fullscreen mode). | 128 // The borderless window used in fullscreen mode. Lion reuses the original |
| 129 // window in fullscreen mode, so this is always nil on Lion. | |
| 130 scoped_nsobject<NSWindow> fullscreenWindow_; | |
|
Robert Sesek
2011/08/04 14:43:41
Make this a FullscreenWindow to appease the Clang
rohitrao (ping after 24h)
2011/08/04 18:18:26
The clang bot was unhappy when this was a Fullscre
| |
| 131 | |
| 132 // Tracks whether presentation mode was entered from fullscreen mode or | |
| 133 // directly from normal windowed mode. Used to determine what to do when | |
| 134 // exiting presentation mode. | |
| 135 BOOL enteredPresentationModeFromFullscreen_; | |
| 136 | |
| 137 // The size of the original (non-fullscreen) window. This is saved just | |
| 138 // before entering fullscreen mode and is only valid when |-isFullscreen| | |
| 139 // returns YES. | |
| 140 NSRect savedRegularWindowFrame_; | |
| 141 | |
| 142 // The proportion of the floating bar which is shown (in presentation mode). | |
| 124 CGFloat floatingBarShownFraction_; | 143 CGFloat floatingBarShownFraction_; |
| 125 | 144 |
| 126 // Various UI elements/events may want to ensure that the floating bar is | 145 // Various UI elements/events may want to ensure that the floating bar is |
| 127 // visible (in fullscreen mode), e.g., because of where the mouse is or where | 146 // visible (in presentation mode), e.g., because of where the mouse is or |
| 128 // keyboard focus is. Whenever an object requires bar visibility, it has | 147 // where keyboard focus is. Whenever an object requires bar visibility, it has |
| 129 // itself added to |barVisibilityLocks_|. When it no longer requires bar | 148 // itself added to |barVisibilityLocks_|. When it no longer requires bar |
| 130 // visibility, it has itself removed. | 149 // visibility, it has itself removed. |
| 131 scoped_nsobject<NSMutableSet> barVisibilityLocks_; | 150 scoped_nsobject<NSMutableSet> barVisibilityLocks_; |
| 132 | 151 |
| 133 // Bar visibility locks and releases only result (when appropriate) in changes | 152 // Bar visibility locks and releases only result (when appropriate) in changes |
| 134 // in visible state when the following is |YES|. | 153 // in visible state when the following is |YES|. |
| 135 BOOL barVisibilityUpdatesEnabled_; | 154 BOOL barVisibilityUpdatesEnabled_; |
| 136 } | 155 } |
| 137 | 156 |
| 138 // A convenience class method which gets the |BrowserWindowController| for a | 157 // A convenience class method which gets the |BrowserWindowController| for a |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 292 | 311 |
| 293 // Called when the Add Search Engine dialog is closed. | 312 // Called when the Add Search Engine dialog is closed. |
| 294 - (void)sheetDidEnd:(NSWindow*)sheet | 313 - (void)sheetDidEnd:(NSWindow*)sheet |
| 295 returnCode:(NSInteger)code | 314 returnCode:(NSInteger)code |
| 296 context:(void*)context; | 315 context:(void*)context; |
| 297 | 316 |
| 298 @end // @interface BrowserWindowController | 317 @end // @interface BrowserWindowController |
| 299 | 318 |
| 300 | 319 |
| 301 // Methods having to do with the window type (normal/popup/app, and whether the | 320 // Methods having to do with the window type (normal/popup/app, and whether the |
| 302 // window has various features; fullscreen methods are separate). | 321 // window has various features; fullscreen and presentation mode methods are |
| 322 // separate). | |
| 303 @interface BrowserWindowController(WindowType) | 323 @interface BrowserWindowController(WindowType) |
| 304 | 324 |
| 305 // Determines whether this controller's window supports a given feature (i.e., | 325 // Determines whether this controller's window supports a given feature (i.e., |
| 306 // whether a given feature is or can be shown in the window). | 326 // whether a given feature is or can be shown in the window). |
| 307 // TODO(viettrungluu): |feature| is really should be |Browser::Feature|, but I | 327 // TODO(viettrungluu): |feature| is really should be |Browser::Feature|, but I |
| 308 // don't want to include browser.h (and you can't forward declare enums). | 328 // don't want to include browser.h (and you can't forward declare enums). |
| 309 - (BOOL)supportsWindowFeature:(int)feature; | 329 - (BOOL)supportsWindowFeature:(int)feature; |
| 310 | 330 |
| 311 // Called to check whether or not this window has a normal title bar (YES if it | 331 // Called to check whether or not this window has a normal title bar (YES if it |
| 312 // does, NO otherwise). (E.g., normal browser windows do not, pop-ups do.) | 332 // does, NO otherwise). (E.g., normal browser windows do not, pop-ups do.) |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 327 | 347 |
| 328 // Called to check if this controller's window is a tabbed window (e.g., not a | 348 // Called to check if this controller's window is a tabbed window (e.g., not a |
| 329 // pop-up window). Returns YES if it is, NO otherwise. | 349 // pop-up window). Returns YES if it is, NO otherwise. |
| 330 // Note: The |-has...| methods are usually preferred, so this method is largely | 350 // Note: The |-has...| methods are usually preferred, so this method is largely |
| 331 // deprecated. | 351 // deprecated. |
| 332 - (BOOL)isTabbedWindow; | 352 - (BOOL)isTabbedWindow; |
| 333 | 353 |
| 334 @end // @interface BrowserWindowController(WindowType) | 354 @end // @interface BrowserWindowController(WindowType) |
| 335 | 355 |
| 336 | 356 |
| 337 // Methods having to do with fullscreen mode. | 357 // Methods having to do with fullscreen and presentation mode. |
| 338 @interface BrowserWindowController(Fullscreen) | 358 @interface BrowserWindowController(Fullscreen) |
| 339 | 359 |
| 340 // Enters fullscreen mode. | 360 // Toggles fullscreen mode. Meant to be called by Lion windows when they enter |
| 341 - (IBAction)enterFullscreen:(id)sender; | 361 // or exit Lion fullscreen mode. Must not be called on Snow Leopard or earlier. |
| 362 - (void)handleLionToggleFullscreen; | |
| 342 | 363 |
| 343 // Enters (or exits) fullscreen mode. | 364 // Enters (or exits) fullscreen mode. This method is safe to call on all OS |
| 365 // versions. | |
| 344 - (void)setFullscreen:(BOOL)fullscreen; | 366 - (void)setFullscreen:(BOOL)fullscreen; |
| 345 | 367 |
| 346 // Returns fullscreen state. | 368 // Returns fullscreen state. This method is safe to call on all OS versions. |
| 347 - (BOOL)isFullscreen; | 369 - (BOOL)isFullscreen; |
| 348 | 370 |
| 371 // Toggles presentation mode without exiting fullscreen mode. Should only be | |
| 372 // called by the presentation mode toggle button. This method should not be | |
| 373 // called on Snow Leopard or earlier. | |
| 374 - (void)togglePresentationMode:(id)sender; | |
| 375 | |
| 376 // Enters (or exits) presentation mode. Also enters fullscreen mode if this | |
| 377 // window is not already fullscreen. This method is safe to call on all OS | |
| 378 // versions. | |
| 379 - (void)setPresentationMode:(BOOL)presentationMode; | |
| 380 | |
| 381 // Returns presentation mode state. This method is safe to call on all OS | |
| 382 // versions. | |
| 383 - (BOOL)inPresentationMode; | |
| 384 | |
| 349 // Resizes the fullscreen window to fit the screen it's currently on. Called by | 385 // Resizes the fullscreen window to fit the screen it's currently on. Called by |
| 350 // the FullscreenController when there is a change in monitor placement or | 386 // the PresentationModeController when there is a change in monitor placement or |
| 351 // resolution. | 387 // resolution. |
| 352 - (void)resizeFullscreenWindow; | 388 - (void)resizeFullscreenWindow; |
| 353 | 389 |
| 354 // Gets or sets the fraction of the floating bar (fullscreen overlay) that is | 390 // Gets or sets the fraction of the floating bar (presentation mode overlay) |
| 355 // shown. 0 is completely hidden, 1 is fully shown. | 391 // that is shown. 0 is completely hidden, 1 is fully shown. |
| 356 - (CGFloat)floatingBarShownFraction; | 392 - (CGFloat)floatingBarShownFraction; |
| 357 - (void)setFloatingBarShownFraction:(CGFloat)fraction; | 393 - (void)setFloatingBarShownFraction:(CGFloat)fraction; |
| 358 | 394 |
| 359 // Query/lock/release the requirement that the tab strip/toolbar/attached | 395 // Query/lock/release the requirement that the tab strip/toolbar/attached |
| 360 // bookmark bar bar cluster is visible (e.g., when one of its elements has | 396 // bookmark bar bar cluster is visible (e.g., when one of its elements has |
| 361 // focus). This is required for the floating bar in fullscreen mode, but should | 397 // focus). This is required for the floating bar in presentation mode, but |
| 362 // also be called when not in fullscreen mode; see the comments for | 398 // should also be called when not in presentation mode; see the comments for |
| 363 // |barVisibilityLocks_| for more details. Double locks/releases by the same | 399 // |barVisibilityLocks_| for more details. Double locks/releases by the same |
| 364 // owner are ignored. If |animate:| is YES, then an animation may be performed, | 400 // owner are ignored. If |animate:| is YES, then an animation may be performed, |
| 365 // possibly after a small delay if |delay:| is YES. If |animate:| is NO, | 401 // possibly after a small delay if |delay:| is YES. If |animate:| is NO, |
| 366 // |delay:| will be ignored. In the case of multiple calls, later calls have | 402 // |delay:| will be ignored. In the case of multiple calls, later calls have |
| 367 // precedence with the rule that |animate:NO| has precedence over |animate:YES|, | 403 // precedence with the rule that |animate:NO| has precedence over |animate:YES|, |
| 368 // and |delay:NO| has precedence over |delay:YES|. | 404 // and |delay:NO| has precedence over |delay:YES|. |
| 369 - (BOOL)isBarVisibilityLockedForOwner:(id)owner; | 405 - (BOOL)isBarVisibilityLockedForOwner:(id)owner; |
| 370 - (void)lockBarVisibilityForOwner:(id)owner | 406 - (void)lockBarVisibilityForOwner:(id)owner |
| 371 withAnimation:(BOOL)animate | 407 withAnimation:(BOOL)animate |
| 372 delay:(BOOL)delay; | 408 delay:(BOOL)delay; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 411 - (void)resetWindowGrowthState; | 447 - (void)resetWindowGrowthState; |
| 412 | 448 |
| 413 // Computes by how far in each direction, horizontal and vertical, the | 449 // Computes by how far in each direction, horizontal and vertical, the |
| 414 // |source| rect doesn't fit into |target|. | 450 // |source| rect doesn't fit into |target|. |
| 415 - (NSSize)overflowFrom:(NSRect)source | 451 - (NSSize)overflowFrom:(NSRect)source |
| 416 to:(NSRect)target; | 452 to:(NSRect)target; |
| 417 @end // @interface BrowserWindowController (TestingAPI) | 453 @end // @interface BrowserWindowController (TestingAPI) |
| 418 | 454 |
| 419 | 455 |
| 420 #endif // CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_H_ | 456 #endif // CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_H_ |
| OLD | NEW |