Index: webkit/glue/webdevtoolsagent_impl.cc |
=================================================================== |
--- webkit/glue/webdevtoolsagent_impl.cc (revision 12355) |
+++ webkit/glue/webdevtoolsagent_impl.cc (working copy) |
@@ -19,8 +19,10 @@ |
#include "webkit/glue/devtools/dom_agent_impl.h" |
#include "webkit/glue/devtools/net_agent_impl.h" |
#include "webkit/glue/glue_util.h" |
+#include "webkit/glue/webdatasource.h" |
#include "webkit/glue/webdevtoolsagent_delegate.h" |
#include "webkit/glue/webdevtoolsagent_impl.h" |
+#include "webkit/glue/weburlrequest.h" |
#include "webkit/glue/webview_impl.h" |
using WebCore::Document; |
@@ -34,7 +36,8 @@ |
WebDevToolsAgentDelegate* delegate) |
: delegate_(delegate), |
web_view_impl_(web_view_impl), |
- document_(NULL) { |
+ document_(NULL), |
+ enabled_(false) { |
dom_agent_delegate_stub_.reset(new DomAgentDelegateStub(this)); |
net_agent_delegate_stub_.reset(new NetAgentDelegateStub(this)); |
tools_agent_delegate_stub_.reset(new ToolsAgentDelegateStub(this)); |
@@ -43,23 +46,19 @@ |
WebDevToolsAgentImpl::~WebDevToolsAgentImpl() { |
} |
-void WebDevToolsAgentImpl::SetDomAgentEnabled(bool enabled) { |
- if (enabled && !dom_agent_impl_.get()) { |
+void WebDevToolsAgentImpl::SetEnabled(bool enabled) { |
+ if (enabled && !enabled_) { |
dom_agent_impl_.reset(new DomAgentImpl(dom_agent_delegate_stub_.get())); |
- if (document_) |
+ net_agent_impl_.reset(new NetAgentImpl(net_agent_delegate_stub_.get())); |
+ if (document_) { |
dom_agent_impl_->SetDocument(document_); |
- } else if (!enabled && dom_agent_impl_.get()) { |
+ net_agent_impl_->SetDocument(document_); |
+ } |
+ enabled_ = true; |
+ } else if (!enabled) { |
dom_agent_impl_.reset(NULL); |
- } |
-} |
- |
-void WebDevToolsAgentImpl::SetNetAgentEnabled(bool enabled) { |
- if (enabled && !net_agent_impl_.get()) { |
- net_agent_impl_.reset(new NetAgentImpl(net_agent_delegate_stub_.get())); |
- if (document_) |
- net_agent_impl_->SetDocument(document_); |
- } else if (!enabled && net_agent_impl_.get()) { |
net_agent_impl_.reset(NULL); |
+ enabled_ = false; |
} |
} |
@@ -70,14 +69,32 @@ |
} else { |
document_ = NULL; |
} |
- if (dom_agent_impl_.get()) |
+ if (enabled_) { |
dom_agent_impl_->SetDocument(document_); |
- if (net_agent_impl_.get()) |
net_agent_impl_->SetDocument(document_); |
+ } |
} |
+void WebDevToolsAgentImpl::DidCommitLoadForFrame( |
+ WebViewImpl* webview, |
+ WebFrame* frame, |
+ bool is_new_navigation) { |
+ if (!enabled_) { |
+ return; |
+ } |
+ dom_agent_impl_->DiscardBindings(); |
+ WebDataSource* ds = frame->GetDataSource(); |
+ const WebRequest& request = ds->GetRequest(); |
+ GURL url = ds->HasUnreachableURL() ? |
+ ds->GetUnreachableURL() : |
+ request.GetURL(); |
+ tools_agent_delegate_stub_->FrameNavigate( |
+ url.possibly_invalid_spec(), |
+ webview->GetMainFrame() == frame); |
+} |
+ |
void WebDevToolsAgentImpl::HighlightDOMNode(int node_id) { |
- if (!dom_agent_impl_.get()) |
+ if (!enabled_) |
return; |
Node* node = dom_agent_impl_->GetNodeForId(node_id); |
if (!node) |
@@ -95,13 +112,15 @@ |
const std::string& raw_msg) { |
OwnPtr<ListValue> message( |
static_cast<ListValue*>(DevToolsRpc::ParseMessage(raw_msg))); |
- if (dom_agent_impl_.get() && |
- DomAgentDispatch::Dispatch(dom_agent_impl_.get(), *message.get())) |
+ if (ToolsAgentDispatch::Dispatch(this, *message.get())) |
return; |
- if (net_agent_impl_.get() && |
- NetAgentDispatch::Dispatch(net_agent_impl_.get(), *message.get())) |
+ |
+ if (!enabled_) |
return; |
- ToolsAgentDispatch::Dispatch(this, *message.get()); |
+ if (DomAgentDispatch::Dispatch(dom_agent_impl_.get(), *message.get())) |
+ return; |
+ if (NetAgentDispatch::Dispatch(net_agent_impl_.get(), *message.get())) |
+ return; |
} |
void WebDevToolsAgentImpl::InspectElement(int x, int y) { |
@@ -109,7 +128,7 @@ |
if (!node) |
return; |
- SetDomAgentEnabled(true); |
+ SetEnabled(true); |
int node_id = dom_agent_impl_->PushNodePathToClient(node); |
tools_agent_delegate_stub_->UpdateFocusedNode(node_id); |
} |