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

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

Issue 2263843002: DevTools: merge devtools target with devtools host, part 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: for review Created 4 years, 4 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 307f2bac8cd76690b49cb5aff6e11bc6d090130c..daef280cc579713b9269512f070e6d22f52278f8 100644
--- a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
+++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
@@ -10,8 +10,15 @@
#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/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"
#endif // !defined(OS_ANDROID)
using devtools_discovery::DevToolsDiscoveryManager;
@@ -24,23 +31,21 @@ ChromeDevToolsManagerDelegate::~ChromeDevToolsManagerDelegate() {
}
void ChromeDevToolsManagerDelegate::Inspect(
- content::BrowserContext* browser_context,
content::DevToolsAgentHost* agent_host) {
#if !defined(OS_ANDROID)
- Profile* profile = Profile::FromBrowserContext(browser_context);
+ Profile* profile =
+ Profile::FromBrowserContext(agent_host->GetBrowserContext());
if (!profile)
return;
- content::DevToolsAgentHost::Type type = agent_host->GetType();
- if (type == content::DevToolsAgentHost::TYPE_SHARED_WORKER ||
- type == content::DevToolsAgentHost::TYPE_SERVICE_WORKER) {
+ std::string type = agent_host->GetType();
+ if (type == content::DevToolsAgentHost::kTypeSharedWorker ||
+ type == content::DevToolsAgentHost::kTypeServiceWorker) {
DevToolsWindow::OpenDevToolsWindowForWorker(profile, agent_host);
return;
}
- if (type == content::DevToolsAgentHost::TYPE_WEB_CONTENTS) {
- content::WebContents* web_contents = agent_host->GetWebContents();
- DCHECK(web_contents);
+ content::WebContents* web_contents = agent_host->GetWebContents();
+ if (web_contents)
DevToolsWindow::OpenDevToolsWindow(web_contents);
- }
#endif // !defined(OS_ANDROID)
}
@@ -55,6 +60,45 @@ base::DictionaryValue* ChromeDevToolsManagerDelegate::HandleCommand(
return network_protocol_handler_->HandleCommand(agent_host, command_dict);
}
+std::string ChromeDevToolsManagerDelegate::GetTargetType(
+ content::RenderFrameHost* host) {
+#if !defined(OS_ANDROID)
+ content::WebContents* web_contents =
+ content::WebContents::FromRenderFrameHost(host);
+ for (TabContentsIterator it; !it.done(); it.Next()) {
+ if (*it == web_contents)
+ return content::DevToolsAgentHost::kTypePage;
+ }
+
+ if (host->GetParent())
+ return content::DevToolsAgentHost::kTypeFrame;
+
+ const extensions::Extension* extension = extensions::ExtensionRegistry::Get(
+ web_contents->GetBrowserContext())->enabled_extensions().GetByID(
+ host->GetLastCommittedURL().host());
+ if (!extension)
+ return content::DevToolsAgentHost::kTypeOther;
+
+ Profile* profile =
+ Profile::FromBrowserContext(web_contents->GetBrowserContext());
+ if (!profile)
+ return content::DevToolsAgentHost::kTypeOther;
+
+ extensions::ExtensionHost* extension_host =
+ extensions::ProcessManager::Get(profile)
+ ->GetBackgroundHostForExtension(extension->id());
+ if (extension_host &&
+ extension_host->host_contents() == web_contents) {
+ return "background_page";
dgozman 2016/08/22 23:09:07 Let's expose these in the header.
+ } else if (extension->is_hosted_app()
+ || extension->is_legacy_packaged_app()
+ || extension->is_platform_app()) {
+ return "app";
+ }
+#endif // !defined(OS_ANDROID)
+ return content::DevToolsAgentHost::kTypeOther;
dgozman 2016/08/22 23:09:07 Always other for android.
+}
+
void ChromeDevToolsManagerDelegate::DevToolsAgentStateChanged(
content::DevToolsAgentHost* agent_host,
bool attached) {

Powered by Google App Engine
This is Rietveld 408576698