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) {
if (!host) {
bool docked = inspected_rvh->process()->profile()->GetPrefs()->
GetBoolean(prefs::kDevToolsOpenDocked);
host = DevToolsWindow::CreateDevToolsWindow(
host = new DevToolsWindow(
inspected_rvh->site_instance()->browsing_instance()->profile(),
inspected_rvh,
docked);
......@@ -277,11 +277,5 @@ void DevToolsManager::ReopenWindow(RenderViewHost* client_rvh, bool docked) {
DevToolsWindow* window = client_host->AsDevToolsWindow();
DCHECK(window);
if (window->is_docked() == docked) {
return;
}
SendDetachToAgent(inspected_rvh);
UnregisterDevToolsClientHostFor(inspected_rvh);
OpenDevToolsWindow(inspected_rvh);
window->SetDocked(docked);
}
This diff is collapsed.
......@@ -8,7 +8,9 @@
#include <string>
#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);
};
......
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