Index: chrome/browser/devtools/devtools_target_impl.cc |
diff --git a/chrome/browser/devtools/devtools_target_impl.cc b/chrome/browser/devtools/devtools_target_impl.cc |
index 269212439e3e2cfa18ea0b6d54611c0e738fe29a..ea81477c4767e65d3a9e1bdcb91c0d390d2f37ea 100644 |
--- a/chrome/browser/devtools/devtools_target_impl.cc |
+++ b/chrome/browser/devtools/devtools_target_impl.cc |
@@ -28,151 +28,6 @@ using content::BrowserThread; |
using content::DevToolsAgentHost; |
using content::WebContents; |
-const char DevToolsTargetImpl::kTargetTypeApp[] = "app"; |
-const char DevToolsTargetImpl::kTargetTypeBackgroundPage[] = "background_page"; |
-const char DevToolsTargetImpl::kTargetTypePage[] = "page"; |
-const char DevToolsTargetImpl::kTargetTypeWorker[] = "worker"; |
-const char DevToolsTargetImpl::kTargetTypeWebView[] = "webview"; |
-const char DevToolsTargetImpl::kTargetTypeIFrame[] = "iframe"; |
-const char DevToolsTargetImpl::kTargetTypeNode[] = "node"; |
-const char DevToolsTargetImpl::kTargetTypeOther[] = "other"; |
-const char DevToolsTargetImpl::kTargetTypeServiceWorker[] = "service_worker"; |
- |
-namespace { |
- |
-// WebContentsTarget -------------------------------------------------------- |
- |
-class WebContentsTarget : public DevToolsTargetImpl { |
- public: |
- WebContentsTarget(WebContents* web_contents, bool is_tab); |
- |
- // DevToolsTargetImpl overrides. |
- int GetTabId() const override; |
- std::string GetExtensionId() const override; |
- void Inspect(Profile* profile) const override; |
- |
- private: |
- int tab_id_; |
- std::string extension_id_; |
-}; |
- |
-WebContentsTarget::WebContentsTarget(WebContents* web_contents, bool is_tab) |
- : DevToolsTargetImpl(DevToolsAgentHost::GetOrCreateFor(web_contents)), |
- tab_id_(-1) { |
- set_type(kTargetTypeOther); |
- |
- guest_view::GuestViewBase* guest = |
- guest_view::GuestViewBase::FromWebContents(web_contents); |
- WebContents* guest_contents = guest ? guest->embedder_web_contents() : NULL; |
- if (guest_contents) { |
- set_type(kTargetTypeWebView); |
- set_parent_id(DevToolsAgentHost::GetOrCreateFor(guest_contents)->GetId()); |
- return; |
- } |
- |
- if (is_tab) { |
- set_type(kTargetTypePage); |
- tab_id_ = extensions::ExtensionTabUtil::GetTabId(web_contents); |
- return; |
- } |
- |
- const extensions::Extension* extension = extensions::ExtensionRegistry::Get( |
- web_contents->GetBrowserContext())->enabled_extensions().GetByID( |
- GetURL().host()); |
- if (!extension) |
- return; |
- |
- Profile* profile = |
- Profile::FromBrowserContext(web_contents->GetBrowserContext()); |
- if (!profile) |
- return; |
- set_title(extension->name()); |
- extensions::ExtensionHost* extension_host = |
- extensions::ProcessManager::Get(profile) |
- ->GetBackgroundHostForExtension(extension->id()); |
- if (extension_host && |
- extension_host->host_contents() == web_contents) { |
- set_type(kTargetTypeBackgroundPage); |
- extension_id_ = extension->id(); |
- } else if (extension->is_hosted_app() |
- || extension->is_legacy_packaged_app() |
- || extension->is_platform_app()) { |
- set_type(kTargetTypeApp); |
- } |
- set_favicon_url(extensions::ExtensionIconSource::GetIconURL( |
- extension, extension_misc::EXTENSION_ICON_SMALLISH, |
- ExtensionIconSet::MATCH_BIGGER, false, NULL)); |
-} |
- |
-int WebContentsTarget::GetTabId() const { |
- return tab_id_; |
-} |
- |
-std::string WebContentsTarget::GetExtensionId() const { |
- return extension_id_; |
-} |
- |
-void WebContentsTarget::Inspect(Profile* profile) const { |
- WebContents* web_contents = GetWebContents(); |
- if (!web_contents) |
- return; |
- DevToolsWindow::OpenDevToolsWindow(web_contents); |
-} |
- |
-// FrameTarget ---------------------------------------------------------------- |
- |
-class FrameTarget : public DevToolsTargetImpl { |
- public: |
- explicit FrameTarget(scoped_refptr<DevToolsAgentHost> agent_host); |
- |
- // DevToolsTargetImpl overrides: |
- void Inspect(Profile* profile) const override; |
-}; |
- |
-FrameTarget::FrameTarget(scoped_refptr<DevToolsAgentHost> agent_host) |
- : DevToolsTargetImpl(agent_host) { |
- set_type(kTargetTypeIFrame); |
- WebContents* wc = agent_host->GetWebContents(); |
- DCHECK(DevToolsAgentHost::GetOrCreateFor(wc).get() != agent_host.get()); |
- set_parent_id(DevToolsAgentHost::GetOrCreateFor(wc)->GetId()); |
-} |
- |
-void FrameTarget::Inspect(Profile* profile) const { |
- DevToolsWindow::OpenDevToolsWindow(profile, GetAgentHost()); |
-} |
- |
-// WorkerTarget ---------------------------------------------------------------- |
- |
-class WorkerTarget : public DevToolsTargetImpl { |
- public: |
- explicit WorkerTarget(scoped_refptr<DevToolsAgentHost> agent_host); |
- |
- // DevToolsTargetImpl overrides: |
- void Inspect(Profile* profile) const override; |
-}; |
- |
-WorkerTarget::WorkerTarget(scoped_refptr<DevToolsAgentHost> agent_host) |
- : DevToolsTargetImpl(agent_host) { |
- switch (agent_host->GetType()) { |
- case DevToolsAgentHost::TYPE_SHARED_WORKER: |
- set_type(kTargetTypeWorker); |
- break; |
- case DevToolsAgentHost::TYPE_SERVICE_WORKER: |
- set_type(kTargetTypeServiceWorker); |
- break; |
- default: |
- NOTREACHED(); |
- } |
-} |
- |
-void WorkerTarget::Inspect(Profile* profile) const { |
- DevToolsWindow::OpenDevToolsWindowForWorker(profile, GetAgentHost()); |
-} |
- |
-} // namespace |
- |
-// DevToolsTargetImpl ---------------------------------------------------------- |
- |
DevToolsTargetImpl::~DevToolsTargetImpl() { |
} |
@@ -181,70 +36,15 @@ DevToolsTargetImpl::DevToolsTargetImpl( |
: devtools_discovery::BasicTargetDescriptor(agent_host) { |
} |
-int DevToolsTargetImpl::GetTabId() const { |
- return -1; |
-} |
- |
-WebContents* DevToolsTargetImpl::GetWebContents() const { |
- return GetAgentHost()->GetWebContents(); |
-} |
- |
-std::string DevToolsTargetImpl::GetExtensionId() const { |
- return std::string(); |
-} |
- |
-void DevToolsTargetImpl::Inspect(Profile* /*profile*/) const { |
-} |
- |
-void DevToolsTargetImpl::Reload() const { |
-} |
- |
-// static |
-std::unique_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForTab( |
- content::WebContents* web_contents) { |
- // TODO(dgozman): these checks should not be necessary. See |
- // http://crbug.com/489664. |
- if (!web_contents) |
- return nullptr; |
- if (!DevToolsAgentHost::GetOrCreateFor(web_contents)) |
- return nullptr; |
- return std::unique_ptr<DevToolsTargetImpl>( |
- new WebContentsTarget(web_contents, true)); |
-} |
- |
// static |
std::vector<DevToolsTargetImpl*> DevToolsTargetImpl::EnumerateAll() { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
- std::set<WebContents*> tab_web_contents; |
- for (TabContentsIterator it; !it.done(); it.Next()) |
- tab_web_contents.insert(*it); |
- |
std::vector<DevToolsTargetImpl*> result; |
DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll(); |
for (DevToolsAgentHost::List::iterator it = agents.begin(); |
it != agents.end(); ++it) { |
- DevToolsAgentHost* agent_host = (*it).get(); |
- switch (agent_host->GetType()) { |
- case DevToolsAgentHost::TYPE_WEB_CONTENTS: |
- if (WebContents* web_contents = agent_host->GetWebContents()) { |
- const bool is_tab = |
- tab_web_contents.find(web_contents) != tab_web_contents.end(); |
- result.push_back(new WebContentsTarget(web_contents, is_tab)); |
- } |
- break; |
- case DevToolsAgentHost::TYPE_FRAME: |
- result.push_back(new FrameTarget(agent_host)); |
- break; |
- case DevToolsAgentHost::TYPE_SHARED_WORKER: |
- result.push_back(new WorkerTarget(agent_host)); |
- break; |
- case DevToolsAgentHost::TYPE_SERVICE_WORKER: |
- result.push_back(new WorkerTarget(agent_host)); |
- break; |
- default: |
- break; |
- } |
+ result.push_back(new DevToolsTargetImpl(*it)); |
} |
return result; |
} |