Index: chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
diff --git a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
index 101d544a6be728d7695c7639e35c8e0173ba8192..d2008b54831d2afdd9c597ff987ef57e5df4943b 100644 |
--- a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
+++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
@@ -34,10 +34,45 @@ char ChromeDevToolsManagerDelegate::kTypeApp[] = "app"; |
char ChromeDevToolsManagerDelegate::kTypeBackgroundPage[] = "background_page"; |
char ChromeDevToolsManagerDelegate::kTypeWebView[] = "webview"; |
+namespace { |
+ |
char kLocationsParam[] = "locations"; |
char kHostParam[] = "host"; |
char kPortParam[] = "port"; |
+bool GetExtensionInfo(content::RenderFrameHost* host, |
+ std::string* name, |
+ std::string* type) { |
+ content::WebContents* wc = content::WebContents::FromRenderFrameHost(host); |
+ if (!wc) |
+ return false; |
+ Profile* profile = Profile::FromBrowserContext(wc->GetBrowserContext()); |
+ if (!profile) |
+ return false; |
+ const extensions::Extension* extension = |
+ extensions::ProcessManager::Get(profile)->GetExtensionForRenderFrameHost( |
+ host); |
+ if (!extension) |
+ return false; |
+ extensions::ExtensionHost* extension_host = |
+ extensions::ProcessManager::Get(profile)->GetBackgroundHostForExtension( |
+ extension->id()); |
+ if (extension_host && extension_host->host_contents() == wc) { |
+ *name = extension->name(); |
+ *type = ChromeDevToolsManagerDelegate::kTypeBackgroundPage; |
+ return true; |
+ } else if (extension->is_hosted_app() || |
+ extension->is_legacy_packaged_app() || |
+ extension->is_platform_app()) { |
+ *name = extension->name(); |
+ *type = ChromeDevToolsManagerDelegate::kTypeApp; |
+ return true; |
+ } |
+ return false; |
+} |
+ |
+} // namespace |
+ |
class ChromeDevToolsManagerDelegate::HostData { |
public: |
HostData() {} |
@@ -103,47 +138,20 @@ std::string ChromeDevToolsManagerDelegate::GetTargetType( |
return DevToolsAgentHost::kTypePage; |
} |
- const extensions::Extension* extension = extensions::ExtensionRegistry::Get( |
- web_contents->GetBrowserContext())->enabled_extensions().GetByID( |
- host->GetLastCommittedURL().host()); |
- if (!extension) |
+ std::string extension_name; |
+ std::string extension_type; |
+ if (!GetExtensionInfo(host, &extension_name, &extension_type)) |
return DevToolsAgentHost::kTypeOther; |
- |
- Profile* profile = |
- Profile::FromBrowserContext(web_contents->GetBrowserContext()); |
- if (!profile) |
- return DevToolsAgentHost::kTypeOther; |
- |
- extensions::ExtensionHost* extension_host = |
- extensions::ProcessManager::Get(profile) |
- ->GetBackgroundHostForExtension(extension->id()); |
- if (extension_host && |
- extension_host->host_contents() == web_contents) { |
- return kTypeBackgroundPage; |
- } else if (extension->is_hosted_app() |
- || extension->is_legacy_packaged_app() |
- || extension->is_platform_app()) { |
- return kTypeApp; |
- } |
- return DevToolsAgentHost::kTypeOther; |
+ return extension_type; |
} |
std::string ChromeDevToolsManagerDelegate::GetTargetTitle( |
content::RenderFrameHost* host) { |
- content::WebContents* web_contents = |
- content::WebContents::FromRenderFrameHost(host); |
- if (host->GetParent()) |
- return host->GetLastCommittedURL().spec(); |
- for (TabContentsIterator it; !it.done(); it.Next()) { |
- if (*it == web_contents) |
- return base::UTF16ToUTF8(web_contents->GetTitle()); |
- } |
- const extensions::Extension* extension = extensions::ExtensionRegistry::Get( |
- web_contents->GetBrowserContext())->enabled_extensions().GetByID( |
- host->GetLastCommittedURL().host()); |
- if (extension) |
- return extension->name(); |
- return ""; |
+ std::string extension_name; |
+ std::string extension_type; |
+ if (!GetExtensionInfo(host, &extension_name, &extension_type)) |
+ return std::string(); |
+ return extension_name; |
} |
scoped_refptr<DevToolsAgentHost> |