Commit 167c81a3 authored by pfeldman@chromium.org's avatar pfeldman@chromium.org

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
parent 34f464fb
...@@ -128,7 +128,7 @@ void DevToolsManager::OpenDevToolsWindow(RenderViewHost* inspected_rvh) { ...@@ -128,7 +128,7 @@ void DevToolsManager::OpenDevToolsWindow(RenderViewHost* inspected_rvh) {
if (!host) { if (!host) {
bool docked = inspected_rvh->process()->profile()->GetPrefs()-> bool docked = inspected_rvh->process()->profile()->GetPrefs()->
GetBoolean(prefs::kDevToolsOpenDocked); GetBoolean(prefs::kDevToolsOpenDocked);
host = DevToolsWindow::CreateDevToolsWindow( host = new DevToolsWindow(
inspected_rvh->site_instance()->browsing_instance()->profile(), inspected_rvh->site_instance()->browsing_instance()->profile(),
inspected_rvh, inspected_rvh,
docked); docked);
...@@ -277,11 +277,5 @@ void DevToolsManager::ReopenWindow(RenderViewHost* client_rvh, bool docked) { ...@@ -277,11 +277,5 @@ void DevToolsManager::ReopenWindow(RenderViewHost* client_rvh, bool docked) {
DevToolsWindow* window = client_host->AsDevToolsWindow(); DevToolsWindow* window = client_host->AsDevToolsWindow();
DCHECK(window); DCHECK(window);
if (window->is_docked() == docked) { window->SetDocked(docked);
return;
}
SendDetachToAgent(inspected_rvh);
UnregisterDevToolsClientHostFor(inspected_rvh);
OpenDevToolsWindow(inspected_rvh);
} }
This diff is collapsed.
...@@ -8,7 +8,9 @@ ...@@ -8,7 +8,9 @@
#include <string> #include <string>
#include "base/basictypes.h" #include "base/basictypes.h"
#include "base/scoped_ptr.h"
#include "chrome/browser/debugger/devtools_client_host.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_registrar.h"
#include "chrome/common/notification_service.h" #include "chrome/common/notification_service.h"
...@@ -22,45 +24,68 @@ class Profile; ...@@ -22,45 +24,68 @@ class Profile;
class RenderViewHost; class RenderViewHost;
class TabContents; class TabContents;
class DevToolsWindow : public DevToolsClientHost, public NotificationObserver { class DevToolsWindow :
public DevToolsClientHost,
public NotificationObserver,
TabContentsDelegate {
public: public:
static DevToolsWindow* CreateDevToolsWindow(Profile* profile,
RenderViewHost* inspected_rvh,
bool docked);
static TabContents* GetDevToolsContents(TabContents* inspected_tab); static TabContents* GetDevToolsContents(TabContents* inspected_tab);
DevToolsWindow(Profile* profile, RenderViewHost* inspected_rvh, bool docked);
virtual ~DevToolsWindow(); 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 DevToolsWindow* AsDevToolsWindow();
virtual void SendMessageToClient(const IPC::Message& message); virtual void SendMessageToClient(const IPC::Message& message);
virtual void InspectedTabClosing();
// NotificationObserver override. void Show();
virtual void Observe(NotificationType type, void Activate();
const NotificationSource& source, void SetDocked(bool docked);
const NotificationDetails& details); RenderViewHost* GetRenderViewHost();
TabContents* tab_contents() { return tab_contents_; } 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: // Overridden from NotificationObserver.
DevToolsWindow(bool docked); virtual void Observe(NotificationType type,
GURL GetContentsUrl(); const NotificationSource& source,
void InitTabContents(TabContents* tab_contents); 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_; TabContents* tab_contents_;
Browser* browser_; Browser* browser_;
BrowserWindow* inspected_window_;
private:
static BrowserWindow* GetBrowserWindow(RenderViewHost* rvh);
NotificationRegistrar registrar_;
bool docked_; bool docked_;
NotificationRegistrar registrar_;
DISALLOW_COPY_AND_ASSIGN(DevToolsWindow); DISALLOW_COPY_AND_ASSIGN(DevToolsWindow);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment