Home | History | Annotate | Download | only in cocoa
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_PRIVATE_H_
      6 #define CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_PRIVATE_H_
      7 #pragma once
      8 
      9 #import "chrome/browser/ui/cocoa/browser_window_controller.h"
     10 
     11 
     12 // Private methods for the |BrowserWindowController|. This category should
     13 // contain the private methods used by different parts of the BWC; private
     14 // methods used only by single parts should be declared in their own file.
     15 // TODO(viettrungluu): [crbug.com/35543] work on splitting out stuff from the
     16 // BWC, and figuring out which methods belong here (need to unravel
     17 // "dependencies").
     18 @interface BrowserWindowController(Private)
     19 
     20 // Create the appropriate tab strip controller based on whether or not side
     21 // tabs are enabled. Replaces the current controller.
     22 - (void)createTabStripController;
     23 
     24 // Saves the window's position in the local state preferences.
     25 - (void)saveWindowPositionIfNeeded;
     26 
     27 // Saves the window's position to the given pref service.
     28 - (void)saveWindowPositionToPrefs:(PrefService*)prefs;
     29 
     30 // We need to adjust where sheets come out of the window, as by default they
     31 // erupt from the omnibox, which is rather weird.
     32 - (NSRect)window:(NSWindow*)window
     33     willPositionSheet:(NSWindow*)sheet
     34             usingRect:(NSRect)defaultSheetRect;
     35 
     36 // Repositions the window's subviews. From the top down: toolbar, normal
     37 // bookmark bar (if shown), infobar, NTP detached bookmark bar (if shown),
     38 // content area, download shelf (if any).
     39 - (void)layoutSubviews;
     40 
     41 // Find the total height of the floating bar (in fullscreen mode). Safe to call
     42 // even when not in fullscreen mode.
     43 - (CGFloat)floatingBarHeight;
     44 
     45 // 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 tab
     47 // strip). This is safe to call even when there is no tab strip.
     48 - (CGFloat)layoutTabStripAtMaxY:(CGFloat)maxY
     49                           width:(CGFloat)width
     50                      fullscreen:(BOOL)fullscreen;
     51 
     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
     60 // otherwise.
     61 - (BOOL)placeBookmarkBarBelowInfoBar;
     62 
     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 // fullscreen mode, with the given frame and fullscreen-mode-status. Should be
     74 // called even when not in fullscreen mode to hide the backing view.
     75 - (void)layoutFloatingBarBackingView:(NSRect)frame
     76                           fullscreen:(BOOL)fullscreen;
     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 
     91 // Lays out the tab content area in the given frame. If the height changes,
     92 // sends a message to the renderer to resize.
     93 - (void)layoutTabContentArea:(NSRect)frame;
     94 
     95 // Should we show the normal bookmark bar?
     96 - (BOOL)shouldShowBookmarkBar;
     97 
     98 // Is the current page one for which the bookmark should be shown detached *if*
     99 // the normal bookmark bar is not shown?
    100 - (BOOL)shouldShowDetachedBookmarkBar;
    101 
    102 // Sets the toolbar's height to a value appropriate for the given compression.
    103 // Also adjusts the bookmark bar's height by the opposite amount in order to
    104 // keep the total height of the two views constant.
    105 - (void)adjustToolbarAndBookmarkBarForCompression:(CGFloat)compression;
    106 
    107 // Adjust the UI when entering or leaving fullscreen mode.
    108 - (void)adjustUIForFullscreen:(BOOL)fullscreen;
    109 
    110 // Allows/prevents bar visibility locks and releases from updating the visual
    111 // state. Enabling makes changes instantaneously; disabling cancels any
    112 // timers/animation.
    113 - (void)enableBarVisibilityUpdates;
    114 - (void)disableBarVisibilityUpdates;
    115 
    116 // For versions of Mac OS that provide an "enter fullscreen" button, make one
    117 // appear (in a rather hacky manner). http://crbug.com/74065 : When switching
    118 // the fullscreen implementation to the new API, revisit how much of this
    119 // hacky code is necessary.
    120 - (void)setUpOSFullScreenButton;
    121 
    122 @end  // @interface BrowserWindowController(Private)
    123 
    124 
    125 #endif  // CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_CONTROLLER_PRIVATE_H_
    126