summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authormbelshe@google.com <mbelshe@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-11 21:34:46 +0000
committermbelshe@google.com <mbelshe@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-11 21:34:46 +0000
commit9fc38b3ac8e8c9cfad867a1177d5b295a7646b57 (patch)
treedb1f4d7ba7b87cf2f006f608448ba92ba596fe64 /chrome
parente1c16492b1113c01e7467eaa526a01db85bf6470 (diff)
downloadchromium_src-9fc38b3ac8e8c9cfad867a1177d5b295a7646b57.zip
chromium_src-9fc38b3ac8e8c9cfad867a1177d5b295a7646b57.tar.gz
chromium_src-9fc38b3ac8e8c9cfad867a1177d5b295a7646b57.tar.bz2
Enable JS detection of whether SPDY was used to load a web page.
Augments the loadTimes() API with a new field, "wasFetchedViaSpdy". BUG=31615 TEST=flip_network_transaction_unittest Review URL: http://codereview.chromium.org/518039 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35943 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc4
-rw-r--r--chrome/browser/renderer_host/resource_dispatcher_host.cc2
-rw-r--r--chrome/common/render_messages.h6
-rw-r--r--chrome/renderer/loadtimes_extension_bindings.cc4
-rw-r--r--chrome/renderer/navigation_state.h9
5 files changed, 22 insertions, 3 deletions
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index 1363afd..f1a48f1 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -12,6 +12,7 @@
#include "app/l10n_util.h"
#include "app/resource_bundle.h"
#include "base/json/json_reader.h"
+#include "base/stats_counters.h"
#include "base/string_util.h"
#include "base/time.h"
#include "base/waitable_event.h"
@@ -1066,6 +1067,9 @@ void RenderViewHost::OnMsgDidLoadResourceFromMemoryCache(
const std::string& frame_origin,
const std::string& main_frame_origin,
const std::string& security_info) {
+ static StatsCounter cache("WebKit.CacheHit");
+ cache.Increment();
+
RenderViewHostDelegate::Resource* resource_delegate =
delegate_->GetResourceDelegate();
if (resource_delegate) {
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.cc b/chrome/browser/renderer_host/resource_dispatcher_host.cc
index 417ceb1..997b90c 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host.cc
+++ b/chrome/browser/renderer_host/resource_dispatcher_host.cc
@@ -238,6 +238,8 @@ void PopulateResourceResponse(URLRequest* request,
response->response_head.filter_policy = filter_policy;
response->response_head.content_length = request->GetExpectedContentSize();
request->GetMimeType(&response->response_head.mime_type);
+ response->response_head.was_fetched_via_spdy =
+ request->was_fetched_via_spdy();
appcache::AppCacheInterceptor::GetExtraResponseInfo(
request,
&response->response_head.appcache_id,
diff --git a/chrome/common/render_messages.h b/chrome/common/render_messages.h
index e21c415..fc4a994 100644
--- a/chrome/common/render_messages.h
+++ b/chrome/common/render_messages.h
@@ -1339,6 +1339,7 @@ struct ParamTraits<webkit_glue::ResourceLoaderBridge::ResponseInfo> {
WriteParam(m, p.content_length);
WriteParam(m, p.appcache_id);
WriteParam(m, p.appcache_manifest_url);
+ WriteParam(m, p.was_fetched_via_spdy);
}
static bool Read(const Message* m, void** iter, param_type* r) {
return
@@ -1350,7 +1351,8 @@ struct ParamTraits<webkit_glue::ResourceLoaderBridge::ResponseInfo> {
ReadParam(m, iter, &r->security_info) &&
ReadParam(m, iter, &r->content_length) &&
ReadParam(m, iter, &r->appcache_id) &&
- ReadParam(m, iter, &r->appcache_manifest_url);
+ ReadParam(m, iter, &r->appcache_manifest_url) &&
+ ReadParam(m, iter, &r->was_fetched_via_spdy);
}
static void Log(const param_type& p, std::wstring* l) {
l->append(L"(");
@@ -1371,6 +1373,8 @@ struct ParamTraits<webkit_glue::ResourceLoaderBridge::ResponseInfo> {
LogParam(p.appcache_id, l);
l->append(L", ");
LogParam(p.appcache_manifest_url, l);
+ l->append(L", ");
+ LogParam(p.was_fetched_via_spdy, l);
l->append(L")");
}
};
diff --git a/chrome/renderer/loadtimes_extension_bindings.cc b/chrome/renderer/loadtimes_extension_bindings.cc
index 8688a56..33d46d7 100644
--- a/chrome/renderer/loadtimes_extension_bindings.cc
+++ b/chrome/renderer/loadtimes_extension_bindings.cc
@@ -128,7 +128,9 @@ class LoadTimesExtensionWrapper : public v8::Extension {
load_times->Set(
v8::String::New("navigationType"),
v8::String::New(GetNavigationType(data_source->navigationType())));
-
+ load_times->Set(
+ v8::String::New("wasFetchedViaSpdy"),
+ v8::Boolean::New(navigation_state->was_fetched_via_spdy()));
return load_times;
}
}
diff --git a/chrome/renderer/navigation_state.h b/chrome/renderer/navigation_state.h
index 90c1270..61f63ac 100644
--- a/chrome/renderer/navigation_state.h
+++ b/chrome/renderer/navigation_state.h
@@ -190,6 +190,10 @@ class NavigationState : public WebKit::WebDataSource::ExtraData {
return cache_policy_override_set_;
}
+ // Indicator if SPDY was used as part of this page load.
+ void set_was_fetched_via_spdy(bool value) { was_fetched_via_spdy_ = value; }
+ bool was_fetched_via_spdy() const { return was_fetched_via_spdy_; }
+
private:
NavigationState(PageTransition::Type transition_type,
const base::Time& request_time,
@@ -204,7 +208,8 @@ class NavigationState : public WebKit::WebDataSource::ExtraData {
postpone_loading_data_(false),
cache_policy_override_set_(false),
cache_policy_override_(WebKit::WebURLRequest::UseProtocolCachePolicy),
- user_script_idle_scheduler_(NULL) {
+ user_script_idle_scheduler_(NULL),
+ was_fetched_via_spdy_(false) {
}
PageTransition::Type transition_type_;
@@ -232,6 +237,8 @@ class NavigationState : public WebKit::WebDataSource::ExtraData {
scoped_ptr<UserScriptIdleScheduler> user_script_idle_scheduler_;
+ bool was_fetched_via_spdy_;
+
DISALLOW_COPY_AND_ASSIGN(NavigationState);
};