diff options
author | dgozman <dgozman@chromium.org> | 2015-04-28 09:31:25 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-28 16:31:57 +0000 |
commit | 88f570805c4cc7560bf527b8be4b8874740f35c2 (patch) | |
tree | 091a893f1615b2f0927e5057f5579d2ab438b906 | |
parent | f18fe92b893c9888f1b6cf25806dfddc5b3e1072 (diff) | |
download | chromium_src-88f570805c4cc7560bf527b8be4b8874740f35c2.zip chromium_src-88f570805c4cc7560bf527b8be4b8874740f35c2.tar.gz chromium_src-88f570805c4cc7560bf527b8be4b8874740f35c2.tar.bz2 |
[DevTools] Cleanup DevToolsTarget and DevToolsManagerDelegate after moving to devtools_discovery.
BUG=476496
TBR=jochen
Review URL: https://codereview.chromium.org/1114503002
Cr-Commit-Position: refs/heads/master@{#327300}
41 files changed, 163 insertions, 713 deletions
diff --git a/android_webview/android_webview.gyp b/android_webview/android_webview.gyp index d84660a..83f165f 100644 --- a/android_webview/android_webview.gyp +++ b/android_webview/android_webview.gyp @@ -210,8 +210,6 @@ 'browser/aw_cookie_access_policy.h', 'browser/aw_dev_tools_discovery_provider.cc', 'browser/aw_dev_tools_discovery_provider.h', - 'browser/aw_dev_tools_manager_delegate.cc', - 'browser/aw_dev_tools_manager_delegate.h', 'browser/aw_download_manager_delegate.cc', 'browser/aw_download_manager_delegate.h', 'browser/aw_form_database_service.cc', diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc index 832aa42..2cff426 100644 --- a/android_webview/browser/aw_content_browser_client.cc +++ b/android_webview/browser/aw_content_browser_client.cc @@ -9,7 +9,6 @@ #include "android_webview/browser/aw_contents_client_bridge_base.h" #include "android_webview/browser/aw_contents_io_thread_client.h" #include "android_webview/browser/aw_cookie_access_policy.h" -#include "android_webview/browser/aw_dev_tools_manager_delegate.h" #include "android_webview/browser/aw_printing_message_filter.h" #include "android_webview/browser/aw_quota_permission_context.h" #include "android_webview/browser/aw_web_preferences_populater.h" @@ -473,9 +472,4 @@ AwContentBrowserClient::OverrideCreateExternalVideoSurfaceContainer( } #endif -content::DevToolsManagerDelegate* -AwContentBrowserClient::GetDevToolsManagerDelegate() { - return new AwDevToolsManagerDelegate(); -} - } // namespace android_webview diff --git a/android_webview/browser/aw_content_browser_client.h b/android_webview/browser/aw_content_browser_client.h index 5d9897e..6d8852d 100644 --- a/android_webview/browser/aw_content_browser_client.h +++ b/android_webview/browser/aw_content_browser_client.h @@ -140,7 +140,6 @@ class AwContentBrowserClient : public content::ContentBrowserClient { OverrideCreateExternalVideoSurfaceContainer( content::WebContents* web_contents) override; #endif - content::DevToolsManagerDelegate* GetDevToolsManagerDelegate() override; private: // Android WebView currently has a single global (non-off-the-record) browser diff --git a/android_webview/browser/aw_dev_tools_manager_delegate.cc b/android_webview/browser/aw_dev_tools_manager_delegate.cc deleted file mode 100644 index d46e402..0000000 --- a/android_webview/browser/aw_dev_tools_manager_delegate.cc +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 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 "android_webview/browser/aw_dev_tools_manager_delegate.h" - -#include "components/devtools_discovery/devtools_discovery_manager.h" -#include "content/public/browser/devtools_target.h" - -namespace android_webview { - -AwDevToolsManagerDelegate::AwDevToolsManagerDelegate() { -} - -AwDevToolsManagerDelegate::~AwDevToolsManagerDelegate() { -} - -base::DictionaryValue* AwDevToolsManagerDelegate::HandleCommand( - content::DevToolsAgentHost* agent_host, - base::DictionaryValue* command_dict) { - return NULL; -} - -void AwDevToolsManagerDelegate::EnumerateTargets(TargetCallback callback) { - TargetList targets; - devtools_discovery::DevToolsDiscoveryManager* discovery_manager = - devtools_discovery::DevToolsDiscoveryManager::GetInstance(); - for (const auto& descriptor : discovery_manager->GetDescriptors()) - targets.push_back(descriptor); - callback.Run(targets); -} - -std::string AwDevToolsManagerDelegate::GetPageThumbnailData(const GURL&) { - return ""; -} - -scoped_ptr<content::DevToolsTarget> AwDevToolsManagerDelegate::CreateNewTarget( - const GURL&) { - return scoped_ptr<content::DevToolsTarget>(); -} - -} // namespace android_webview diff --git a/android_webview/browser/aw_dev_tools_manager_delegate.h b/android_webview/browser/aw_dev_tools_manager_delegate.h deleted file mode 100644 index 52b7c85..0000000 --- a/android_webview/browser/aw_dev_tools_manager_delegate.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2014 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 ANDROID_WEBVIEW_BROWSER_AW_DEV_TOOLS_MANAGER_DELEGATE_H_ -#define ANDROID_WEBVIEW_BROWSER_AW_DEV_TOOLS_MANAGER_DELEGATE_H_ - -#include "base/basictypes.h" -#include "content/public/browser/devtools_manager_delegate.h" - -namespace android_webview { - -// TODO(dgozman): remove this class after componentization of devtools_discovery -// is finished. -class AwDevToolsManagerDelegate : public content::DevToolsManagerDelegate { - public: - AwDevToolsManagerDelegate(); - ~AwDevToolsManagerDelegate() override; - - // content::DevToolsManagerDelegate implementation. - void Inspect(content::BrowserContext* browser_context, - content::DevToolsAgentHost* agent_host) override {} - void DevToolsAgentStateChanged(content::DevToolsAgentHost* agent_host, - bool attached) override {} - base::DictionaryValue* HandleCommand( - content::DevToolsAgentHost* agent_host, - base::DictionaryValue* command_dict) override; - scoped_ptr<content::DevToolsTarget> CreateNewTarget(const GURL& url) override; - void EnumerateTargets(TargetCallback callback) override; - std::string GetPageThumbnailData(const GURL& url) override; - - private: - DISALLOW_COPY_AND_ASSIGN(AwDevToolsManagerDelegate); -}; - -} // namespace android_webview - -#endif // ANDROID_WEBVIEW_BROWSER_AW_DEV_TOOLS_MANAGER_DELEGATE_H_ diff --git a/android_webview/native/aw_dev_tools_server.cc b/android_webview/native/aw_dev_tools_server.cc index 1e11f28..6b3e82a 100644 --- a/android_webview/native/aw_dev_tools_server.cc +++ b/android_webview/native/aw_dev_tools_server.cc @@ -4,7 +4,6 @@ #include "android_webview/native/aw_dev_tools_server.h" -#include "android_webview/browser/aw_dev_tools_manager_delegate.h" #include "android_webview/common/aw_content_client.h" #include "android_webview/native/aw_contents.h" #include "base/bind.h" @@ -17,7 +16,6 @@ #include "components/devtools_http_handler/devtools_http_handler_delegate.h" #include "content/public/browser/android/devtools_auth.h" #include "content/public/browser/devtools_agent_host.h" -#include "content/public/browser/devtools_target.h" #include "content/public/browser/web_contents.h" #include "content/public/common/user_agent.h" #include "jni/AwDevToolsServer_jni.h" @@ -51,6 +49,7 @@ class AwDevToolsServerDelegate : // devtools_http_handler::DevToolsHttpHandlerDelegate implementation. std::string GetDiscoveryPageHTML() override; std::string GetFrontendResource(const std::string& path) override; + std::string GetPageThumbnailData(const GURL&) override; private: @@ -73,6 +72,10 @@ std::string AwDevToolsServerDelegate::GetFrontendResource( return std::string(); } +std::string AwDevToolsServerDelegate::GetPageThumbnailData(const GURL&) { + return std::string(); +} + // Factory for UnixDomainServerSocket. class UnixDomainServerSocketFactory : public DevToolsHttpHandler::ServerSocketFactory { @@ -131,12 +134,10 @@ void AwDevToolsServer::Start() { scoped_ptr<DevToolsHttpHandler::ServerSocketFactory> factory( new UnixDomainServerSocketFactory( base::StringPrintf(kSocketNameFormat, getpid()))); - manager_delegate_.reset(new AwDevToolsManagerDelegate()); devtools_http_handler_.reset(new DevToolsHttpHandler( factory.Pass(), base::StringPrintf(kFrontEndURL, content::GetWebKitRevision().c_str()), new AwDevToolsServerDelegate(), - manager_delegate_.get(), base::FilePath(), base::FilePath(), GetProduct(), @@ -145,7 +146,6 @@ void AwDevToolsServer::Start() { void AwDevToolsServer::Stop() { devtools_http_handler_.reset(); - manager_delegate_.reset(); } bool AwDevToolsServer::IsStarted() const { diff --git a/android_webview/native/aw_dev_tools_server.h b/android_webview/native/aw_dev_tools_server.h index 48669a5..e3b5640 100644 --- a/android_webview/native/aw_dev_tools_server.h +++ b/android_webview/native/aw_dev_tools_server.h @@ -17,8 +17,6 @@ class DevToolsHttpHandler; namespace android_webview { -class AwDevToolsManagerDelegate; - // This class controls WebView-specific Developer Tools remote debugging server. class AwDevToolsServer { public: @@ -34,8 +32,6 @@ class AwDevToolsServer { bool IsStarted() const; private: - // TODO(dgozman): remove once devtools_discovery component is extracted. - scoped_ptr<AwDevToolsManagerDelegate> manager_delegate_; scoped_ptr<devtools_http_handler::DevToolsHttpHandler> devtools_http_handler_; DISALLOW_COPY_AND_ASSIGN(AwDevToolsServer); diff --git a/chrome/browser/android/dev_tools_discovery_provider_android.cc b/chrome/browser/android/dev_tools_discovery_provider_android.cc index e1a481f..aea64f6 100644 --- a/chrome/browser/android/dev_tools_discovery_provider_android.cc +++ b/chrome/browser/android/dev_tools_discovery_provider_android.cc @@ -16,7 +16,6 @@ #include "components/devtools_discovery/basic_target_descriptor.h" #include "components/devtools_discovery/devtools_discovery_manager.h" #include "content/public/browser/devtools_agent_host.h" -#include "content/public/browser/devtools_target.h" #include "content/public/browser/favicon_status.h" #include "content/public/browser/navigation_entry.h" #include "content/public/browser/web_contents.h" diff --git a/chrome/browser/android/dev_tools_manager_delegate_android.cc b/chrome/browser/android/dev_tools_manager_delegate_android.cc deleted file mode 100644 index 19845c40..0000000 --- a/chrome/browser/android/dev_tools_manager_delegate_android.cc +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2014 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 "chrome/browser/android/dev_tools_manager_delegate_android.h" - -#include "base/basictypes.h" -#include "base/compiler_specific.h" -#include "chrome/browser/history/top_sites_factory.h" -#include "chrome/browser/profiles/profile_manager.h" -#include "components/devtools_discovery/devtools_discovery_manager.h" -#include "components/history/core/browser/top_sites.h" -#include "content/public/browser/devtools_agent_host.h" -#include "content/public/browser/devtools_target.h" - -using content::DevToolsAgentHost; - -DevToolsManagerDelegateAndroid::DevToolsManagerDelegateAndroid() - : network_protocol_handler_(new DevToolsNetworkProtocolHandler()) { -} - -DevToolsManagerDelegateAndroid::~DevToolsManagerDelegateAndroid() { -} - -void DevToolsManagerDelegateAndroid::Inspect( - content::BrowserContext* browser_context, - content::DevToolsAgentHost* agent_host) { -} - -base::DictionaryValue* DevToolsManagerDelegateAndroid::HandleCommand( - content::DevToolsAgentHost* agent_host, - base::DictionaryValue* command_dict) { - return network_protocol_handler_->HandleCommand(agent_host, command_dict); -} - -void DevToolsManagerDelegateAndroid::DevToolsAgentStateChanged( - content::DevToolsAgentHost* agent_host, - bool attached) { - network_protocol_handler_->DevToolsAgentStateChanged(agent_host, attached); -} - -scoped_ptr<content::DevToolsTarget> - DevToolsManagerDelegateAndroid::CreateNewTarget(const GURL& url) { - devtools_discovery::DevToolsDiscoveryManager* discovery_manager = - devtools_discovery::DevToolsDiscoveryManager::GetInstance(); - return discovery_manager->CreateNew(url); -} - -void DevToolsManagerDelegateAndroid::EnumerateTargets(TargetCallback callback) { - TargetList targets; - devtools_discovery::DevToolsDiscoveryManager* discovery_manager = - devtools_discovery::DevToolsDiscoveryManager::GetInstance(); - for (const auto& descriptor : discovery_manager->GetDescriptors()) - targets.push_back(descriptor); - callback.Run(targets); -} - -std::string DevToolsManagerDelegateAndroid::GetPageThumbnailData( - const GURL& url) { - Profile* profile = ProfileManager::GetLastUsedProfile()->GetOriginalProfile(); - scoped_refptr<history::TopSites> top_sites = - TopSitesFactory::GetForProfile(profile); - if (top_sites) { - scoped_refptr<base::RefCountedMemory> data; - if (top_sites->GetPageThumbnail(url, false, &data)) - return std::string(data->front_as<char>(), data->size()); - } - return std::string(); -} diff --git a/chrome/browser/android/dev_tools_manager_delegate_android.h b/chrome/browser/android/dev_tools_manager_delegate_android.h deleted file mode 100644 index 1fa2190..0000000 --- a/chrome/browser/android/dev_tools_manager_delegate_android.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2014 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 CHROME_BROWSER_ANDROID_DEV_TOOLS_MANAGER_DELEGATE_ANDROID_H_ -#define CHROME_BROWSER_ANDROID_DEV_TOOLS_MANAGER_DELEGATE_ANDROID_H_ - -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "base/memory/scoped_ptr.h" -#include "chrome/browser/devtools/devtools_network_protocol_handler.h" -#include "content/public/browser/devtools_manager_delegate.h" - -// TODO(dgozman): remove this class once transition to devtools_discovery is -// completed. -class DevToolsManagerDelegateAndroid : public content::DevToolsManagerDelegate { - public: - DevToolsManagerDelegateAndroid(); - ~DevToolsManagerDelegateAndroid() override; - - // content::DevToolsManagerDelegate implementation. - void Inspect(content::BrowserContext* browser_context, - content::DevToolsAgentHost* agent_host) override; - void DevToolsAgentStateChanged(content::DevToolsAgentHost* agent_host, - bool attached) override; - base::DictionaryValue* HandleCommand( - content::DevToolsAgentHost* agent_host, - base::DictionaryValue* command_dict) override; - scoped_ptr<content::DevToolsTarget> CreateNewTarget(const GURL& url) override; - void EnumerateTargets(TargetCallback callback) override; - std::string GetPageThumbnailData(const GURL& url) override; - - private: - scoped_ptr<DevToolsNetworkProtocolHandler> network_protocol_handler_; - - DISALLOW_COPY_AND_ASSIGN(DevToolsManagerDelegateAndroid); -}; - -#endif // CHROME_BROWSER_ANDROID_DEV_TOOLS_MANAGER_DELEGATE_ANDROID_H_ diff --git a/chrome/browser/android/dev_tools_server.cc b/chrome/browser/android/dev_tools_server.cc index 9a91c6b..e42b25f 100644 --- a/chrome/browser/android/dev_tools_server.cc +++ b/chrome/browser/android/dev_tools_server.cc @@ -18,7 +18,6 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" -#include "chrome/browser/android/dev_tools_manager_delegate_android.h" #include "chrome/browser/android/tab_android.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/history/top_sites_factory.h" @@ -33,7 +32,6 @@ #include "content/public/browser/android/devtools_auth.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/devtools_agent_host.h" -#include "content/public/browser/devtools_target.h" #include "content/public/browser/favicon_status.h" #include "content/public/browser/navigation_entry.h" #include "content/public/browser/render_view_host.h" @@ -106,6 +104,19 @@ class DevToolsServerDelegate : return std::string(); } + std::string GetPageThumbnailData(const GURL& url) override { + Profile* profile = + ProfileManager::GetLastUsedProfile()->GetOriginalProfile(); + scoped_refptr<history::TopSites> top_sites = + TopSitesFactory::GetForProfile(profile); + if (top_sites) { + scoped_refptr<base::RefCountedMemory> data; + if (top_sites->GetPageThumbnail(url, false, &data)) + return std::string(data->front_as<char>(), data->size()); + } + return std::string(); + } + private: static void PopulatePageThumbnails() { Profile* profile = @@ -195,7 +206,6 @@ void DevToolsServer::Start(bool allow_debug_permission) { allow_debug_permission ? base::Bind(&AuthorizeSocketAccessWithDebugPermission) : base::Bind(&content::CanUserConnectToDevTools); - manager_delegate_.reset(new DevToolsManagerDelegateAndroid()); chrome::VersionInfo version_info; scoped_ptr<DevToolsHttpHandler::ServerSocketFactory> factory( @@ -204,7 +214,6 @@ void DevToolsServer::Start(bool allow_debug_permission) { factory.Pass(), base::StringPrintf(kFrontEndURL, content::GetWebKitRevision().c_str()), new DevToolsServerDelegate(), - manager_delegate_.get(), base::FilePath(), base::FilePath(), version_info.ProductNameAndVersionForUserAgent(), @@ -213,7 +222,6 @@ void DevToolsServer::Start(bool allow_debug_permission) { void DevToolsServer::Stop() { devtools_http_handler_.reset(); - manager_delegate_.reset(); } bool DevToolsServer::IsStarted() const { diff --git a/chrome/browser/android/dev_tools_server.h b/chrome/browser/android/dev_tools_server.h index 2716ef3..1ada47d 100644 --- a/chrome/browser/android/dev_tools_server.h +++ b/chrome/browser/android/dev_tools_server.h @@ -14,8 +14,6 @@ namespace devtools_http_handler { class DevToolsHttpHandler; } -class DevToolsManagerDelegateAndroid; - // This class controls Developer Tools remote debugging server. class DevToolsServer { public: @@ -32,8 +30,6 @@ class DevToolsServer { private: std::string socket_name_; - // TODO(dgozman): remove once devtools_discovery component is extracted. - scoped_ptr<DevToolsManagerDelegateAndroid> manager_delegate_; scoped_ptr<devtools_http_handler::DevToolsHttpHandler> devtools_http_handler_; DISALLOW_COPY_AND_ASSIGN(DevToolsServer); diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index f1cb6e4..b2cb439 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc @@ -33,6 +33,7 @@ #include "chrome/browser/content_settings/cookie_settings.h" #include "chrome/browser/content_settings/tab_specific_content_settings.h" #include "chrome/browser/defaults.h" +#include "chrome/browser/devtools/chrome_devtools_manager_delegate.h" #include "chrome/browser/download/download_prefs.h" #include "chrome/browser/font_family_cache.h" #include "chrome/browser/geolocation/chrome_access_token_store.h" @@ -175,12 +176,6 @@ #include "ui/gfx/android/device_display_info.h" #endif -#if defined(OS_ANDROID) -#include "chrome/browser/android/dev_tools_manager_delegate_android.h" -#else -#include "chrome/browser/devtools/chrome_devtools_manager_delegate.h" -#endif - #if defined(TOOLKIT_VIEWS) #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h" #endif @@ -2367,11 +2362,7 @@ void ChromeContentBrowserClient::RecordURLMetric(const std::string& metric, content::DevToolsManagerDelegate* ChromeContentBrowserClient::GetDevToolsManagerDelegate() { -#if defined(OS_ANDROID) - return new DevToolsManagerDelegateAndroid(); -#else return new ChromeDevToolsManagerDelegate(); -#endif } content::TracingDelegate* ChromeContentBrowserClient::GetTracingDelegate() { diff --git a/chrome/browser/devtools/BUILD.gn b/chrome/browser/devtools/BUILD.gn index 9dc9e9fe..599f71e 100644 --- a/chrome/browser/devtools/BUILD.gn +++ b/chrome/browser/devtools/BUILD.gn @@ -30,6 +30,8 @@ action("devtools_protocol_constants") { static_library("devtools") { # Note: new sources and deps should be generally added in (!is_android) below. sources = [ + "chrome_devtools_manager_delegate.cc", + "chrome_devtools_manager_delegate.h", "devtools_network_conditions.cc", "devtools_network_conditions.h", "devtools_network_controller.cc", @@ -79,8 +81,6 @@ static_library("devtools") { sources += [ "chrome_devtools_discovery_provider.cc", "chrome_devtools_discovery_provider.h", - "chrome_devtools_manager_delegate.cc", - "chrome_devtools_manager_delegate.h", "device/adb/adb_client_socket.cc", "device/adb/adb_client_socket.h", "device/adb/adb_device_provider.cc", diff --git a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc index f115a39..8a655ce 100644 --- a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc +++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc @@ -4,19 +4,11 @@ #include "chrome/browser/devtools/chrome_devtools_manager_delegate.h" -#include "base/values.h" -#include "chrome/browser/devtools/devtools_target_impl.h" +#if !defined(OS_ANDROID) #include "chrome/browser/devtools/devtools_window.h" -#include "chrome/browser/history/top_sites_factory.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/browser.h" -#include "chrome/browser/ui/browser_iterator.h" -#include "components/devtools_discovery/devtools_discovery_manager.h" -#include "components/history/core/browser/top_sites.h" -#include "content/public/browser/browser_thread.h" #include "content/public/browser/devtools_agent_host.h" -#include "content/public/browser/web_contents.h" +#endif // !defined(OS_ANDROID) ChromeDevToolsManagerDelegate::ChromeDevToolsManagerDelegate() : network_protocol_handler_(new DevToolsNetworkProtocolHandler()) { @@ -28,6 +20,7 @@ ChromeDevToolsManagerDelegate::~ChromeDevToolsManagerDelegate() { void ChromeDevToolsManagerDelegate::Inspect( content::BrowserContext* browser_context, content::DevToolsAgentHost* agent_host) { +#if !defined(OS_ANDROID) content::DevToolsAgentHost::Type type = agent_host->GetType(); if (type != content::DevToolsAgentHost::TYPE_SHARED_WORKER && type != content::DevToolsAgentHost::TYPE_SERVICE_WORKER) { @@ -36,6 +29,7 @@ void ChromeDevToolsManagerDelegate::Inspect( } if (Profile* profile = Profile::FromBrowserContext(browser_context)) DevToolsWindow::OpenDevToolsWindowForWorker(profile, agent_host); +#endif // !defined(OS_ANDROID) } base::DictionaryValue* ChromeDevToolsManagerDelegate::HandleCommand( @@ -49,34 +43,3 @@ void ChromeDevToolsManagerDelegate::DevToolsAgentStateChanged( bool attached) { network_protocol_handler_->DevToolsAgentStateChanged(agent_host, attached); } - -std::string ChromeDevToolsManagerDelegate::GetPageThumbnailData( - const GURL& url) { - for (chrome::BrowserIterator it; !it.done(); it.Next()) { - Profile* profile = (*it)->profile(); - scoped_refptr<history::TopSites> top_sites = - TopSitesFactory::GetForProfile(profile); - if (!top_sites) - continue; - scoped_refptr<base::RefCountedMemory> data; - if (top_sites->GetPageThumbnail(url, false, &data)) - return std::string(data->front_as<char>(), data->size()); - } - return std::string(); -} - -scoped_ptr<content::DevToolsTarget> -ChromeDevToolsManagerDelegate::CreateNewTarget(const GURL& url) { - return devtools_discovery::DevToolsDiscoveryManager::GetInstance()-> - CreateNew(url); -} - -void ChromeDevToolsManagerDelegate::EnumerateTargets(TargetCallback callback) { - TargetList targets; - devtools_discovery::DevToolsDiscoveryManager* discovery_manager = - devtools_discovery::DevToolsDiscoveryManager::GetInstance(); - for (const auto& descriptor : discovery_manager->GetDescriptors()) - targets.push_back(descriptor); - callback.Run(targets); -} - diff --git a/chrome/browser/devtools/chrome_devtools_manager_delegate.h b/chrome/browser/devtools/chrome_devtools_manager_delegate.h index 693e9b4..03b3e11 100644 --- a/chrome/browser/devtools/chrome_devtools_manager_delegate.h +++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.h @@ -24,9 +24,6 @@ class ChromeDevToolsManagerDelegate : public content::DevToolsManagerDelegate { base::DictionaryValue* HandleCommand( content::DevToolsAgentHost* agent_host, base::DictionaryValue* command_dict) override; - scoped_ptr<content::DevToolsTarget> CreateNewTarget(const GURL& url) override; - void EnumerateTargets(TargetCallback callback) override; - std::string GetPageThumbnailData(const GURL& url) override; private: scoped_ptr<DevToolsNetworkProtocolHandler> network_protocol_handler_; diff --git a/chrome/browser/devtools/remote_debugging_server.cc b/chrome/browser/devtools/remote_debugging_server.cc index 4fe1064..a94543e 100644 --- a/chrome/browser/devtools/remote_debugging_server.cc +++ b/chrome/browser/devtools/remote_debugging_server.cc @@ -7,7 +7,6 @@ #include "base/lazy_instance.h" #include "base/path_service.h" #include "base/strings/string_number_conversions.h" -#include "chrome/browser/devtools/chrome_devtools_manager_delegate.h" #include "chrome/browser/history/top_sites_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" @@ -85,6 +84,7 @@ class ChromeDevToolsHttpHandlerDelegate // devtools_http_handler::DevToolsHttpHandlerDelegate implementation. std::string GetDiscoveryPageHTML() override; std::string GetFrontendResource(const std::string& path) override; + std::string GetPageThumbnailData(const GURL& url) override; private: DISALLOW_COPY_AND_ASSIGN(ChromeDevToolsHttpHandlerDelegate); @@ -119,6 +119,21 @@ std::string ChromeDevToolsHttpHandlerDelegate::GetFrontendResource( return content::DevToolsFrontendHost::GetFrontendResource(path).as_string(); } +std::string ChromeDevToolsHttpHandlerDelegate::GetPageThumbnailData( + const GURL& url) { + for (chrome::BrowserIterator it; !it.done(); it.Next()) { + Profile* profile = (*it)->profile(); + scoped_refptr<history::TopSites> top_sites = + TopSitesFactory::GetForProfile(profile); + if (!top_sites) + continue; + scoped_refptr<base::RefCountedMemory> data; + if (top_sites->GetPageThumbnail(url, false, &data)) + return std::string(data->front_as<char>(), data->size()); + } + return std::string(); +} + } // namespace // static @@ -139,8 +154,6 @@ RemoteDebuggingServer::RemoteDebuggingServer( DCHECK(result); } - manager_delegate_.reset(new ChromeDevToolsManagerDelegate()); - base::FilePath debug_frontend_dir; #if defined(DEBUG_DEVTOOLS) PathService::Get(chrome::DIR_INSPECTOR, &debug_frontend_dir); @@ -152,7 +165,6 @@ RemoteDebuggingServer::RemoteDebuggingServer( make_scoped_ptr(new TCPServerSocketFactory(ip, port)), std::string(), new ChromeDevToolsHttpHandlerDelegate(), - manager_delegate_.get(), output_dir, debug_frontend_dir, version_info.ProductNameAndVersionForUserAgent(), diff --git a/chrome/browser/devtools/remote_debugging_server.h b/chrome/browser/devtools/remote_debugging_server.h index c82565f..a1169f0 100644 --- a/chrome/browser/devtools/remote_debugging_server.h +++ b/chrome/browser/devtools/remote_debugging_server.h @@ -15,8 +15,6 @@ namespace devtools_http_handler { class DevToolsHttpHandler; } -class ChromeDevToolsManagerDelegate; - class RemoteDebuggingServer { public: static void EnableTetheringForDebug(); @@ -28,8 +26,6 @@ class RemoteDebuggingServer { virtual ~RemoteDebuggingServer(); private: - // TODO(dgozman): remove once devtools_discovery component is extracted. - scoped_ptr<ChromeDevToolsManagerDelegate> manager_delegate_; scoped_ptr<devtools_http_handler::DevToolsHttpHandler> devtools_http_handler_; DISALLOW_COPY_AND_ASSIGN(RemoteDebuggingServer); }; diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 5fc511b..d761f82 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -78,8 +78,6 @@ 'browser/android/cookies/cookies_fetcher.h', 'browser/android/dev_tools_discovery_provider_android.cc', 'browser/android/dev_tools_discovery_provider_android.h', - 'browser/android/dev_tools_manager_delegate_android.cc', - 'browser/android/dev_tools_manager_delegate_android.h', 'browser/android/dev_tools_server.cc', 'browser/android/dev_tools_server.h', 'browser/android/dom_distiller/external_feedback_reporter_android.cc', diff --git a/chrome/chrome_debugger.gypi b/chrome/chrome_debugger.gypi index 4b8e0c5..44c0701 100644 --- a/chrome/chrome_debugger.gypi +++ b/chrome/chrome_debugger.gypi @@ -23,6 +23,8 @@ # These files are generated by devtools_protocol_constants_generator.py. '<(SHARED_INTERMEDIATE_DIR)/chrome/browser/devtools/devtools_protocol_constants.cc', '<(SHARED_INTERMEDIATE_DIR)/chrome/browser/devtools/devtools_protocol_constants.h', + 'browser/devtools/chrome_devtools_manager_delegate.cc', + 'browser/devtools/chrome_devtools_manager_delegate.h', 'browser/devtools/devtools_network_conditions.cc', 'browser/devtools/devtools_network_conditions.h', 'browser/devtools/devtools_network_controller.cc', @@ -59,8 +61,6 @@ '<(SHARED_INTERMEDIATE_DIR)/chrome/grit/webrtc_device_provider_resources_map.h', 'browser/devtools/chrome_devtools_discovery_provider.cc', 'browser/devtools/chrome_devtools_discovery_provider.h', - 'browser/devtools/chrome_devtools_manager_delegate.cc', - 'browser/devtools/chrome_devtools_manager_delegate.h', 'browser/devtools/device/adb/adb_client_socket.cc', 'browser/devtools/device/adb/adb_client_socket.h', 'browser/devtools/device/adb/adb_device_provider.cc', diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc index beae0d3..01430da 100644 --- a/chromecast/browser/cast_content_browser_client.cc +++ b/chromecast/browser/cast_content_browser_client.cc @@ -19,7 +19,6 @@ #include "chromecast/browser/cast_network_delegate.h" #include "chromecast/browser/cast_quota_permission_context.h" #include "chromecast/browser/cast_resource_dispatcher_host_delegate.h" -#include "chromecast/browser/devtools/cast_dev_tools_delegate.h" #include "chromecast/browser/geolocation/cast_access_token_store.h" #include "chromecast/browser/media/cma_message_filter_host.h" #include "chromecast/browser/url_request_context_factory.h" @@ -313,11 +312,6 @@ bool CastContentBrowserClient::CanCreateWindow( return false; } -content::DevToolsManagerDelegate* -CastContentBrowserClient::GetDevToolsManagerDelegate() { - return new CastDevToolsManagerDelegate(); -} - void CastContentBrowserClient::GetAdditionalMappedFilesForChildProcess( const base::CommandLine& command_line, int child_process_id, diff --git a/chromecast/browser/cast_content_browser_client.h b/chromecast/browser/cast_content_browser_client.h index 193a090..0d25e61 100644 --- a/chromecast/browser/cast_content_browser_client.h +++ b/chromecast/browser/cast_content_browser_client.h @@ -91,7 +91,6 @@ class CastContentBrowserClient: public content::ContentBrowserClient { int render_process_id, int opener_id, bool* no_javascript_access) override; - content::DevToolsManagerDelegate* GetDevToolsManagerDelegate() override; void GetAdditionalMappedFilesForChildProcess( const base::CommandLine& command_line, int child_process_id, diff --git a/chromecast/browser/devtools/cast_dev_tools_delegate.cc b/chromecast/browser/devtools/cast_dev_tools_delegate.cc index 4144727..93f1704 100644 --- a/chromecast/browser/devtools/cast_dev_tools_delegate.cc +++ b/chromecast/browser/devtools/cast_dev_tools_delegate.cc @@ -4,17 +4,7 @@ #include "chromecast/browser/devtools/cast_dev_tools_delegate.h" -#include "base/files/file_path.h" #include "base/macros.h" -#include "base/strings/utf_string_conversions.h" -#include "components/devtools_discovery/devtools_discovery_manager.h" -#include "content/public/browser/devtools_agent_host.h" -#include "content/public/browser/devtools_target.h" -#include "content/public/browser/favicon_status.h" -#include "content/public/browser/navigation_entry.h" -#include "content/public/browser/render_view_host.h" -#include "content/public/browser/web_contents.h" -#include "content/public/browser/web_contents_delegate.h" #include "grit/shell_resources.h" #include "ui/base/resource/resource_bundle.h" @@ -43,37 +33,8 @@ std::string CastDevToolsDelegate::GetFrontendResource( return std::string(); } -// CastDevToolsManagerDelegate ----------------------------------------------- - -CastDevToolsManagerDelegate::CastDevToolsManagerDelegate() { -} - -CastDevToolsManagerDelegate::~CastDevToolsManagerDelegate() { -} - -base::DictionaryValue* CastDevToolsManagerDelegate::HandleCommand( - content::DevToolsAgentHost* agent_host, - base::DictionaryValue* command) { - return NULL; -} - -std::string CastDevToolsManagerDelegate::GetPageThumbnailData( - const GURL& url) { - return ""; -} - -scoped_ptr<content::DevToolsTarget> -CastDevToolsManagerDelegate::CreateNewTarget(const GURL& url) { - return scoped_ptr<content::DevToolsTarget>(); -} - -void CastDevToolsManagerDelegate::EnumerateTargets(TargetCallback callback) { - TargetList targets; - devtools_discovery::DevToolsDiscoveryManager* discovery_manager = - devtools_discovery::DevToolsDiscoveryManager::GetInstance(); - for (const auto& descriptor : discovery_manager->GetDescriptors()) - targets.push_back(descriptor); - callback.Run(targets); +std::string CastDevToolsDelegate::GetPageThumbnailData(const GURL& url) { + return std::string(); } } // namespace shell diff --git a/chromecast/browser/devtools/cast_dev_tools_delegate.h b/chromecast/browser/devtools/cast_dev_tools_delegate.h index 38fbfcb..190abec 100644 --- a/chromecast/browser/devtools/cast_dev_tools_delegate.h +++ b/chromecast/browser/devtools/cast_dev_tools_delegate.h @@ -6,17 +6,8 @@ #define CHROMECAST_BROWSER_DEVTOOLS_CAST_DEV_TOOLS_DELEGATE_H_ #include "components/devtools_http_handler/devtools_http_handler_delegate.h" -#include "content/public/browser/devtools_manager_delegate.h" #include "net/socket/stream_listen_socket.h" -namespace base { -class FilePath; -} - -namespace content { -class BrowserContext; -} - namespace chromecast { namespace shell { @@ -29,32 +20,10 @@ class CastDevToolsDelegate : // devtools_http_handler::DevToolsHttpHandlerDelegate implementation. std::string GetDiscoveryPageHTML() override; std::string GetFrontendResource(const std::string& path) override; - - private: - DISALLOW_COPY_AND_ASSIGN(CastDevToolsDelegate); -}; - -class CastDevToolsManagerDelegate : public content::DevToolsManagerDelegate { - public: - CastDevToolsManagerDelegate(); - ~CastDevToolsManagerDelegate() override; - - // DevToolsManagerDelegate implementation. - void Inspect( - content::BrowserContext* browser_context, - content::DevToolsAgentHost* agent_host) override {} - void DevToolsAgentStateChanged( - content::DevToolsAgentHost* agent_host, - bool attached) override {} - base::DictionaryValue* HandleCommand( - content::DevToolsAgentHost* agent_host, - base::DictionaryValue* command) override; - scoped_ptr<content::DevToolsTarget> CreateNewTarget(const GURL& url) override; - void EnumerateTargets(TargetCallback callback) override; std::string GetPageThumbnailData(const GURL& url) override; private: - DISALLOW_COPY_AND_ASSIGN(CastDevToolsManagerDelegate); + DISALLOW_COPY_AND_ASSIGN(CastDevToolsDelegate); }; } // namespace shell diff --git a/chromecast/browser/devtools/remote_debugging_server.cc b/chromecast/browser/devtools/remote_debugging_server.cc index 3b78e38b..6391b6d 100644 --- a/chromecast/browser/devtools/remote_debugging_server.cc +++ b/chromecast/browser/devtools/remote_debugging_server.cc @@ -148,12 +148,10 @@ void RemoteDebuggingServer::OnPortChanged() { port_ = new_port; if (port_ > 0) { - manager_delegate_.reset(new CastDevToolsManagerDelegate()); devtools_http_handler_.reset(new DevToolsHttpHandler( CreateSocketFactory(port_), GetFrontendUrl(), new CastDevToolsDelegate(), - manager_delegate_.get(), base::FilePath(), base::FilePath(), std::string(), diff --git a/chromecast/browser/devtools/remote_debugging_server.h b/chromecast/browser/devtools/remote_debugging_server.h index 2d9e48e..399b344 100644 --- a/chromecast/browser/devtools/remote_debugging_server.h +++ b/chromecast/browser/devtools/remote_debugging_server.h @@ -30,8 +30,6 @@ class RemoteDebuggingServer { // on device startup. bool ShouldStartImmediately(); - // TODO(dgozman): remove once devtools_discovery component is extracted. - scoped_ptr<CastDevToolsManagerDelegate> manager_delegate_; scoped_ptr<devtools_http_handler::DevToolsHttpHandler> devtools_http_handler_; IntegerPrefMember pref_port_; diff --git a/components/devtools_discovery/devtools_discovery_manager.h b/components/devtools_discovery/devtools_discovery_manager.h index fa2b630..d4f0e85 100644 --- a/components/devtools_discovery/devtools_discovery_manager.h +++ b/components/devtools_discovery/devtools_discovery_manager.h @@ -18,6 +18,8 @@ class DevToolsDiscoveryManager { class Provider { public: virtual ~Provider() {} + + // Caller takes ownership of created descriptors. virtual DevToolsTargetDescriptor::List GetDescriptors() = 0; }; @@ -31,6 +33,7 @@ class DevToolsDiscoveryManager { void AddProvider(scoped_ptr<Provider> provider); void SetCreateCallback(const CreateCallback& callback); + // Caller takes ownership of created descriptors. DevToolsTargetDescriptor::List GetDescriptors(); scoped_ptr<DevToolsTargetDescriptor> CreateNew(const GURL& url); diff --git a/components/devtools_discovery/devtools_target_descriptor.h b/components/devtools_discovery/devtools_target_descriptor.h index 2e5b104..9b3200d 100644 --- a/components/devtools_discovery/devtools_target_descriptor.h +++ b/components/devtools_discovery/devtools_target_descriptor.h @@ -11,7 +11,6 @@ #include "base/basictypes.h" #include "base/memory/ref_counted.h" #include "base/time/time.h" -#include "content/public/browser/devtools_target.h" #include "url/gurl.h" namespace content { @@ -24,12 +23,46 @@ namespace devtools_discovery { // and can be used to manipulate the target and query its details. // Instantiation and discovery of DevToolsTargetDescriptor instances // is the responsibility of DevToolsDiscoveryManager. -// TODO(dgozman): remove content::DevToolsTarget once every embedder migrates -// to this descriptor. -class DevToolsTargetDescriptor : public content::DevToolsTarget { +class DevToolsTargetDescriptor { public: using List = std::vector<DevToolsTargetDescriptor*>; - ~DevToolsTargetDescriptor() override {} + virtual ~DevToolsTargetDescriptor() {} + + // Returns the unique target id. + virtual std::string GetId() const = 0; + + // Returns the id of the parent target, or empty string if no parent. + virtual std::string GetParentId() const = 0; + + // Returns the target type. + virtual std::string GetType() const = 0; + + // Returns the target title. + virtual std::string GetTitle() const = 0; + + // Returns the target description. + virtual std::string GetDescription() const = 0; + + // Returns the url associated with this target. + virtual GURL GetURL() const = 0; + + // Returns the favicon url for this target. + virtual GURL GetFaviconURL() const = 0; + + // Returns the time when the target was last active. + virtual base::TimeTicks GetLastActivityTime() const = 0; + + // Returns true if the debugger is attached to the target. + virtual bool IsAttached() const = 0; + + // Returns the agent host for this target. + virtual scoped_refptr<content::DevToolsAgentHost> GetAgentHost() const = 0; + + // Activates the target. Returns false if the operation failed. + virtual bool Activate() const = 0; + + // Closes the target. Returns false if the operation failed. + virtual bool Close() const = 0; }; } // namespace devtools_discovery diff --git a/components/devtools_http_handler.gypi b/components/devtools_http_handler.gypi index 32f051d..1215e29 100644 --- a/components/devtools_http_handler.gypi +++ b/components/devtools_http_handler.gypi @@ -9,6 +9,7 @@ 'type': 'static_library', 'dependencies': [ '../base/base.gyp:base', + '../components/components.gyp:devtools_discovery', '../content/content.gyp:content_browser', '../net/net.gyp:net', '../net/net.gyp:http_server', diff --git a/components/devtools_http_handler/BUILD.gn b/components/devtools_http_handler/BUILD.gn index 61e618e..e37cb35 100644 --- a/components/devtools_http_handler/BUILD.gn +++ b/components/devtools_http_handler/BUILD.gn @@ -11,6 +11,7 @@ source_set("devtools_http_handler") { deps = [ "//base", + "//components/devtools_discovery", "//content/public/browser", "//net", "//net:http_server", diff --git a/components/devtools_http_handler/DEPS b/components/devtools_http_handler/DEPS index 3bcaf2e..c85bd3d 100644 --- a/components/devtools_http_handler/DEPS +++ b/components/devtools_http_handler/DEPS @@ -1,4 +1,5 @@ include_rules = [ + "+components/devtools_discovery", "+content/public/browser", "+content/public/common", "+content/public/test", diff --git a/components/devtools_http_handler/devtools_http_handler.cc b/components/devtools_http_handler/devtools_http_handler.cc index 184c039..2a72d06 100644 --- a/components/devtools_http_handler/devtools_http_handler.cc +++ b/components/devtools_http_handler/devtools_http_handler.cc @@ -17,11 +17,11 @@ #include "base/strings/stringprintf.h" #include "base/threading/thread.h" #include "base/values.h" +#include "components/devtools_discovery/devtools_discovery_manager.h" #include "components/devtools_http_handler/devtools_http_handler.h" #include "components/devtools_http_handler/devtools_http_handler_delegate.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/devtools_agent_host.h" -#include "content/public/browser/devtools_target.h" #include "content/public/common/url_constants.h" #include "content/public/common/user_agent.h" #include "net/base/escape.h" @@ -40,8 +40,7 @@ using content::BrowserThread; using content::DevToolsAgentHost; using content::DevToolsAgentHostClient; -using content::DevToolsManagerDelegate; -using content::DevToolsTarget; +using devtools_discovery::DevToolsTargetDescriptor; namespace devtools_http_handler { @@ -319,9 +318,9 @@ class DevToolsAgentHostClientImpl : public DevToolsAgentHostClient { scoped_refptr<DevToolsAgentHost> agent_host_; }; -static bool TimeComparator(const DevToolsTarget* target1, - const DevToolsTarget* target2) { - return target1->GetLastActivityTime() > target2->GetLastActivityTime(); +static bool TimeComparator(const DevToolsTargetDescriptor* desc1, + const DevToolsTargetDescriptor* desc2) { + return desc1->GetLastActivityTime() > desc2->GetLastActivityTime(); } // DevToolsHttpHandler::ServerSocketFactory ---------------------------------- @@ -341,7 +340,7 @@ DevToolsHttpHandler::ServerSocketFactory::CreateForTethering( DevToolsHttpHandler::~DevToolsHttpHandler() { TerminateOnUI(thread_, server_wrapper_, socket_factory_); - STLDeleteValues(&target_map_); + STLDeleteValues(&descriptor_map_); STLDeleteValues(&connection_to_client_); } @@ -565,14 +564,17 @@ void DevToolsHttpHandler::OnJsonRequest( if (command == "list") { std::string host = info.headers["host"]; - if (manager_delegate_) { - manager_delegate_->EnumerateTargets( - base::Bind(&DevToolsHttpHandler::OnTargetListReceivedWeak, - weak_factory_.GetWeakPtr(), connection_id, host)); - } else { - DevToolsManagerDelegate::TargetList empty_list; - OnTargetListReceived(connection_id, host, empty_list); + DevToolsTargetDescriptor::List descriptors = + devtools_discovery::DevToolsDiscoveryManager::GetInstance()-> + GetDescriptors(); + std::sort(descriptors.begin(), descriptors.end(), TimeComparator); + STLDeleteValues(&descriptor_map_); + base::ListValue list_value; + for (DevToolsTargetDescriptor* descriptor : descriptors) { + descriptor_map_[descriptor->GetId()] = descriptor; + list_value.Append(SerializeDescriptor(*descriptor, host)); } + SendJson(connection_id, net::HTTP_OK, &list_value, std::string()); return; } @@ -581,10 +583,10 @@ void DevToolsHttpHandler::OnJsonRequest( query, net::UnescapeRule::URL_SPECIAL_CHARS)); if (!url.is_valid()) url = GURL(url::kAboutBlankURL); - scoped_ptr<DevToolsTarget> target; - if (manager_delegate_) - target = manager_delegate_->CreateNewTarget(url); - if (!target) { + scoped_ptr<DevToolsTargetDescriptor> descriptor = + devtools_discovery::DevToolsDiscoveryManager::GetInstance()-> + CreateNew(url); + if (!descriptor) { SendJson(connection_id, net::HTTP_INTERNAL_SERVER_ERROR, NULL, @@ -593,16 +595,16 @@ void DevToolsHttpHandler::OnJsonRequest( } std::string host = info.headers["host"]; scoped_ptr<base::DictionaryValue> dictionary( - SerializeTarget(*target.get(), host)); + SerializeDescriptor(*descriptor.get(), host)); SendJson(connection_id, net::HTTP_OK, dictionary.get(), std::string()); - const std::string target_id = target->GetId(); - target_map_[target_id] = target.release(); + const std::string target_id = descriptor->GetId(); + descriptor_map_[target_id] = descriptor.release(); return; } if (command == "activate" || command == "close") { - DevToolsTarget* target = GetTarget(target_id); - if (!target) { + DevToolsTargetDescriptor* descriptor = GetDescriptor(target_id); + if (!descriptor) { SendJson(connection_id, net::HTTP_NOT_FOUND, NULL, @@ -611,7 +613,7 @@ void DevToolsHttpHandler::OnJsonRequest( } if (command == "activate") { - if (target->Activate()) { + if (descriptor->Activate()) { SendJson(connection_id, net::HTTP_OK, NULL, "Target activated"); } else { SendJson(connection_id, @@ -623,7 +625,7 @@ void DevToolsHttpHandler::OnJsonRequest( } if (command == "close") { - if (target->Close()) { + if (descriptor->Close()) { SendJson(connection_id, net::HTTP_OK, NULL, "Target is closing"); } else { SendJson(connection_id, @@ -641,52 +643,21 @@ void DevToolsHttpHandler::OnJsonRequest( return; } -// static -void DevToolsHttpHandler::OnTargetListReceivedWeak( - base::WeakPtr<DevToolsHttpHandler> handler, - int connection_id, - const std::string& host, - const DevToolsManagerDelegate::TargetList& targets) { - if (handler) { - handler->OnTargetListReceived(connection_id, host, targets); - } else { - STLDeleteContainerPointers(targets.begin(), targets.end()); - } -} - -void DevToolsHttpHandler::OnTargetListReceived( - int connection_id, - const std::string& host, - const DevToolsManagerDelegate::TargetList& targets) { - DevToolsManagerDelegate::TargetList sorted_targets = targets; - std::sort(sorted_targets.begin(), sorted_targets.end(), TimeComparator); - - STLDeleteValues(&target_map_); - base::ListValue list_value; - for (DevToolsManagerDelegate::TargetList::const_iterator it = - sorted_targets.begin(); it != sorted_targets.end(); ++it) { - DevToolsTarget* target = *it; - target_map_[target->GetId()] = target; - list_value.Append(SerializeTarget(*target, host)); - } - SendJson(connection_id, net::HTTP_OK, &list_value, std::string()); -} - -DevToolsTarget* DevToolsHttpHandler::GetTarget(const std::string& id) { - TargetMap::const_iterator it = target_map_.find(id); - if (it == target_map_.end()) - return NULL; +DevToolsTargetDescriptor* DevToolsHttpHandler::GetDescriptor( + const std::string& target_id) { + DescriptorMap::const_iterator it = descriptor_map_.find(target_id); + if (it == descriptor_map_.end()) + return nullptr; return it->second; } void DevToolsHttpHandler::OnThumbnailRequest( int connection_id, const std::string& target_id) { - DevToolsTarget* target = GetTarget(target_id); + DevToolsTargetDescriptor* descriptor = GetDescriptor(target_id); GURL page_url; - if (target) - page_url = target->GetURL(); - std::string data = manager_delegate_ ? - manager_delegate_->GetPageThumbnailData(page_url) : ""; + if (descriptor) + page_url = descriptor->GetURL(); + std::string data = delegate_->GetPageThumbnailData(page_url); if (!data.empty()) Send200(connection_id, data, "image/png"); else @@ -731,18 +702,18 @@ void DevToolsHttpHandler::OnWebSocketRequest( return; } - std::string page_id = request.path.substr(strlen(kPageUrlPrefix)); - DevToolsTarget* target = GetTarget(page_id); + std::string target_id = request.path.substr(strlen(kPageUrlPrefix)); + DevToolsTargetDescriptor* descriptor = GetDescriptor(target_id); scoped_refptr<DevToolsAgentHost> agent = - target ? target->GetAgentHost() : NULL; + descriptor ? descriptor->GetAgentHost() : nullptr; if (!agent.get()) { - Send500(connection_id, "No such target id: " + page_id); + Send500(connection_id, "No such target id: " + target_id); return; } if (agent->IsAttached()) { Send500(connection_id, - "Target with given id is being inspected: " + page_id); + "Target with given id is being inspected: " + target_id); return; } @@ -775,7 +746,6 @@ DevToolsHttpHandler::DevToolsHttpHandler( scoped_ptr<ServerSocketFactory> server_socket_factory, const std::string& frontend_url, DevToolsHttpHandlerDelegate* delegate, - DevToolsManagerDelegate* manager_delegate, const base::FilePath& output_directory, const base::FilePath& debug_frontend_dir, const std::string& product_name, @@ -786,7 +756,6 @@ DevToolsHttpHandler::DevToolsHttpHandler( user_agent_(user_agent), server_wrapper_(nullptr), delegate_(delegate), - manager_delegate_(manager_delegate), socket_factory_(nullptr), weak_factory_(this) { bool bundles_resources = frontend_url_.empty(); @@ -912,35 +881,34 @@ void DevToolsHttpHandler::AcceptWebSocket( request)); } -base::DictionaryValue* DevToolsHttpHandler::SerializeTarget( - const DevToolsTarget& target, +base::DictionaryValue* DevToolsHttpHandler::SerializeDescriptor( + const DevToolsTargetDescriptor& descriptor, const std::string& host) { base::DictionaryValue* dictionary = new base::DictionaryValue; - std::string id = target.GetId(); + std::string id = descriptor.GetId(); dictionary->SetString(kTargetIdField, id); - std::string parent_id = target.GetParentId(); + std::string parent_id = descriptor.GetParentId(); if (!parent_id.empty()) dictionary->SetString(kTargetParentIdField, parent_id); - dictionary->SetString(kTargetTypeField, target.GetType()); + dictionary->SetString(kTargetTypeField, descriptor.GetType()); dictionary->SetString(kTargetTitleField, - net::EscapeForHTML(target.GetTitle())); - dictionary->SetString(kTargetDescriptionField, target.GetDescription()); + net::EscapeForHTML(descriptor.GetTitle())); + dictionary->SetString(kTargetDescriptionField, descriptor.GetDescription()); - GURL url = target.GetURL(); + GURL url = descriptor.GetURL(); dictionary->SetString(kTargetUrlField, url.spec()); - GURL favicon_url = target.GetFaviconURL(); + GURL favicon_url = descriptor.GetFaviconURL(); if (favicon_url.is_valid()) dictionary->SetString(kTargetFaviconUrlField, favicon_url.spec()); - if (manager_delegate_ && - !manager_delegate_->GetPageThumbnailData(url).empty()) { + if (!delegate_->GetPageThumbnailData(url).empty()) { dictionary->SetString(kTargetThumbnailUrlField, std::string(kThumbUrlPrefix) + id); } - if (!target.IsAttached()) { + if (!descriptor.IsAttached()) { dictionary->SetString(kTargetWebSocketDebuggerUrlField, base::StringPrintf("ws://%s%s%s", host.c_str(), diff --git a/components/devtools_http_handler/devtools_http_handler.h b/components/devtools_http_handler/devtools_http_handler.h index 23a6773..5635b2d 100644 --- a/components/devtools_http_handler/devtools_http_handler.h +++ b/components/devtools_http_handler/devtools_http_handler.h @@ -11,7 +11,7 @@ #include "base/files/file_path.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" -#include "content/public/browser/devtools_manager_delegate.h" +#include "components/devtools_discovery/devtools_target_descriptor.h" #include "net/http/http_status_code.h" class GURL; @@ -64,13 +64,10 @@ class DevToolsHttpHandler { // socket_factory was initialized with an ephemeral port (0). The // port selected by the OS will be written to a well-known file in // the output directory. - // TODO(dgozman): remove |manager_delegate| by moving targets to another - // component (http://crbug.com/476496). DevToolsHttpHandler( scoped_ptr<ServerSocketFactory> server_socket_factory, const std::string& frontend_url, DevToolsHttpHandlerDelegate* delegate, - content::DevToolsManagerDelegate* manager_delegate, const base::FilePath& active_port_output_directory, const base::FilePath& debug_frontend_dir, const std::string& product_name, @@ -104,17 +101,8 @@ class DevToolsHttpHandler { ServerSocketFactory* socket_factory, scoped_ptr<net::IPEndPoint> ip_address); - static void OnTargetListReceivedWeak( - base::WeakPtr<DevToolsHttpHandler> handler, - int connection_id, - const std::string& host, - const content::DevToolsManagerDelegate::TargetList& targets); - void OnTargetListReceived( - int connection_id, - const std::string& host, - const content::DevToolsManagerDelegate::TargetList& targets); - - content::DevToolsTarget* GetTarget(const std::string& id); + devtools_discovery::DevToolsTargetDescriptor* GetDescriptor( + const std::string& target_id); void SendJson(int connection_id, net::HttpStatusCode status_code, @@ -133,8 +121,9 @@ class DevToolsHttpHandler { std::string GetFrontendURLInternal(const std::string target_id, const std::string& host); - base::DictionaryValue* SerializeTarget(const content::DevToolsTarget& target, - const std::string& host); + base::DictionaryValue* SerializeDescriptor( + const devtools_discovery::DevToolsTargetDescriptor& descriptor, + const std::string& host); // The thread used by the devtools handler to run server socket. base::Thread* thread_; @@ -146,10 +135,10 @@ class DevToolsHttpHandler { typedef std::map<int, DevToolsAgentHostClientImpl*> ConnectionToClientMap; ConnectionToClientMap connection_to_client_; const scoped_ptr<DevToolsHttpHandlerDelegate> delegate_; - content::DevToolsManagerDelegate* manager_delegate_; ServerSocketFactory* socket_factory_; - typedef std::map<std::string, content::DevToolsTarget*> TargetMap; - TargetMap target_map_; + using DescriptorMap = + std::map<std::string, devtools_discovery::DevToolsTargetDescriptor*>; + DescriptorMap descriptor_map_; base::WeakPtrFactory<DevToolsHttpHandler> weak_factory_; DISALLOW_COPY_AND_ASSIGN(DevToolsHttpHandler); diff --git a/components/devtools_http_handler/devtools_http_handler_delegate.h b/components/devtools_http_handler/devtools_http_handler_delegate.h index 83235ae..8a45ca1 100644 --- a/components/devtools_http_handler/devtools_http_handler_delegate.h +++ b/components/devtools_http_handler/devtools_http_handler_delegate.h @@ -7,7 +7,7 @@ #include <string> -#include "base/files/file_path.h" +#include "url/gurl.h" namespace devtools_http_handler { @@ -22,6 +22,10 @@ class DevToolsHttpHandlerDelegate { // Returns frontend resource data by |path|. Only used if // |BundlesFrontendResources| returns |true|. virtual std::string GetFrontendResource(const std::string& path) = 0; + + // Get a thumbnail for a given page. Returns non-empty string iff we have the + // thumbnail. + virtual std::string GetPageThumbnailData(const GURL& url) = 0; }; } // namespace devtools_http_handler diff --git a/components/devtools_http_handler/devtools_http_handler_unittest.cc b/components/devtools_http_handler/devtools_http_handler_unittest.cc index 6b794c2..d2fdbbc 100644 --- a/components/devtools_http_handler/devtools_http_handler_unittest.cc +++ b/components/devtools_http_handler/devtools_http_handler_unittest.cc @@ -7,9 +7,9 @@ #include "base/message_loop/message_loop.h" #include "base/run_loop.h" #include "base/strings/string_number_conversions.h" +#include "base/values.h" #include "components/devtools_http_handler/devtools_http_handler.h" #include "components/devtools_http_handler/devtools_http_handler_delegate.h" -#include "content/public/browser/devtools_target.h" #include "content/public/test/test_browser_thread_bundle.h" #include "content/public/test/test_utils.h" #include "net/base/ip_endpoint.h" @@ -98,33 +98,6 @@ class DummyDelegate : public DevToolsHttpHandlerDelegate { std::string GetFrontendResource(const std::string& path) override { return std::string(); } -}; - -class DummyManagerDelegate : public content::DevToolsManagerDelegate { - public: - ~DummyManagerDelegate() override {} - - void Inspect(content::BrowserContext* browser_context, - content::DevToolsAgentHost* agent_host) override {} - - void DevToolsAgentStateChanged(content::DevToolsAgentHost* agent_host, - bool attached) override {} - - base::DictionaryValue* HandleCommand( - content::DevToolsAgentHost* agent_host, - base::DictionaryValue* command) override { - return NULL; - } - - scoped_ptr<content::DevToolsTarget> CreateNewTarget( - const GURL& url) override { - return scoped_ptr<content::DevToolsTarget>(); - } - - void EnumerateTargets(TargetCallback callback) override { - TargetList result; - callback.Run(result); - } std::string GetPageThumbnailData(const GURL& url) override { return std::string(); @@ -137,9 +110,6 @@ class DevToolsHttpHandlerTest : public testing::Test { public: DevToolsHttpHandlerTest() : testing::Test() { } - protected: - DummyManagerDelegate manager_delegate_; - private: content::TestBrowserThreadBundle thread_bundle_; }; @@ -153,7 +123,6 @@ TEST_F(DevToolsHttpHandlerTest, TestStartStop) { new DevToolsHttpHandler(factory.Pass(), std::string(), new DummyDelegate(), - &manager_delegate_, base::FilePath(), base::FilePath(), std::string(), @@ -175,7 +144,6 @@ TEST_F(DevToolsHttpHandlerTest, TestServerSocketFailed) { new DevToolsHttpHandler(factory.Pass(), std::string(), new DummyDelegate(), - &manager_delegate_, base::FilePath(), base::FilePath(), std::string(), @@ -204,7 +172,6 @@ TEST_F(DevToolsHttpHandlerTest, TestDevToolsActivePort) { new DevToolsHttpHandler(factory.Pass(), std::string(), new DummyDelegate(), - &manager_delegate_, temp_dir.path(), base::FilePath(), std::string(), diff --git a/content/browser/devtools/devtools_manager_unittest.cc b/content/browser/devtools/devtools_manager_unittest.cc index 5231d5e..0e0ba3f 100644 --- a/content/browser/devtools/devtools_manager_unittest.cc +++ b/content/browser/devtools/devtools_manager_unittest.cc @@ -15,7 +15,6 @@ #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/devtools_external_agent_proxy.h" #include "content/public/browser/devtools_external_agent_proxy_delegate.h" -#include "content/public/browser/devtools_target.h" #include "content/public/browser/web_contents_delegate.h" #include "content/public/test/test_utils.h" #include "content/test/test_content_browser_client.h" @@ -95,100 +94,17 @@ class TestWebContentsDelegate : public WebContentsDelegate { bool renderer_unresponsive_received_; }; -class TestTarget : public DevToolsTarget { - public: - explicit TestTarget(scoped_refptr<DevToolsAgentHost> agent_host) - : agent_host_(agent_host) {} - ~TestTarget() override {} - - std::string GetId() const override { return agent_host_->GetId(); } - std::string GetParentId() const override { return std::string(); } - std::string GetType() const override { return std::string(); } - std::string GetTitle() const override { return agent_host_->GetTitle(); } - std::string GetDescription() const override { return std::string(); } - GURL GetURL() const override { return agent_host_->GetURL(); } - GURL GetFaviconURL() const override { return GURL(); } - base::TimeTicks GetLastActivityTime() const override { - return base::TimeTicks(); - } - bool IsAttached() const override { return agent_host_->IsAttached(); } - scoped_refptr<DevToolsAgentHost> GetAgentHost() const override { - return agent_host_; - } - bool Activate() const override { return agent_host_->Activate(); } - bool Close() const override { return agent_host_->Close(); } - - private: - scoped_refptr<DevToolsAgentHost> agent_host_; -}; - -class TestDevToolsManagerDelegate : public DevToolsManagerDelegate { - public: - ~TestDevToolsManagerDelegate() override {} - - void Inspect(BrowserContext* browser_context, - DevToolsAgentHost* agent_host) override {} - - void DevToolsAgentStateChanged(DevToolsAgentHost* agent_host, - bool attached) override {} - - base::DictionaryValue* HandleCommand( - DevToolsAgentHost* agent_host, - base::DictionaryValue* command) override { - return NULL; - } - - scoped_ptr<DevToolsTarget> CreateNewTarget(const GURL& url) override { - return scoped_ptr<DevToolsTarget>(); - } - - void EnumerateTargets(TargetCallback callback) override { - TargetList result; - DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll(); - for (DevToolsAgentHost::List::iterator it = agents.begin(); - it != agents.end(); ++it) { - if ((*it)->GetType() == DevToolsAgentHost::TYPE_WEB_CONTENTS) - result.insert(result.begin(), new TestTarget(*it)); - else - result.push_back(new TestTarget(*it)); - } - callback.Run(result); - } - - std::string GetPageThumbnailData(const GURL& url) override { - return std::string(); - } -}; - -class ContentBrowserClientWithDevTools : public TestContentBrowserClient { - public: - ~ContentBrowserClientWithDevTools() override {} - content::DevToolsManagerDelegate* GetDevToolsManagerDelegate() override { - return new TestDevToolsManagerDelegate(); - } -}; - } // namespace class DevToolsManagerTest : public RenderViewHostImplTestHarness { public: - DevToolsManagerTest() - : old_browser_client_(NULL) {} + DevToolsManagerTest() {} protected: void SetUp() override { RenderViewHostImplTestHarness::SetUp(); TestDevToolsClientHost::ResetCounters(); - old_browser_client_ = SetBrowserClientForTesting(&browser_client_); } - - void TearDown() override { - SetBrowserClientForTesting(old_browser_client_); - RenderViewHostImplTestHarness::TearDown(); - } - - ContentBrowserClientWithDevTools browser_client_; - ContentBrowserClient* old_browser_client_; }; TEST_F(DevToolsManagerTest, OpenAndManuallyCloseDevToolsClientHost) { diff --git a/content/content_browser.gypi b/content/content_browser.gypi index ee1d740..a372c41 100644 --- a/content/content_browser.gypi +++ b/content/content_browser.gypi @@ -113,7 +113,6 @@ 'public/browser/devtools_external_agent_proxy_delegate.h', 'public/browser/devtools_frontend_host.h', 'public/browser/devtools_manager_delegate.h', - 'public/browser/devtools_target.h', 'public/browser/dom_operation_notification_details.h', 'public/browser/dom_storage_context.h', 'public/browser/download_danger_type.h', diff --git a/content/public/browser/devtools_manager_delegate.h b/content/public/browser/devtools_manager_delegate.h index 5ebd854..d34e7af 100644 --- a/content/public/browser/devtools_manager_delegate.h +++ b/content/public/browser/devtools_manager_delegate.h @@ -5,22 +5,14 @@ #ifndef CONTENT_PUBLIC_BROWSER_DEVTOOLS_MANAGER_DELEGATE_H_ #define CONTENT_PUBLIC_BROWSER_DEVTOOLS_MANAGER_DELEGATE_H_ -#include <string> -#include <vector> - -#include "base/callback.h" - namespace base { class DictionaryValue; } -class GURL; - namespace content { class BrowserContext; class DevToolsAgentHost; -class DevToolsTarget; class DevToolsManagerDelegate { public: @@ -37,20 +29,6 @@ class DevToolsManagerDelegate { virtual base::DictionaryValue* HandleCommand( DevToolsAgentHost* agent_host, base::DictionaryValue* command) = 0; - - // Creates new inspectable target. - virtual scoped_ptr<DevToolsTarget> CreateNewTarget(const GURL& url) = 0; - - typedef std::vector<DevToolsTarget*> TargetList; - typedef base::Callback<void(const TargetList&)> TargetCallback; - - // Requests the list of all inspectable targets. - // The caller gets the ownership of the returned targets. - virtual void EnumerateTargets(TargetCallback callback) = 0; - - // Get a thumbnail for a given page. Returns non-empty string iff we have the - // thumbnail. - virtual std::string GetPageThumbnailData(const GURL& url) = 0; }; } // namespace content diff --git a/content/public/browser/devtools_target.h b/content/public/browser/devtools_target.h deleted file mode 100644 index 8008535..0000000 --- a/content/public/browser/devtools_target.h +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2013 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 CONTENT_PUBLIC_BROWSER_DEVTOOLS_TARGET_H_ -#define CONTENT_PUBLIC_BROWSER_DEVTOOLS_TARGET_H_ - -#include <string> - -#include "base/basictypes.h" -#include "base/memory/ref_counted.h" -#include "base/time/time.h" -#include "content/common/content_export.h" -#include "url/gurl.h" - -namespace content { - -class DevToolsAgentHost; - -// DevToolsTarget represents an inspectable target and can be used to -// manipulate the target and query its details. -// Instantiation and discovery of DevToolsTarget instances is the responsibility -// of DevToolsHttpHandlerDelegate. -class DevToolsTarget { - public: - virtual ~DevToolsTarget() {} - - // Returns the unique target id. - virtual std::string GetId() const = 0; - - // Returns the id of the parent target, or empty string if no parent. - virtual std::string GetParentId() const = 0; - - // Returns the target type. - virtual std::string GetType() const = 0; - - // Returns the target title. - virtual std::string GetTitle() const = 0; - - // Returns the target description. - virtual std::string GetDescription() const = 0; - - // Returns the url associated with this target. - virtual GURL GetURL() const = 0; - - // Returns the favicon url for this target. - virtual GURL GetFaviconURL() const = 0; - - // Returns the time when the target was last active. - virtual base::TimeTicks GetLastActivityTime() const = 0; - - // Returns true if the debugger is attached to the target. - virtual bool IsAttached() const = 0; - - // Returns the agent host for this target. - virtual scoped_refptr<DevToolsAgentHost> GetAgentHost() const = 0; - - // Activates the target. Returns false if the operation failed. - virtual bool Activate() const = 0; - - // Closes the target. Returns false if the operation failed. - virtual bool Close() const = 0; -}; - -} // namespace content - -#endif // CONTENT_PUBLIC_BROWSER_DEVTOOLS_TARGET_H_ diff --git a/content/shell/browser/shell_devtools_manager_delegate.cc b/content/shell/browser/shell_devtools_manager_delegate.cc index cda44f8..eab3849 100644 --- a/content/shell/browser/shell_devtools_manager_delegate.cc +++ b/content/shell/browser/shell_devtools_manager_delegate.cc @@ -17,7 +17,6 @@ #include "components/devtools_http_handler/devtools_http_handler.h" #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/devtools_frontend_host.h" -#include "content/public/browser/devtools_target.h" #include "content/public/browser/favicon_status.h" #include "content/public/browser/navigation_entry.h" #include "content/public/browser/render_view_host.h" @@ -153,6 +152,7 @@ class ShellDevToolsDelegate : // devtools_http_handler::DevToolsHttpHandlerDelegate implementation. std::string GetDiscoveryPageHTML() override; std::string GetFrontendResource(const std::string& path) override; + std::string GetPageThumbnailData(const GURL& url) override; private: BrowserContext* browser_context_; @@ -187,6 +187,10 @@ std::string ShellDevToolsDelegate::GetFrontendResource( return content::DevToolsFrontendHost::GetFrontendResource(path).as_string(); } +std::string ShellDevToolsDelegate::GetPageThumbnailData(const GURL& url) { + return std::string(); +} + } // namespace // ShellDevToolsManagerDelegate ---------------------------------------------- @@ -203,7 +207,6 @@ ShellDevToolsManagerDelegate::CreateHttpHandler( CreateSocketFactory(), frontend_url, new ShellDevToolsDelegate(browser_context), - new ShellDevToolsManagerDelegate(browser_context), base::FilePath(), base::FilePath(), std::string(), @@ -224,25 +227,4 @@ base::DictionaryValue* ShellDevToolsManagerDelegate::HandleCommand( return NULL; } -std::string ShellDevToolsManagerDelegate::GetPageThumbnailData( - const GURL& url) { - return std::string(); -} - -scoped_ptr<DevToolsTarget> -ShellDevToolsManagerDelegate::CreateNewTarget(const GURL& url) { - devtools_discovery::DevToolsDiscoveryManager* discovery_manager = - devtools_discovery::DevToolsDiscoveryManager::GetInstance(); - return discovery_manager->CreateNew(url); -} - -void ShellDevToolsManagerDelegate::EnumerateTargets(TargetCallback callback) { - TargetList targets; - devtools_discovery::DevToolsDiscoveryManager* discovery_manager = - devtools_discovery::DevToolsDiscoveryManager::GetInstance(); - for (const auto& descriptor : discovery_manager->GetDescriptors()) - targets.push_back(descriptor); - callback.Run(targets); -} - } // namespace content diff --git a/content/shell/browser/shell_devtools_manager_delegate.h b/content/shell/browser/shell_devtools_manager_delegate.h index 702aa1d..4671d18 100644 --- a/content/shell/browser/shell_devtools_manager_delegate.h +++ b/content/shell/browser/shell_devtools_manager_delegate.h @@ -33,9 +33,6 @@ class ShellDevToolsManagerDelegate : public DevToolsManagerDelegate { bool attached) override {} base::DictionaryValue* HandleCommand(DevToolsAgentHost* agent_host, base::DictionaryValue* command) override; - scoped_ptr<DevToolsTarget> CreateNewTarget(const GURL& url) override; - void EnumerateTargets(TargetCallback callback) override; - std::string GetPageThumbnailData(const GURL& url) override; private: BrowserContext* browser_context_; |