Commit 2b8cf900 authored by yurys@chromium.org's avatar yurys@chromium.org

DevTools handler now handles messages from both client and agent and is...

DevTools handler now handles messages from both client and agent and is created for all new render_view_hosts. This patch moves handling of IPC messages from agent to RenderViewDevToolsAgentHost and handling of client IPC messages to DevToolsWindow.

BUG=None
TEST=Existing DevTools tests

Review URL: http://codereview.chromium.org/7778010

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98964 0039d316-1c4b-4281-b951-d872f2087c98
parent 7d18ef26
......@@ -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);
}
......
......@@ -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)
: profile_(profile),
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)
: 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,13 +294,13 @@ 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,
void DevToolsWindow::OnSaveAs(const std::string& suggested_file_name,
const std::string& content) {
DevToolsFileUtil::SaveAs(tab_contents_->profile(),
suggested_file_name,
......@@ -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()->
......
......@@ -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);
};
......
......@@ -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();
......
// 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());
}
// 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_
......@@ -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));
}
}
void DevToolsManager::BindClientHost(
......
......@@ -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);
......
......@@ -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();
......
......@@ -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_);
}
......@@ -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_;
......
......@@ -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',
......
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