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

Unified Diff: chrome/browser/ui/panels/panel.h

Issue 10411036: Separate BrowserWindow from Panel class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix mac unit_tests compile Created 8 years, 7 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 side-by-side diff with in-line comments
Download patch
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.

Powered by Google App Engine
This is Rietveld 408576698