diff options
-rw-r--r-- | chrome/browser/chrome_content_browser_client.cc | 2 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_window.cc | 100 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_window.h | 36 | ||||
-rw-r--r-- | content/browser/debugger/devtools_client_host.h | 18 | ||||
-rw-r--r-- | content/browser/debugger/devtools_handler.cc | 107 | ||||
-rw-r--r-- | content/browser/debugger/devtools_handler.h | 40 | ||||
-rw-r--r-- | content/browser/debugger/devtools_manager.cc | 14 | ||||
-rw-r--r-- | content/browser/debugger/devtools_manager.h | 4 | ||||
-rw-r--r-- | content/browser/debugger/devtools_manager_unittest.cc | 4 | ||||
-rw-r--r-- | content/browser/debugger/render_view_devtools_agent_host.cc | 54 | ||||
-rw-r--r-- | content/browser/debugger/render_view_devtools_agent_host.h | 19 | ||||
-rw-r--r-- | content/content_browser.gypi | 2 |
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', |