Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(619)

Unified Diff: chrome/browser/extensions/api/debugger/debugger_api.cc

Issue 449043002: [DevTools] Make DevTools clients talk directly to DevToolsAgentHost instead of using DevToolsManage… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/debugger/debugger_api.cc
diff --git a/chrome/browser/extensions/api/debugger/debugger_api.cc b/chrome/browser/extensions/api/debugger/debugger_api.cc
index 4e02a8df1abef9189b07cc9c3cf734022a081537..2db200ea6328e3c698eb0f382977cc778ca4563d 100644
--- a/chrome/browser/extensions/api/debugger/debugger_api.cc
+++ b/chrome/browser/extensions/api/debugger/debugger_api.cc
@@ -31,9 +31,7 @@
#include "components/infobars/core/confirm_infobar_delegate.h"
#include "components/infobars/core/infobar.h"
#include "content/public/browser/devtools_agent_host.h"
-#include "content/public/browser/devtools_client_host.h"
#include "content/public/browser/devtools_http_handler.h"
-#include "content/public/browser/devtools_manager.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_source.h"
#include "content/public/browser/render_process_host.h"
@@ -57,9 +55,7 @@
#include "ui/base/l10n/l10n_util.h"
using content::DevToolsAgentHost;
-using content::DevToolsClientHost;
using content::DevToolsHttpHandler;
-using content::DevToolsManager;
using content::RenderProcessHost;
using content::RenderViewHost;
using content::RenderWidgetHost;
@@ -77,7 +73,7 @@ class ExtensionRegistry;
// ExtensionDevToolsClientHost ------------------------------------------------
-class ExtensionDevToolsClientHost : public DevToolsClientHost,
+class ExtensionDevToolsClientHost : public DevToolsAgentHost::Client,
public content::NotificationObserver,
public ExtensionRegistryObserver {
public:
@@ -91,6 +87,7 @@ class ExtensionDevToolsClientHost : public DevToolsClientHost,
virtual ~ExtensionDevToolsClientHost();
const std::string& extension_id() { return extension_id_; }
+ DevToolsAgentHost* agent_host() { return agent_host_.get(); }
void Close();
void SendMessageToBackend(DebuggerSendCommandFunction* function,
const std::string& method,
@@ -99,10 +96,13 @@ class ExtensionDevToolsClientHost : public DevToolsClientHost,
// Marks connection as to-be-terminated by the user.
void MarkAsDismissed();
- // DevToolsClientHost interface
- virtual void InspectedContentsClosing() OVERRIDE;
- virtual void DispatchOnInspectorFrontend(const std::string& message) OVERRIDE;
- virtual void ReplacedWithAnotherClient() OVERRIDE;
+ // DevToolsAgentHost::Client interface.
+ virtual void AgentHostDetached(
+ DevToolsAgentHost* agent_host,
+ DevToolsAgentHost::DetachReason reason) OVERRIDE;
+ virtual void SendMessageFromAgentHost(
+ DevToolsAgentHost* agent_host,
+ const std::string& message) OVERRIDE;
private:
void SendDetachedEvent();
@@ -293,11 +293,10 @@ void AttachedClientHosts::Remove(ExtensionDevToolsClientHost* client_host) {
ExtensionDevToolsClientHost* AttachedClientHosts::Lookup(
DevToolsAgentHost* agent_host,
const std::string& extension_id) {
- DevToolsManager* manager = DevToolsManager::GetInstance();
for (ClientHosts::iterator it = client_hosts_.begin();
it != client_hosts_.end(); ++it) {
ExtensionDevToolsClientHost* client_host = *it;
- if (manager->GetDevToolsAgentHostFor(client_host) == agent_host &&
+ if (client_host->agent_host() == agent_host &&
client_host->extension_id() == extension_id)
return client_host;
}
@@ -338,8 +337,7 @@ ExtensionDevToolsClientHost::ExtensionDevToolsClientHost(
content::NotificationService::AllSources());
// Attach to debugger and tell it we are ready.
- DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor(
- agent_host_.get(), this);
+ agent_host_->AttachClient(this);
if (infobar_) {
static_cast<ExtensionDevToolsInfoBarDelegate*>(
@@ -367,18 +365,21 @@ ExtensionDevToolsClientHost::~ExtensionDevToolsClientHost() {
AttachedClientHosts::GetInstance()->Remove(this);
}
-// DevToolsClientHost interface
-void ExtensionDevToolsClientHost::InspectedContentsClosing() {
- SendDetachedEvent();
+// DevToolsAgentHost::Client implementation.
+void ExtensionDevToolsClientHost::AgentHostDetached(
+ DevToolsAgentHost* agent_host, DevToolsAgentHost::DetachReason reason) {
+ DCHECK(agent_host == agent_host_.get());
+ if (reason != DevToolsAgentHost::DETACHED_BY_CLIENT) {
+ if (reason == DevToolsAgentHost::REPLACED_WITH_ANOTHER_CLIENT)
+ detach_reason_ = OnDetach::REASON_REPLACED_WITH_DEVTOOLS;
+ SendDetachedEvent();
+ }
+ agent_host_ = NULL;
delete this;
pfeldman 2014/08/07 15:40:30 Are you now deleting things twice?
dgozman 2014/08/07 16:51:52 Yes, fixed.
}
-void ExtensionDevToolsClientHost::ReplacedWithAnotherClient() {
- detach_reason_ = OnDetach::REASON_REPLACED_WITH_DEVTOOLS;
-}
-
void ExtensionDevToolsClientHost::Close() {
- DevToolsManager::GetInstance()->ClientHostClosing(this);
+ agent_host_->DetachClient();
delete this;
}
@@ -398,7 +399,7 @@ void ExtensionDevToolsClientHost::SendMessageToBackend(
std::string json_args;
base::JSONWriter::Write(&protocol_request, &json_args);
- DevToolsManager::GetInstance()->DispatchOnInspectorBackend(this, json_args);
+ agent_host_->DispatchOnInspectorBackend(json_args);
}
void ExtensionDevToolsClientHost::MarkAsDismissed() {
@@ -446,8 +447,9 @@ void ExtensionDevToolsClientHost::Observe(
}
}
-void ExtensionDevToolsClientHost::DispatchOnInspectorFrontend(
- const std::string& message) {
+void ExtensionDevToolsClientHost::SendMessageFromAgentHost(
+ DevToolsAgentHost* agent_host, const std::string& message) {
+ DCHECK(agent_host == agent_host_.get());
if (!EventRouter::Get(profile_))
return;

Powered by Google App Engine
This is Rietveld 408576698