DevTools: remove devtools_discovery (merged into content).
BUG=627517 R=dgozman@chromium.org TBR=for android / headless / webview clients Review URL: https://codereview.chromium.org/2272213003 . Cr-Commit-Position: refs/heads/master@{#415041}
This commit is contained in:
android_webview
chrome
browser
BUILD.gn
chrome_browser.gypichrome_debugger.gypiandroid
DEPSdev_tools_discovery_provider_android.hdevtools_manager_delegate_android.ccdevtools_manager_delegate_android.h
chrome_browser_main.ccchrome_content_browser_client.ccdevtools
components
content
extensions/shell
headless/lib/browser
@ -582,7 +582,6 @@ source_set("common") {
|
||||
"//components/cdm/renderer",
|
||||
"//components/crash/content/app",
|
||||
"//components/crash/content/browser",
|
||||
"//components/devtools_discovery",
|
||||
"//components/metrics",
|
||||
"//components/metrics:gpu",
|
||||
"//components/metrics:net",
|
||||
|
@ -7,7 +7,6 @@ include_rules = [
|
||||
# lib is the top-level target, and must remain a leaf in the dependency tree.
|
||||
"-android_webview/lib",
|
||||
|
||||
"+components/devtools_discovery",
|
||||
"+components/metrics",
|
||||
"+components/prefs",
|
||||
"+components/version_info",
|
||||
|
@ -232,7 +232,6 @@
|
||||
'../components/components.gyp:cdm_renderer',
|
||||
'../components/components.gyp:component_metrics_proto',
|
||||
'../components/components.gyp:crash_component',
|
||||
'../components/components.gyp:devtools_discovery',
|
||||
'../components/components.gyp:metrics',
|
||||
'../components/components.gyp:metrics_gpu',
|
||||
'../components/components.gyp:metrics_net',
|
||||
|
@ -10,7 +10,6 @@
|
||||
#include "base/strings/stringprintf.h"
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "base/values.h"
|
||||
#include "components/devtools_discovery/devtools_discovery_manager.h"
|
||||
#include "content/public/browser/devtools_agent_host.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
|
||||
@ -39,26 +38,7 @@ std::string GetViewDescription(WebContents* web_contents) {
|
||||
return json;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
namespace android_webview {
|
||||
|
||||
// static
|
||||
void AwDevToolsDiscoveryProvider::Install() {
|
||||
devtools_discovery::DevToolsDiscoveryManager* discovery_manager =
|
||||
devtools_discovery::DevToolsDiscoveryManager::GetInstance();
|
||||
discovery_manager->AddProvider(
|
||||
base::WrapUnique(new AwDevToolsDiscoveryProvider()));
|
||||
}
|
||||
|
||||
AwDevToolsDiscoveryProvider::AwDevToolsDiscoveryProvider() {
|
||||
}
|
||||
|
||||
AwDevToolsDiscoveryProvider::~AwDevToolsDiscoveryProvider() {
|
||||
}
|
||||
|
||||
content::DevToolsAgentHost::List
|
||||
AwDevToolsDiscoveryProvider::GetDescriptors() {
|
||||
content::DevToolsAgentHost::List GetDescriptors() {
|
||||
DevToolsAgentHost::List agent_hosts = DevToolsAgentHost::GetOrCreateAll();
|
||||
for (auto& agent_host : agent_hosts) {
|
||||
agent_host->SetDescriptionOverride(
|
||||
@ -67,4 +47,19 @@ AwDevToolsDiscoveryProvider::GetDescriptors() {
|
||||
return agent_hosts;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
namespace android_webview {
|
||||
|
||||
// static
|
||||
void AwDevToolsDiscoveryProvider::Install() {
|
||||
content::DevToolsAgentHost::AddDiscoveryProvider(base::Bind(&GetDescriptors));
|
||||
}
|
||||
|
||||
AwDevToolsDiscoveryProvider::AwDevToolsDiscoveryProvider() {
|
||||
}
|
||||
|
||||
AwDevToolsDiscoveryProvider::~AwDevToolsDiscoveryProvider() {
|
||||
}
|
||||
|
||||
} // namespace android_webview
|
||||
|
@ -6,24 +6,17 @@
|
||||
#define ANDROID_WEBVIEW_BROWSER_AW_DEV_TOOLS_DISCOVERY_PROVIDER_H_
|
||||
|
||||
#include "base/macros.h"
|
||||
#include "components/devtools_discovery/devtools_discovery_manager.h"
|
||||
|
||||
namespace android_webview {
|
||||
|
||||
class AwDevToolsDiscoveryProvider :
|
||||
public devtools_discovery::DevToolsDiscoveryManager::Provider {
|
||||
class AwDevToolsDiscoveryProvider {
|
||||
public:
|
||||
// Installs provider to devtools_discovery.
|
||||
static void Install();
|
||||
|
||||
~AwDevToolsDiscoveryProvider() override;
|
||||
|
||||
// devtools_discovery::DevToolsDiscoveryManager::Provider implementation.
|
||||
content::DevToolsAgentHost::List GetDescriptors() override;
|
||||
|
||||
private:
|
||||
AwDevToolsDiscoveryProvider();
|
||||
|
||||
~AwDevToolsDiscoveryProvider();
|
||||
DISALLOW_COPY_AND_ASSIGN(AwDevToolsDiscoveryProvider);
|
||||
};
|
||||
|
||||
|
@ -124,7 +124,6 @@ split_static_library("browser") {
|
||||
"//components/data_use_measurement/content",
|
||||
"//components/data_use_measurement/core",
|
||||
"//components/device_event_log",
|
||||
"//components/devtools_discovery",
|
||||
"//components/devtools_http_handler",
|
||||
"//components/dom_distiller/content/browser",
|
||||
"//components/domain_reliability",
|
||||
|
@ -2,7 +2,6 @@ include_rules = [
|
||||
"+blimp/client/public",
|
||||
"-components/devtools_bridge",
|
||||
"+cc/layers/layer.h",
|
||||
"+components/devtools_discovery",
|
||||
"+components/devtools_http_handler",
|
||||
"+components/ntp_snippets",
|
||||
"+components/spellcheck/browser",
|
||||
|
@ -1,28 +0,0 @@
|
||||
// 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 CHROME_BROWSER_ANDROID_DEV_TOOLS_DISCOVERY_PROVIDER_ANDROID_H_
|
||||
#define CHROME_BROWSER_ANDROID_DEV_TOOLS_DISCOVERY_PROVIDER_ANDROID_H_
|
||||
|
||||
#include "base/macros.h"
|
||||
#include "components/devtools_discovery/devtools_discovery_manager.h"
|
||||
|
||||
class DevToolsDiscoveryProviderAndroid :
|
||||
public devtools_discovery::DevToolsDiscoveryManager::Provider {
|
||||
public:
|
||||
// Installs provider to devtools_discovery.
|
||||
static void Install();
|
||||
|
||||
~DevToolsDiscoveryProviderAndroid() override;
|
||||
|
||||
// devtools_discovery::DevToolsDiscoveryManager::Provider implementation.
|
||||
content::DevToolsAgentHost::List GetDescriptors() override;
|
||||
|
||||
private:
|
||||
DevToolsDiscoveryProviderAndroid();
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(DevToolsDiscoveryProviderAndroid);
|
||||
};
|
||||
|
||||
#endif // CHROME_BROWSER_ANDROID_DEV_TOOLS_DISCOVERY_PROVIDER_ANDROID_H_
|
@ -2,25 +2,21 @@
|
||||
// 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_discovery_provider_android.h"
|
||||
#include "chrome/browser/android/devtools_manager_delegate_android.h"
|
||||
|
||||
#include "base/bind.h"
|
||||
#include "base/compiler_specific.h"
|
||||
#include "base/macros.h"
|
||||
#include "base/memory/ptr_util.h"
|
||||
#include "base/strings/string_number_conversions.h"
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "build/build_config.h"
|
||||
#include "chrome/browser/android/tab_android.h"
|
||||
#include "chrome/browser/browser_process.h"
|
||||
#include "chrome/browser/devtools/devtools_network_protocol_handler.h"
|
||||
#include "chrome/browser/ui/android/tab_model/tab_model.h"
|
||||
#include "chrome/browser/ui/android/tab_model/tab_model_list.h"
|
||||
#include "components/devtools_discovery/devtools_discovery_manager.h"
|
||||
#include "chrome/common/features.h"
|
||||
#include "content/public/browser/devtools_agent_host.h"
|
||||
#include "content/public/browser/devtools_agent_host_client.h"
|
||||
#include "content/public/browser/devtools_external_agent_proxy.h"
|
||||
#include "content/public/browser/devtools_external_agent_proxy_delegate.h"
|
||||
#include "content/public/browser/favicon_status.h"
|
||||
#include "content/public/browser/navigation_entry.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
|
||||
using content::DevToolsAgentHost;
|
||||
@ -157,41 +153,13 @@ class TabProxyDelegate : public content::DevToolsExternalAgentProxyDelegate,
|
||||
const int tab_id_;
|
||||
const std::string title_;
|
||||
const GURL url_;
|
||||
scoped_refptr<content::DevToolsAgentHost> agent_host_;
|
||||
scoped_refptr<DevToolsAgentHost> agent_host_;
|
||||
content::DevToolsExternalAgentProxy* proxy_;
|
||||
DISALLOW_COPY_AND_ASSIGN(TabProxyDelegate);
|
||||
};
|
||||
|
||||
scoped_refptr<content::DevToolsAgentHost> CreateNewAndroidTab(const GURL& url) {
|
||||
if (TabModelList::empty())
|
||||
return nullptr;
|
||||
|
||||
TabModel* tab_model = TabModelList::get(0);
|
||||
if (!tab_model)
|
||||
return nullptr;
|
||||
|
||||
WebContents* web_contents = tab_model->CreateNewTabForDevTools(url);
|
||||
if (!web_contents)
|
||||
return nullptr;
|
||||
|
||||
TabAndroid* tab = TabAndroid::FromWebContents(web_contents);
|
||||
if (!tab)
|
||||
return nullptr;
|
||||
|
||||
return content::DevToolsAgentHost::Create(new TabProxyDelegate(tab));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
DevToolsDiscoveryProviderAndroid::DevToolsDiscoveryProviderAndroid() {
|
||||
}
|
||||
|
||||
DevToolsDiscoveryProviderAndroid::~DevToolsDiscoveryProviderAndroid() {
|
||||
}
|
||||
|
||||
content::DevToolsAgentHost::List
|
||||
DevToolsDiscoveryProviderAndroid::GetDescriptors() {
|
||||
content::DevToolsAgentHost::List result;
|
||||
DevToolsAgentHost::List GetDescriptors() {
|
||||
DevToolsAgentHost::List result;
|
||||
|
||||
// Enumerate existing tabs, including the ones with no WebContents.
|
||||
std::set<WebContents*> tab_web_contents;
|
||||
@ -203,7 +171,7 @@ DevToolsDiscoveryProviderAndroid::GetDescriptors() {
|
||||
if (!tab)
|
||||
continue;
|
||||
|
||||
scoped_refptr<content::DevToolsAgentHost> host =
|
||||
scoped_refptr<DevToolsAgentHost> host =
|
||||
DevToolsAgentHost::Create(new TabProxyDelegate(tab));
|
||||
}
|
||||
}
|
||||
@ -222,11 +190,67 @@ DevToolsDiscoveryProviderAndroid::GetDescriptors() {
|
||||
return result;
|
||||
}
|
||||
|
||||
// static
|
||||
void DevToolsDiscoveryProviderAndroid::Install() {
|
||||
devtools_discovery::DevToolsDiscoveryManager* discovery_manager =
|
||||
devtools_discovery::DevToolsDiscoveryManager::GetInstance();
|
||||
discovery_manager->AddProvider(
|
||||
base::WrapUnique(new DevToolsDiscoveryProviderAndroid()));
|
||||
discovery_manager->SetCreateCallback(base::Bind(&CreateNewAndroidTab));
|
||||
} // namespace
|
||||
|
||||
DevToolsManagerDelegateAndroid::DevToolsManagerDelegateAndroid()
|
||||
: network_protocol_handler_(new DevToolsNetworkProtocolHandler()) {
|
||||
#if BUILDFLAG(ANDROID_JAVA_UI)
|
||||
DevToolsAgentHost::AddDiscoveryProvider(base::Bind(&GetDescriptors));
|
||||
#endif // BUILDFLAG(ANDROID_JAVA_UI)
|
||||
}
|
||||
|
||||
DevToolsManagerDelegateAndroid::~DevToolsManagerDelegateAndroid() {
|
||||
}
|
||||
|
||||
void DevToolsManagerDelegateAndroid::Inspect(
|
||||
DevToolsAgentHost* agent_host) {
|
||||
}
|
||||
|
||||
base::DictionaryValue* DevToolsManagerDelegateAndroid::HandleCommand(
|
||||
DevToolsAgentHost* agent_host,
|
||||
base::DictionaryValue* command_dict) {
|
||||
return network_protocol_handler_->HandleCommand(agent_host, command_dict);
|
||||
}
|
||||
|
||||
std::string DevToolsManagerDelegateAndroid::GetTargetType(
|
||||
content::RenderFrameHost* host) {
|
||||
content::WebContents* web_contents =
|
||||
content::WebContents::FromRenderFrameHost(host);
|
||||
TabAndroid* tab = web_contents ? TabAndroid::FromWebContents(web_contents)
|
||||
: nullptr;
|
||||
return tab ? DevToolsAgentHost::kTypePage :
|
||||
DevToolsAgentHost::kTypeOther;
|
||||
}
|
||||
|
||||
std::string DevToolsManagerDelegateAndroid::GetTargetTitle(
|
||||
content::RenderFrameHost* host) {
|
||||
content::WebContents* web_contents =
|
||||
content::WebContents::FromRenderFrameHost(host);
|
||||
TabAndroid* tab = TabAndroid::FromWebContents(web_contents);
|
||||
return tab ? base::UTF16ToUTF8(tab->GetTitle()) : "";
|
||||
}
|
||||
|
||||
scoped_refptr<DevToolsAgentHost>
|
||||
DevToolsManagerDelegateAndroid::CreateNewTarget(const GURL& url) {
|
||||
if (TabModelList::empty())
|
||||
return nullptr;
|
||||
|
||||
TabModel* tab_model = TabModelList::get(0);
|
||||
if (!tab_model)
|
||||
return nullptr;
|
||||
|
||||
WebContents* web_contents = tab_model->CreateNewTabForDevTools(url);
|
||||
if (!web_contents)
|
||||
return nullptr;
|
||||
|
||||
TabAndroid* tab = TabAndroid::FromWebContents(web_contents);
|
||||
if (!tab)
|
||||
return nullptr;
|
||||
|
||||
return DevToolsAgentHost::Create(new TabProxyDelegate(tab));
|
||||
}
|
||||
|
||||
void DevToolsManagerDelegateAndroid::DevToolsAgentStateChanged(
|
||||
DevToolsAgentHost* agent_host, bool attached) {
|
||||
network_protocol_handler_->DevToolsAgentStateChanged(agent_host, attached);
|
||||
}
|
39
chrome/browser/android/devtools_manager_delegate_android.h
Normal file
39
chrome/browser/android/devtools_manager_delegate_android.h
Normal file
@ -0,0 +1,39 @@
|
||||
// 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_DEVTOOLS_MANAGER_DELEGATE_ANDROID_H_
|
||||
#define CHROME_BROWSER_ANDROID_DEVTOOLS_MANAGER_DELEGATE_ANDROID_H_
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "base/compiler_specific.h"
|
||||
#include "base/macros.h"
|
||||
#include "content/public/browser/devtools_manager_delegate.h"
|
||||
|
||||
class DevToolsNetworkProtocolHandler;
|
||||
|
||||
class DevToolsManagerDelegateAndroid : public content::DevToolsManagerDelegate {
|
||||
public:
|
||||
DevToolsManagerDelegateAndroid();
|
||||
~DevToolsManagerDelegateAndroid() override;
|
||||
|
||||
// content::DevToolsManagerDelegate implementation.
|
||||
void Inspect(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;
|
||||
std::string GetTargetType(content::RenderFrameHost* host) override;
|
||||
std::string GetTargetTitle(content::RenderFrameHost* host) override;
|
||||
scoped_refptr<content::DevToolsAgentHost> CreateNewTarget(
|
||||
const GURL& url) override;
|
||||
|
||||
private:
|
||||
std::unique_ptr<DevToolsNetworkProtocolHandler> network_protocol_handler_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(DevToolsManagerDelegateAndroid);
|
||||
};
|
||||
|
||||
#endif // CHROME_BROWSER_ANDROID_DEVTOOLS_MANAGER_DELEGATE_ANDROID_H_
|
@ -175,12 +175,6 @@
|
||||
#include "ui/base/resource/resource_bundle.h"
|
||||
#include "ui/strings/grit/app_locale_settings.h"
|
||||
|
||||
#if BUILDFLAG(ANDROID_JAVA_UI)
|
||||
#include "chrome/browser/android/dev_tools_discovery_provider_android.h"
|
||||
#else
|
||||
#include "chrome/browser/devtools/chrome_devtools_discovery_provider.h"
|
||||
#endif
|
||||
|
||||
#if defined(OS_ANDROID)
|
||||
#include "chrome/browser/metrics/thread_watcher_android.h"
|
||||
#include "ui/base/resource/resource_bundle_android.h"
|
||||
@ -1429,13 +1423,6 @@ void ChromeBrowserMainParts::PreProfileInit() {
|
||||
|
||||
void ChromeBrowserMainParts::PostProfileInit() {
|
||||
TRACE_EVENT0("startup", "ChromeBrowserMainParts::PostProfileInit");
|
||||
|
||||
#if BUILDFLAG(ANDROID_JAVA_UI)
|
||||
DevToolsDiscoveryProviderAndroid::Install();
|
||||
#else
|
||||
ChromeDevToolsDiscoveryProvider::Install();
|
||||
#endif // BUILDFLAG(ANDROID_JAVA_UI)
|
||||
|
||||
LaunchDevToolsHandlerIfNeeded(parsed_command_line());
|
||||
if (parsed_command_line().HasSwitch(::switches::kAutoOpenDevToolsForTabs))
|
||||
g_browser_process->CreateDevToolsAutoOpener();
|
||||
|
@ -46,7 +46,6 @@
|
||||
#include "chrome/browser/content_settings/host_content_settings_map_factory.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/engagement/site_engagement_eviction_policy.h"
|
||||
#include "chrome/browser/font_family_cache.h"
|
||||
@ -238,8 +237,11 @@
|
||||
#endif
|
||||
|
||||
#if defined(OS_ANDROID)
|
||||
#include "chrome/browser/android/devtools_manager_delegate_android.h"
|
||||
#include "ui/base/ui_base_paths.h"
|
||||
#include "ui/gfx/android/device_display_info.h"
|
||||
#else
|
||||
#include "chrome/browser/devtools/chrome_devtools_manager_delegate.h"
|
||||
#endif
|
||||
|
||||
#if defined(TOOLKIT_VIEWS)
|
||||
@ -3088,7 +3090,11 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
|
||||
|
||||
content::DevToolsManagerDelegate*
|
||||
ChromeContentBrowserClient::GetDevToolsManagerDelegate() {
|
||||
#if defined(OS_ANDROID)
|
||||
return new DevToolsManagerDelegateAndroid();
|
||||
#else
|
||||
return new ChromeDevToolsManagerDelegate();
|
||||
#endif
|
||||
}
|
||||
|
||||
content::TracingDelegate* ChromeContentBrowserClient::GetTracingDelegate() {
|
||||
|
@ -30,8 +30,6 @@ 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",
|
||||
@ -82,8 +80,8 @@ static_library("devtools") {
|
||||
"//third_party/leveldatabase",
|
||||
]
|
||||
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",
|
||||
|
@ -1,4 +1,3 @@
|
||||
include_rules = [
|
||||
"+components/devtools_discovery",
|
||||
"+components/devtools_http_handler",
|
||||
]
|
||||
|
@ -1,49 +0,0 @@
|
||||
// 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 "chrome/browser/devtools/chrome_devtools_discovery_provider.h"
|
||||
|
||||
#include "base/memory/ptr_util.h"
|
||||
#include "chrome/browser/profiles/profile_manager.h"
|
||||
#include "chrome/browser/ui/browser_navigator.h"
|
||||
#include "chrome/browser/ui/browser_navigator_params.h"
|
||||
#include "content/public/browser/devtools_agent_host.h"
|
||||
|
||||
namespace {
|
||||
|
||||
scoped_refptr<content::DevToolsAgentHost>
|
||||
CreateNewChromeTab(const GURL& url) {
|
||||
chrome::NavigateParams params(ProfileManager::GetLastUsedProfile(),
|
||||
url, ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
|
||||
params.disposition = NEW_FOREGROUND_TAB;
|
||||
chrome::Navigate(¶ms);
|
||||
if (!params.target_contents)
|
||||
return nullptr;
|
||||
|
||||
if (!params.target_contents)
|
||||
return nullptr;
|
||||
return content::DevToolsAgentHost::GetOrCreateFor(params.target_contents);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
ChromeDevToolsDiscoveryProvider::ChromeDevToolsDiscoveryProvider() {
|
||||
}
|
||||
|
||||
ChromeDevToolsDiscoveryProvider::~ChromeDevToolsDiscoveryProvider() {
|
||||
}
|
||||
|
||||
content::DevToolsAgentHost::List
|
||||
ChromeDevToolsDiscoveryProvider::GetDescriptors() {
|
||||
return content::DevToolsAgentHost::GetOrCreateAll();
|
||||
}
|
||||
|
||||
// static
|
||||
void ChromeDevToolsDiscoveryProvider::Install() {
|
||||
devtools_discovery::DevToolsDiscoveryManager* discovery_manager =
|
||||
devtools_discovery::DevToolsDiscoveryManager::GetInstance();
|
||||
discovery_manager->AddProvider(
|
||||
base::WrapUnique(new ChromeDevToolsDiscoveryProvider()));
|
||||
discovery_manager->SetCreateCallback(base::Bind(&CreateNewChromeTab));
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
// 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 CHROME_BROWSER_DEVTOOLS_CHROME_DEVTOOLS_DISCOVERY_PROVIDER_H_
|
||||
#define CHROME_BROWSER_DEVTOOLS_CHROME_DEVTOOLS_DISCOVERY_PROVIDER_H_
|
||||
|
||||
#include "base/macros.h"
|
||||
#include "components/devtools_discovery/devtools_discovery_manager.h"
|
||||
|
||||
class ChromeDevToolsDiscoveryProvider :
|
||||
public devtools_discovery::DevToolsDiscoveryManager::Provider {
|
||||
public:
|
||||
// Installs provider to devtools_discovery.
|
||||
static void Install();
|
||||
|
||||
~ChromeDevToolsDiscoveryProvider() override;
|
||||
|
||||
// devtools_discovery::DevToolsDiscoveryManager::Provider implementation.
|
||||
content::DevToolsAgentHost::List GetDescriptors() override;
|
||||
|
||||
private:
|
||||
ChromeDevToolsDiscoveryProvider();
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(ChromeDevToolsDiscoveryProvider);
|
||||
};
|
||||
|
||||
#endif // CHROME_BROWSER_DEVTOOLS_CHROME_DEVTOOLS_DISCOVERY_PROVIDER_H_
|
@ -7,32 +7,28 @@
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "build/build_config.h"
|
||||
#include "chrome/browser/devtools/devtools_network_protocol_handler.h"
|
||||
#include "components/devtools_discovery/devtools_discovery_manager.h"
|
||||
#include "content/public/browser/devtools_agent_host.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
|
||||
#if !defined(OS_ANDROID)
|
||||
#include "chrome/browser/devtools/devtools_window.h"
|
||||
#include "chrome/browser/extensions/extension_tab_util.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/profiles/profile_manager.h"
|
||||
#include "chrome/browser/ui/browser_navigator.h"
|
||||
#include "chrome/browser/ui/browser_navigator_params.h"
|
||||
#include "chrome/browser/ui/tab_contents/tab_contents_iterator.h"
|
||||
#include "content/public/browser/devtools_agent_host.h"
|
||||
#include "content/public/browser/render_frame_host.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
#include "extensions/browser/extension_host.h"
|
||||
#include "extensions/browser/extension_registry.h"
|
||||
#include "extensions/browser/process_manager.h"
|
||||
#else // !defined(OS_ANDROID)
|
||||
#include "chrome/browser/android/tab_android.h"
|
||||
#include "chrome/browser/ui/android/tab_model/tab_model.h"
|
||||
#include "chrome/browser/ui/android/tab_model/tab_model_list.h"
|
||||
#endif // !defined(OS_ANDROID)
|
||||
|
||||
using devtools_discovery::DevToolsDiscoveryManager;
|
||||
|
||||
char ChromeDevToolsManagerDelegate::kTypeApp[] = "app";
|
||||
char ChromeDevToolsManagerDelegate::kTypeBackgroundPage[] = "background_page";
|
||||
|
||||
|
||||
ChromeDevToolsManagerDelegate::ChromeDevToolsManagerDelegate()
|
||||
: network_protocol_handler_(new DevToolsNetworkProtocolHandler()) {
|
||||
content::DevToolsAgentHost::AddDiscoveryProvider(
|
||||
base::Bind(&content::DevToolsAgentHost::GetOrCreateAll));
|
||||
}
|
||||
|
||||
ChromeDevToolsManagerDelegate::~ChromeDevToolsManagerDelegate() {
|
||||
@ -40,7 +36,6 @@ ChromeDevToolsManagerDelegate::~ChromeDevToolsManagerDelegate() {
|
||||
|
||||
void ChromeDevToolsManagerDelegate::Inspect(
|
||||
content::DevToolsAgentHost* agent_host) {
|
||||
#if !defined(OS_ANDROID)
|
||||
Profile* profile =
|
||||
Profile::FromBrowserContext(agent_host->GetBrowserContext());
|
||||
if (!profile)
|
||||
@ -54,17 +49,11 @@ void ChromeDevToolsManagerDelegate::Inspect(
|
||||
content::WebContents* web_contents = agent_host->GetWebContents();
|
||||
if (web_contents)
|
||||
DevToolsWindow::OpenDevToolsWindow(web_contents);
|
||||
#endif // !defined(OS_ANDROID)
|
||||
}
|
||||
|
||||
base::DictionaryValue* ChromeDevToolsManagerDelegate::HandleCommand(
|
||||
content::DevToolsAgentHost* agent_host,
|
||||
base::DictionaryValue* command_dict) {
|
||||
std::unique_ptr<base::DictionaryValue> result =
|
||||
DevToolsDiscoveryManager::GetInstance()->HandleCreateTargetCommand(
|
||||
command_dict);
|
||||
if (result)
|
||||
return result.release(); // Caller takes ownership.
|
||||
return network_protocol_handler_->HandleCommand(agent_host, command_dict);
|
||||
}
|
||||
|
||||
@ -72,7 +61,6 @@ std::string ChromeDevToolsManagerDelegate::GetTargetType(
|
||||
content::RenderFrameHost* host) {
|
||||
content::WebContents* web_contents =
|
||||
content::WebContents::FromRenderFrameHost(host);
|
||||
#if !defined(OS_ANDROID)
|
||||
for (TabContentsIterator it; !it.done(); it.Next()) {
|
||||
if (*it == web_contents)
|
||||
return content::DevToolsAgentHost::kTypePage;
|
||||
@ -103,23 +91,11 @@ std::string ChromeDevToolsManagerDelegate::GetTargetType(
|
||||
|| extension->is_platform_app()) {
|
||||
return kTypeApp;
|
||||
}
|
||||
#else // !defined(OS_ANDROID)
|
||||
for (TabModelList::const_iterator iter = TabModelList::begin();
|
||||
iter != TabModelList::end(); ++iter) {
|
||||
TabModel* model = *iter;
|
||||
for (int i = 0; i < model->GetTabCount(); ++i) {
|
||||
TabAndroid* tab = model->GetTabAt(i);
|
||||
if (tab && web_contents == tab->web_contents())
|
||||
return content::DevToolsAgentHost::kTypePage;
|
||||
}
|
||||
}
|
||||
#endif // !defined(OS_ANDROID)
|
||||
return content::DevToolsAgentHost::kTypeOther;
|
||||
}
|
||||
|
||||
std::string ChromeDevToolsManagerDelegate::GetTargetTitle(
|
||||
content::RenderFrameHost* host) {
|
||||
#if !defined(OS_ANDROID)
|
||||
content::WebContents* web_contents =
|
||||
content::WebContents::FromRenderFrameHost(host);
|
||||
if (host->GetParent())
|
||||
@ -133,10 +109,20 @@ std::string ChromeDevToolsManagerDelegate::GetTargetTitle(
|
||||
host->GetLastCommittedURL().host());
|
||||
if (extension)
|
||||
return extension->name();
|
||||
#endif // !defined(OS_ANDROID)
|
||||
return "";
|
||||
}
|
||||
|
||||
scoped_refptr<content::DevToolsAgentHost>
|
||||
ChromeDevToolsManagerDelegate::CreateNewTarget(const GURL& url) {
|
||||
chrome::NavigateParams params(ProfileManager::GetLastUsedProfile(),
|
||||
url, ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
|
||||
params.disposition = NEW_FOREGROUND_TAB;
|
||||
chrome::Navigate(¶ms);
|
||||
if (!params.target_contents)
|
||||
return nullptr;
|
||||
return content::DevToolsAgentHost::GetOrCreateFor(params.target_contents);
|
||||
}
|
||||
|
||||
void ChromeDevToolsManagerDelegate::DevToolsAgentStateChanged(
|
||||
content::DevToolsAgentHost* agent_host,
|
||||
bool attached) {
|
||||
|
@ -30,6 +30,8 @@ class ChromeDevToolsManagerDelegate : public content::DevToolsManagerDelegate {
|
||||
base::DictionaryValue* command_dict) override;
|
||||
std::string GetTargetType(content::RenderFrameHost* host) override;
|
||||
std::string GetTargetTitle(content::RenderFrameHost* host) override;
|
||||
scoped_refptr<content::DevToolsAgentHost> CreateNewTarget(
|
||||
const GURL& url) override;
|
||||
|
||||
private:
|
||||
std::unique_ptr<DevToolsNetworkProtocolHandler> network_protocol_handler_;
|
||||
|
@ -828,8 +828,8 @@
|
||||
'browser/android/data_usage/external_data_use_reporter.h',
|
||||
'browser/android/data_usage/tab_data_use_entry.cc',
|
||||
'browser/android/data_usage/tab_data_use_entry.h',
|
||||
'browser/android/dev_tools_discovery_provider_android.cc',
|
||||
'browser/android/dev_tools_discovery_provider_android.h',
|
||||
'browser/android/devtools_manager_delegate_android.cc',
|
||||
'browser/android/devtools_manager_delegate_android.h',
|
||||
'browser/android/dev_tools_server.cc',
|
||||
'browser/android/dev_tools_server.h',
|
||||
'browser/android/document/document_web_contents_delegate.cc',
|
||||
@ -3429,7 +3429,6 @@
|
||||
'../components/components.gyp:cookie_config',
|
||||
'../components/components.gyp:data_reduction_proxy_content_browser',
|
||||
'../components/components.gyp:data_use_measurement_content',
|
||||
'../components/components.gyp:devtools_discovery',
|
||||
'../components/components.gyp:devtools_http_handler',
|
||||
'../components/components.gyp:dom_distiller_content_browser',
|
||||
'../components/components.gyp:domain_reliability',
|
||||
|
@ -61,8 +61,6 @@
|
||||
'common/extensions/api/api.gyp:chrome_api',
|
||||
],
|
||||
'sources': [
|
||||
'browser/devtools/chrome_devtools_discovery_provider.cc',
|
||||
'browser/devtools/chrome_devtools_discovery_provider.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',
|
||||
|
@ -52,8 +52,6 @@ per-file data_use_measurement.gypi=file://components/data_use_measurement/OWNERS
|
||||
|
||||
per-file device_event_log.gypi=file://components/device_event_log/OWNERS
|
||||
|
||||
per-file devtools_discovery.gypi=file://components/devtools_discovery/OWNERS
|
||||
|
||||
per-file devtools_http_handler.gypi=file://components/devtools_http_handler/OWNERS
|
||||
|
||||
per-file display_compositor.gypi=file://components/display_compositor/OWNERS
|
||||
|
@ -1,17 +0,0 @@
|
||||
# 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.
|
||||
|
||||
static_library("devtools_discovery") {
|
||||
sources = [
|
||||
"devtools_discovery_manager.cc",
|
||||
"devtools_discovery_manager.h",
|
||||
]
|
||||
|
||||
deps = [
|
||||
"//base",
|
||||
"//content/public/browser",
|
||||
"//content/public/common",
|
||||
"//url",
|
||||
]
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
include_rules = [
|
||||
"+content/public/browser",
|
||||
"+content/public/common",
|
||||
"+content/public/test",
|
||||
]
|
@ -1,2 +0,0 @@
|
||||
dgozman@chromium.org
|
||||
pfeldman@chromium.org
|
@ -1,84 +0,0 @@
|
||||
// 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"
|
||||
|
||||
using content::DevToolsAgentHost;
|
||||
|
||||
namespace devtools_discovery {
|
||||
|
||||
// static
|
||||
DevToolsDiscoveryManager* DevToolsDiscoveryManager::GetInstance() {
|
||||
return base::Singleton<DevToolsDiscoveryManager>::get();
|
||||
}
|
||||
|
||||
DevToolsDiscoveryManager::DevToolsDiscoveryManager() {
|
||||
}
|
||||
|
||||
DevToolsDiscoveryManager::~DevToolsDiscoveryManager() {
|
||||
base::STLDeleteElements(&providers_);
|
||||
}
|
||||
|
||||
void DevToolsDiscoveryManager::AddProvider(std::unique_ptr<Provider> provider) {
|
||||
providers_.push_back(provider.release());
|
||||
}
|
||||
|
||||
content::DevToolsAgentHost::List DevToolsDiscoveryManager::GetDescriptors() {
|
||||
if (providers_.size())
|
||||
return GetDescriptorsFromProviders();
|
||||
|
||||
return DevToolsAgentHost::GetOrCreateAll();
|
||||
}
|
||||
|
||||
void DevToolsDiscoveryManager::SetCreateCallback(
|
||||
const CreateCallback& callback) {
|
||||
create_callback_ = callback;
|
||||
}
|
||||
|
||||
scoped_refptr<content::DevToolsAgentHost> DevToolsDiscoveryManager::CreateNew(
|
||||
const GURL& url) {
|
||||
if (create_callback_.is_null())
|
||||
return nullptr;
|
||||
return create_callback_.Run(url);
|
||||
}
|
||||
|
||||
content::DevToolsAgentHost::List
|
||||
DevToolsDiscoveryManager::GetDescriptorsFromProviders() {
|
||||
content::DevToolsAgentHost::List result;
|
||||
for (auto* provider : providers_) {
|
||||
content::DevToolsAgentHost::List partial = provider->GetDescriptors();
|
||||
result.insert(result.begin(), partial.begin(), partial.end());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
std::unique_ptr<base::DictionaryValue>
|
||||
DevToolsDiscoveryManager::HandleCreateTargetCommand(
|
||||
base::DictionaryValue* command_dict) {
|
||||
int id;
|
||||
std::string method;
|
||||
std::string url;
|
||||
const base::DictionaryValue* params_dict = nullptr;
|
||||
if (command_dict->GetInteger("id", &id) &&
|
||||
command_dict->GetString("method", &method) &&
|
||||
method == "Browser.createTarget" &&
|
||||
command_dict->GetDictionary("params", ¶ms_dict) &&
|
||||
params_dict->GetString("url", &url)) {
|
||||
scoped_refptr<content::DevToolsAgentHost> host = CreateNew(GURL(url));
|
||||
if (!host)
|
||||
return nullptr;
|
||||
std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue());
|
||||
result->SetInteger("id", id);
|
||||
std::unique_ptr<base::DictionaryValue> cmd_result(
|
||||
new base::DictionaryValue());
|
||||
cmd_result->SetString("targetId", host->GetId());
|
||||
result->Set("result", std::move(cmd_result));
|
||||
return result;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
} // namespace devtools_discovery
|
@ -1,59 +0,0 @@
|
||||
// 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 "content/public/browser/devtools_agent_host.h"
|
||||
|
||||
namespace devtools_discovery {
|
||||
|
||||
class DevToolsDiscoveryManager {
|
||||
public:
|
||||
class Provider {
|
||||
public:
|
||||
virtual ~Provider() {}
|
||||
|
||||
virtual content::DevToolsAgentHost::List GetDescriptors() = 0;
|
||||
};
|
||||
|
||||
using CreateCallback = base::Callback<
|
||||
scoped_refptr<content::DevToolsAgentHost>(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.
|
||||
content::DevToolsAgentHost::List GetDescriptors();
|
||||
scoped_refptr<content::DevToolsAgentHost> 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();
|
||||
content::DevToolsAgentHost::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_
|
@ -11,7 +11,6 @@ static_library("devtools_http_handler") {
|
||||
|
||||
deps = [
|
||||
"//base",
|
||||
"//components/devtools_discovery",
|
||||
"//content/public/browser",
|
||||
"//content/public/common",
|
||||
"//net",
|
||||
|
@ -1,5 +1,4 @@
|
||||
include_rules = [
|
||||
"+components/devtools_discovery",
|
||||
"+content/public/browser",
|
||||
"+content/public/common",
|
||||
"+content/public/test",
|
||||
|
@ -22,11 +22,11 @@
|
||||
#include "base/threading/thread.h"
|
||||
#include "base/values.h"
|
||||
#include "build/build_config.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_external_agent_proxy_delegate.h"
|
||||
#include "content/public/browser/devtools_manager_delegate.h"
|
||||
#include "content/public/common/url_constants.h"
|
||||
#include "content/public/common/user_agent.h"
|
||||
#include "net/base/escape.h"
|
||||
@ -575,8 +575,7 @@ void DevToolsHttpHandler::OnJsonRequest(
|
||||
if (command == "list") {
|
||||
std::string host = info.headers["host"];
|
||||
DevToolsAgentHost::List agent_hosts =
|
||||
devtools_discovery::DevToolsDiscoveryManager::GetInstance()->
|
||||
GetDescriptors();
|
||||
content::DevToolsAgentHost::DiscoverAllHosts();
|
||||
std::sort(agent_hosts.begin(), agent_hosts.end(), TimeComparator);
|
||||
agent_host_map_.clear();
|
||||
base::ListValue list_value;
|
||||
@ -594,9 +593,11 @@ void DevToolsHttpHandler::OnJsonRequest(
|
||||
net::UnescapeRule::PATH_SEPARATORS));
|
||||
if (!url.is_valid())
|
||||
url = GURL(url::kAboutBlankURL);
|
||||
scoped_refptr<DevToolsAgentHost> agent_host =
|
||||
devtools_discovery::DevToolsDiscoveryManager::GetInstance()->CreateNew(
|
||||
url);
|
||||
scoped_refptr<DevToolsAgentHost> agent_host = nullptr;
|
||||
content::DevToolsManagerDelegate* delegate =
|
||||
DevToolsAgentHost::GetDevToolsManagerDelegate();
|
||||
if (delegate)
|
||||
agent_host = delegate->CreateNewTarget(url);
|
||||
if (!agent_host) {
|
||||
SendJson(connection_id,
|
||||
net::HTTP_INTERNAL_SERVER_ERROR,
|
||||
|
@ -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";
|
||||
@ -39,6 +43,12 @@ char DevToolsAgentHost::kTypeExternal[] = "external";
|
||||
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);
|
||||
@ -49,6 +59,12 @@ bool DevToolsAgentHost::IsSupportedProtocolVersion(const std::string& version) {
|
||||
return devtools::IsSupportedProtocolVersion(version);
|
||||
}
|
||||
|
||||
// static
|
||||
void DevToolsAgentHost::AddDiscoveryProvider(
|
||||
const DiscoveryCallback& callback) {
|
||||
g_providers.Get().push_back(callback);
|
||||
}
|
||||
|
||||
// static
|
||||
DevToolsAgentHost::List DevToolsAgentHost::GetOrCreateAll() {
|
||||
List result;
|
||||
@ -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(
|
||||
|
@ -4,6 +4,9 @@
|
||||
|
||||
#include "content/browser/devtools/protocol/browser_handler.h"
|
||||
|
||||
#include "content/browser/devtools/devtools_manager.h"
|
||||
#include "content/public/browser/devtools_manager_delegate.h"
|
||||
|
||||
namespace content {
|
||||
namespace devtools {
|
||||
namespace browser {
|
||||
@ -38,9 +41,16 @@ Response BrowserHandler::CreateTarget(const std::string& url,
|
||||
const int* height,
|
||||
const std::string* context_id,
|
||||
std::string* out_target_id) {
|
||||
// For layering reasons this needs to be handled by
|
||||
// DevToolsManagerDelegate::HandleCommand.
|
||||
return Response::ServerError("Not supported");
|
||||
DevToolsManagerDelegate* delegate =
|
||||
DevToolsManager::GetInstance()->delegate();
|
||||
if (!delegate)
|
||||
return Response::ServerError("Not supported");
|
||||
scoped_refptr<content::DevToolsAgentHost> agent_host =
|
||||
delegate->CreateNewTarget(GURL(url));
|
||||
if (!agent_host)
|
||||
return Response::ServerError("Not supported");
|
||||
*out_target_id = agent_host->GetId();
|
||||
return Response::OK();
|
||||
}
|
||||
|
||||
Response BrowserHandler::CloseTarget(const std::string& target_id,
|
||||
|
@ -39,7 +39,6 @@
|
||||
'../cc/blink/cc_blink.gyp:cc_blink',
|
||||
'../cc/cc.gyp:cc',
|
||||
'../components/components.gyp:crash_component_breakpad_to_be_deleted',
|
||||
'../components/components.gyp:devtools_discovery',
|
||||
'../components/components.gyp:devtools_http_handler',
|
||||
'../components/components.gyp:web_cache_renderer',
|
||||
'../components/components.gyp:plugins_renderer',
|
||||
|
@ -28,6 +28,7 @@ namespace content {
|
||||
|
||||
class BrowserContext;
|
||||
class DevToolsExternalAgentProxyDelegate;
|
||||
class DevToolsManagerDelegate;
|
||||
class RenderFrameHost;
|
||||
class WebContents;
|
||||
|
||||
@ -43,6 +44,10 @@ class CONTENT_EXPORT DevToolsAgentHost
|
||||
static char kTypeBrowser[];
|
||||
static char kTypeOther[];
|
||||
|
||||
// This is temporary while we are merging http handler and discovery
|
||||
// into content/.
|
||||
static DevToolsManagerDelegate* GetDevToolsManagerDelegate();
|
||||
|
||||
// Latest DevTools protocol version supported.
|
||||
static std::string GetProtocolVersion();
|
||||
|
||||
@ -92,11 +97,20 @@ class CONTENT_EXPORT DevToolsAgentHost
|
||||
|
||||
static bool IsDebuggerAttached(WebContents* web_contents);
|
||||
|
||||
typedef std::vector<scoped_refptr<DevToolsAgentHost> > List;
|
||||
using List = std::vector<scoped_refptr<DevToolsAgentHost>>;
|
||||
|
||||
// Returns all possible DevToolsAgentHosts.
|
||||
using DiscoveryCallback = base::Callback<List()>;
|
||||
|
||||
// Registers embedder's custom host providers that are available via
|
||||
// DiscoverAllHosts.
|
||||
static void AddDiscoveryProvider(const DiscoveryCallback& callback);
|
||||
|
||||
// Returns all DevToolsAgentHosts content is aware of.
|
||||
static List GetOrCreateAll();
|
||||
|
||||
// Returns all possible DevToolsAgentHosts embedder is aware of.
|
||||
static List DiscoverAllHosts();
|
||||
|
||||
// Attaches |client| to this agent host to start debugging.
|
||||
// Returns true iff attach succeeded.
|
||||
virtual bool AttachClient(DevToolsAgentHostClient* client) = 0;
|
||||
|
@ -6,6 +6,8 @@
|
||||
#define CONTENT_PUBLIC_BROWSER_DEVTOOLS_MANAGER_DELEGATE_H_
|
||||
|
||||
#include <string>
|
||||
#include "base/memory/ref_counted.h"
|
||||
#include "url/gurl.h"
|
||||
|
||||
namespace base {
|
||||
class DictionaryValue;
|
||||
@ -33,6 +35,9 @@ class DevToolsManagerDelegate {
|
||||
// Returns DevToolsAgentHost title to use for given |host| target.
|
||||
virtual std::string GetTargetTitle(RenderFrameHost* host) = 0;
|
||||
|
||||
// Creates new inspectable target given the |url|.
|
||||
virtual scoped_refptr<DevToolsAgentHost> CreateNewTarget(const GURL& url) = 0;
|
||||
|
||||
// Result ownership is passed to the caller.
|
||||
virtual base::DictionaryValue* HandleCommand(
|
||||
DevToolsAgentHost* agent_host,
|
||||
|
@ -221,7 +221,6 @@ static_library("content_shell_lib") {
|
||||
"//base/third_party/dynamic_annotations",
|
||||
"//cc",
|
||||
"//components/crash/content/app:app_breakpad_mac_win_to_be_deleted",
|
||||
"//components/devtools_discovery",
|
||||
"//components/devtools_http_handler",
|
||||
"//components/plugins/renderer",
|
||||
"//components/test_runner:test_runner",
|
||||
|
@ -27,7 +27,6 @@ include_rules = [
|
||||
# 1) it's an example browser
|
||||
# 2) it's not linked into the content library
|
||||
"+components/crash",
|
||||
"+components/devtools_discovery",
|
||||
"+components/devtools_http_handler",
|
||||
"+components/url_formatter",
|
||||
]
|
||||
|
@ -272,7 +272,7 @@ bool ShellContentBrowserClient::ShouldSwapProcessesForRedirect(
|
||||
|
||||
DevToolsManagerDelegate*
|
||||
ShellContentBrowserClient::GetDevToolsManagerDelegate() {
|
||||
return new ShellDevToolsManagerDelegate();
|
||||
return new ShellDevToolsManagerDelegate(browser_context());
|
||||
}
|
||||
|
||||
void ShellContentBrowserClient::OpenURL(
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include "base/strings/stringprintf.h"
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "build/build_config.h"
|
||||
#include "components/devtools_discovery/devtools_discovery_manager.h"
|
||||
#include "components/devtools_http_handler/devtools_http_handler.h"
|
||||
#include "content/public/browser/browser_context.h"
|
||||
#include "content/public/browser/devtools_agent_host.h"
|
||||
@ -134,21 +133,12 @@ CreateSocketFactory() {
|
||||
#endif
|
||||
}
|
||||
|
||||
scoped_refptr<content::DevToolsAgentHost>
|
||||
CreateNewShellTarget(BrowserContext* browser_context, const GURL& url) {
|
||||
Shell* shell = Shell::CreateNewWindow(browser_context,
|
||||
url,
|
||||
nullptr,
|
||||
gfx::Size());
|
||||
return DevToolsAgentHost::GetOrCreateFor(shell->web_contents());
|
||||
}
|
||||
|
||||
// ShellDevToolsDelegate ----------------------------------------------------
|
||||
|
||||
class ShellDevToolsDelegate :
|
||||
public devtools_http_handler::DevToolsHttpHandlerDelegate {
|
||||
public:
|
||||
explicit ShellDevToolsDelegate(BrowserContext* browser_context);
|
||||
explicit ShellDevToolsDelegate();
|
||||
~ShellDevToolsDelegate() override;
|
||||
|
||||
// devtools_http_handler::DevToolsHttpHandlerDelegate implementation.
|
||||
@ -162,16 +152,10 @@ class ShellDevToolsDelegate :
|
||||
DISALLOW_COPY_AND_ASSIGN(ShellDevToolsDelegate);
|
||||
};
|
||||
|
||||
ShellDevToolsDelegate::ShellDevToolsDelegate(BrowserContext* browser_context) {
|
||||
devtools_discovery::DevToolsDiscoveryManager::GetInstance()->
|
||||
SetCreateCallback(base::Bind(&CreateNewShellTarget,
|
||||
base::Unretained(browser_context)));
|
||||
ShellDevToolsDelegate::ShellDevToolsDelegate() {
|
||||
}
|
||||
|
||||
ShellDevToolsDelegate::~ShellDevToolsDelegate() {
|
||||
devtools_discovery::DevToolsDiscoveryManager::GetInstance()->
|
||||
SetCreateCallback(
|
||||
devtools_discovery::DevToolsDiscoveryManager::CreateCallback());
|
||||
}
|
||||
|
||||
std::string ShellDevToolsDelegate::GetDiscoveryPageHTML() {
|
||||
@ -212,14 +196,16 @@ ShellDevToolsManagerDelegate::CreateHttpHandler(
|
||||
return new DevToolsHttpHandler(
|
||||
CreateSocketFactory(),
|
||||
frontend_url,
|
||||
new ShellDevToolsDelegate(browser_context),
|
||||
new ShellDevToolsDelegate(),
|
||||
browser_context->GetPath(),
|
||||
base::FilePath(),
|
||||
std::string(),
|
||||
GetShellUserAgent());
|
||||
}
|
||||
|
||||
ShellDevToolsManagerDelegate::ShellDevToolsManagerDelegate() {
|
||||
ShellDevToolsManagerDelegate::ShellDevToolsManagerDelegate(
|
||||
BrowserContext* browser_context)
|
||||
: browser_context_(browser_context) {
|
||||
}
|
||||
|
||||
ShellDevToolsManagerDelegate::~ShellDevToolsManagerDelegate() {
|
||||
@ -228,10 +214,7 @@ ShellDevToolsManagerDelegate::~ShellDevToolsManagerDelegate() {
|
||||
base::DictionaryValue* ShellDevToolsManagerDelegate::HandleCommand(
|
||||
DevToolsAgentHost* agent_host,
|
||||
base::DictionaryValue* command_dict) {
|
||||
std::unique_ptr<base::DictionaryValue> result =
|
||||
devtools_discovery::DevToolsDiscoveryManager::GetInstance()
|
||||
->HandleCreateTargetCommand(command_dict);
|
||||
return result.release(); // Caller takes ownership.
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::string ShellDevToolsManagerDelegate::GetTargetType(RenderFrameHost* host) {
|
||||
@ -243,4 +226,14 @@ std::string ShellDevToolsManagerDelegate::GetTargetTitle(
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
scoped_refptr<DevToolsAgentHost>
|
||||
ShellDevToolsManagerDelegate::CreateNewTarget(const GURL& url) {
|
||||
Shell* shell = Shell::CreateNewWindow(browser_context_,
|
||||
url,
|
||||
nullptr,
|
||||
gfx::Size());
|
||||
return DevToolsAgentHost::GetOrCreateFor(shell->web_contents());
|
||||
}
|
||||
|
||||
} // namespace content
|
||||
|
@ -23,7 +23,7 @@ class ShellDevToolsManagerDelegate : public DevToolsManagerDelegate {
|
||||
static devtools_http_handler::DevToolsHttpHandler* CreateHttpHandler(
|
||||
BrowserContext* browser_context);
|
||||
|
||||
ShellDevToolsManagerDelegate();
|
||||
explicit ShellDevToolsManagerDelegate(BrowserContext* browser_context);
|
||||
~ShellDevToolsManagerDelegate() override;
|
||||
|
||||
// DevToolsManagerDelegate implementation.
|
||||
@ -34,8 +34,10 @@ class ShellDevToolsManagerDelegate : public DevToolsManagerDelegate {
|
||||
base::DictionaryValue* command) override;
|
||||
std::string GetTargetType(RenderFrameHost* host) override;
|
||||
std::string GetTargetTitle(RenderFrameHost* host) override;
|
||||
scoped_refptr<DevToolsAgentHost> CreateNewTarget(const GURL& url) override;
|
||||
|
||||
private:
|
||||
BrowserContext* browser_context_;
|
||||
DISALLOW_COPY_AND_ASSIGN(ShellDevToolsManagerDelegate);
|
||||
};
|
||||
|
||||
|
@ -31,7 +31,6 @@ source_set("app_shell_lib") {
|
||||
":resources",
|
||||
":version_header",
|
||||
"//base",
|
||||
"//components/devtools_discovery",
|
||||
"//components/devtools_http_handler",
|
||||
"//components/guest_view/browser",
|
||||
"//components/guest_view/common",
|
||||
|
@ -225,7 +225,7 @@ void ShellContentBrowserClient::GetAdditionalAllowedSchemesForFileSystem(
|
||||
|
||||
content::DevToolsManagerDelegate*
|
||||
ShellContentBrowserClient::GetDevToolsManagerDelegate() {
|
||||
return new content::ShellDevToolsManagerDelegate();
|
||||
return new content::ShellDevToolsManagerDelegate(GetBrowserContext());
|
||||
}
|
||||
|
||||
ShellBrowserMainParts* ShellContentBrowserClient::CreateShellBrowserMainParts(
|
||||
|
@ -72,6 +72,11 @@ std::string HeadlessDevToolsManagerDelegate::GetTargetTitle(
|
||||
return "";
|
||||
}
|
||||
|
||||
scoped_refptr<content::DevToolsAgentHost>
|
||||
HeadlessDevToolsManagerDelegate::CreateNewTarget(const GURL& url) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::unique_ptr<base::Value> HeadlessDevToolsManagerDelegate::CreateTarget(
|
||||
const base::DictionaryValue* params) {
|
||||
std::string url;
|
||||
|
@ -34,6 +34,8 @@ class HeadlessDevToolsManagerDelegate
|
||||
base::DictionaryValue* command) override;
|
||||
std::string GetTargetType(content::RenderFrameHost* host) override;
|
||||
std::string GetTargetTitle(content::RenderFrameHost* host) override;
|
||||
scoped_refptr<content::DevToolsAgentHost> CreateNewTarget(
|
||||
const GURL& url) override;
|
||||
|
||||
private:
|
||||
std::unique_ptr<base::Value> CreateTarget(
|
||||
|
Reference in New Issue
Block a user