diff options
author | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-01 16:21:44 +0000 |
---|---|---|
committer | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-01 16:21:44 +0000 |
commit | 0e12d7d59d4778e1a8ef692d244bf66aea1a80b8 (patch) | |
tree | 11fd0f2f8d0ab431f59084541922d6c971876f99 /chrome | |
parent | 5581458c8b7ac9e7117d96606d74e574c41df8d6 (diff) | |
download | chromium_src-0e12d7d59d4778e1a8ef692d244bf66aea1a80b8.zip chromium_src-0e12d7d59d4778e1a8ef692d244bf66aea1a80b8.tar.gz chromium_src-0e12d7d59d4778e1a8ef692d244bf66aea1a80b8.tar.bz2 |
Define DevTools content API
The API consists of the following parts:
* DevToolsManager routes messages between devtools agents and clients
* DevToolsAgentHost provides an abstract interface to the debuggee, currently it is either RenderViewHost or Shared Worker. Client can obtain DevToolsAgentHost from DevToolsAgentHostRegistry.
* DevToolsClientHost is an API that should be implemented by DevTools front-end. There is a default Chromium implementation living in chrome/ and a remote debugging server which also implements this interface. Clients can extend it in order to provide custom front-end. There is a default DevTools front-end implementation and content/ provides a way for creating corresponding DevToolsClientHost by means of DevToolsClientHost::CreateDevToolsFrontendHost. The embedder just needs to provide a concrete delegate.
* This patch also removes DevToolsHost_ForwardToAgent and DevToolsHost_ForwardToClient IPC messages which were used to forward only one message. DevTools IPC messages are now hidden behind the devtools content API.
BUG=104625
TEST=Existing tests
Review URL: http://codereview.chromium.org/8549022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112473 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/DEPS | 2 | ||||
-rw-r--r-- | chrome/browser/automation/automation_provider.cc | 1 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_sanity_unittest.cc | 17 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_window.cc | 74 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_window.h | 26 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_debugger_api.cc | 52 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_devtools_bridge.cc | 51 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_devtools_bridge.h | 10 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_devtools_browsertests.cc | 33 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_service.cc | 21 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_browsertest.cc | 21 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_manager.cc | 4 | ||||
-rw-r--r-- | chrome/browser/task_manager/task_manager_worker_resource_provider.cc | 6 | ||||
-rw-r--r-- | chrome/browser/ui/browser.cc | 10 | ||||
-rw-r--r-- | chrome/browser/ui/webui/devtools_ui.cc | 6 | ||||
-rw-r--r-- | chrome/browser/ui/webui/workers_ui.cc | 6 |
16 files changed, 176 insertions, 164 deletions
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS index 72cdae8..2d92a3a 100644 --- a/chrome/browser/DEPS +++ b/chrome/browser/DEPS @@ -36,8 +36,6 @@ include_rules = [ "+content/common/chrome_application_mac.h", "+content/common/mac/scoped_sending_event.h", "+content/common/view_messages.h", - # TODO(pfeldman) - "+content/common/devtools_messages.h", # TODO(gbilock) "+content/common/intents_messages.h", diff --git a/chrome/browser/automation/automation_provider.cc b/chrome/browser/automation/automation_provider.cc index a48ad44..e6ee1d1 100644 --- a/chrome/browser/automation/automation_provider.cc +++ b/chrome/browser/automation/automation_provider.cc @@ -79,7 +79,6 @@ #include "chrome/common/pref_names.h" #include "chrome/common/render_messages.h" #include "chrome/common/url_constants.h" -#include "content/browser/debugger/devtools_manager.h" #include "content/browser/download/download_item.h" #include "content/browser/download/save_package.h" #include "content/browser/renderer_host/render_view_host.h" diff --git a/chrome/browser/debugger/devtools_sanity_unittest.cc b/chrome/browser/debugger/devtools_sanity_unittest.cc index 9d8ceb6..cc659e6 100644 --- a/chrome/browser/debugger/devtools_sanity_unittest.cc +++ b/chrome/browser/debugger/devtools_sanity_unittest.cc @@ -21,20 +21,23 @@ #include "chrome/common/chrome_paths.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" -#include "content/browser/debugger/devtools_client_host.h" -#include "content/browser/debugger/devtools_manager.h" -#include "content/browser/debugger/worker_devtools_manager.h" #include "content/browser/renderer_host/render_view_host.h" #include "content/browser/tab_contents/tab_contents.h" #include "content/browser/worker_host/worker_process_host.h" #include "content/browser/worker_host/worker_service.h" #include "content/browser/worker_host/worker_service_observer.h" +#include "content/public/browser/devtools_agent_host_registry.h" +#include "content/public/browser/devtools_client_host.h" +#include "content/public/browser/devtools_manager.h" #include "content/public/browser/content_browser_client.h" #include "content/public/browser/notification_registrar.h" #include "content/public/browser/notification_service.h" #include "net/test/test_server.h" using content::BrowserThread; +using content::DevToolsManager; +using content::DevToolsAgentHost; +using content::DevToolsAgentHostRegistry; namespace { @@ -145,7 +148,9 @@ class DevToolsSanityTest : public InProcessBrowserTest { // UnregisterDevToolsClientHostFor may destroy window_ so store the browser // first. Browser* browser = window_->browser(); - devtools_manager->UnregisterDevToolsClientHostFor(inspected_rvh_); + DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( + inspected_rvh_); + devtools_manager->UnregisterDevToolsClientHostFor(agent); // Wait only when DevToolsWindow has a browser. For docked DevTools, this // is NULL and we skip the wait. @@ -386,12 +391,12 @@ class WorkerDevToolsSanityTest : public InProcessBrowserTest { window_ = DevToolsWindow::CreateDevToolsWindowForWorker(profile); window_->Show(DEVTOOLS_TOGGLE_ACTION_NONE); DevToolsAgentHost* agent_host = - WorkerDevToolsManager::GetDevToolsAgentHostForWorker( + DevToolsAgentHostRegistry::GetDevToolsAgentHostForWorker( worker_data->worker_process_id, worker_data->worker_route_id); DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( agent_host, - window_); + window_->devtools_client_host()); RenderViewHost* client_rvh = window_->GetRenderViewHost(); TabContents* client_contents = client_rvh->delegate()->GetAsTabContents(); if (client_contents->IsLoading()) { diff --git a/chrome/browser/debugger/devtools_window.cc b/chrome/browser/debugger/devtools_window.cc index a741085..020a242 100644 --- a/chrome/browser/debugger/devtools_window.cc +++ b/chrome/browser/debugger/devtools_window.cc @@ -31,7 +31,6 @@ #include "chrome/common/render_messages.h" #include "chrome/common/url_constants.h" #include "content/browser/browsing_instance.h" -#include "content/browser/debugger/devtools_manager.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,9 +38,9 @@ #include "content/browser/tab_contents/navigation_entry.h" #include "content/browser/tab_contents/tab_contents.h" #include "content/browser/tab_contents/tab_contents_view.h" -#include "content/common/devtools_messages.h" #include "content/public/browser/content_browser_client.h" -#include "content/public/browser/devtools_frontend_window.h" +#include "content/public/browser/devtools_agent_host_registry.h" +#include "content/public/browser/devtools_manager.h" #include "content/public/browser/notification_source.h" #include "content/public/common/bindings_policy.h" #include "grit/generated_resources.h" @@ -53,6 +52,11 @@ base::LazyInstance<DevToolsWindowList, g_instances = LAZY_INSTANCE_INITIALIZER; } // namespace +using content::DevToolsAgentHost; +using content::DevToolsAgentHostRegistry; +using content::DevToolsClientHost; +using content::DevToolsManager; + const char DevToolsWindow::kDevToolsApp[] = "DevToolsApp"; // static @@ -68,9 +72,13 @@ TabContentsWrapper* DevToolsWindow::GetDevToolsContents( if (!inspected_tab) return NULL; + if (!DevToolsAgentHostRegistry::HasDevToolsAgentHost( + inspected_tab->render_view_host())) + return NULL; + DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( + inspected_tab->render_view_host()); DevToolsManager* manager = DevToolsManager::GetInstance(); - DevToolsClientHost* client_host = manager-> - GetDevToolsClientHostFor(inspected_tab->render_view_host()); + DevToolsClientHost* client_host = manager->GetDevToolsClientHostFor(agent); DevToolsWindow* window = AsDevToolsWindow(client_host); if (!window || !window->is_docked()) return NULL; @@ -95,16 +103,17 @@ DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForWorker( Profile* profile, DevToolsAgentHost* worker_agent) { DevToolsWindow* window; - DevToolsClientHost* client = - DevToolsManager::GetInstance()->GetDevToolsClientHostFor(worker_agent); + DevToolsClientHost* client = content::DevToolsManager::GetInstance()-> + GetDevToolsClientHostFor(worker_agent); if (client) { window = AsDevToolsWindow(client); if (!window) return NULL; } else { window = DevToolsWindow::CreateDevToolsWindowForWorker(profile); - DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor(worker_agent, - window); + DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( + worker_agent, + window->frontend_host_); } window->Show(DEVTOOLS_TOGGLE_ACTION_NONE); return window; @@ -133,10 +142,9 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( void DevToolsWindow::InspectElement(RenderViewHost* inspected_rvh, int x, int y) { - inspected_rvh->Send(new DevToolsAgentMsg_InspectElement( - inspected_rvh->routing_id(), - x, - y)); + DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( + inspected_rvh); + DevToolsManager::GetInstance()->InspectElement(agent, x, y); // TODO(loislo): we should initiate DevTools window opening from within // renderer. Otherwise, we still can hit a race condition here. OpenDevToolsWindow(inspected_rvh); @@ -171,18 +179,17 @@ DevToolsWindow::DevToolsWindow(TabContentsWrapper* tab_contents, browser_(NULL), docked_(docked), is_loaded_(false), - action_on_load_(DEVTOOLS_TOGGLE_ACTION_NONE) { + action_on_load_(DEVTOOLS_TOGGLE_ACTION_NONE), + frontend_host_(NULL) { + frontend_host_ = DevToolsClientHost::CreateDevToolsFrontendHost( + tab_contents->tab_contents(), + this); g_instances.Get().push_back(this); // Wipe out page icon so that the default application icon is used. NavigationEntry* entry = tab_contents_->controller().GetActiveEntry(); entry->favicon().set_bitmap(SkBitmap()); entry->favicon().set_is_valid(true); - // Install DevTools front-end message handler. - content::SetupDevToolsFrontendDelegate( - tab_contents->tab_contents(), - this); - // Register on-load actions. registrar_.Add( this, @@ -214,13 +221,6 @@ DevToolsWindow::~DevToolsWindow() { instances.erase(it); } -void DevToolsWindow::SendMessageToClient(const IPC::Message& message) { - 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); -} - void DevToolsWindow::InspectedTabClosing() { if (docked_) { // Update dev tools to reflect removed dev tools window. @@ -477,7 +477,7 @@ void DevToolsWindow::Observe(int type, // of window.Close event. // Notify manager that this DevToolsClientHost no longer exists and // initiate self-destuct here. - NotifyCloseListener(); + DevToolsManager::GetInstance()->ClientHostClosing(frontend_host_); delete this; } } else if (type == chrome::NOTIFICATION_BROWSER_THEME_CHANGED) { @@ -598,13 +598,14 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( RenderViewHost* inspected_rvh, bool force_open, DevToolsToggleAction action) { + DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( + inspected_rvh); DevToolsManager* manager = DevToolsManager::GetInstance(); - - DevToolsClientHost* host = manager->GetDevToolsClientHostFor(inspected_rvh); + DevToolsClientHost* host = manager->GetDevToolsClientHostFor(agent); DevToolsWindow* window = AsDevToolsWindow(host); if (host != NULL && window == NULL) { // Break remote debugging / extension debugging session. - manager->UnregisterDevToolsClientHostFor(inspected_rvh); + manager->UnregisterDevToolsClientHostFor(agent); } bool do_open = force_open; @@ -613,7 +614,7 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( inspected_rvh->process()->GetBrowserContext()); bool docked = profile->GetPrefs()->GetBoolean(prefs::kDevToolsOpenDocked); window = Create(profile, inspected_rvh, docked, false); - manager->RegisterDevToolsClientHostFor(inspected_rvh, window); + manager->RegisterDevToolsClientHostFor(agent, window->frontend_host_); do_open = true; } @@ -622,7 +623,7 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( if (!window->is_docked() || do_open) window->Show(action); else - manager->UnregisterDevToolsClientHostFor(inspected_rvh); + manager->UnregisterDevToolsClientHostFor(agent); return window; } @@ -635,17 +636,12 @@ DevToolsWindow* DevToolsWindow::AsDevToolsWindow( DevToolsWindowList& instances = g_instances.Get(); for (DevToolsWindowList::iterator it = instances.begin(); it != instances.end(); ++it) { - DevToolsClientHost* client = *it; - if (client == client_host) + if ((*it)->frontend_host_ == client_host) return *it; } return NULL; } -void DevToolsWindow::ForwardToDevToolsAgent(const IPC::Message& message) { - DevToolsManager::GetInstance()->ForwardToDevToolsAgent(this, message); -} - void DevToolsWindow::ActivateWindow() { if (!docked_) { if (!browser_->window()->IsActive()) { @@ -660,7 +656,7 @@ void DevToolsWindow::ActivateWindow() { void DevToolsWindow::CloseWindow() { DCHECK(docked_); - NotifyCloseListener(); + DevToolsManager::GetInstance()->ClientHostClosing(frontend_host_); InspectedTabClosing(); } diff --git a/chrome/browser/debugger/devtools_window.h b/chrome/browser/debugger/devtools_window.h index a9616e3..49c2c17 100644 --- a/chrome/browser/debugger/devtools_window.h +++ b/chrome/browser/debugger/devtools_window.h @@ -11,9 +11,9 @@ #include "base/basictypes.h" #include "chrome/browser/debugger/devtools_toggle_action.h" -#include "content/browser/debugger/devtools_client_host.h" #include "content/browser/tab_contents/tab_contents_delegate.h" -#include "content/public/browser/devtools_frontend_window_delegate.h" +#include "content/public/browser/devtools_client_host.h" +#include "content/public/browser/devtools_frontend_host_delegate.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_registrar.h" @@ -23,7 +23,6 @@ class Message; class Browser; class BrowserWindow; -class DevToolsAgentHost; class PrefService; class Profile; class RenderViewHost; @@ -33,10 +32,14 @@ namespace base { class Value; } -class DevToolsWindow : public DevToolsClientHost, - private content::NotificationObserver, +namespace content { +class DevToolsAgentHost; +class DevToolsClientHost; +} + +class DevToolsWindow : private content::NotificationObserver, private TabContentsDelegate, - private content::DevToolsFrontendWindowDelegate { + private content::DevToolsFrontendHostDelegate { public: static const char kDevToolsApp[]; static void RegisterUserPrefs(PrefService* prefs); @@ -45,7 +48,7 @@ class DevToolsWindow : public DevToolsClientHost, static DevToolsWindow* OpenDevToolsWindowForWorker( Profile* profile, - DevToolsAgentHost* worker_agent); + content::DevToolsAgentHost* worker_agent); static DevToolsWindow* CreateDevToolsWindowForWorker(Profile* profile); static DevToolsWindow* OpenDevToolsWindow(RenderViewHost* inspected_rvh); static DevToolsWindow* ToggleDevToolsWindow(RenderViewHost* inspected_rvh, @@ -55,7 +58,6 @@ class DevToolsWindow : public DevToolsClientHost, virtual ~DevToolsWindow(); // Overridden from DevToolsClientHost. - virtual void SendMessageToClient(const IPC::Message& message) OVERRIDE; virtual void InspectedTabClosing() OVERRIDE; virtual void TabReplaced(TabContents* new_tab) OVERRIDE; RenderViewHost* GetRenderViewHost(); @@ -65,6 +67,9 @@ class DevToolsWindow : public DevToolsClientHost, TabContentsWrapper* tab_contents() { return tab_contents_; } Browser* browser() { return browser_; } // For tests. bool is_docked() { return docked_; } + content::DevToolsClientHost* devtools_client_host() { + return frontend_host_; + } private: static DevToolsWindow* Create(Profile* profile, @@ -121,10 +126,9 @@ class DevToolsWindow : public DevToolsClientHost, static DevToolsWindow* ToggleDevToolsWindow(RenderViewHost* inspected_rvh, bool force_open, DevToolsToggleAction action); - static DevToolsWindow* AsDevToolsWindow(DevToolsClientHost*); + static DevToolsWindow* AsDevToolsWindow(content::DevToolsClientHost*); // content::DevToolsClientHandlerDelegate overrides. - virtual void ForwardToDevToolsAgent(const IPC::Message& message) OVERRIDE; virtual void ActivateWindow() OVERRIDE; virtual void CloseWindow() OVERRIDE; virtual void MoveWindow(int x, int y) OVERRIDE; @@ -132,6 +136,7 @@ class DevToolsWindow : public DevToolsClientHost, virtual void UndockWindow() OVERRIDE; virtual void SaveToFile(const std::string& suggested_file_name, const std::string& content) OVERRIDE; + void RequestSetDocked(bool docked); Profile* profile_; @@ -142,6 +147,7 @@ class DevToolsWindow : public DevToolsClientHost, bool is_loaded_; DevToolsToggleAction action_on_load_; content::NotificationRegistrar registrar_; + content::DevToolsClientHost* frontend_host_; DISALLOW_COPY_AND_ASSIGN(DevToolsWindow); }; diff --git a/chrome/browser/extensions/extension_debugger_api.cc b/chrome/browser/extensions/extension_debugger_api.cc index 80d7970..c9bcb6c 100644 --- a/chrome/browser/extensions/extension_debugger_api.cc +++ b/chrome/browser/extensions/extension_debugger_api.cc @@ -22,13 +22,18 @@ #include "chrome/common/chrome_notification_types.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_error_utils.h" -#include "content/browser/debugger/devtools_client_host.h" -#include "content/browser/debugger/devtools_manager.h" +#include "content/public/browser/devtools_agent_host_registry.h" +#include "content/public/browser/devtools_client_host.h" +#include "content/public/browser/devtools_manager.h" #include "content/browser/tab_contents/tab_contents.h" -#include "content/common/devtools_messages.h" #include "content/public/browser/notification_source.h" #include "webkit/glue/webkit_glue.h" +using content::DevToolsAgentHost; +using content::DevToolsAgentHostRegistry; +using content::DevToolsClientHost; +using content::DevToolsManager; + namespace keys = extension_debugger_api_constants; class ExtensionDevToolsClientHost : public DevToolsClientHost, @@ -49,7 +54,7 @@ class ExtensionDevToolsClientHost : public DevToolsClientHost, // DevToolsClientHost interface virtual void InspectedTabClosing(); - virtual void SendMessageToClient(const IPC::Message& msg); + virtual void DispatchOnInspectorFrontend(const std::string& message); virtual void TabReplaced(TabContents* tab_contents); virtual void FrameNavigating(const std::string& url) {} @@ -58,7 +63,6 @@ class ExtensionDevToolsClientHost : public DevToolsClientHost, virtual void Observe(int type, const content::NotificationSource& source, const content::NotificationDetails& details); - void OnDispatchOnInspectorFrontend(const std::string& data); TabContents* tab_contents_; std::string extension_id_; @@ -98,8 +102,12 @@ class AttachedClientHosts { } ExtensionDevToolsClientHost* Lookup(RenderViewHost* rvh) { + if (!DevToolsAgentHostRegistry::HasDevToolsAgentHost(rvh)) + return NULL; + DevToolsAgentHost* agent = + DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh); DevToolsClientHost* client_host = - DevToolsManager::GetInstance()->GetDevToolsClientHostFor(rvh); + DevToolsManager::GetInstance()->GetDevToolsClientHostFor(agent); std::set<DevToolsClientHost*>::iterator it = client_hosts_.find(client_host); if (it == client_hosts_.end()) @@ -130,9 +138,9 @@ ExtensionDevToolsClientHost::ExtensionDevToolsClientHost( content::Source<Profile>(profile)); // Attach to debugger and tell it we are ready. - DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( - tab_contents_->render_view_host(), - this); + DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( + tab_contents_->render_view_host()); + DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor(agent, this); } ExtensionDevToolsClientHost::~ExtensionDevToolsClientHost() { @@ -163,22 +171,13 @@ void ExtensionDevToolsClientHost::InspectedTabClosing() { delete this; } -void ExtensionDevToolsClientHost::SendMessageToClient( - const IPC::Message& msg) { - IPC_BEGIN_MESSAGE_MAP(ExtensionDevToolsClientHost, msg) - IPC_MESSAGE_HANDLER(DevToolsClientMsg_DispatchOnInspectorFrontend, - OnDispatchOnInspectorFrontend); - IPC_MESSAGE_UNHANDLED_ERROR() - IPC_END_MESSAGE_MAP() -} - void ExtensionDevToolsClientHost::TabReplaced( TabContents* tab_contents) { tab_contents_ = tab_contents; } void ExtensionDevToolsClientHost::Close() { - DevToolsClientHost::NotifyCloseListener(); + DevToolsManager::GetInstance()->ClientHostClosing(this); delete this; } @@ -196,10 +195,7 @@ void ExtensionDevToolsClientHost::SendMessageToBackend( std::string json_args; base::JSONWriter::Write(&protocol_request, false, &json_args); - DevToolsManager::GetInstance()->ForwardToDevToolsAgent( - this, - DevToolsAgentMsg_DispatchOnInspectorBackend(MSG_ROUTING_NONE, - json_args)); + DevToolsManager::GetInstance()->DispatchOnInspectorBackend(this, json_args); } void ExtensionDevToolsClientHost::Observe( @@ -210,14 +206,14 @@ void ExtensionDevToolsClientHost::Observe( Close(); } -void ExtensionDevToolsClientHost::OnDispatchOnInspectorFrontend( - const std::string& data) { +void ExtensionDevToolsClientHost::DispatchOnInspectorFrontend( + const std::string& message) { Profile* profile = Profile::FromBrowserContext(tab_contents_->browser_context()); if (profile == NULL || !profile->GetExtensionEventRouter()) return; - scoped_ptr<Value> result(base::JSONReader::Read(data, false)); + scoped_ptr<Value> result(base::JSONReader::Read(message, false)); if (!result->IsType(Value::TYPE_DICTIONARY)) return; DictionaryValue* dictionary = static_cast<DictionaryValue*>(result.get()); @@ -314,8 +310,10 @@ bool AttachDebuggerFunction::RunImpl() { return false; } + DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( + contents_->render_view_host()); DevToolsClientHost* client_host = DevToolsManager::GetInstance()-> - GetDevToolsClientHostFor(contents_->render_view_host()); + GetDevToolsClientHostFor(agent); if (client_host != NULL) { error_ = ExtensionErrorUtils::FormatErrorMessage( diff --git a/chrome/browser/extensions/extension_devtools_bridge.cc b/chrome/browser/extensions/extension_devtools_bridge.cc index 5372296..237e072 100644 --- a/chrome/browser/extensions/extension_devtools_bridge.cc +++ b/chrome/browser/extensions/extension_devtools_bridge.cc @@ -15,9 +15,13 @@ #include "chrome/browser/extensions/extension_tab_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" -#include "content/browser/debugger/devtools_manager.h" #include "content/browser/tab_contents/tab_contents.h" -#include "content/common/devtools_messages.h" +#include "content/public/browser/devtools_agent_host_registry.h" +#include "content/public/browser/devtools_manager.h" + +using content::DevToolsAgentHost; +using content::DevToolsAgentHostRegistry; +using content::DevToolsManager; ExtensionDevToolsBridge::ExtensionDevToolsBridge(int tab_id, Profile* profile) @@ -56,29 +60,25 @@ bool ExtensionDevToolsBridge::RegisterAsDevToolsClientHost() { &browser, &tab_strip, &contents, &tab_index)) { DevToolsManager* devtools_manager = DevToolsManager::GetInstance(); - if (devtools_manager->GetDevToolsClientHostFor(contents-> - render_view_host()) != NULL) + DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( + contents->render_view_host()); + if (devtools_manager->GetDevToolsClientHostFor(agent)) return false; - devtools_manager->RegisterDevToolsClientHostFor( - contents->render_view_host(), this); + devtools_manager->RegisterDevToolsClientHostFor(agent, this); // Following messages depend on inspector protocol that is not yet // finalized. // 1. Start timeline profiler. - devtools_manager->ForwardToDevToolsAgent( + devtools_manager->DispatchOnInspectorBackend( this, - DevToolsAgentMsg_DispatchOnInspectorBackend( - MSG_ROUTING_NONE, - FormatDevToolsMessage(2, "Timeline.start"))); + FormatDevToolsMessage(2, "Timeline.start")); // 2. Enable network resource tracking. - devtools_manager->ForwardToDevToolsAgent( + devtools_manager->DispatchOnInspectorBackend( this, - DevToolsAgentMsg_DispatchOnInspectorBackend( - MSG_ROUTING_NONE, - FormatDevToolsMessage(3, "Network.enable"))); + FormatDevToolsMessage(3, "Network.enable")); return true; } @@ -87,8 +87,7 @@ bool ExtensionDevToolsBridge::RegisterAsDevToolsClientHost() { void ExtensionDevToolsBridge::UnregisterAsDevToolsClientHost() { DCHECK_EQ(MessageLoop::current()->type(), MessageLoop::TYPE_UI); - - NotifyCloseListener(); + DevToolsManager::GetInstance()->ClientHostClosing(this); } // If the tab we are looking at is going away then we fire a closing event at @@ -106,20 +105,7 @@ void ExtensionDevToolsBridge::InspectedTabClosing() { extension_devtools_manager_->BridgeClosingForTab(tab_id_); } -void ExtensionDevToolsBridge::SendMessageToClient(const IPC::Message& msg) { - IPC_BEGIN_MESSAGE_MAP(ExtensionDevToolsBridge, msg) - IPC_MESSAGE_HANDLER(DevToolsClientMsg_DispatchOnInspectorFrontend, - OnDispatchOnInspectorFrontend); - IPC_MESSAGE_UNHANDLED_ERROR() - IPC_END_MESSAGE_MAP() -} - -void ExtensionDevToolsBridge::TabReplaced(TabContents* new_tab) { - // We don't update the tab id as it needs to remain the same so that we can - // properly unregister. -} - -void ExtensionDevToolsBridge::OnDispatchOnInspectorFrontend( +void ExtensionDevToolsBridge::DispatchOnInspectorFrontend( const std::string& data) { DCHECK_EQ(MessageLoop::current()->type(), MessageLoop::TYPE_UI); @@ -127,3 +113,8 @@ void ExtensionDevToolsBridge::OnDispatchOnInspectorFrontend( profile_->GetExtensionEventRouter()->DispatchEventToRenderers( on_page_event_name_, json, profile_, GURL()); } + +void ExtensionDevToolsBridge::TabReplaced(TabContents* new_tab) { + // We don't update the tab id as it needs to remain the same so that we can + // properly unregister. +} diff --git a/chrome/browser/extensions/extension_devtools_bridge.h b/chrome/browser/extensions/extension_devtools_bridge.h index dbcabd4..6c5c292 100644 --- a/chrome/browser/extensions/extension_devtools_bridge.h +++ b/chrome/browser/extensions/extension_devtools_bridge.h @@ -11,12 +11,12 @@ #include "base/memory/ref_counted.h" #include "chrome/browser/extensions/extension_devtools_manager.h" #include "chrome/browser/extensions/extension_message_service.h" -#include "content/browser/debugger/devtools_client_host.h" +#include "content/public/browser/devtools_client_host.h" class Profile; // This class is a DevToolsClientHost that fires extension events. -class ExtensionDevToolsBridge : public DevToolsClientHost { +class ExtensionDevToolsBridge : public content::DevToolsClientHost { public: ExtensionDevToolsBridge(int tab_id, Profile* profile); virtual ~ExtensionDevToolsBridge(); @@ -28,14 +28,12 @@ class ExtensionDevToolsBridge : public DevToolsClientHost { // closing. virtual void InspectedTabClosing() OVERRIDE; - // DevToolsClientHost, called to send a message to this host. - virtual void SendMessageToClient(const IPC::Message& msg) OVERRIDE; + // DevToolsClientHost, called to dispatch a message on this client. + virtual void DispatchOnInspectorFrontend(const std::string& message) OVERRIDE; virtual void TabReplaced(TabContents* new_tab) OVERRIDE; private: - void OnDispatchOnInspectorFrontend(const std::string& data); - virtual void FrameNavigating(const std::string& url) OVERRIDE {} // ID of the tab we are monitoring. diff --git a/chrome/browser/extensions/extension_devtools_browsertests.cc b/chrome/browser/extensions/extension_devtools_browsertests.cc index 9f220b7..f41ebd3 100644 --- a/chrome/browser/extensions/extension_devtools_browsertests.cc +++ b/chrome/browser/extensions/extension_devtools_browsertests.cc @@ -16,14 +16,19 @@ #include "chrome/common/chrome_paths.h" #include "chrome/common/url_constants.h" #include "chrome/test/base/ui_test_utils.h" -#include "content/browser/debugger/devtools_client_host.h" -#include "content/browser/debugger/devtools_manager.h" #include "content/browser/renderer_host/render_view_host.h" #include "content/browser/site_instance.h" #include "content/browser/tab_contents/tab_contents.h" -#include "content/common/devtools_messages.h" +#include "content/public/browser/devtools_agent_host_registry.h" +#include "content/public/browser/devtools_client_host.h" +#include "content/public/browser/devtools_manager.h" #include "net/base/net_util.h" +using content::DevToolsAgentHost; +using content::DevToolsAgentHostRegistry; +using content::DevToolsClientHost; +using content::DevToolsManager; + // Looks for an ExtensionHost whose URL has the given path component (including // leading slash). Also verifies that the expected number of hosts are loaded. static ExtensionHost* FindHostWithPath(ExtensionProcessManager* manager, @@ -73,18 +78,16 @@ IN_PROC_BROWSER_TEST_F(ExtensionDevToolsBrowserTest, FLAKY_TimelineApi) { // Setting the events should have caused an ExtensionDevToolsBridge to be // registered for the tab's RenderViewHost. + DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( + tab_contents->render_view_host()); DevToolsClientHost* devtools_client_host = - devtools_manager->GetDevToolsClientHostFor( - tab_contents->render_view_host()); + devtools_manager->GetDevToolsClientHostFor(agent); ASSERT_TRUE(devtools_client_host); // Test onPageEvent event. result = false; - DevToolsClientMsg_DispatchOnInspectorFrontend pageEventMessage( - MSG_ROUTING_NONE, - ""); - devtools_client_host->SendMessageToClient(pageEventMessage); + devtools_client_host->DispatchOnInspectorFrontend(""); ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( host->render_view_host(), L"", L"testReceivePageEvent()", &result)); EXPECT_TRUE(result); @@ -92,7 +95,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionDevToolsBrowserTest, FLAKY_TimelineApi) { // Test onTabClose event. result = false; devtools_manager->UnregisterDevToolsClientHostFor( - tab_contents->render_view_host()); + DevToolsAgentHostRegistry::GetDevToolsAgentHost( + tab_contents->render_view_host())); ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( host->render_view_host(), L"", L"testReceiveTabCloseEvent()", &result)); EXPECT_TRUE(result); @@ -132,7 +136,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionDevToolsBrowserTest, ProcessRefCounting) { // Setting the event listeners should have caused an ExtensionDevToolsBridge // to be registered for the tab's RenderViewHost. ASSERT_TRUE(devtools_manager->GetDevToolsClientHostFor( - tab_contents->render_view_host())); + DevToolsAgentHostRegistry::GetDevToolsAgentHost( + tab_contents->render_view_host()))); // Register listeners from the second extension as well. std::wstring script = base::StringPrintf(L"registerListenersForTab(%d)", @@ -148,7 +153,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionDevToolsBrowserTest, ProcessRefCounting) { host_one->render_view_host(), L"", L"unregisterListeners()", &result)); EXPECT_TRUE(result); ASSERT_TRUE(devtools_manager->GetDevToolsClientHostFor( - tab_contents->render_view_host())); + DevToolsAgentHostRegistry::GetDevToolsAgentHost( + tab_contents->render_view_host()))); // Removing the listeners from the second extension should tear the bridge // down. @@ -157,5 +163,6 @@ IN_PROC_BROWSER_TEST_F(ExtensionDevToolsBrowserTest, ProcessRefCounting) { host_two->render_view_host(), L"", L"unregisterListeners()", &result)); EXPECT_TRUE(result); ASSERT_FALSE(devtools_manager->GetDevToolsClientHostFor( - tab_contents->render_view_host())); + DevToolsAgentHostRegistry::GetDevToolsAgentHost( + tab_contents->render_view_host()))); } diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc index 612ac2c..8fd7b59 100644 --- a/chrome/browser/extensions/extension_service.cc +++ b/chrome/browser/extensions/extension_service.cc @@ -86,11 +86,12 @@ #include "chrome/common/extensions/extension_resource.h" #include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" -#include "content/browser/debugger/devtools_manager.h" #include "content/browser/plugin_process_host.h" #include "content/browser/plugin_service.h" #include "content/browser/user_metrics.h" #include "content/public/browser/browser_thread.h" +#include "content/public/browser/devtools_agent_host_registry.h" +#include "content/public/browser/devtools_manager.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/notification_types.h" #include "content/public/browser/render_process_host.h" @@ -118,6 +119,8 @@ using base::Time; using content::BrowserThread; +using content::DevToolsAgentHost; +using content::DevToolsAgentHostRegistry; namespace errors = extension_manifest_errors; @@ -607,10 +610,14 @@ void ExtensionService::ReloadExtension(const std::string& extension_id) { // later. ExtensionProcessManager* manager = profile_->GetExtensionProcessManager(); ExtensionHost* host = manager->GetBackgroundHostForExtension(extension_id); - if (host) { + if (host && DevToolsAgentHostRegistry::HasDevToolsAgentHost( + host->render_view_host())) { // Look for an open inspector for the background page. - int devtools_cookie = DevToolsManager::GetInstance()->DetachClientHost( - host->render_view_host()); + DevToolsAgentHost* agent = + DevToolsAgentHostRegistry::GetDevToolsAgentHost( + host->render_view_host()); + int devtools_cookie = + content::DevToolsManager::GetInstance()->DetachClientHost(agent); if (devtools_cookie >= 0) orphaned_dev_tools_[extension_id] = devtools_cookie; } @@ -2297,8 +2304,10 @@ void ExtensionService::DidCreateRenderViewForBackgroundPage( if (iter == orphaned_dev_tools_.end()) return; - DevToolsManager::GetInstance()->AttachClientHost( - iter->second, host->render_view_host()); + DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( + host->render_view_host()); + content::DevToolsManager::GetInstance()->AttachClientHost(iter->second, + agent); orphaned_dev_tools_.erase(iter); } diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc index 83043b5..035e84c 100644 --- a/chrome/browser/prerender/prerender_browsertest.cc +++ b/chrome/browser/prerender/prerender_browsertest.cc @@ -32,10 +32,11 @@ #include "chrome/common/pref_names.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" -#include "content/browser/debugger/devtools_client_host.h" -#include "content/browser/debugger/devtools_manager.h" #include "content/browser/renderer_host/render_view_host.h" #include "content/browser/tab_contents/tab_contents.h" +#include "content/public/browser/devtools_agent_host_registry.h" +#include "content/public/browser/devtools_client_host.h" +#include "content/public/browser/devtools_manager.h" #include "content/public/browser/notification_service.h" #include "content/public/common/url_constants.h" #include "grit/generated_resources.h" @@ -45,6 +46,10 @@ #include "ui/base/l10n/l10n_util.h" using content::BrowserThread; +using content::DevToolsAgentHost; +using content::DevToolsAgentHostRegistry; +using content::DevToolsClientHost; +using content::DevToolsManager; // Prerender tests work as follows: // @@ -395,12 +400,10 @@ class TestSafeBrowsingServiceFactory : public SafeBrowsingServiceFactory { class FakeDevToolsClientHost : public DevToolsClientHost { public: FakeDevToolsClientHost() {} - virtual ~FakeDevToolsClientHost() { - NotifyCloseListener(); - } + virtual ~FakeDevToolsClientHost() {} virtual void InspectedTabClosing() OVERRIDE {} virtual void FrameNavigating(const std::string& url) OVERRIDE {} - virtual void SendMessageToClient(const IPC::Message& msg) OVERRIDE {} + virtual void DispatchOnInspectorFrontend(const std::string& msg) OVERRIDE {} virtual void TabReplaced(TabContents* new_tab) OVERRIDE {} }; @@ -1836,13 +1839,15 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, NavigateToPrerenderedPageWhenDevToolsAttached) { DisableJavascriptCalls(); TabContents* tab_contents = browser()->GetSelectedTabContents(); - RenderViewHost* inspected_rvh = tab_contents->render_view_host(); + DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( + tab_contents->render_view_host()); DevToolsManager* manager = DevToolsManager::GetInstance(); FakeDevToolsClientHost client_host; - manager->RegisterDevToolsClientHostFor(inspected_rvh, &client_host); + manager->RegisterDevToolsClientHostFor(agent, &client_host); const char* url = "files/prerender/prerender_page.html"; PrerenderTestURL(url, FINAL_STATUS_DEVTOOLS_ATTACHED, 1); NavigateToURL(url); + manager->ClientHostClosing(&client_host); } // Validate that the sessionStorage namespace remains the same when swapping diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc index 8306bfb..323d202 100644 --- a/chrome/browser/prerender/prerender_manager.cc +++ b/chrome/browser/prerender/prerender_manager.cc @@ -35,7 +35,6 @@ #include "chrome/common/chrome_switches.h" #include "chrome/common/render_messages.h" #include "content/browser/cancelable_request.h" -#include "content/browser/debugger/render_view_devtools_agent_host.h" #include "content/browser/in_process_webkit/session_storage_namespace.h" #include "content/browser/renderer_host/render_view_host.h" #include "content/browser/renderer_host/resource_dispatcher_host.h" @@ -43,6 +42,7 @@ #include "content/browser/tab_contents/tab_contents.h" #include "content/browser/tab_contents/tab_contents_delegate.h" #include "content/public/browser/browser_thread.h" +#include "content/public/browser/devtools_agent_host_registry.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_registrar.h" #include "content/public/browser/notification_source.h" @@ -595,7 +595,7 @@ bool PrerenderManager::MaybeUsePrerenderedPage(TabContents* tab_contents, // Don't use prerendered pages if debugger is attached to the tab. // See http://crbug.com/98541 - if (RenderViewDevToolsAgentHost::IsDebuggerAttached(tab_contents)) { + if (content::DevToolsAgentHostRegistry::IsDebuggerAttached(tab_contents)) { prerender_contents.release()->Destroy(FINAL_STATUS_DEVTOOLS_ATTACHED); return false; } diff --git a/chrome/browser/task_manager/task_manager_worker_resource_provider.cc b/chrome/browser/task_manager/task_manager_worker_resource_provider.cc index 4380ed8..734da89 100644 --- a/chrome/browser/task_manager/task_manager_worker_resource_provider.cc +++ b/chrome/browser/task_manager/task_manager_worker_resource_provider.cc @@ -12,11 +12,11 @@ #include "chrome/browser/debugger/devtools_window.h" #include "chrome/browser/profiles/profile_manager.h" #include "content/browser/browser_child_process_host.h" -#include "content/browser/debugger/worker_devtools_manager.h" #include "content/browser/worker_host/worker_process_host.h" #include "content/browser/worker_host/worker_service.h" #include "content/browser/worker_host/worker_service_observer.h" #include "content/public/browser/browser_thread.h" +#include "content/public/browser/devtools_agent_host_registry.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/notification_types.h" #include "content/public/common/process_type.h" @@ -26,6 +26,8 @@ #include "ui/base/resource/resource_bundle.h" using content::BrowserThread; +using content::DevToolsAgentHost; +using content::DevToolsAgentHostRegistry; // Objects of this class are created on the IO thread and then passed to the UI // thread where they are passed to the task manager. All methods must be called @@ -127,7 +129,7 @@ void TaskManagerSharedWorkerResource::Inspect() const { if (!profile) return; DevToolsAgentHost* agent_host = - WorkerDevToolsManager::GetDevToolsAgentHostForWorker( + DevToolsAgentHostRegistry::GetDevToolsAgentHostForWorker( process_info_.id(), routing_id_); DevToolsWindow::OpenDevToolsWindowForWorker(profile, agent_host); diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index acffbcc..eb9a8dd 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc @@ -137,7 +137,6 @@ #include "chrome/common/web_apps.h" #include "content/browser/browser_url_handler.h" #include "content/browser/child_process_security_policy.h" -#include "content/browser/debugger/devtools_manager.h" #include "content/browser/download/download_item.h" #include "content/browser/download/download_manager.h" #include "content/browser/download/save_package.h" @@ -150,6 +149,7 @@ #include "content/browser/tab_contents/navigation_entry.h" #include "content/browser/tab_contents/tab_contents_view.h" #include "content/browser/user_metrics.h" +#include "content/public/browser/devtools_manager.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/notification_details.h" #include "content/public/common/content_restriction.h" @@ -3342,10 +3342,8 @@ void Browser::TabReplacedAt(TabStripModel* tab_strip_model, new_contents, tab_handler_->GetTabStripModel()->IsTabPinned(index)); } - DevToolsManager* devtools_manager = DevToolsManager::GetInstance(); - if (devtools_manager) // NULL in unit tests. - devtools_manager->TabReplaced(old_contents->tab_contents(), - new_contents->tab_contents()); + content::DevToolsManager::GetInstance()->TabReplaced( + old_contents->tab_contents(), new_contents->tab_contents()); } void Browser::TabPinnedStateChanged(TabContentsWrapper* contents, int index) { @@ -4160,7 +4158,7 @@ void Browser::Observe(int type, } else if (pref_name == prefs::kDevToolsDisabled) { UpdateCommandsForDevTools(); if (profile_->GetPrefs()->GetBoolean(prefs::kDevToolsDisabled)) - DevToolsManager::GetInstance()->CloseAllClientHosts(); + content::DevToolsManager::GetInstance()->CloseAllClientHosts(); } else if (pref_name == prefs::kEditBookmarksEnabled) { UpdateCommandsForBookmarkEditing(); } else if (pref_name == prefs::kShowBookmarkBar) { diff --git a/chrome/browser/ui/webui/devtools_ui.cc b/chrome/browser/ui/webui/devtools_ui.cc index 5ea6be7..0d1ae7f 100644 --- a/chrome/browser/ui/webui/devtools_ui.cc +++ b/chrome/browser/ui/webui/devtools_ui.cc @@ -14,8 +14,8 @@ #include "chrome/common/url_constants.h" #include "content/browser/renderer_host/render_view_host.h" #include "content/browser/tab_contents/tab_contents.h" -#include "content/common/devtools_messages.h" #include "content/public/browser/browser_thread.h" +#include "content/public/browser/devtools_client_host.h" #include "grit/devtools_resources_map.h" #include "ui/base/resource/resource_bundle.h" @@ -106,8 +106,6 @@ DevToolsUI::DevToolsUI(TabContents* contents) : ChromeWebUI(contents) { } void DevToolsUI::RenderViewCreated(RenderViewHost* render_view_host) { - render_view_host->Send(new DevToolsMsg_SetupDevToolsClient( - render_view_host->routing_id())); - + content::DevToolsClientHost::SetupDevToolsFrontendClient(render_view_host); ChromeWebUI::RenderViewCreated(render_view_host); } diff --git a/chrome/browser/ui/webui/workers_ui.cc b/chrome/browser/ui/webui/workers_ui.cc index d8ad254..521740f 100644 --- a/chrome/browser/ui/webui/workers_ui.cc +++ b/chrome/browser/ui/webui/workers_ui.cc @@ -16,7 +16,7 @@ #include "chrome/browser/ui/webui/chrome_url_data_manager_backend.h" #include "chrome/browser/ui/webui/chrome_web_ui_data_source.h" #include "chrome/common/url_constants.h" -#include "content/browser/debugger/worker_devtools_manager.h" +#include "content/public/browser/devtools_agent_host_registry.h" #include "content/browser/tab_contents/tab_contents.h" #include "content/browser/worker_host/worker_process_host.h" #include "content/browser/worker_host/worker_service.h" @@ -27,6 +27,8 @@ #include "ui/base/resource/resource_bundle.h" using content::BrowserThread; +using content::DevToolsAgentHost; +using content::DevToolsAgentHostRegistry; static const char kWorkersDataFile[] = "workers_data.json"; @@ -142,7 +144,7 @@ void WorkersDOMHandler::HandleOpenDevTools(const ListValue* args) { if (!profile) return; DevToolsAgentHost* agent_host = - WorkerDevToolsManager::GetDevToolsAgentHostForWorker( + DevToolsAgentHostRegistry::GetDevToolsAgentHostForWorker( worker_process_host_id, worker_route_id); DevToolsWindow::OpenDevToolsWindowForWorker(profile, agent_host); |