Index: content/browser/devtools/devtools_agent_host_impl.cc |
diff --git a/content/browser/devtools/devtools_agent_host_impl.cc b/content/browser/devtools/devtools_agent_host_impl.cc |
index fdd38d13c14ca9d1d392da80161aa31ebbc01ad0..f9e06738b267f2b30fa447c563c4a20a1a605514 100644 |
--- a/content/browser/devtools/devtools_agent_host_impl.cc |
+++ b/content/browser/devtools/devtools_agent_host_impl.cc |
@@ -25,10 +25,14 @@ namespace { |
typedef std::map<std::string, DevToolsAgentHostImpl*> Instances; |
base::LazyInstance<Instances>::Leaky g_instances = LAZY_INSTANCE_INITIALIZER; |
-typedef std::vector<const DevToolsAgentHost::AgentStateCallback*> |
- AgentStateCallbacks; |
+using AgentStateCallbacks = |
+ std::vector<const DevToolsAgentHost::AgentStateCallback*>; |
base::LazyInstance<AgentStateCallbacks>::Leaky g_callbacks = |
LAZY_INSTANCE_INITIALIZER; |
+using DiscoveryCallbacks = |
+ std::vector<DevToolsAgentHost::DiscoveryCallback>; |
+base::LazyInstance<DiscoveryCallbacks>::Leaky g_providers = |
+ LAZY_INSTANCE_INITIALIZER; |
} // namespace |
char DevToolsAgentHost::kTypePage[] = "page"; |
@@ -40,6 +44,12 @@ char DevToolsAgentHost::kTypeBrowser[] = "browser"; |
char DevToolsAgentHost::kTypeOther[] = "other"; |
// static |
+DevToolsManagerDelegate* DevToolsAgentHost::GetDevToolsManagerDelegate() { |
+ DevToolsManager* manager = DevToolsManager::GetInstance(); |
+ return manager->delegate(); |
+} |
+ |
+// static |
std::string DevToolsAgentHost::GetProtocolVersion() { |
return std::string(devtools::kProtocolVersion); |
} |
@@ -50,6 +60,12 @@ bool DevToolsAgentHost::IsSupportedProtocolVersion(const std::string& version) { |
} |
// static |
+void DevToolsAgentHost::AddDiscoveryProvider( |
+ const DiscoveryCallback& callback) { |
+ g_providers.Get().push_back(callback); |
+} |
+ |
+// static |
DevToolsAgentHost::List DevToolsAgentHost::GetOrCreateAll() { |
List result; |
SharedWorkerDevToolsAgentHost::List shared_list; |
@@ -66,6 +82,20 @@ DevToolsAgentHost::List DevToolsAgentHost::GetOrCreateAll() { |
return result; |
} |
+// static |
+DevToolsAgentHost::List DevToolsAgentHost::DiscoverAllHosts() { |
+ content::DevToolsAgentHost::List result; |
+ // Force create all the delegates. |
+ DevToolsManager::GetInstance(); |
+ if (!g_providers.Get().size()) |
+ return DevToolsAgentHost::GetOrCreateAll(); |
+ for (auto& provider : g_providers.Get()) { |
+ content::DevToolsAgentHost::List partial = provider.Run(); |
+ result.insert(result.begin(), partial.begin(), partial.end()); |
+ } |
+ return result; |
+} |
+ |
// Called on the UI thread. |
// static |
scoped_refptr<DevToolsAgentHost> DevToolsAgentHost::GetForWorker( |