summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/renderer_host/browser_render_process_host.cc1
-rw-r--r--chrome/renderer/devtools_agent.cc1
-rw-r--r--chrome/renderer/render_view.cc20
-rw-r--r--webkit/glue/devtools/js/net_agent.js19
-rw-r--r--webkit/glue/devtools/net_agent.h3
-rw-r--r--webkit/glue/devtools/net_agent_impl.cc84
-rw-r--r--webkit/glue/devtools/net_agent_impl.h23
-rw-r--r--webkit/glue/webdevtoolsagent_impl.cc10
-rw-r--r--webkit/glue/webview_impl.cc11
9 files changed, 62 insertions, 110 deletions
diff --git a/chrome/browser/renderer_host/browser_render_process_host.cc b/chrome/browser/renderer_host/browser_render_process_host.cc
index 141bf3e..2082c0c 100644
--- a/chrome/browser/renderer_host/browser_render_process_host.cc
+++ b/chrome/browser/renderer_host/browser_render_process_host.cc
@@ -270,7 +270,6 @@ bool BrowserRenderProcessHost::Init() {
switches::kEnableWebWorkers,
switches::kEnableStatsTable,
switches::kEnableExtensions,
- switches::kEnableOutOfProcessDevTools,
};
for (size_t i = 0; i < arraysize(switch_names); ++i) {
diff --git a/chrome/renderer/devtools_agent.cc b/chrome/renderer/devtools_agent.cc
index 046b755..633203c 100644
--- a/chrome/renderer/devtools_agent.cc
+++ b/chrome/renderer/devtools_agent.cc
@@ -61,7 +61,6 @@ void DevToolsAgent::OnRpcMessage(const std::string& raw_msg) {
void DevToolsAgent::OnInspectElement(int x, int y) {
WebDevToolsAgent* web_agent = GetWebAgent();
if (web_agent) {
- web_agent->Attach();
web_agent->InspectElement(x, y);
}
}
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index 9cef455..b4fc6d5 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -299,19 +299,13 @@ void RenderView::Init(gfx::NativeViewId parent_hwnd,
decrement_shared_popup_at_destruction_ = false;
}
- const CommandLine& command_line = *CommandLine::ForCurrentProcess();
-
- bool dev_tools_enabled = command_line.HasSwitch(
- switches::kEnableOutOfProcessDevTools);
- if (dev_tools_enabled)
- devtools_agent_.reset(new DevToolsAgent(routing_id, this));
+ devtools_agent_.reset(new DevToolsAgent(routing_id, this));
webwidget_ = WebView::Create(this, webkit_prefs);
- if (dev_tools_enabled)
- devtools_agent_filter_ = new DevToolsAgentFilter(
- webview()->GetWebDevToolsAgent(),
- routing_id);
+ devtools_agent_filter_ = new DevToolsAgentFilter(
+ webview()->GetWebDevToolsAgent(),
+ routing_id);
#if defined(OS_LINUX)
// We have to enable ourselves as the editor delegate on linux so we can copy
@@ -340,6 +334,7 @@ void RenderView::Init(gfx::NativeViewId parent_hwnd,
host_window_ = parent_hwnd;
modal_dialog_event_.reset(modal_dialog_event);
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess();
if (command_line.HasSwitch(switches::kDomAutomationController))
enabled_bindings_ |= BindingsPolicy::DOM_AUTOMATION;
disable_popup_blocking_ =
@@ -347,8 +342,7 @@ void RenderView::Init(gfx::NativeViewId parent_hwnd,
debug_message_handler_ = new DebugMessageHandler(this);
render_thread_->AddFilter(debug_message_handler_);
- if (dev_tools_enabled)
- render_thread_->AddFilter(devtools_agent_filter_);
+ render_thread_->AddFilter(devtools_agent_filter_);
}
void RenderView::OnMessageReceived(const IPC::Message& message) {
@@ -359,7 +353,7 @@ void RenderView::OnMessageReceived(const IPC::Message& message) {
// If this is developer tools renderer intercept tools messages first.
if (devtools_client_.get() && devtools_client_->OnMessageReceived(message))
return;
- if (devtools_agent_.get() && devtools_agent_->OnMessageReceived(message))
+ if (devtools_agent_->OnMessageReceived(message))
return;
IPC_BEGIN_MESSAGE_MAP(RenderView, message)
diff --git a/webkit/glue/devtools/js/net_agent.js b/webkit/glue/devtools/js/net_agent.js
index 64ef4a6..00b511c 100644
--- a/webkit/glue/devtools/js/net_agent.js
+++ b/webkit/glue/devtools/js/net_agent.js
@@ -21,6 +21,8 @@ devtools.NetAgent = function() {
goog.bind(this.didReceiveResponse, this);
RemoteNetAgent.DidFinishLoading =
goog.bind(this.didFinishLoading, this);
+ RemoteNetAgent.DidFailLoading =
+ goog.bind(this.didFailLoading, this);
};
@@ -136,5 +138,20 @@ devtools.NetAgent.prototype.didFinishLoading = function(identifier, value) {
}
resource.endTime = value.endTime;
resource.finished = true;
- resource.failed = !!value.errorCode;
+ resource.failed = false;
+};
+
+
+/**
+ * @see NetAgentDelegate.
+ * {@inheritDoc}.
+ */
+devtools.NetAgent.prototype.didFailLoading = function(identifier, value) {
+ var resource = this.resources_[identifier];
+ if (!resource) {
+ return;
+ }
+ resource.endTime = value.endTime;
+ resource.finished = false;
+ resource.failed = true;
};
diff --git a/webkit/glue/devtools/net_agent.h b/webkit/glue/devtools/net_agent.h
index 38db57d..87459f0 100644
--- a/webkit/glue/devtools/net_agent.h
+++ b/webkit/glue/devtools/net_agent.h
@@ -31,6 +31,9 @@ DEFINE_RPC_CLASS(NetAgent, NET_AGENT_STRUCT)
errors */ \
METHOD2(DidFinishLoading, int /* identifier */, Value /* response */) \
\
+ /* Notifies the delegate that resource loading has failed. */ \
+ METHOD2(DidFailLoading, int /* identifier */, Value /* response */) \
+ \
/* Response to the async call. */ \
METHOD2(GetResourceContentResult, int /* call_id */, std::string /* content */)
diff --git a/webkit/glue/devtools/net_agent_impl.cc b/webkit/glue/devtools/net_agent_impl.cc
index 5aba9bb..a34667f 100644
--- a/webkit/glue/devtools/net_agent_impl.cc
+++ b/webkit/glue/devtools/net_agent_impl.cc
@@ -33,47 +33,28 @@ using namespace WebCore;
NetAgentImpl::NetAgentImpl(NetAgentDelegate* delegate)
: delegate_(delegate),
document_(NULL),
- main_loader_(NULL),
- last_cached_identifier_(-2),
- attached_(false) {
+ last_cached_identifier_(-2) {
}
NetAgentImpl::~NetAgentImpl() {
SetDocument(NULL);
- DidCommitMainResourceLoad();
- deleteAllValues(pending_resources_);
+ for (CachedResources::iterator it = pending_resources_.begin();
+ it != pending_resources_.end(); ++it) {
+ delete it->second;
+ }
pending_resources_.clear();
}
void NetAgentImpl::SetDocument(Document* doc) {
+// loaders_.clear();
document_ = doc;
}
-void NetAgentImpl::Attach() {
- for (FinishedResources::iterator it = finished_resources_.begin();
- it != finished_resources_.end(); ++it) {
- delegate_->DidFinishLoading(it->first, *it->second);
- }
- attached_ = true;
-}
-
-void NetAgentImpl::Detach() {
- attached_ = false;
-}
-
-void NetAgentImpl::DidCommitMainResourceLoad() {
- for (FinishedResources::iterator it = finished_resources_.begin();
- it != finished_resources_.end(); ++it) {
- delete it->second;
- }
- finished_resources_.clear();
- main_loader_ = NULL;
-}
-
void NetAgentImpl::AssignIdentifierToRequest(
DocumentLoader* loader,
int identifier,
const ResourceRequest& request) {
+ loaders_.set(identifier, loader);
}
void NetAgentImpl::WillSendRequest(
@@ -91,22 +72,18 @@ void NetAgentImpl::WillSendRequest(
webkit_glue::StringToStdString(url.lastPathComponent()));
resource->Set(L"requestHeaders",
BuildValueForHeaders(request.httpHeaderFields()));
+ delegate_->WillSendRequest(identifier, *resource);
pending_resources_.set(identifier, resource);
-
- if (attached_) {
- delegate_->WillSendRequest(identifier, *resource);
- }
}
void NetAgentImpl::DidReceiveResponse(
DocumentLoader* loader,
int identifier,
const ResourceResponse &response) {
+ KURL url = response.url();
if (!pending_resources_.contains(identifier)) {
return;
}
-
- KURL url = response.url();
DictionaryValue* resource = pending_resources_.get(identifier);
resource->SetReal(L"responseReceivedTime", WTF::currentTime());
resource->SetString(L"url",
@@ -121,9 +98,7 @@ void NetAgentImpl::DidReceiveResponse(
resource->Set(L"responseHeaders",
BuildValueForHeaders(response.httpHeaderFields()));
- if (attached_) {
- delegate_->DidReceiveResponse(identifier, *resource);
- }
+ delegate_->DidReceiveResponse(identifier, *resource);
}
void NetAgentImpl::DidReceiveContentLength(
@@ -138,31 +113,11 @@ void NetAgentImpl::DidFinishLoading(
if (!pending_resources_.contains(identifier)) {
return;
}
-
- // This is the first command being dispatched after
- // DidCommitMainResourceLoad, we know that the first resource to be reported
- // as loaded is main resource.
- if (!main_loader_.get()) {
- main_loader_ = loader;
- }
-
DictionaryValue* resource = pending_resources_.get(identifier);
resource->SetReal(L"endTime", WTF::currentTime());
-
+ delegate_->DidFinishLoading(identifier, *resource);
pending_resources_.remove(identifier);
- finished_resources_.append(std::make_pair(identifier, resource));
-
- // Start removing resources from the cache once there are too many of them.
- if (finished_resources_.size() > 200) {
- for (int i = 0; i < 50; ++i) {
- delete finished_resources_[i].second;
- }
- finished_resources_.remove(0, 50);
- }
-
- if (attached_) {
- delegate_->DidFinishLoading(identifier, *resource);
- }
+ delete resource;
}
void NetAgentImpl::DidFailLoading(
@@ -173,10 +128,13 @@ void NetAgentImpl::DidFailLoading(
return;
}
DictionaryValue* resource = pending_resources_.get(identifier);
+ resource->SetReal(L"endTime", WTF::currentTime());
resource->SetInteger(L"errorCode", error.errorCode());
resource->SetString(L"localizedDescription",
webkit_glue::StringToStdString(error.localizedDescription()));
- DidFinishLoading(loader, identifier);
+ delegate_->DidFailLoading(identifier, *resource);
+ pending_resources_.remove(identifier);
+ delete resource;
}
void NetAgentImpl::DidLoadResourceFromMemoryCache(
@@ -185,6 +143,7 @@ void NetAgentImpl::DidLoadResourceFromMemoryCache(
const ResourceResponse& response,
int length) {
int identifier = last_cached_identifier_--;
+ loaders_.set(identifier, loader);
}
void NetAgentImpl::GetResourceContent(
@@ -194,11 +153,16 @@ void NetAgentImpl::GetResourceContent(
if (!document_) {
return;
}
+ CachedLoaders::iterator it = loaders_.find(identifier);
+ if (it == loaders_.end() || !it->second) {
+ return;
+ }
+ RefPtr<DocumentLoader> loader = it->second;
String source;
- if (main_loader_.get() && main_loader_->requestURL() == url) {
- RefPtr<SharedBuffer> buffer = main_loader_->mainResourceData();
+ if (url == loader->requestURL()) {
+ RefPtr<SharedBuffer> buffer = loader->mainResourceData();
String text_encoding_name = document_->inputEncoding();
if (buffer) {
WebCore::TextEncoding encoding(text_encoding_name);
diff --git a/webkit/glue/devtools/net_agent_impl.h b/webkit/glue/devtools/net_agent_impl.h
index 893c4b5..94f5e20 100644
--- a/webkit/glue/devtools/net_agent_impl.h
+++ b/webkit/glue/devtools/net_agent_impl.h
@@ -5,12 +5,9 @@
#ifndef WEBKIT_GLUE_DEVTOOLS_NET_AGENT_IMPL_H_
#define WEBKIT_GLUE_DEVTOOLS_NET_AGENT_IMPL_H_
-#include <utility>
-
#include <wtf/HashMap.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
-#include <wtf/Vector.h>
#include "webkit/glue/devtools/net_agent.h"
@@ -38,15 +35,6 @@ class NetAgentImpl : public NetAgent {
// Initializes net agent with the given document.
void SetDocument(WebCore::Document* document);
- // Tells agent it has attached client.
- void Attach();
-
- // Tells agent it has no attached client.
- void Detach();
-
- // Tells agent that new load has been committed.
- void DidCommitMainResourceLoad();
-
// NetAgent implementation.
void GetResourceContent(int call_id, int identifier,
const WebCore::String& request_url);
@@ -85,14 +73,13 @@ class NetAgentImpl : public NetAgent {
NetAgentDelegate* delegate_;
WebCore::Document* document_;
- RefPtr<WebCore::DocumentLoader> main_loader_;
typedef HashMap<int, DictionaryValue*, DefaultHash<int>::Hash,
- WTF::UnsignedWithZeroKeyHashTraits<int> > ResourcesMap;
- typedef Vector<std::pair<int, DictionaryValue*> > FinishedResources;
- ResourcesMap pending_resources_;
- FinishedResources finished_resources_;
+ WTF::UnsignedWithZeroKeyHashTraits<int> > CachedResources;
+ typedef HashMap<int, RefPtr<WebCore::DocumentLoader>, DefaultHash<int>::Hash,
+ WTF::UnsignedWithZeroKeyHashTraits<int> > CachedLoaders;
+ CachedResources pending_resources_;
+ CachedLoaders loaders_;
int last_cached_identifier_;
- bool attached_;
DISALLOW_COPY_AND_ASSIGN(NetAgentImpl);
};
diff --git a/webkit/glue/webdevtoolsagent_impl.cc b/webkit/glue/webdevtoolsagent_impl.cc
index 5602f45..4a6201f 100644
--- a/webkit/glue/webdevtoolsagent_impl.cc
+++ b/webkit/glue/webdevtoolsagent_impl.cc
@@ -49,9 +49,6 @@ WebDevToolsAgentImpl::WebDevToolsAgentImpl(
dom_agent_delegate_stub_.set(new DomAgentDelegateStub(this));
net_agent_delegate_stub_.set(new NetAgentDelegateStub(this));
tools_agent_delegate_stub_.set(new ToolsAgentDelegateStub(this));
-
- // Sniff for requests from the beginning, do not wait for attach.
- net_agent_impl_.set(new NetAgentImpl(net_agent_delegate_stub_.get()));
}
WebDevToolsAgentImpl::~WebDevToolsAgentImpl() {
@@ -66,6 +63,7 @@ void WebDevToolsAgentImpl::Attach() {
debugger_agent_delegate_stub_.get(),
this));
dom_agent_impl_.set(new DomAgentImpl(dom_agent_delegate_stub_.get()));
+ net_agent_impl_.set(new NetAgentImpl(net_agent_delegate_stub_.get()));
// We are potentially attaching to the running page -> init agents with
// Document if any.
@@ -86,14 +84,13 @@ void WebDevToolsAgentImpl::Attach() {
it->line_no);
}
- net_agent_impl_->Attach();
attached_ = true;
}
void WebDevToolsAgentImpl::Detach() {
debugger_agent_impl_.set(NULL);
dom_agent_impl_.set(NULL);
- net_agent_impl_->Detach();
+ net_agent_impl_.set(NULL);
attached_ = false;
}
@@ -119,9 +116,6 @@ void WebDevToolsAgentImpl::DidCommitLoadForFrame(
WebViewImpl* webview,
WebFrame* frame,
bool is_new_navigation) {
- if (webview->GetMainFrame() == frame) {
- net_agent_impl_->DidCommitMainResourceLoad();
- }
if (!attached_) {
return;
}
diff --git a/webkit/glue/webview_impl.cc b/webkit/glue/webview_impl.cc
index 78ae88b..c98ac6f 100644
--- a/webkit/glue/webview_impl.cc
+++ b/webkit/glue/webview_impl.cc
@@ -332,14 +332,9 @@ WebView* WebView::Create(WebViewDelegate* delegate,
// Set the delegate after initializing the main frame, to avoid trying to
// respond to notifications before we're fully initialized.
instance->delegate_ = delegate;
-
- WebDevToolsAgentDelegate* tools_delegate =
- delegate->GetWebDevToolsAgentDelegate();
- if (tools_delegate) {
- instance->devtools_agent_.reset(
- new WebDevToolsAgentImpl(instance, tools_delegate));
- }
-
+ instance->devtools_agent_.reset(
+ new WebDevToolsAgentImpl(instance,
+ delegate->GetWebDevToolsAgentDelegate()));
// Restrict the access to the local file system
// (see WebView.mm WebView::_commonInitializationWithFrameName).
FrameLoader::setLocalLoadPolicy(