Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3639)

Unified Diff: chrome/browser/devtools/chrome_devtools_manager_delegate.cc

Issue 2799783006: [DevTools] Calculate target type and title once in constructor (Closed)
Patch Set: extensions fix Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698