| Index: chrome/browser/ui/panels/panel.h
|
| diff --git a/chrome/browser/ui/panels/panel.h b/chrome/browser/ui/panels/panel.h
|
| index 363c6a5428ce956c45d109a7d5667caa38ddb3f3..095f22b0dc30b8498cd9ba4f999b40ab32427927 100644
|
| --- a/chrome/browser/ui/panels/panel.h
|
| +++ b/chrome/browser/ui/panels/panel.h
|
| @@ -6,45 +6,44 @@
|
| #define CHROME_BROWSER_UI_PANELS_PANEL_H_
|
| #pragma once
|
|
|
| -#include "chrome/browser/ui/browser_window.h"
|
| -
|
| #include "base/gtest_prod_util.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "chrome/browser/ui/base_window.h"
|
| #include "chrome/browser/ui/panels/panel_constants.h"
|
| -#include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
|
| #include "content/public/browser/notification_observer.h"
|
| #include "content/public/browser/notification_registrar.h"
|
| #include "ui/gfx/rect.h"
|
|
|
| +class Browser;
|
| +class BrowserWindow;
|
| class NativePanel;
|
| +class PanelBrowserWindow;
|
| class PanelManager;
|
| class PanelStrip;
|
|
|
| -namespace extensions {
|
| -class Extension;
|
| +namespace content {
|
| +class WebContents;
|
| }
|
|
|
| -// A platform independent implementation of BrowserWindow for Panels. This
|
| -// class would get the first crack at all the BrowserWindow calls for Panels and
|
| -// do one or more of the following:
|
| +// A platform independent implementation of BaseWindow for Panels.
|
| +// This class gets the first crack at all the BaseWindow calls for Panels and
|
| +// does one or more of the following:
|
| // - Do nothing. The function is not relevant to Panels.
|
| -// - Throw an exceptions. The function shouldn't be called for Panels.
|
| // - Do Panel specific platform independent processing and then invoke the
|
| -// function on the platform specific BrowserWindow member. For example,
|
| -// Panel size is restricted to certain limits.
|
| +// function on the platform specific member. For example, restrict panel
|
| +// size to certain limits.
|
| // - Invoke an appropriate PanelManager function to do stuff that might affect
|
| -// other Panels. For example deleting a panel would rearrange other panels.
|
| -class Panel : public BrowserWindow,
|
| - public TabStripModelObserver,
|
| +// other Panels. For example deleting a panel would rearrange other panels.
|
| +class Panel : public BaseWindow,
|
| public content::NotificationObserver {
|
| public:
|
| enum ExpansionState {
|
| - // The panel is fully expanded with both title-bar and the client-area.
|
| - EXPANDED,
|
| - // The panel is shown with the title-bar only.
|
| - TITLE_ONLY,
|
| - // The panel is shown with 3-pixel line.
|
| - MINIMIZED
|
| + // The panel is fully expanded with both title-bar and the client-area.
|
| + EXPANDED,
|
| + // The panel is shown with the title-bar only.
|
| + TITLE_ONLY,
|
| + // The panel is shown with 3-pixel line.
|
| + MINIMIZED
|
| };
|
|
|
| // Controls how the attention should be drawn.
|
| @@ -88,125 +87,25 @@ class Panel : public BrowserWindow,
|
| bool CanMinimize() const;
|
| bool CanRestore() const;
|
|
|
| - // BrowserWindow overrides.
|
| + // BaseWindow overrides.
|
| + virtual bool IsActive() const OVERRIDE;
|
| + virtual bool IsMaximized() const OVERRIDE;
|
| + virtual bool IsMinimized() const OVERRIDE;
|
| + virtual bool IsFullscreen() const OVERRIDE;
|
| + virtual gfx::Rect GetRestoredBounds() const OVERRIDE;
|
| + virtual gfx::Rect GetBounds() const OVERRIDE;
|
| virtual void Show() OVERRIDE;
|
| virtual void ShowInactive() OVERRIDE;
|
| - virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE;
|
| virtual void Close() OVERRIDE;
|
| virtual void Activate() OVERRIDE;
|
| virtual void Deactivate() OVERRIDE;
|
| - virtual bool IsActive() const OVERRIDE;
|
| - virtual void FlashFrame(bool flash) OVERRIDE;
|
| - virtual bool IsAlwaysOnTop() const OVERRIDE;
|
| - virtual gfx::NativeWindow GetNativeHandle() OVERRIDE;
|
| - virtual BrowserWindowTesting* GetBrowserWindowTesting() OVERRIDE;
|
| - virtual StatusBubble* GetStatusBubble() OVERRIDE;
|
| - virtual void ToolbarSizeChanged(bool is_animating) OVERRIDE;
|
| - virtual void UpdateTitleBar() OVERRIDE;
|
| - virtual void BookmarkBarStateChanged(
|
| - BookmarkBar::AnimateChangeType change_type) OVERRIDE;
|
| - virtual void UpdateDevTools() OVERRIDE;
|
| - virtual void SetDevToolsDockSide(DevToolsDockSide side) OVERRIDE;
|
| - virtual void UpdateLoadingAnimations(bool should_animate) OVERRIDE;
|
| - virtual void SetStarredState(bool is_starred) OVERRIDE;
|
| - virtual gfx::Rect GetRestoredBounds() const OVERRIDE;
|
| - virtual gfx::Rect GetBounds() const OVERRIDE;
|
| - virtual bool IsMaximized() const OVERRIDE;
|
| - virtual bool IsMinimized() const OVERRIDE;
|
| virtual void Maximize() OVERRIDE;
|
| virtual void Minimize() OVERRIDE;
|
| virtual void Restore() OVERRIDE;
|
| - virtual void EnterFullscreen(
|
| - const GURL& url, FullscreenExitBubbleType type) OVERRIDE;
|
| - virtual void ExitFullscreen() OVERRIDE;
|
| - virtual void UpdateFullscreenExitBubbleContent(
|
| - const GURL& url,
|
| - FullscreenExitBubbleType bubble_type) OVERRIDE;
|
| - virtual bool IsFullscreen() const OVERRIDE;
|
| - virtual bool IsFullscreenBubbleVisible() const OVERRIDE;
|
| - virtual LocationBar* GetLocationBar() const OVERRIDE;
|
| - virtual void SetFocusToLocationBar(bool select_all) OVERRIDE;
|
| - virtual void UpdateReloadStopState(bool is_loading, bool force) OVERRIDE;
|
| - virtual void UpdateToolbar(TabContentsWrapper* contents,
|
| - bool should_restore_state) OVERRIDE;
|
| - virtual void FocusToolbar() OVERRIDE;
|
| - virtual void FocusAppMenu() OVERRIDE;
|
| - virtual void FocusBookmarksToolbar() OVERRIDE;
|
| - virtual void RotatePaneFocus(bool forwards) OVERRIDE;
|
| - virtual bool IsBookmarkBarVisible() const OVERRIDE;
|
| - virtual bool IsBookmarkBarAnimating() const OVERRIDE;
|
| - virtual bool IsTabStripEditable() const OVERRIDE;
|
| - virtual bool IsToolbarVisible() const OVERRIDE;
|
| - virtual gfx::Rect GetRootWindowResizerRect() const OVERRIDE;
|
| - virtual bool IsPanel() const OVERRIDE;
|
| - virtual void DisableInactiveFrame() OVERRIDE;
|
| - virtual void ConfirmAddSearchProvider(TemplateURL* template_url,
|
| - Profile* profile) OVERRIDE;
|
| - virtual void ToggleBookmarkBar() OVERRIDE;
|
| - virtual void ShowAboutChromeDialog() OVERRIDE;
|
| - virtual void ShowUpdateChromeDialog() OVERRIDE;
|
| - virtual void ShowTaskManager() OVERRIDE;
|
| - virtual void ShowBackgroundPages() OVERRIDE;
|
| - virtual void ShowBookmarkBubble(
|
| - const GURL& url, bool already_bookmarked) OVERRIDE;
|
| - virtual void ShowChromeToMobileBubble() OVERRIDE;
|
| -#if defined(ENABLE_ONE_CLICK_SIGNIN)
|
| - virtual void ShowOneClickSigninBubble(
|
| - const base::Closure& learn_more_callback,
|
| - const base::Closure& advanced_callback) OVERRIDE;
|
| -#endif
|
| - virtual bool IsDownloadShelfVisible() const OVERRIDE;
|
| - virtual DownloadShelf* GetDownloadShelf() OVERRIDE;
|
| - virtual void ConfirmBrowserCloseWithPendingDownloads() OVERRIDE;
|
| - virtual void UserChangedTheme() OVERRIDE;
|
| - virtual int GetExtraRenderViewHeight() const OVERRIDE;
|
| - virtual void WebContentsFocused(content::WebContents* contents) OVERRIDE;
|
| - virtual void ShowPageInfo(Profile* profile,
|
| - const GURL& url,
|
| - const content::SSLStatus& ssl,
|
| - bool show_history) OVERRIDE;
|
| - virtual void ShowWebsiteSettings(Profile* profile,
|
| - TabContentsWrapper* tab_contents_wrapper,
|
| - const GURL& url,
|
| - const content::SSLStatus& ssl,
|
| - bool show_history) OVERRIDE;
|
| - virtual void ShowAppMenu() OVERRIDE;
|
| - virtual bool PreHandleKeyboardEvent(
|
| - const content::NativeWebKeyboardEvent& event,
|
| - bool* is_keyboard_shortcut) OVERRIDE;
|
| - virtual void HandleKeyboardEvent(
|
| - const content::NativeWebKeyboardEvent& event) OVERRIDE;
|
| - virtual void ShowCreateWebAppShortcutsDialog(
|
| - TabContentsWrapper* tab_contents) OVERRIDE;
|
| - virtual void ShowCreateChromeAppShortcutsDialog(
|
| - Profile* profile, const extensions::Extension* app) OVERRIDE;
|
| - virtual void Cut() OVERRIDE;
|
| - virtual void Copy() OVERRIDE;
|
| - virtual void Paste() OVERRIDE;
|
| -#if defined(OS_MACOSX)
|
| - virtual void OpenTabpose() OVERRIDE;
|
| - virtual void EnterPresentationMode(
|
| - const GURL& url,
|
| - FullscreenExitBubbleType bubble_type) OVERRIDE;
|
| - virtual void ExitPresentationMode() OVERRIDE;
|
| - virtual bool InPresentationMode() OVERRIDE;
|
| -#endif
|
| - virtual void ShowInstant(TabContentsWrapper* preview) OVERRIDE;
|
| - virtual void HideInstant() OVERRIDE;
|
| - virtual gfx::Rect GetInstantBounds() OVERRIDE;
|
| - virtual WindowOpenDisposition GetDispositionForPopupBounds(
|
| - const gfx::Rect& bounds) OVERRIDE;
|
| - virtual FindBar* CreateFindBar() OVERRIDE;
|
| - virtual void ResizeDueToAutoResize(content::WebContents* web_contents,
|
| - const gfx::Size& new_size) OVERRIDE;
|
| - virtual void ShowAvatarBubble(content::WebContents* web_contents,
|
| - const gfx::Rect& rect) OVERRIDE;
|
| - virtual void ShowAvatarBubbleFromAvatarButton() OVERRIDE;
|
| -
|
| - // TabStripModelObserver overrides.
|
| - virtual void TabInsertedAt(TabContentsWrapper* contents,
|
| - int index,
|
| - bool foreground) OVERRIDE;
|
| + virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE;
|
| + virtual void SetDraggableRegion(SkRegion* region) OVERRIDE;
|
| + virtual void FlashFrame(bool flash) OVERRIDE;
|
| + virtual bool IsAlwaysOnTop() const OVERRIDE;
|
|
|
| // content::NotificationObserver overrides.
|
| virtual void Observe(int type,
|
| @@ -235,6 +134,7 @@ class Panel : public BrowserWindow,
|
|
|
| NativePanel* native_panel() { return native_panel_; }
|
| Browser* browser() const { return browser_; }
|
| + BrowserWindow* browser_window() const;
|
|
|
| // May be NULL if:
|
| // * panel is newly created and has not been positioned yet.
|
| @@ -288,6 +188,14 @@ class Panel : public BrowserWindow,
|
| // Sets whether the panel will auto resize according to its content.
|
| void SetAutoResizable(bool resizable);
|
|
|
| + // Configures the web contents for auto resize, including configurations
|
| + // on the renderer and detecting renderer changes.
|
| + void EnableWebContentsAutoResize(content::WebContents* web_contents);
|
| +
|
| + // Invoked when the preferred window size of the given panel might need to
|
| + // get changed due to the contents being auto-resized.
|
| + void OnWindowAutoResized(const gfx::Size& preferred_window_size);
|
| +
|
| // Sets minimum and maximum size for the panel.
|
| void SetSizeRange(const gfx::Size& min_size, const gfx::Size& max_size);
|
|
|
| @@ -324,9 +232,6 @@ class Panel : public BrowserWindow,
|
| void OnPanelStartUserResizing();
|
| void OnPanelEndUserResizing();
|
|
|
| - protected:
|
| - virtual void DestroyBrowser() OVERRIDE;
|
| -
|
| private:
|
| friend class PanelManager;
|
| friend class PanelBrowserTest;
|
| @@ -344,15 +249,14 @@ class Panel : public BrowserWindow,
|
| // size may differ after panel layout.
|
| Panel(Browser* browser, const gfx::Size& requested_size);
|
|
|
| - // Configures the web contents for auto resize, including configurations
|
| - // on the renderer and detecting renderer changes.
|
| - void EnableWebContentsAutoResize(content::WebContents* web_contents);
|
| -
|
| // Configures the renderer for auto resize (if auto resize is enabled).
|
| void ConfigureAutoResize(content::WebContents* web_contents);
|
|
|
| Browser* browser_; // Weak, owned by native panel.
|
|
|
| + // A BrowserWindow for the browser to interact with.
|
| + scoped_ptr<PanelBrowserWindow> panel_browser_window_;
|
| +
|
| // Current collection of panels to which this panel belongs. This determines
|
| // the panel's screen layout.
|
| PanelStrip* panel_strip_; // Owned by PanelManager.
|
|
|