// Copyright 2015 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 "components/devtools_discovery/devtools_discovery_manager.h" #include "base/stl_util.h" #include "components/devtools_discovery/basic_target_descriptor.h" #include "content/public/browser/devtools_agent_host.h" using content::DevToolsAgentHost; namespace devtools_discovery { // static DevToolsDiscoveryManager* DevToolsDiscoveryManager::GetInstance() { return Singleton::get(); } DevToolsDiscoveryManager::DevToolsDiscoveryManager() { } DevToolsDiscoveryManager::~DevToolsDiscoveryManager() { STLDeleteElements(&providers_); } void DevToolsDiscoveryManager::AddProvider(scoped_ptr provider) { providers_.push_back(provider.release()); } DevToolsTargetDescriptor::List DevToolsDiscoveryManager::GetDescriptors() { if (providers_.size()) return GetDescriptorsFromProviders(); DevToolsAgentHost::List agent_hosts = DevToolsAgentHost::GetOrCreateAll(); DevToolsTargetDescriptor::List result; result.reserve(agent_hosts.size()); for (const auto& agent_host : agent_hosts) result.push_back(new BasicTargetDescriptor(agent_host)); return result; } void DevToolsDiscoveryManager::SetCreateCallback( const CreateCallback& callback) { create_callback_ = callback; } scoped_ptr DevToolsDiscoveryManager::CreateNew(const GURL& url) { if (create_callback_.is_null()) return scoped_ptr(); return create_callback_.Run(url); } DevToolsTargetDescriptor::List DevToolsDiscoveryManager::GetDescriptorsFromProviders() { DevToolsTargetDescriptor::List result; for (const auto& provider : providers_) { DevToolsTargetDescriptor::List partial = provider->GetDescriptors(); result.insert(result.begin(), partial.begin(), partial.end()); } return result; } } // namespace devtools_discovery