summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/chrome_content_browser_client.cc2
-rw-r--r--chrome/browser/debugger/devtools_window.cc100
-rw-r--r--chrome/browser/debugger/devtools_window.h36
-rw-r--r--content/browser/debugger/devtools_client_host.h18
-rw-r--r--content/browser/debugger/devtools_handler.cc107
-rw-r--r--content/browser/debugger/devtools_handler.h40
-rw-r--r--content/browser/debugger/devtools_manager.cc14
-rw-r--r--content/browser/debugger/devtools_manager.h4
-rw-r--r--content/browser/debugger/devtools_manager_unittest.cc4
-rw-r--r--content/browser/debugger/render_view_devtools_agent_host.cc54
-rw-r--r--content/browser/debugger/render_view_devtools_agent_host.h19
-rw-r--r--content/content_browser.gypi2
12 files changed, 165 insertions, 235 deletions
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 7e286d0..5235b0a 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -55,7 +55,6 @@
#include "chrome/common/url_constants.h"
#include "content/browser/browser_url_handler.h"
#include "content/browser/browsing_instance.h"
-#include "content/browser/debugger/devtools_handler.h"
#include "content/browser/plugin_process_host.h"
#include "content/browser/renderer_host/browser_render_process_host.h"
#include "content/browser/renderer_host/render_view_host.h"
@@ -132,7 +131,6 @@ TabContentsView* ChromeContentBrowserClient::CreateTabContentsView(
void ChromeContentBrowserClient::RenderViewHostCreated(
RenderViewHost* render_view_host) {
new ChromeRenderViewHostObserver(render_view_host);
- new DevToolsHandler(render_view_host);
new ExtensionMessageHandler(render_view_host);
}
diff --git a/chrome/browser/debugger/devtools_window.cc b/chrome/browser/debugger/devtools_window.cc
index 52e2d13b..5ae3c46 100644
--- a/chrome/browser/debugger/devtools_window.cc
+++ b/chrome/browser/debugger/devtools_window.cc
@@ -30,7 +30,9 @@
#include "chrome/common/render_messages.h"
#include "chrome/common/url_constants.h"
#include "content/browser/browsing_instance.h"
+#include "content/browser/content_browser_client.h"
#include "content/browser/debugger/devtools_manager.h"
+#include "content/browser/debugger/worker_devtools_manager_io.h"
#include "content/browser/in_process_webkit/session_storage_namespace.h"
#include "content/browser/load_notification_details.h"
#include "content/browser/renderer_host/render_view_host.h"
@@ -39,6 +41,7 @@
#include "content/browser/tab_contents/tab_contents.h"
#include "content/browser/tab_contents/tab_contents_view.h"
#include "content/common/bindings_policy.h"
+#include "content/common/devtools_messages.h"
#include "content/common/notification_service.h"
#include "grit/generated_resources.h"
@@ -81,7 +84,7 @@ DevToolsWindow* DevToolsWindow::FindDevToolsWindow(
// static
DevToolsWindow* DevToolsWindow::CreateDevToolsWindowForWorker(
Profile* profile) {
- return new DevToolsWindow(profile, NULL, false, true);
+ return Create(profile, NULL, false, true);
}
// static
@@ -108,25 +111,34 @@ void DevToolsWindow::InspectElement(RenderViewHost* inspected_rvh,
}
-DevToolsWindow::DevToolsWindow(Profile* profile,
+DevToolsWindow* DevToolsWindow::Create(
+ Profile* profile,
+ RenderViewHost* inspected_rvh,
+ bool docked,
+ bool shared_worker_frontend) {
+ // Create TabContents with devtools.
+ TabContentsWrapper* tab_contents =
+ Browser::TabContentsFactory(profile, NULL, MSG_ROUTING_NONE, NULL, NULL);
+ tab_contents->render_view_host()->AllowBindings(BindingsPolicy::WEB_UI);
+ tab_contents->controller().LoadURL(
+ GetDevToolsUrl(profile, docked, shared_worker_frontend),
+ GURL(),
+ PageTransition::START_PAGE);
+ return new DevToolsWindow(tab_contents, profile, inspected_rvh, docked);
+}
+
+DevToolsWindow::DevToolsWindow(TabContentsWrapper* tab_contents,
+ Profile* profile,
RenderViewHost* inspected_rvh,
- bool docked,
- bool shared_worker_frontend)
- : profile_(profile),
+ bool docked)
+ : RenderViewHostObserver(tab_contents->render_view_host()),
+ profile_(profile),
inspected_tab_(NULL),
+ tab_contents_(tab_contents),
browser_(NULL),
docked_(docked),
is_loaded_(false),
- action_on_load_(DEVTOOLS_TOGGLE_ACTION_NONE),
- shared_worker_frontend_(shared_worker_frontend) {
- // Create TabContents with devtools.
- tab_contents_ =
- Browser::TabContentsFactory(profile, NULL, MSG_ROUTING_NONE, NULL, NULL);
- tab_contents_->tab_contents()->
- render_view_host()->AllowBindings(BindingsPolicy::WEB_UI);
- tab_contents_->controller().LoadURL(
- GetDevToolsUrl(), GURL(), PageTransition::START_PAGE);
-
+ action_on_load_(DEVTOOLS_TOGGLE_ACTION_NONE) {
// Wipe out page icon so that the default application icon is used.
NavigationEntry* entry = tab_contents_->controller().GetActiveEntry();
entry->favicon().set_bitmap(SkBitmap());
@@ -155,8 +167,7 @@ DevToolsWindow::~DevToolsWindow() {
}
void DevToolsWindow::SendMessageToClient(const IPC::Message& message) {
- RenderViewHost* target_host =
- tab_contents_->tab_contents()->render_view_host();
+ RenderViewHost* target_host = tab_contents_->render_view_host();
IPC::Message* m = new IPC::Message(message);
m->set_routing_id(target_host->routing_id());
target_host->Send(m);
@@ -237,7 +248,7 @@ void DevToolsWindow::Show(DevToolsToggleAction action) {
ScheduleAction(action);
}
-void DevToolsWindow::RequestActivate() {
+void DevToolsWindow::OnActivateWindow() {
if (!docked_) {
if (!browser_->window()->IsActive()) {
browser_->window()->Activate();
@@ -283,14 +294,14 @@ void DevToolsWindow::RequestSetDocked(bool docked) {
Show(DEVTOOLS_TOGGLE_ACTION_NONE);
}
-void DevToolsWindow::RequestClose() {
+void DevToolsWindow::OnCloseWindow() {
DCHECK(docked_);
NotifyCloseListener();
InspectedTabClosing();
}
-void DevToolsWindow::RequestSaveAs(const std::string& suggested_file_name,
- const std::string& content) {
+void DevToolsWindow::OnSaveAs(const std::string& suggested_file_name,
+ const std::string& content) {
DevToolsFileUtil::SaveAs(tab_contents_->profile(),
suggested_file_name,
content);
@@ -485,8 +496,9 @@ std::string SkColorToRGBAString(SkColor color) {
base::DoubleToString(SkColorGetA(color) / 255.0).c_str());
}
-GURL DevToolsWindow::GetDevToolsUrl() {
- ThemeService* tp = ThemeServiceFactory::GetForProfile(profile_);
+GURL DevToolsWindow::GetDevToolsUrl(Profile* profile, bool docked,
+ bool shared_worker_frontend) {
+ ThemeService* tp = ThemeServiceFactory::GetForProfile(profile);
CHECK(tp);
SkColor color_toolbar =
@@ -497,10 +509,10 @@ GURL DevToolsWindow::GetDevToolsUrl() {
std::string url_string = StringPrintf(
"%sdevtools.html?docked=%s&toolbarColor=%s&textColor=%s%s",
chrome::kChromeUIDevToolsURL,
- docked_ ? "true" : "false",
+ docked ? "true" : "false",
SkColorToRGBAString(color_toolbar).c_str(),
SkColorToRGBAString(color_tab_text).c_str(),
- shared_worker_frontend_ ? "&isSharedWorker=true" : "");
+ shared_worker_frontend ? "&isSharedWorker=true" : "");
return GURL(url_string);
}
@@ -577,7 +589,7 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow(
Profile* profile = Profile::FromBrowserContext(
inspected_rvh->process()->browser_context());
bool docked = profile->GetPrefs()->GetBoolean(prefs::kDevToolsOpenDocked);
- window = new DevToolsWindow(profile, inspected_rvh, docked, false);
+ window = Create(profile, inspected_rvh, docked, false);
manager->RegisterDevToolsClientHostFor(inspected_rvh, window);
do_open = true;
}
@@ -602,6 +614,42 @@ DevToolsWindow* DevToolsWindow::AsDevToolsWindow(
return NULL;
}
+void DevToolsWindow::RenderViewHostDestroyed() {
+ // Don't delete |this| here, do it on NOTIFICATION_TAB_CLOSING event.
+}
+
+bool DevToolsWindow::OnMessageReceived(const IPC::Message& message) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(DevToolsWindow, message)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_ForwardToAgent, OnForwardToAgent)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_ActivateWindow, OnActivateWindow)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_CloseWindow, OnCloseWindow)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_RequestDockWindow, OnRequestDockWindow)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_RequestUndockWindow,
+ OnRequestUndockWindow)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_SaveAs,
+ OnSaveAs)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
+}
+
+void DevToolsWindow::OnForwardToAgent(const IPC::Message& message) {
+ if (DevToolsManager::GetInstance()->
+ ForwardToDevToolsAgent(this, message))
+ return;
+ WorkerDevToolsManagerIO::ForwardToWorkerDevToolsAgentOnUIThread(
+ this, message);
+}
+
+void DevToolsWindow::OnRequestDockWindow() {
+ RequestSetDocked(true);
+}
+
+void DevToolsWindow::OnRequestUndockWindow() {
+ RequestSetDocked(false);
+}
+
content::JavaScriptDialogCreator* DevToolsWindow::GetJavaScriptDialogCreator() {
if (inspected_tab_ && inspected_tab_->tab_contents()->delegate()) {
return inspected_tab_->tab_contents()->delegate()->
diff --git a/chrome/browser/debugger/devtools_window.h b/chrome/browser/debugger/devtools_window.h
index 6565bf6..4b02e96 100644
--- a/chrome/browser/debugger/devtools_window.h
+++ b/chrome/browser/debugger/devtools_window.h
@@ -10,8 +10,10 @@
#include <vector>
#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
#include "chrome/browser/debugger/devtools_toggle_action.h"
#include "content/browser/debugger/devtools_client_host.h"
+#include "content/browser/renderer_host/render_view_host_observer.h"
#include "content/browser/tab_contents/tab_contents_delegate.h"
#include "content/common/notification_observer.h"
#include "content/common/notification_registrar.h"
@@ -33,8 +35,9 @@ class Value;
class DevToolsWindow
: public DevToolsClientHost,
- public NotificationObserver,
- public TabContentsDelegate {
+ private NotificationObserver,
+ private TabContentsDelegate,
+ private RenderViewHostObserver {
public:
static const char kDevToolsApp[];
static void RegisterUserPrefs(PrefService* prefs);
@@ -54,11 +57,6 @@ class DevToolsWindow
virtual void InspectedTabClosing();
virtual void TabReplaced(TabContents* new_tab);
virtual RenderViewHost* GetClientRenderViewHost();
- virtual void RequestActivate();
- virtual void RequestSetDocked(bool docked);
- virtual void RequestClose();
- virtual void RequestSaveAs(const std::string& suggested_file_name,
- const std::string& content);
RenderViewHost* GetRenderViewHost();
void Show(DevToolsToggleAction action);
@@ -68,8 +66,11 @@ class DevToolsWindow
bool is_docked() { return docked_; }
private:
- DevToolsWindow(Profile* profile, RenderViewHost* inspected_rvh, bool docked,
- bool shared_worker_frontend);
+ static DevToolsWindow* Create(Profile* profile,
+ RenderViewHost* inspected_rvh,
+ bool docked, bool shared_worker_frontend);
+ DevToolsWindow(TabContentsWrapper* tab_contents, Profile* profile,
+ RenderViewHost* inspected_rvh, bool docked);
void CreateDevToolsBrowser();
bool FindInspectedBrowserAndTabIndex(Browser**, int* tab);
@@ -84,7 +85,8 @@ class DevToolsWindow
void ScheduleAction(DevToolsToggleAction action);
void DoAction();
- GURL GetDevToolsUrl();
+ static GURL GetDevToolsUrl(Profile* profile, bool docked,
+ bool shared_worker_frontend);
void UpdateTheme();
void AddDevToolsExtensionsToClient();
void CallClientFunction(const string16& function_name,
@@ -118,6 +120,19 @@ class DevToolsWindow
DevToolsToggleAction action);
static DevToolsWindow* AsDevToolsWindow(DevToolsClientHost*);
+ // RenderViewHostObserver overrides.
+ virtual void RenderViewHostDestroyed() OVERRIDE;
+ virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
+
+ void OnForwardToAgent(const IPC::Message& message);
+ void OnActivateWindow();
+ void OnCloseWindow();
+ void OnRequestDockWindow();
+ void OnRequestUndockWindow();
+ void OnSaveAs(const std::string& file_name,
+ const std::string& content);
+ void RequestSetDocked(bool docked);
+
Profile* profile_;
TabContentsWrapper* inspected_tab_;
TabContentsWrapper* tab_contents_;
@@ -125,7 +140,6 @@ class DevToolsWindow
bool docked_;
bool is_loaded_;
DevToolsToggleAction action_on_load_;
- const bool shared_worker_frontend_;
NotificationRegistrar registrar_;
DISALLOW_COPY_AND_ASSIGN(DevToolsWindow);
};
diff --git a/content/browser/debugger/devtools_client_host.h b/content/browser/debugger/devtools_client_host.h
index 038e0dd..f629967 100644
--- a/content/browser/debugger/devtools_client_host.h
+++ b/content/browser/debugger/devtools_client_host.h
@@ -55,24 +55,6 @@ class DevToolsClientHost {
// TabStripModel::ReplaceTabContentsAt.
virtual void TabReplaced(TabContents* new_tab) = 0;
- // Default front-end implementation requests that the window representing
- // this client host is activated.
- virtual void RequestActivate() {}
-
- // Default front-end implementation requests that the window representing
- // this client host is (un)docked.
- virtual void RequestSetDocked(bool docked) {}
-
- // Default front-end implementation requests that the window representing
- // this client host is closed.
- virtual void RequestClose() {}
-
- // Default front-end implementation requests that the Save As dialog using
- // default save location is shown with |suggested_file_name| as the default
- // name and |content| as the data to save.
- virtual void RequestSaveAs(const std::string& suggested_file_name,
- const std::string& content) {}
-
// Returns client (front-end) RenderViewHost implementation of this
// client host if applicable. NULL otherwise.
virtual RenderViewHost* GetClientRenderViewHost();
diff --git a/content/browser/debugger/devtools_handler.cc b/content/browser/debugger/devtools_handler.cc
deleted file mode 100644
index 9ac789d..0000000
--- a/content/browser/debugger/devtools_handler.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/debugger/devtools_handler.h"
-
-#include "content/browser/content_browser_client.h"
-#include "content/browser/debugger/devtools_client_host.h"
-#include "content/browser/debugger/devtools_manager.h"
-#include "content/browser/debugger/worker_devtools_manager_io.h"
-#include "content/browser/renderer_host/render_view_host.h"
-#include "content/browser/tab_contents/tab_contents.h"
-#include "content/common/devtools_messages.h"
-
-DevToolsHandler::DevToolsHandler(RenderViewHost* render_view_host)
- : RenderViewHostObserver(render_view_host) {
-}
-
-DevToolsHandler::~DevToolsHandler() {
-}
-
-bool DevToolsHandler::OnMessageReceived(const IPC::Message& message) {
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(DevToolsHandler, message)
- IPC_MESSAGE_HANDLER(DevToolsHostMsg_ForwardToAgent, OnForwardToAgent)
- IPC_MESSAGE_HANDLER(DevToolsHostMsg_ForwardToClient, OnForwardToClient)
- IPC_MESSAGE_HANDLER(DevToolsHostMsg_ActivateWindow, OnActivateWindow)
- IPC_MESSAGE_HANDLER(DevToolsHostMsg_CloseWindow, OnCloseWindow)
- IPC_MESSAGE_HANDLER(DevToolsHostMsg_RequestDockWindow, OnRequestDockWindow)
- IPC_MESSAGE_HANDLER(DevToolsHostMsg_RequestUndockWindow,
- OnRequestUndockWindow)
- IPC_MESSAGE_HANDLER(DevToolsHostMsg_SaveAs,
- OnSaveAs)
- IPC_MESSAGE_HANDLER(DevToolsHostMsg_RuntimePropertyChanged,
- OnRuntimePropertyChanged)
- IPC_MESSAGE_HANDLER(DevToolsHostMsg_ClearBrowserCache, OnClearBrowserCache)
- IPC_MESSAGE_HANDLER(DevToolsHostMsg_ClearBrowserCookies,
- OnClearBrowserCookies)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
-}
-
-void DevToolsHandler::OnForwardToAgent(const IPC::Message& message) {
- DevToolsClientHost* client_host = GetOwnerClientHost();
- if (!client_host)
- return;
- if (DevToolsManager::GetInstance()->
- ForwardToDevToolsAgent(client_host, message))
- return;
- WorkerDevToolsManagerIO::ForwardToWorkerDevToolsAgentOnUIThread(
- client_host, message);
-}
-
-void DevToolsHandler::OnForwardToClient(const IPC::Message& message) {
- DevToolsManager::GetInstance()->ForwardToDevToolsClient(
- render_view_host(), message);
-}
-
-void DevToolsHandler::OnActivateWindow() {
- DevToolsClientHost* client_host = GetOwnerClientHost();
- if (client_host)
- client_host->RequestActivate();
-}
-
-void DevToolsHandler::OnCloseWindow() {
- DevToolsClientHost* client_host = GetOwnerClientHost();
- if (client_host)
- client_host->RequestClose();
-}
-
-void DevToolsHandler::OnRequestDockWindow() {
- DevToolsClientHost* client_host = GetOwnerClientHost();
- if (client_host)
- client_host->RequestSetDocked(true);
-}
-
-void DevToolsHandler::OnRequestUndockWindow() {
- DevToolsClientHost* client_host = GetOwnerClientHost();
- if (client_host)
- client_host->RequestSetDocked(false);
-}
-
-void DevToolsHandler::OnSaveAs(const std::string& file_name,
- const std::string& content) {
- DevToolsClientHost* client_host = GetOwnerClientHost();
- if (client_host)
- client_host->RequestSaveAs(file_name, content);
-}
-
-void DevToolsHandler::OnRuntimePropertyChanged(const std::string& name,
- const std::string& value) {
- DevToolsManager::GetInstance()->RuntimePropertyChanged(
- render_view_host(), name, value);
-}
-
-void DevToolsHandler::OnClearBrowserCache() {
- content::GetContentClient()->browser()->ClearCache(render_view_host());
-}
-
-void DevToolsHandler::OnClearBrowserCookies() {
- content::GetContentClient()->browser()->ClearCookies(render_view_host());
-}
-
-DevToolsClientHost* DevToolsHandler::GetOwnerClientHost() {
- return DevToolsClientHost::FindOwnerClientHost(render_view_host());
-}
diff --git a/content/browser/debugger/devtools_handler.h b/content/browser/debugger/devtools_handler.h
deleted file mode 100644
index 48fb2e2..0000000
--- a/content/browser/debugger/devtools_handler.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_BROWSER_DEBUGGER_DEVTOOLS_HANDLER_H_
-#define CONTENT_BROWSER_DEBUGGER_DEVTOOLS_HANDLER_H_
-#pragma once
-
-#include "content/browser/renderer_host/render_view_host_observer.h"
-
-class DevToolsClientHost;
-
-class DevToolsHandler : public RenderViewHostObserver {
- public:
- explicit DevToolsHandler(RenderViewHost* render_view_host);
- virtual ~DevToolsHandler();
-
- // RenderViewHostObserver overrides.
- virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
-
- private:
- void OnForwardToAgent(const IPC::Message& message);
- void OnForwardToClient(const IPC::Message& message);
- void OnActivateWindow();
- void OnCloseWindow();
- void OnRequestDockWindow();
- void OnRequestUndockWindow();
- void OnSaveAs(const std::string& file_name,
- const std::string& content);
- void OnRuntimePropertyChanged(const std::string& name,
- const std::string& value);
- void OnClearBrowserCache();
- void OnClearBrowserCookies();
-
- DevToolsClientHost* GetOwnerClientHost();
-
- DISALLOW_COPY_AND_ASSIGN(DevToolsHandler);
-};
-
-#endif // CONTENT_BROWSER_DEBUGGER_DEVTOOLS_HANDLER_H_
diff --git a/content/browser/debugger/devtools_manager.cc b/content/browser/debugger/devtools_manager.cc
index 60f9eea..0eb2e6e 100644
--- a/content/browser/debugger/devtools_manager.cc
+++ b/content/browser/debugger/devtools_manager.cc
@@ -75,9 +75,9 @@ bool DevToolsManager::ForwardToDevToolsAgent(DevToolsClientHost* from,
return true;
}
-void DevToolsManager::ForwardToDevToolsClient(RenderViewHost* inspected_rvh,
+void DevToolsManager::ForwardToDevToolsClient(DevToolsAgentHost* agent_host,
const IPC::Message& message) {
- DevToolsClientHost* client_host = GetDevToolsClientHostFor(inspected_rvh);
+ DevToolsClientHost* client_host = GetDevToolsClientHostFor(agent_host);
if (!client_host) {
// Client window was closed while there were messages
// being sent to it.
@@ -86,11 +86,9 @@ void DevToolsManager::ForwardToDevToolsClient(RenderViewHost* inspected_rvh,
client_host->SendMessageToClient(message);
}
-void DevToolsManager::RuntimePropertyChanged(RenderViewHost* inspected_rvh,
+void DevToolsManager::RuntimePropertyChanged(DevToolsAgentHost* agent_host,
const std::string& name,
const std::string& value) {
- DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor(
- inspected_rvh);
RuntimePropertiesMap::iterator it =
runtime_properties_map_.find(agent_host);
if (it == runtime_properties_map_.end()) {
@@ -232,10 +230,8 @@ void DevToolsManager::SendAttachToAgent(DevToolsAgentHost* agent_host) {
}
void DevToolsManager::SendDetachToAgent(DevToolsAgentHost* agent_host) {
- if (agent_host) {
- agent_host->SendMessageToAgent(new DevToolsAgentMsg_Detach(
- MSG_ROUTING_NONE));
- }
+ agent_host->SendMessageToAgent(new DevToolsAgentMsg_Detach(
+ MSG_ROUTING_NONE));
}
void DevToolsManager::BindClientHost(
diff --git a/content/browser/debugger/devtools_manager.h b/content/browser/debugger/devtools_manager.h
index 8aabfd6..3965308 100644
--- a/content/browser/debugger/devtools_manager.h
+++ b/content/browser/debugger/devtools_manager.h
@@ -52,10 +52,10 @@ class DevToolsManager : public DevToolsClientHost::CloseListener,
bool ForwardToDevToolsAgent(DevToolsClientHost* from,
const IPC::Message& message);
- void ForwardToDevToolsClient(RenderViewHost* inspected_rvh,
+ void ForwardToDevToolsClient(DevToolsAgentHost* agent_host,
const IPC::Message& message);
- void RuntimePropertyChanged(RenderViewHost* inspected_rvh,
+ void RuntimePropertyChanged(DevToolsAgentHost* agent_host,
const std::string& name,
const std::string& value);
diff --git a/content/browser/debugger/devtools_manager_unittest.cc b/content/browser/debugger/devtools_manager_unittest.cc
index 03f541b0..3ac775f 100644
--- a/content/browser/debugger/devtools_manager_unittest.cc
+++ b/content/browser/debugger/devtools_manager_unittest.cc
@@ -7,6 +7,7 @@
#include "content/browser/content_browser_client.h"
#include "content/browser/debugger/devtools_client_host.h"
#include "content/browser/debugger/devtools_manager.h"
+#include "content/browser/debugger/render_view_devtools_agent_host.h"
#include "content/browser/mock_content_browser_client.h"
#include "content/browser/renderer_host/test_render_view_host.h"
#include "content/browser/tab_contents/tab_contents_delegate.h"
@@ -158,7 +159,8 @@ TEST_F(DevToolsManagerTest, ForwardMessageToClient) {
EXPECT_EQ(0, TestDevToolsClientHost::close_counter);
IPC::Message m;
- manager.ForwardToDevToolsClient(rvh(), m);
+ DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor(rvh());
+ manager.ForwardToDevToolsClient(agent_host, m);
EXPECT_TRUE(&m == client_host.last_sent_message);
client_host.Close();
diff --git a/content/browser/debugger/render_view_devtools_agent_host.cc b/content/browser/debugger/render_view_devtools_agent_host.cc
index 47517e42..99560b3 100644
--- a/content/browser/debugger/render_view_devtools_agent_host.cc
+++ b/content/browser/debugger/render_view_devtools_agent_host.cc
@@ -5,9 +5,13 @@
#include "content/browser/debugger/render_view_devtools_agent_host.h"
#include "base/basictypes.h"
+#include "content/browser/content_browser_client.h"
+#include "content/browser/debugger/devtools_manager.h"
+#include "content/browser/debugger/render_view_devtools_agent_host.h"
#include "content/browser/renderer_host/render_process_host.h"
#include "content/browser/renderer_host/render_view_host.h"
#include "content/browser/site_instance.h"
+#include "content/common/devtools_messages.h"
#include "content/common/notification_service.h"
RenderViewDevToolsAgentHost::Instances RenderViewDevToolsAgentHost::instances_;
@@ -21,9 +25,8 @@ DevToolsAgentHost* RenderViewDevToolsAgentHost::FindFor(
}
RenderViewDevToolsAgentHost::RenderViewDevToolsAgentHost(RenderViewHost* rvh)
- : render_view_host_(rvh) {
- registrar_.Add(this, content::NOTIFICATION_RENDER_VIEW_HOST_DELETED,
- Source<RenderViewHost>(rvh));
+ : RenderViewHostObserver(rvh),
+ render_view_host_(rvh) {
instances_[rvh] = this;
}
@@ -44,15 +47,48 @@ int RenderViewDevToolsAgentHost::GetRenderProcessId() {
return render_view_host_->process()->id();
}
-void RenderViewDevToolsAgentHost::Observe(int type,
- const NotificationSource& source,
- const NotificationDetails& details) {
- DCHECK(type == content::NOTIFICATION_RENDER_VIEW_HOST_DELETED);
+RenderViewDevToolsAgentHost::~RenderViewDevToolsAgentHost() {
+ instances_.erase(render_view_host_);
+}
+
+void RenderViewDevToolsAgentHost::RenderViewHostDestroyed() {
NotifyCloseListener();
delete this;
}
-RenderViewDevToolsAgentHost::~RenderViewDevToolsAgentHost() {
- instances_.erase(render_view_host_);
+bool RenderViewDevToolsAgentHost::OnMessageReceived(
+ const IPC::Message& message) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(RenderViewDevToolsAgentHost, message)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_ForwardToClient, OnForwardToClient)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_RuntimePropertyChanged,
+ OnRuntimePropertyChanged)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_ClearBrowserCache, OnClearBrowserCache)
+ IPC_MESSAGE_HANDLER(DevToolsHostMsg_ClearBrowserCookies,
+ OnClearBrowserCookies)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
+}
+
+void RenderViewDevToolsAgentHost::OnRuntimePropertyChanged(
+ const std::string& name,
+ const std::string& value) {
+ DevToolsManager::GetInstance()->RuntimePropertyChanged(
+ this, name, value);
+}
+
+void RenderViewDevToolsAgentHost::OnForwardToClient(
+ const IPC::Message& message) {
+ DevToolsManager::GetInstance()->ForwardToDevToolsClient(
+ this, message);
+}
+
+void RenderViewDevToolsAgentHost::OnClearBrowserCache() {
+ content::GetContentClient()->browser()->ClearCache(render_view_host_);
+}
+
+void RenderViewDevToolsAgentHost::OnClearBrowserCookies() {
+ content::GetContentClient()->browser()->ClearCookies(render_view_host_);
}
diff --git a/content/browser/debugger/render_view_devtools_agent_host.h b/content/browser/debugger/render_view_devtools_agent_host.h
index 9950f2a..cd9fd95 100644
--- a/content/browser/debugger/render_view_devtools_agent_host.h
+++ b/content/browser/debugger/render_view_devtools_agent_host.h
@@ -10,13 +10,12 @@
#include "base/basictypes.h"
#include "content/browser/debugger/devtools_agent_host.h"
-#include "content/common/notification_observer.h"
-#include "content/common/notification_registrar.h"
+#include "content/browser/renderer_host/render_view_host_observer.h"
class RenderViewHost;
class RenderViewDevToolsAgentHost : public DevToolsAgentHost,
- public NotificationObserver {
+ private RenderViewHostObserver {
public:
static DevToolsAgentHost* FindFor(RenderViewHost*);
@@ -29,13 +28,17 @@ class RenderViewDevToolsAgentHost : public DevToolsAgentHost,
virtual void NotifyClientClosing();
virtual int GetRenderProcessId();
- // Overridden from NotificationObserver:
- virtual void Observe(int type,
- const NotificationSource& source,
- const NotificationDetails& details);
+ // RenderViewHostObserver overrides.
+ virtual void RenderViewHostDestroyed() OVERRIDE;
+ virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
+
+ void OnForwardToClient(const IPC::Message& message);
+ void OnRuntimePropertyChanged(const std::string& name,
+ const std::string& value);
+ void OnClearBrowserCache();
+ void OnClearBrowserCookies();
RenderViewHost* render_view_host_;
- NotificationRegistrar registrar_;
typedef std::map<RenderViewHost*, RenderViewDevToolsAgentHost*> Instances;
static Instances instances_;
diff --git a/content/content_browser.gypi b/content/content_browser.gypi
index 258d589..713aded 100644
--- a/content/content_browser.gypi
+++ b/content/content_browser.gypi
@@ -83,8 +83,6 @@
'browser/debugger/devtools_agent_host.h',
'browser/debugger/devtools_client_host.cc',
'browser/debugger/devtools_client_host.h',
- 'browser/debugger/devtools_handler.cc',
- 'browser/debugger/devtools_handler.h',
'browser/debugger/devtools_http_protocol_handler.cc',
'browser/debugger/devtools_http_protocol_handler.h',
'browser/debugger/devtools_manager.cc',