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

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

Issue 2423383002: [Prerender] first contentful paint histograms. (Closed)
Patch Set: MSVC compilation error Created 3 years, 11 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
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_histograms.h" 5 #include "chrome/browser/prerender/prerender_histograms.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
12 #include "base/metrics/histogram_functions.h"
12 #include "base/metrics/histogram_macros.h" 13 #include "base/metrics/histogram_macros.h"
13 #include "base/strings/stringprintf.h" 14 #include "base/strings/stringprintf.h"
14 #include "chrome/browser/prerender/prerender_manager.h" 15 #include "chrome/browser/prerender/prerender_manager.h"
15 #include "chrome/browser/prerender/prerender_util.h" 16 #include "chrome/browser/prerender/prerender_util.h"
16 #include "net/http/http_cache.h" 17 #include "net/http/http_cache.h"
17 18
18 namespace prerender { 19 namespace prerender {
19 20
20 namespace { 21 namespace {
21 22
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 107
107 // Dummy return value to make the compiler happy. 108 // Dummy return value to make the compiler happy.
108 NOTREACHED(); 109 NOTREACHED();
109 return ComposeHistogramName("wash", name); 110 return ComposeHistogramName("wash", name);
110 } 111 }
111 112
112 bool OriginIsOmnibox(Origin origin) { 113 bool OriginIsOmnibox(Origin origin) {
113 return origin == ORIGIN_OMNIBOX; 114 return origin == ORIGIN_OMNIBOX;
114 } 115 }
115 116
117 const char* FirstContentfulPaintHiddenName(bool was_hidden) {
118 return was_hidden ? ".Hidden" : ".Visible";
119 }
120
116 } // namespace 121 } // namespace
117 122
118 // Helper macros for origin-based histogram reporting. All HISTOGRAM arguments 123 // Helper macros for origin-based histogram reporting. All HISTOGRAM arguments
119 // must be UMA_HISTOGRAM... macros that contain an argument "name" which these 124 // must be UMA_HISTOGRAM... macros that contain an argument "name" which these
120 // macros will eventually substitute for the actual name used. 125 // macros will eventually substitute for the actual name used.
121 #define PREFIXED_HISTOGRAM(histogram_name, origin, HISTOGRAM) \ 126 #define PREFIXED_HISTOGRAM(histogram_name, origin, HISTOGRAM) \
122 PREFIXED_HISTOGRAM_INTERNAL(origin, IsOriginWash(), HISTOGRAM, histogram_name) 127 PREFIXED_HISTOGRAM_INTERNAL(origin, IsOriginWash(), HISTOGRAM, histogram_name)
123 128
124 #define PREFIXED_HISTOGRAM_ORIGIN_EXPERIMENT(histogram_name, origin, \ 129 #define PREFIXED_HISTOGRAM_ORIGIN_EXPERIMENT(histogram_name, origin, \
125 HISTOGRAM) \ 130 HISTOGRAM) \
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 perceived_page_load_time); 299 perceived_page_load_time);
295 } else if (recorded_non_overlapping) { 300 } else if (recorded_non_overlapping) {
296 RECORD_PLT("PerceivedPLTFirstAfterMissNonOverlappingOnly", 301 RECORD_PLT("PerceivedPLTFirstAfterMissNonOverlappingOnly",
297 perceived_page_load_time); 302 perceived_page_load_time);
298 } 303 }
299 } 304 }
300 } 305 }
301 } 306 }
302 } 307 }
303 308
309 void PrerenderHistograms::RecordPerceivedFirstContentfulPaintStatus(
310 Origin origin,
311 bool successful,
312 bool was_hidden) {
313 base::UmaHistogramBoolean(
314 GetHistogramName(origin, IsOriginWash(), "PerceivedTTFCPRecorded") +
315 FirstContentfulPaintHiddenName(was_hidden),
316 successful);
317 }
318
304 void PrerenderHistograms::RecordPageLoadTimeNotSwappedIn( 319 void PrerenderHistograms::RecordPageLoadTimeNotSwappedIn(
305 Origin origin, 320 Origin origin,
306 base::TimeDelta page_load_time, 321 base::TimeDelta page_load_time,
307 const GURL& url) const { 322 const GURL& url) const {
308 // If the URL to be prerendered is not a http[s] URL, or is a Google URL, 323 // If the URL to be prerendered is not a http[s] URL, or is a Google URL,
309 // do not record. 324 // do not record.
310 if (!url.SchemeIsHTTPOrHTTPS() || IsGoogleDomain(url)) 325 if (!url.SchemeIsHTTPOrHTTPS() || IsGoogleDomain(url))
311 return; 326 return;
312 RECORD_PLT("PrerenderNotSwappedInPLT", page_load_time); 327 RECORD_PLT("PrerenderNotSwappedInPLT", page_load_time);
313 } 328 }
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 DCHECK(thread_checker_.CalledOnValidThread()); 451 DCHECK(thread_checker_.CalledOnValidThread());
437 452
438 const int kMaxRedirectCount = 10; 453 const int kMaxRedirectCount = 10;
439 std::string histogram_base_name = base::StringPrintf( 454 std::string histogram_base_name = base::StringPrintf(
440 "NoStatePrefetch%sResourceRedirects", is_main_resource ? "Main" : "Sub"); 455 "NoStatePrefetch%sResourceRedirects", is_main_resource ? "Main" : "Sub");
441 std::string histogram_name = 456 std::string histogram_name =
442 GetHistogramName(origin, IsOriginWash(), histogram_base_name); 457 GetHistogramName(origin, IsOriginWash(), histogram_base_name);
443 RecordHistogramEnum(histogram_name, redirect_count, kMaxRedirectCount); 458 RecordHistogramEnum(histogram_name, redirect_count, kMaxRedirectCount);
444 } 459 }
445 460
446 void PrerenderHistograms::RecordFirstContentfulPaint( 461 void PrerenderHistograms::RecordPrefetchFirstContentfulPaintTime(
447 Origin origin, 462 Origin origin,
448 bool is_no_store, 463 bool is_no_store,
464 bool was_hidden,
449 base::TimeDelta time, 465 base::TimeDelta time,
450 base::TimeDelta prefetch_age) { 466 base::TimeDelta prefetch_age) {
451 DCHECK(thread_checker_.CalledOnValidThread()); 467 DCHECK(thread_checker_.CalledOnValidThread());
452 468
453 if (!prefetch_age.is_zero()) { 469 if (!prefetch_age.is_zero()) {
454 DCHECK_NE(origin, ORIGIN_NONE); 470 DCHECK_NE(origin, ORIGIN_NONE);
455 RecordHistogramTime(GetHistogramName(origin, IsOriginWash(), 471 RecordHistogramTime(
456 "Prerender.NoStatePrefetchAge"), 472 GetHistogramName(origin, IsOriginWash(), "Prerender.PrefetchAge"),
457 base::TimeDelta::FromMilliseconds(10), 473 base::TimeDelta::FromMilliseconds(10), base::TimeDelta::FromMinutes(30),
458 base::TimeDelta::FromMinutes(30), prefetch_age, 50); 474 prefetch_age, 50);
459 } 475 }
460 476
461 RecordHistogramTime(GetFirstContentfulPaintHistogramName( 477 std::string histogram_base_name;
462 origin, IsOriginWash(), is_no_store, prefetch_age), 478 if (prefetch_age.is_zero()) {
463 base::TimeDelta::FromMilliseconds(10), 479 histogram_base_name = "PrefetchTTFCP.Reference";
480 } else {
481 histogram_base_name = prefetch_age < base::TimeDelta::FromMinutes(
482 net::HttpCache::kPrefetchReuseMins)
483 ? "PrefetchTTFCP.Warm"
484 : "PrefetchTTFCP.Cold";
485 }
486
487 histogram_base_name += is_no_store ? ".NoStore" : ".Cacheable";
488 histogram_base_name += FirstContentfulPaintHiddenName(was_hidden);
489 std::string histogram_name =
490 GetHistogramName(origin, IsOriginWash(), histogram_base_name);
491
492 RecordHistogramTime(histogram_name, base::TimeDelta::FromMilliseconds(10),
464 base::TimeDelta::FromMinutes(2), time, 50); 493 base::TimeDelta::FromMinutes(2), time, 50);
465 } 494 }
466 495
467 bool PrerenderHistograms::IsOriginWash() const { 496 bool PrerenderHistograms::IsOriginWash() const {
468 if (!WithinWindow()) 497 if (!WithinWindow())
469 return false; 498 return false;
470 return origin_wash_; 499 return origin_wash_;
471 } 500 }
472 501
473 // static
474 std::string PrerenderHistograms::GetFirstContentfulPaintHistogramName(
475 Origin origin,
476 bool is_wash,
477 bool is_no_store,
478 base::TimeDelta prefetch_age) {
479 std::string histogram_base_name;
480 if (prefetch_age.is_zero()) {
481 histogram_base_name = "NoStatePrefetchTTFCP.Reference";
482 } else {
483 histogram_base_name = prefetch_age < base::TimeDelta::FromMinutes(
484 net::HttpCache::kPrefetchReuseMins)
485 ? "NoStatePrefetchTTFCP.Warm"
486 : "NoStatePrefetchTTFCP.Cold";
487 }
488
489 histogram_base_name += is_no_store ? ".NoStore" : ".Cacheable";
490 return GetHistogramName(origin, is_wash, histogram_base_name);
491 }
492
493 } // namespace prerender 502 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_histograms.h ('k') | chrome/browser/prerender/prerender_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698