Index: chrome/browser/devtools/devtools_window.cc |
diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc |
index 1aa1aaf5d7b6f087b5832471a3e38a31878b214e..60245ddf91bd6ea2cb781bc83edb0d5844ac4ec2 100644 |
--- a/chrome/browser/devtools/devtools_window.cc |
+++ b/chrome/browser/devtools/devtools_window.cc |
@@ -466,13 +466,49 @@ void DevToolsWindow::OpenDevToolsWindow( |
// static |
void DevToolsWindow::OpenDevToolsWindow( |
+ scoped_refptr<content::DevToolsAgentHost> agent_host, |
+ Profile* profile) { |
+ if (!profile) |
+ profile = Profile::FromBrowserContext(agent_host->GetBrowserContext()); |
+ |
+ if (!profile) |
+ return; |
+ |
+ std::string type = agent_host->GetType(); |
+ bool is_worker = type == DevToolsAgentHost::kTypeServiceWorker || |
+ type == DevToolsAgentHost::kTypeSharedWorker; |
+ |
+ if (!agent_host->GetFrontendURL().empty()) { |
+ bool is_v8_only = type == "node"; |
+ DevToolsWindow::OpenExternalFrontend(profile, agent_host->GetFrontendURL(), |
+ agent_host, is_worker, is_v8_only); |
+ return; |
+ } |
+ |
+ if (is_worker) { |
+ DevToolsWindow::OpenDevToolsWindowForWorker(profile, agent_host); |
+ return; |
+ } |
+ |
+ if (type == content::DevToolsAgentHost::kTypeFrame) { |
+ DevToolsWindow::OpenDevToolsWindowForFrame(profile, agent_host); |
+ return; |
+ } |
+ |
+ content::WebContents* web_contents = agent_host->GetWebContents(); |
+ if (web_contents) |
+ DevToolsWindow::OpenDevToolsWindow(web_contents); |
+} |
+ |
+// static |
+void DevToolsWindow::OpenDevToolsWindow( |
content::WebContents* inspected_web_contents, |
const DevToolsToggleAction& action) { |
ToggleDevToolsWindow(inspected_web_contents, true, action, ""); |
} |
// static |
-void DevToolsWindow::OpenDevToolsWindow( |
+void DevToolsWindow::OpenDevToolsWindowForFrame( |
Profile* profile, |
const scoped_refptr<content::DevToolsAgentHost>& agent_host) { |
DevToolsWindow* window = FindDevToolsWindow(agent_host.get()); |
@@ -569,8 +605,8 @@ void DevToolsWindow::InspectElement( |
if (agent->GetType() == content::DevToolsAgentHost::kTypePage) { |
OpenDevToolsWindow(agent->GetWebContents()); |
} else { |
- OpenDevToolsWindow(Profile::FromBrowserContext(agent->GetBrowserContext()), |
- agent); |
+ OpenDevToolsWindowForFrame(Profile::FromBrowserContext( |
+ agent->GetBrowserContext()), agent); |
} |
DevToolsWindow* window = FindDevToolsWindow(agent.get()); |
if (window) { |
@@ -1078,6 +1114,10 @@ void DevToolsWindow::CloseWindow() { |
main_web_contents_->DispatchBeforeUnload(); |
} |
+void DevToolsWindow::Inspect(scoped_refptr<content::DevToolsAgentHost> host) { |
+ DevToolsWindow::OpenDevToolsWindow(host, nullptr); |
+} |
+ |
void DevToolsWindow::SetInspectedPageBounds(const gfx::Rect& rect) { |
DevToolsContentsResizingStrategy strategy(rect); |
if (contents_resizing_strategy_.Equals(strategy)) |