| // 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. |
| |
| #ifndef COMPONENTS_DEVTOOLS_DISCOVERY_DEVTOOLS_DISCOVERY_MANAGER_H_ |
| #define COMPONENTS_DEVTOOLS_DISCOVERY_DEVTOOLS_DISCOVERY_MANAGER_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include "base/macros.h" |
| #include "base/memory/singleton.h" |
| #include "base/values.h" |
| #include "components/devtools_discovery/devtools_target_descriptor.h" |
| |
| namespace devtools_discovery { |
| |
| class DevToolsDiscoveryManager { |
| public: |
| class Provider { |
| public: |
| virtual ~Provider() {} |
| |
| // Caller takes ownership of created descriptors. |
| virtual DevToolsTargetDescriptor::List GetDescriptors() = 0; |
| }; |
| |
| using CreateCallback = |
| base::Callback<std::unique_ptr<DevToolsTargetDescriptor>( |
| const GURL& url)>; |
| |
| // Returns single instance of this class. The instance is destroyed on the |
| // browser main loop exit so this method MUST NOT be called after that point. |
| static DevToolsDiscoveryManager* GetInstance(); |
| |
| void AddProvider(std::unique_ptr<Provider> provider); |
| void SetCreateCallback(const CreateCallback& callback); |
| |
| // Caller takes ownership of created descriptors. |
| DevToolsTargetDescriptor::List GetDescriptors(); |
| std::unique_ptr<DevToolsTargetDescriptor> CreateNew(const GURL& url); |
| |
| // Handles Browser.createTarget only. |
| std::unique_ptr<base::DictionaryValue> HandleCreateTargetCommand( |
| base::DictionaryValue* command_dict); |
| |
| private: |
| friend struct base::DefaultSingletonTraits<DevToolsDiscoveryManager>; |
| |
| DevToolsDiscoveryManager(); |
| ~DevToolsDiscoveryManager(); |
| DevToolsTargetDescriptor::List GetDescriptorsFromProviders(); |
| |
| std::vector<Provider*> providers_; |
| CreateCallback create_callback_; |
| |
| DISALLOW_COPY_AND_ASSIGN(DevToolsDiscoveryManager); |
| }; |
| |
| } // namespace devtools_discovery |
| |
| #endif // COMPONENTS_DEVTOOLS_DISCOVERY_DEVTOOLS_DISCOVERY_MANAGER_H_ |