Index: content/browser/devtools/render_frame_devtools_agent_host.cc |
diff --git a/content/browser/devtools/render_frame_devtools_agent_host.cc b/content/browser/devtools/render_frame_devtools_agent_host.cc |
index 69142b991381e2d431819920ad3d9bc6a39f1c03..861cd62c7bee9b1bfa8c59619b67e54862868bec 100644 |
--- a/content/browser/devtools/render_frame_devtools_agent_host.cc |
+++ b/content/browser/devtools/render_frame_devtools_agent_host.cc |
@@ -7,12 +7,14 @@ |
#include <tuple> |
#include <utility> |
+#include "base/guid.h" |
#include "base/lazy_instance.h" |
#include "base/strings/utf_string_conversions.h" |
#include "build/build_config.h" |
#include "content/browser/bad_message.h" |
#include "content/browser/child_process_security_policy_impl.h" |
#include "content/browser/devtools/devtools_frame_trace_recorder.h" |
+#include "content/browser/devtools/devtools_manager.h" |
#include "content/browser/devtools/devtools_protocol_handler.h" |
#include "content/browser/devtools/page_navigation_throttle.h" |
#include "content/browser/devtools/protocol/browser_handler.h" |
@@ -370,7 +372,8 @@ RenderFrameDevToolsAgentHost::CreateThrottleForNavigation( |
RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost( |
RenderFrameHostImpl* host) |
- : browser_handler_(new devtools::browser::BrowserHandler()), |
+ : DevToolsAgentHostImpl(base::GenerateGUID()), |
+ browser_handler_(new devtools::browser::BrowserHandler()), |
dom_handler_(new devtools::dom::DOMHandler()), |
input_handler_(new devtools::input::InputHandler()), |
inspector_handler_(new devtools::inspector::InspectorHandler()), |
@@ -860,15 +863,45 @@ void RenderFrameDevToolsAgentHost::ConnectWebContents(WebContents* wc) { |
WebContentsObserver::Observe(WebContents::FromRenderFrameHost(host)); |
} |
-DevToolsAgentHost::Type RenderFrameDevToolsAgentHost::GetType() { |
- return IsChildFrame() ? TYPE_FRAME : TYPE_WEB_CONTENTS; |
+std::string RenderFrameDevToolsAgentHost::GetParentId() { |
+ if (IsChildFrame()) { |
+ RenderFrameHostImpl* frame_host = current_->host(); |
+ while (frame_host && !ShouldCreateDevToolsFor(frame_host)) |
+ frame_host = frame_host->GetParent(); |
+ if (frame_host) |
+ return DevToolsAgentHost::GetOrCreateFor(frame_host)->GetId(); |
+ } |
+ |
+ WebContentsImpl* contents = static_cast<WebContentsImpl*>(web_contents()); |
+ if (!contents) |
+ return ""; |
+ contents = contents->GetOuterWebContents(); |
+ if (contents) |
+ return DevToolsAgentHost::GetOrCreateFor(contents)->GetId(); |
+ return ""; |
+} |
+ |
+std::string RenderFrameDevToolsAgentHost::GetType() { |
+ DevToolsManager* manager = DevToolsManager::GetInstance(); |
+ if (manager->delegate()) |
+ return manager->delegate()->GetTargetType(current_->host()); |
+ return kTypeOther; |
} |
std::string RenderFrameDevToolsAgentHost::GetTitle() { |
- if (IsChildFrame()) |
- return GetURL().spec(); |
- if (WebContents* web_contents = GetWebContents()) |
- return base::UTF16ToUTF8(web_contents->GetTitle()); |
+ DevToolsManager* manager = DevToolsManager::GetInstance(); |
+ std::string result; |
+ if (manager->delegate()) |
+ result = manager->delegate()->GetTargetTitle(current_->host()); |
+ if (!result.empty()) |
+ return result; |
+ content::WebContents* web_contents = GetWebContents(); |
+ if (web_contents) |
+ result = base::UTF16ToUTF8(web_contents->GetTitle()); |
+ return GetURL().spec(); |
+} |
+ |
+std::string RenderFrameDevToolsAgentHost::GetDescription() { |
return ""; |
} |
@@ -884,6 +917,10 @@ GURL RenderFrameDevToolsAgentHost::GetURL() { |
return GURL(); |
} |
+GURL RenderFrameDevToolsAgentHost::GetFaviconURL() { |
+ return GURL(); |
+} |
+ |
bool RenderFrameDevToolsAgentHost::Activate() { |
WebContentsImpl* wc = static_cast<WebContentsImpl*>(web_contents()); |
if (wc) { |
@@ -893,6 +930,12 @@ bool RenderFrameDevToolsAgentHost::Activate() { |
return false; |
} |
+void RenderFrameDevToolsAgentHost::Reload() { |
+ WebContentsImpl* wc = static_cast<WebContentsImpl*>(web_contents()); |
+ if (wc) |
+ wc->GetController().Reload(true); |
+} |
+ |
bool RenderFrameDevToolsAgentHost::Close() { |
if (web_contents()) { |
web_contents()->ClosePage(); |
@@ -901,6 +944,12 @@ bool RenderFrameDevToolsAgentHost::Close() { |
return false; |
} |
+base::TimeTicks RenderFrameDevToolsAgentHost::GetLastActivityTime() { |
+ if (content::WebContents* contents = web_contents()) |
+ return contents->GetLastActiveTime(); |
+ return base::TimeTicks(); |
+} |
+ |
void RenderFrameDevToolsAgentHost::OnSwapCompositorFrame( |
const IPC::Message& message) { |
ViewHostMsg_SwapCompositorFrame::Param param; |
@@ -955,8 +1004,7 @@ void RenderFrameDevToolsAgentHost::OnRequestNewWindow( |
if (IsAttached() && sender->GetRoutingID() != new_routing_id && frame_host) { |
scoped_refptr<DevToolsAgentHost> agent = |
DevToolsAgentHost::GetOrCreateFor(frame_host); |
- success = static_cast<DevToolsAgentHostImpl*>(agent.get())-> |
- Inspect(agent->GetBrowserContext()); |
+ success = agent->Inspect(); |
} |
sender->Send(new DevToolsAgentMsg_RequestNewWindow_ACK( |