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

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

Issue 2423383002: [Prerender] first contentful paint histograms. (Closed)
Patch Set: comments Created 3 years, 12 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"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 106
107 // Dummy return value to make the compiler happy. 107 // Dummy return value to make the compiler happy.
108 NOTREACHED(); 108 NOTREACHED();
109 return ComposeHistogramName("wash", name); 109 return ComposeHistogramName("wash", name);
110 } 110 }
111 111
112 bool OriginIsOmnibox(Origin origin) { 112 bool OriginIsOmnibox(Origin origin) {
113 return origin == ORIGIN_OMNIBOX; 113 return origin == ORIGIN_OMNIBOX;
114 } 114 }
115 115
116 std::string FirstContentfulPaintHiddenName(bool was_hidden) {
117 return was_hidden ? ".Hidden" : ".Visible";
118 }
119
116 } // namespace 120 } // namespace
117 121
118 // Helper macros for origin-based histogram reporting. All HISTOGRAM arguments 122 // Helper macros for origin-based histogram reporting. All HISTOGRAM arguments
119 // must be UMA_HISTOGRAM... macros that contain an argument "name" which these 123 // must be UMA_HISTOGRAM... macros that contain an argument "name" which these
120 // macros will eventually substitute for the actual name used. 124 // macros will eventually substitute for the actual name used.
121 #define PREFIXED_HISTOGRAM(histogram_name, origin, HISTOGRAM) \ 125 #define PREFIXED_HISTOGRAM(histogram_name, origin, HISTOGRAM) \
122 PREFIXED_HISTOGRAM_INTERNAL(origin, IsOriginWash(), HISTOGRAM, histogram_name) 126 PREFIXED_HISTOGRAM_INTERNAL(origin, IsOriginWash(), HISTOGRAM, histogram_name)
123 127
124 #define PREFIXED_HISTOGRAM_ORIGIN_EXPERIMENT(histogram_name, origin, \ 128 #define PREFIXED_HISTOGRAM_ORIGIN_EXPERIMENT(histogram_name, origin, \
125 HISTOGRAM) \ 129 HISTOGRAM) \
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 perceived_page_load_time); 307 perceived_page_load_time);
304 } else if (recorded_non_overlapping) { 308 } else if (recorded_non_overlapping) {
305 RECORD_PLT("PerceivedPLTFirstAfterMissNonOverlappingOnly", 309 RECORD_PLT("PerceivedPLTFirstAfterMissNonOverlappingOnly",
306 perceived_page_load_time); 310 perceived_page_load_time);
307 } 311 }
308 } 312 }
309 } 313 }
310 } 314 }
311 } 315 }
312 316
317 void PrerenderHistograms::RecordPerceivedFirstContentfulPaintStatus(
318 Origin origin,
319 bool successful,
320 bool was_hidden) {
321 RecordHistogramEnum(
322 GetHistogramName(origin, IsOriginWash(), "PerceivedTTFCPRecorded") +
323 FirstContentfulPaintHiddenName(was_hidden),
324 successful ? 1 : 0, 2);
325 }
326
313 void PrerenderHistograms::RecordPageLoadTimeNotSwappedIn( 327 void PrerenderHistograms::RecordPageLoadTimeNotSwappedIn(
314 Origin origin, 328 Origin origin,
315 base::TimeDelta page_load_time, 329 base::TimeDelta page_load_time,
316 const GURL& url) const { 330 const GURL& url) const {
317 // If the URL to be prerendered is not a http[s] URL, or is a Google URL, 331 // If the URL to be prerendered is not a http[s] URL, or is a Google URL,
318 // do not record. 332 // do not record.
319 if (!url.SchemeIsHTTPOrHTTPS() || IsGoogleDomain(url)) 333 if (!url.SchemeIsHTTPOrHTTPS() || IsGoogleDomain(url))
320 return; 334 return;
321 RECORD_PLT("PrerenderNotSwappedInPLT", page_load_time); 335 RECORD_PLT("PrerenderNotSwappedInPLT", page_load_time);
322 } 336 }
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 DCHECK(thread_checker_.CalledOnValidThread()); 459 DCHECK(thread_checker_.CalledOnValidThread());
446 460
447 const int kMaxRedirectCount = 10; 461 const int kMaxRedirectCount = 10;
448 std::string histogram_base_name = base::StringPrintf( 462 std::string histogram_base_name = base::StringPrintf(
449 "NoStatePrefetch%sResourceRedirects", is_main_resource ? "Main" : "Sub"); 463 "NoStatePrefetch%sResourceRedirects", is_main_resource ? "Main" : "Sub");
450 std::string histogram_name = 464 std::string histogram_name =
451 GetHistogramName(origin, IsOriginWash(), histogram_base_name); 465 GetHistogramName(origin, IsOriginWash(), histogram_base_name);
452 RecordHistogramEnum(histogram_name, redirect_count, kMaxRedirectCount); 466 RecordHistogramEnum(histogram_name, redirect_count, kMaxRedirectCount);
453 } 467 }
454 468
455 void PrerenderHistograms::RecordFirstContentfulPaint( 469 void PrerenderHistograms::RecordPrefetchFirstContentfulPaintTime(
456 Origin origin, 470 Origin origin,
457 bool is_no_store, 471 bool is_no_store,
472 bool was_hidden,
458 base::TimeDelta time, 473 base::TimeDelta time,
459 base::TimeDelta prefetch_age) { 474 base::TimeDelta prefetch_age) {
460 DCHECK(thread_checker_.CalledOnValidThread()); 475 DCHECK(thread_checker_.CalledOnValidThread());
461 476
462 if (!prefetch_age.is_zero()) { 477 if (!prefetch_age.is_zero()) {
463 DCHECK_NE(origin, ORIGIN_NONE); 478 DCHECK_NE(origin, ORIGIN_NONE);
464 RecordHistogramTime(GetHistogramName(origin, IsOriginWash(), 479 RecordHistogramTime(
465 "Prerender.NoStatePrefetchAge"), 480 GetHistogramName(origin, IsOriginWash(), "Prerender.PrefetchAge"),
466 base::TimeDelta::FromMilliseconds(10), 481 base::TimeDelta::FromMilliseconds(10), base::TimeDelta::FromMinutes(30),
467 base::TimeDelta::FromMinutes(30), prefetch_age, 50); 482 prefetch_age, 50);
468 } 483 }
469 484
470 RecordHistogramTime(GetFirstContentfulPaintHistogramName( 485 std::string histogram_base_name;
471 origin, IsOriginWash(), is_no_store, prefetch_age), 486 if (prefetch_age.is_zero()) {
472 base::TimeDelta::FromMilliseconds(10), 487 histogram_base_name = "PrefetchTTFCP.Reference";
488 } else {
489 histogram_base_name = prefetch_age < base::TimeDelta::FromMinutes(
490 net::HttpCache::kPrefetchReuseMins)
491 ? "PrefetchTTFCP.Warm"
492 : "PrefetchTTFCP.Cold";
493 }
494
495 histogram_base_name += is_no_store ? ".NoStore" : ".Cacheable";
496 histogram_base_name += FirstContentfulPaintHiddenName(was_hidden);
497 std::string histogram_name =
498 GetHistogramName(origin, IsOriginWash(), histogram_base_name);
499
500 RecordHistogramTime(histogram_name, base::TimeDelta::FromMilliseconds(10),
473 base::TimeDelta::FromMinutes(2), time, 50); 501 base::TimeDelta::FromMinutes(2), time, 50);
474 } 502 }
475 503
476 bool PrerenderHistograms::IsOriginWash() const { 504 bool PrerenderHistograms::IsOriginWash() const {
477 if (!WithinWindow()) 505 if (!WithinWindow())
478 return false; 506 return false;
479 return origin_wash_; 507 return origin_wash_;
480 } 508 }
481 509
482 // static
483 std::string PrerenderHistograms::GetFirstContentfulPaintHistogramName(
484 Origin origin,
485 bool is_wash,
486 bool is_no_store,
487 base::TimeDelta prefetch_age) {
488 std::string histogram_base_name;
489 if (prefetch_age.is_zero()) {
490 histogram_base_name = "NoStatePrefetchTTFCP.Reference";
491 } else {
492 histogram_base_name = prefetch_age < base::TimeDelta::FromMinutes(
493 net::HttpCache::kPrefetchReuseMins)
494 ? "NoStatePrefetchTTFCP.Warm"
495 : "NoStatePrefetchTTFCP.Cold";
496 }
497
498 histogram_base_name += is_no_store ? ".NoStore" : ".Cacheable";
499 return GetHistogramName(origin, is_wash, histogram_base_name);
500 }
501
502 } // namespace prerender 510 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698