From 167c81a337698774cad8ef1c833e33fbd3d7d390 Mon Sep 17 00:00:00 2001 From: "pfeldman@chromium.org" Date: Tue, 7 Jul 2009 07:40:02 +0000 Subject: DevTools: Preserve devtools window contents on dock/undock. Review URL: http://codereview.chromium.org/149199 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20016 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/debugger/devtools_window.h | 73 +++++++++++++++++++++---------- 1 file changed, 49 insertions(+), 24 deletions(-) (limited to 'chrome/browser/debugger/devtools_window.h') diff --git a/chrome/browser/debugger/devtools_window.h b/chrome/browser/debugger/devtools_window.h index b6d4236..681c5bd 100644 --- a/chrome/browser/debugger/devtools_window.h +++ b/chrome/browser/debugger/devtools_window.h @@ -8,7 +8,9 @@ #include #include "base/basictypes.h" +#include "base/scoped_ptr.h" #include "chrome/browser/debugger/devtools_client_host.h" +#include "chrome/browser/tab_contents/tab_contents_delegate.h" #include "chrome/common/notification_registrar.h" #include "chrome/common/notification_service.h" @@ -22,45 +24,68 @@ class Profile; class RenderViewHost; class TabContents; -class DevToolsWindow : public DevToolsClientHost, public NotificationObserver { +class DevToolsWindow : + public DevToolsClientHost, + public NotificationObserver, + TabContentsDelegate { public: - static DevToolsWindow* CreateDevToolsWindow(Profile* profile, - RenderViewHost* inspected_rvh, - bool docked); - static TabContents* GetDevToolsContents(TabContents* inspected_tab); + DevToolsWindow(Profile* profile, RenderViewHost* inspected_rvh, bool docked); virtual ~DevToolsWindow(); - virtual void Show() = 0; - virtual void Activate() = 0; - bool is_docked() { return docked_; }; - RenderViewHost* GetRenderViewHost(); - // DevToolsClientHost override. + // Overridden from DevToolsClientHost. virtual DevToolsWindow* AsDevToolsWindow(); virtual void SendMessageToClient(const IPC::Message& message); + virtual void InspectedTabClosing(); - // NotificationObserver override. - virtual void Observe(NotificationType type, - const NotificationSource& source, - const NotificationDetails& details); + void Show(); + void Activate(); + void SetDocked(bool docked); + RenderViewHost* GetRenderViewHost(); TabContents* tab_contents() { return tab_contents_; } - Browser* browser() { return browser_; } + Browser* browser() { return browser_; } // For tests. + bool is_docked() { return docked_; }; + + private: + void CreateDevToolsBrowser(); + BrowserWindow* GetInspectedBrowserWindow(); - protected: - DevToolsWindow(bool docked); - GURL GetContentsUrl(); - void InitTabContents(TabContents* tab_contents); + // Overridden from NotificationObserver. + virtual void Observe(NotificationType type, + const NotificationSource& source, + const NotificationDetails& details); + // Overridden from TabContentsDelegate. + virtual void OpenURLFromTab(TabContents* source, + const GURL& url, + const GURL& referrer, + WindowOpenDisposition disposition, + PageTransition::Type transition) {} + virtual void NavigationStateChanged(const TabContents* source, + unsigned changed_flags) {} + virtual void AddNewContents(TabContents* source, + TabContents* new_contents, + WindowOpenDisposition disposition, + const gfx::Rect& initial_pos, + bool user_gesture) {} + virtual void ActivateContents(TabContents* contents) {} + virtual void LoadingStateChanged(TabContents* source) {} + virtual void CloseContents(TabContents* source) {} + virtual void MoveContents(TabContents* source, const gfx::Rect& pos) {} + virtual bool IsPopup(TabContents* source) { return false; } + virtual void URLStarredChanged(TabContents* source, bool starred) {} + virtual void UpdateTargetURL(TabContents* source, const GURL& url) {} + virtual void ToolbarSizeChanged(TabContents* source, bool is_animating) {} + + Profile* profile_; + TabContents* inspected_tab_; TabContents* tab_contents_; Browser* browser_; - - private: - static BrowserWindow* GetBrowserWindow(RenderViewHost* rvh); - NotificationRegistrar registrar_; - + BrowserWindow* inspected_window_; bool docked_; + NotificationRegistrar registrar_; DISALLOW_COPY_AND_ASSIGN(DevToolsWindow); }; -- cgit v1.1