Index: chrome/renderer/render_view.cc |
=================================================================== |
--- chrome/renderer/render_view.cc (revision 50874) |
+++ chrome/renderer/render_view.cc (working copy) |
@@ -3005,6 +3005,8 @@ |
// 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 @@ |
// 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 @@ |
} |
} |
+ // 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()) { |