Index: third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp |
diff --git a/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp b/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp |
index b2577a4286afab7cfab5beb6f83f126df13c4adf..3609203d4b69af7d0ef0375603657efcfdb5d76f 100644 |
--- a/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp |
+++ b/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp |
@@ -84,7 +84,8 @@ |
#include "public/web/WebSettings.h" |
#include "web/DevToolsEmulator.h" |
#include "web/InspectorEmulationAgent.h" |
-#include "web/InspectorOverlayAgent.h" |
+#include "web/InspectorOverlay.h" |
+#include "web/InspectorRenderingAgent.h" |
#include "web/WebFrameWidgetImpl.h" |
#include "web/WebInputEventConversion.h" |
#include "web/WebLocalFrameImpl.h" |
@@ -232,9 +233,11 @@ |
WebDevToolsAgentImpl* WebDevToolsAgentImpl::Create( |
WebLocalFrameImpl* frame, |
WebDevToolsAgentClient* client) { |
+ InspectorOverlay* overlay = new InspectorOverlay(frame); |
+ |
if (!IsMainFrame(frame)) { |
WebDevToolsAgentImpl* agent = |
- new WebDevToolsAgentImpl(frame, client, false); |
+ new WebDevToolsAgentImpl(frame, client, overlay, false); |
if (frame->FrameWidget()) |
agent->LayerTreeViewChanged( |
ToWebFrameWidgetImpl(frame->FrameWidget())->LayerTreeView()); |
@@ -242,7 +245,8 @@ |
} |
WebViewImpl* view = frame->ViewImpl(); |
- WebDevToolsAgentImpl* agent = new WebDevToolsAgentImpl(frame, client, true); |
+ WebDevToolsAgentImpl* agent = |
+ new WebDevToolsAgentImpl(frame, client, overlay, true); |
agent->LayerTreeViewChanged(view->LayerTreeView()); |
return agent; |
} |
@@ -250,6 +254,7 @@ |
WebDevToolsAgentImpl::WebDevToolsAgentImpl( |
WebLocalFrameImpl* web_local_frame_impl, |
WebDevToolsAgentClient* client, |
+ InspectorOverlay* overlay, |
bool include_view_agents) |
: client_(client), |
web_local_frame_impl_(web_local_frame_impl), |
@@ -257,15 +262,16 @@ |
web_local_frame_impl_->GetFrame()->InstrumentingAgents()), |
resource_content_loader_(InspectorResourceContentLoader::Create( |
web_local_frame_impl_->GetFrame())), |
+ overlay_(overlay), |
inspected_frames_( |
InspectedFrames::Create(web_local_frame_impl_->GetFrame())), |
resource_container_(new InspectorResourceContainer(inspected_frames_)), |
+ dom_agent_(nullptr), |
page_agent_(nullptr), |
network_agent_(nullptr), |
layer_tree_agent_(nullptr), |
tracing_agent_(nullptr), |
trace_events_agent_(new InspectorTraceEvents()), |
- overlay_agent_(nullptr), |
include_view_agents_(include_view_agents), |
layer_tree_id_(0) { |
DCHECK(IsMainThread()); |
@@ -281,14 +287,15 @@ |
visitor->Trace(web_local_frame_impl_); |
visitor->Trace(instrumenting_agents_); |
visitor->Trace(resource_content_loader_); |
+ visitor->Trace(overlay_); |
visitor->Trace(inspected_frames_); |
visitor->Trace(resource_container_); |
+ visitor->Trace(dom_agent_); |
visitor->Trace(page_agent_); |
visitor->Trace(network_agent_); |
visitor->Trace(layer_tree_agent_); |
visitor->Trace(tracing_agent_); |
visitor->Trace(trace_events_agent_); |
- visitor->Trace(overlay_agent_); |
visitor->Trace(session_); |
} |
@@ -316,7 +323,8 @@ |
main_thread_debugger->ContextGroupId(inspected_frames_->Root()), state); |
InspectorDOMAgent* dom_agent = new InspectorDOMAgent( |
- isolate, inspected_frames_.Get(), session_->V8Session()); |
+ isolate, inspected_frames_.Get(), session_->V8Session(), overlay_.Get()); |
+ dom_agent_ = dom_agent; |
session_->Append(dom_agent); |
InspectorLayerTreeAgent* layer_tree_agent = |
@@ -330,7 +338,7 @@ |
session_->Append(network_agent); |
InspectorCSSAgent* css_agent = InspectorCSSAgent::Create( |
- dom_agent, inspected_frames_.Get(), network_agent_, |
+ dom_agent_, inspected_frames_.Get(), network_agent_, |
resource_content_loader_.Get(), resource_container_.Get()); |
session_->Append(css_agent); |
@@ -354,8 +362,8 @@ |
tracing_agent_ = tracing_agent; |
session_->Append(tracing_agent); |
- session_->Append( |
- new InspectorDOMDebuggerAgent(isolate, dom_agent, session_->V8Session())); |
+ session_->Append(new InspectorDOMDebuggerAgent(isolate, dom_agent_, |
+ session_->V8Session())); |
session_->Append(InspectorInputAgent::Create(inspected_frames_.Get())); |
@@ -372,12 +380,6 @@ |
session_->Append( |
new DeviceOrientationInspectorAgent(inspected_frames_.Get())); |
- InspectorOverlayAgent* overlay_agent = |
- new InspectorOverlayAgent(web_local_frame_impl_, inspected_frames_.Get(), |
- session_->V8Session(), dom_agent); |
- overlay_agent_ = overlay_agent; |
- session_->Append(overlay_agent); |
- |
tracing_agent_->SetLayerTreeId(layer_tree_id_); |
network_agent_->SetHostId(host_id); |
@@ -385,26 +387,34 @@ |
// TODO(dgozman): we should actually pass the view instead of frame, but |
// during remote->local transition we cannot access mainFrameImpl() yet, so |
// we have to store the frame which will become the main frame later. |
+ session_->Append( |
+ InspectorRenderingAgent::Create(web_local_frame_impl_, overlay_.Get())); |
session_->Append( |
InspectorEmulationAgent::Create(web_local_frame_impl_, this)); |
// TODO(dgozman): migrate each of the following agents to frame once module |
// is ready. |
Page* page = web_local_frame_impl_->ViewImpl()->GetPage(); |
session_->Append(InspectorDatabaseAgent::Create(page)); |
- session_->Append(new InspectorAccessibilityAgent(page, dom_agent)); |
+ session_->Append(new InspectorAccessibilityAgent(page, dom_agent_)); |
session_->Append(InspectorDOMStorageAgent::Create(page)); |
session_->Append(InspectorCacheStorageAgent::Create()); |
} |
+ if (overlay_) |
+ overlay_->Init(session_->V8Session(), dom_agent_); |
+ |
Platform::Current()->CurrentThread()->AddTaskObserver(this); |
} |
void WebDevToolsAgentImpl::DestroySession() { |
- overlay_agent_.Clear(); |
+ if (overlay_) |
+ overlay_->Clear(); |
+ |
tracing_agent_.Clear(); |
layer_tree_agent_.Clear(); |
network_agent_.Clear(); |
page_agent_.Clear(); |
+ dom_agent_.Clear(); |
session_->Dispose(); |
session_.Clear(); |
@@ -487,13 +497,13 @@ |
} |
void WebDevToolsAgentImpl::ShowReloadingBlanket() { |
- if (overlay_agent_) |
- overlay_agent_->ShowReloadingBlanket(); |
+ if (overlay_) |
+ overlay_->ShowReloadingBlanket(); |
} |
void WebDevToolsAgentImpl::HideReloadingBlanket() { |
- if (overlay_agent_) |
- overlay_agent_->HideReloadingBlanket(); |
+ if (overlay_) |
+ overlay_->HideReloadingBlanket(); |
} |
void WebDevToolsAgentImpl::SetCPUThrottlingRate(double rate) { |
@@ -527,7 +537,7 @@ |
void WebDevToolsAgentImpl::InspectElementAt( |
int session_id, |
const WebPoint& point_in_root_frame) { |
- if (!overlay_agent_ || !session_ || session_->SessionId() != session_id) |
+ if (!dom_agent_ || !session_ || session_->SessionId() != session_id) |
return; |
HitTestRequest::HitTestRequestType hit_type = |
HitTestRequest::kMove | HitTestRequest::kReadOnly | |
@@ -547,7 +557,7 @@ |
Node* node = result.InnerNode(); |
if (!node && web_local_frame_impl_->GetFrame()->GetDocument()) |
node = web_local_frame_impl_->GetFrame()->GetDocument()->documentElement(); |
- overlay_agent_->Inspect(node); |
+ dom_agent_->Inspect(node); |
} |
void WebDevToolsAgentImpl::FailedToRequestDevTools() { |
@@ -564,8 +574,19 @@ |
} |
void WebDevToolsAgentImpl::PageLayoutInvalidated(bool resized) { |
- if (overlay_agent_) |
- overlay_agent_->PageLayoutInvalidated(resized); |
+ if (overlay_) |
+ overlay_->PageLayoutInvalidated(resized); |
+} |
+ |
+void WebDevToolsAgentImpl::ConfigureOverlay(bool suspended, |
+ const String& message) { |
+ if (!overlay_) |
+ return; |
+ overlay_->SetPausedInDebuggerMessage(message); |
+ if (suspended) |
+ overlay_->Suspend(); |
+ else |
+ overlay_->Resume(); |
} |
void WebDevToolsAgentImpl::WaitForCreateWindow(LocalFrame* frame) { |
@@ -578,10 +599,10 @@ |
WebString WebDevToolsAgentImpl::EvaluateInWebInspectorOverlay( |
const WebString& script) { |
- if (!overlay_agent_) |
+ if (!overlay_) |
return WebString(); |
- return overlay_agent_->EvaluateInOverlayForTest(script); |
+ return overlay_->EvaluateInOverlayForTest(script); |
} |
bool WebDevToolsAgentImpl::CacheDisabled() { |