diff options
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/loadtimes_extension_bindings.cc | 4 | ||||
-rw-r--r-- | chrome/renderer/navigation_state.h | 8 | ||||
-rw-r--r-- | chrome/renderer/render_view.cc | 59 |
3 files changed, 70 insertions, 1 deletions
diff --git a/chrome/renderer/loadtimes_extension_bindings.cc b/chrome/renderer/loadtimes_extension_bindings.cc index 151e78d..1ad71ed 100644 --- a/chrome/renderer/loadtimes_extension_bindings.cc +++ b/chrome/renderer/loadtimes_extension_bindings.cc @@ -134,6 +134,10 @@ class LoadTimesExtensionWrapper : public v8::Extension { load_times->Set( v8::String::New("wasNpnNegotiated"), v8::Boolean::New(navigation_state->was_npn_negotiated())); + load_times->Set( + v8::String::New("wasAlternateProtocolAvailable"), + v8::Boolean::New( + navigation_state->was_alternate_protocol_available())); return load_times; } } diff --git a/chrome/renderer/navigation_state.h b/chrome/renderer/navigation_state.h index ef3a54e..694057d 100644 --- a/chrome/renderer/navigation_state.h +++ b/chrome/renderer/navigation_state.h @@ -223,6 +223,13 @@ class NavigationState : public WebKit::WebDataSource::ExtraData { void set_was_npn_negotiated(bool value) { was_npn_negotiated_ = value; } bool was_npn_negotiated() const { return was_npn_negotiated_; } + void set_was_alternate_protocol_available(bool value) { + was_alternate_protocol_available_ = value; + } + bool was_alternate_protocol_available() const { + return was_alternate_protocol_available_; + } + void set_was_fetched_via_proxy(bool value) { was_fetched_via_proxy_ = value; } @@ -287,6 +294,7 @@ class NavigationState : public WebKit::WebDataSource::ExtraData { bool was_npn_negotiated_; bool was_fetched_via_proxy_; bool was_translated_; + bool was_alternate_protocol_available_; DISALLOW_COPY_AND_ASSIGN(NavigationState); }; diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index 59f600e..aa6fc64 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -3005,6 +3005,8 @@ void RenderView::didReceiveResponse( // Record page load flags. navigation_state->set_was_fetched_via_spdy(response.wasFetchedViaSPDY()); navigation_state->set_was_npn_negotiated(response.wasNpnNegotiated()); + navigation_state->set_was_alternate_protocol_available( + response.wasAlternateProtocolAvailable()); navigation_state->set_was_fetched_via_proxy(response.wasFetchedViaProxy()); // Consider loading an alternate error page for 404 responses. @@ -4715,7 +4717,12 @@ void RenderView::DumpLoadHistograms() const { // and StartToFinish, consider removing one or the other. static bool use_spdy_histogram(FieldTrialList::Find("SpdyImpact") && !FieldTrialList::Find("SpdyImpact")->group_name().empty()); - if (use_spdy_histogram && navigation_state->was_npn_negotiated()) { + // Spdy requests triggered by alternate protocol are excluded here. + // This is because when alternate protocol is avaiable, FieldTrial will + // either use npn_spdy or pure http, not npn_http via TLS. That will cause + // bias for npn_spdy and npn_http. + if (use_spdy_histogram && navigation_state->was_npn_negotiated() && + !navigation_state->was_alternate_protocol_available()) { UMA_HISTOGRAM_ENUMERATION( FieldTrial::MakeName("PLT.Abandoned", "SpdyImpact"), abandoned_page ? 1 : 0, 2); @@ -4747,6 +4754,56 @@ void RenderView::DumpLoadHistograms() const { } } + // Histograms to compare the impact of alternate protocol: when the + // protocol(spdy) is used vs. when it is ignored and http is used. + if (navigation_state->was_alternate_protocol_available()) { + if (!navigation_state->was_npn_negotiated()) { + // This means that even there is alternate protocols for npn_http or + // npn_spdy, they are not taken (due to the fieldtrial). + switch (load_type) { + case NavigationState::LINK_LOAD_NORMAL: + PLT_HISTOGRAM( + "PLT.StartToFinish_LinkLoadNormal_AlternateProtocol_http", + start_to_finish); + PLT_HISTOGRAM( + "PLT.StartToCommit_LinkLoadNormal_AlternateProtocol_http", + start_to_commit); + break; + case NavigationState::NORMAL_LOAD: + PLT_HISTOGRAM( + "PLT.StartToFinish_NormalLoad_AlternateProtocol_http", + start_to_finish); + PLT_HISTOGRAM( + "PLT.StartToCommit_NormalLoad_AlternateProtocol_http", + start_to_commit); + break; + default: + break; + } + } else if (navigation_state->was_fetched_via_spdy()) { + switch (load_type) { + case NavigationState::LINK_LOAD_NORMAL: + PLT_HISTOGRAM( + "PLT.StartToFinish_LinkLoadNormal_AlternateProtocol_spdy", + start_to_finish); + PLT_HISTOGRAM( + "PLT.StartToCommit_LinkLoadNormal_AlternateProtocol_spdy", + start_to_commit); + break; + case NavigationState::NORMAL_LOAD: + PLT_HISTOGRAM( + "PLT.StartToFinish_NormalLoad_AlternateProtocol_spdy", + start_to_finish); + PLT_HISTOGRAM( + "PLT.StartToCommit_NormalLoad_AlternateProtocol_spdy", + start_to_commit); + break; + default: + break; + } + } + } + // Record page load time and abandonment rates for proxy cases. GURL url = GURL(main_frame->url()); if (navigation_state->was_fetched_via_proxy()) { |