Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: chrome/browser/prerender/prerender_tab_helper.cc

Issue 11028037: Fix prerender histograms for multiple prerender case. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ... whitespace Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/prerender/prerender_tab_helper.h" 5 #include "chrome/browser/prerender/prerender_tab_helper.h"
6 6
7 #include "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "base/string_number_conversions.h" 8 #include "base/string_number_conversions.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "chrome/browser/prerender/prerender_histograms.h" 10 #include "chrome/browser/prerender/prerender_histograms.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 if (bitmap_web_contents_ != web_contents) 83 if (bitmap_web_contents_ != web_contents)
84 return; 84 return;
85 85
86 if (bitmap_type == BITMAP_SWAP_IN) 86 if (bitmap_type == BITMAP_SWAP_IN)
87 bitmap_.swap(bitmap); 87 bitmap_.swap(bitmap);
88 88
89 if (bitmap_type == BITMAP_ON_LOAD) { 89 if (bitmap_type == BITMAP_ON_LOAD) {
90 PrerenderManager* prerender_manager = 90 PrerenderManager* prerender_manager =
91 tab_helper_->MaybeGetPrerenderManager(); 91 tab_helper_->MaybeGetPrerenderManager();
92 if (prerender_manager) { 92 if (prerender_manager) {
93 prerender_manager->histograms()->RecordFractionPixelsFinalAtSwapin( 93 prerender_manager->RecordFractionPixelsFinalAtSwapin(
94 CompareBitmaps(bitmap_.get(), bitmap.get())); 94 web_contents, CompareBitmaps(bitmap_.get(), bitmap.get()));
95 } 95 }
96 bitmap_.reset(); 96 bitmap_.reset();
97 bitmap_web_contents_ = NULL; 97 bitmap_web_contents_ = NULL;
98 } 98 }
99 } 99 }
100 100
101 // Helper comparing two bitmaps of identical size. 101 // Helper comparing two bitmaps of identical size.
102 // Returns a value < 0.0 if there is an error, and otherwise, a double in 102 // Returns a value < 0.0 if there is an error, and otherwise, a double in
103 // [0, 1] indicating the fraction of pixels that are the same. 103 // [0, 1] indicating the fraction of pixels that are the same.
104 double CompareBitmaps(SkBitmap* bitmap1, SkBitmap* bitmap2) { 104 double CompareBitmaps(SkBitmap* bitmap1, SkBitmap* bitmap2) {
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); 221 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
222 if (!prerender_manager) 222 if (!prerender_manager)
223 return false; 223 return false;
224 return prerender_manager->IsWebContentsPrerendering(web_contents()); 224 return prerender_manager->IsWebContentsPrerendering(web_contents());
225 } 225 }
226 226
227 bool PrerenderTabHelper::IsPrerendered() { 227 bool PrerenderTabHelper::IsPrerendered() {
228 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); 228 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
229 if (!prerender_manager) 229 if (!prerender_manager)
230 return false; 230 return false;
231 return prerender_manager->IsWebContentsPrerendered(web_contents()); 231 return prerender_manager->IsWebContentsPrerendered(web_contents(), NULL);
232 } 232 }
233 233
234 void PrerenderTabHelper::PrerenderSwappedIn() { 234 void PrerenderTabHelper::PrerenderSwappedIn() {
235 // Ensure we are not prerendering any more. 235 // Ensure we are not prerendering any more.
236 DCHECK(!IsPrerendering()); 236 DCHECK(!IsPrerendering());
237 if (pplt_load_start_.is_null()) { 237 if (pplt_load_start_.is_null()) {
238 // If we have already finished loading, report a 0 PPLT. 238 // If we have already finished loading, report a 0 PPLT.
239 PrerenderManager::RecordPerceivedPageLoadTime(base::TimeDelta(), 1.0, 239 PrerenderManager::RecordPerceivedPageLoadTime(base::TimeDelta(), 1.0,
240 web_contents(), url_); 240 web_contents(), url_);
241 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); 241 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
242 if (prerender_manager) 242 if (prerender_manager)
243 prerender_manager->histograms()->RecordFractionPixelsFinalAtSwapin(1.0); 243 prerender_manager->RecordFractionPixelsFinalAtSwapin(web_contents(), 1.0);
244 } else { 244 } else {
245 // If we have not finished loading yet, record the actual load start, and 245 // If we have not finished loading yet, record the actual load start, and
246 // rebase the start time to now. 246 // rebase the start time to now.
247 actual_load_start_ = pplt_load_start_; 247 actual_load_start_ = pplt_load_start_;
248 pplt_load_start_ = base::TimeTicks::Now(); 248 pplt_load_start_ = base::TimeTicks::Now();
249 if (pixel_stats_.get()) 249 if (pixel_stats_.get())
250 pixel_stats_->GetBitmap(PixelStats::BITMAP_SWAP_IN, web_contents()); 250 pixel_stats_->GetBitmap(PixelStats::BITMAP_SWAP_IN, web_contents());
251 } 251 }
252 } 252 }
253 253
254 } // namespace prerender 254 } // namespace prerender
OLDNEW
« chrome/browser/prerender/prerender_manager.cc ('K') | « chrome/browser/prerender/prerender_origin.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698