Index: chrome/browser/prerender/prerender_manager.cc |
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc |
index bee549a950864481555ff56c6b7e9385a3053c21..acfa0f871f95c3c8349a2cf5e1ee9e1cac2451d7 100644 |
--- a/chrome/browser/prerender/prerender_manager.cc |
+++ b/chrome/browser/prerender/prerender_manager.cc |
@@ -241,7 +241,9 @@ PrerenderManager::PrerenderManager(Profile* profile, |
last_prerender_start_time_(GetCurrentTimeTicks() - |
base::TimeDelta::FromMilliseconds(kMinTimeBetweenPrerendersMs)), |
prerender_history_(new PrerenderHistory(kHistoryLength)), |
- histograms_(new PrerenderHistograms()) { |
+ histograms_(new PrerenderHistograms()), |
+ profile_network_bytes_(0), |
+ last_recorded_profile_network_bytes_(0) { |
// There are some assumptions that the PrerenderManager is on the UI thread. |
// Any other checks simply make sure that the PrerenderManager is accessed on |
// the same thread that it was created on. |
@@ -1767,4 +1769,20 @@ void PrerenderManager::HangSessionStorageMergesForTesting() { |
g_hang_session_storage_merges_for_testing = true; |
} |
+void PrerenderManager::RecordNetworkBytes(bool used, int64 prerender_bytes) { |
+ if (!ActuallyPrerendering()) |
+ return; |
+ int64 recent_profile_bytes = |
+ profile_network_bytes_ - last_recorded_profile_network_bytes_; |
+ last_recorded_profile_network_bytes_ = profile_network_bytes_; |
+ DCHECK_GE(recent_profile_bytes, 0); |
+ histograms_->RecordNetworkBytes(used, prerender_bytes, recent_profile_bytes); |
+} |
+ |
+void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64 bytes) { |
+ DCHECK_GE(bytes, 0); |
+ if (IsEnabled() && ActuallyPrerendering()) |
+ profile_network_bytes_ += bytes; |
+} |
+ |
} // namespace prerender |