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

Unified Diff: chrome/browser/prerender/prerender_util.cc

Issue 1051463003: Move mod_pagespeed metrics out of prerender. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sky comments Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/prerender/prerender_util.h ('k') | chrome/browser/prerender/prerender_util_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_util.cc
diff --git a/chrome/browser/prerender/prerender_util.cc b/chrome/browser/prerender/prerender_util.cc
index e7ae9d1072ae262a9cbeeaa8ee8c505d05caf1ab..1081f5b59719379a914ba5c2eee533f2081bf189 100644
--- a/chrome/browser/prerender/prerender_util.cc
+++ b/chrome/browser/prerender/prerender_util.cc
@@ -22,53 +22,6 @@ namespace prerender {
namespace {
-const char kModPagespeedHeader[] = "X-Mod-Pagespeed";
-const char kPageSpeedHeader[] = "X-Page-Speed";
-const char kPagespeedServerHistogram[] =
- "Prerender.PagespeedHeader.ServerCounts";
-const char kPagespeedVersionHistogram[] =
- "Prerender.PagespeedHeader.VersionCounts";
-
-enum PagespeedHeaderServerType {
- PAGESPEED_TOTAL_RESPONSES = 0,
- PAGESPEED_MOD_PAGESPEED_SERVER = 1,
- PAGESPEED_NGX_PAGESPEED_SERVER = 2,
- PAGESPEED_PAGESPEED_SERVICE_SERVER = 3,
- PAGESPEED_UNKNOWN_SERVER = 4,
- PAGESPEED_SERVER_MAXIMUM = 5
-};
-
-// Private function to parse the PageSpeed version number and encode it in
-// buckets 2 through 99: if it is in the format a.b.c.d-e the bucket will be
-// 2 + 2 * (max(c, 10) - 10) + (d > 1 ? 1 : 0); if it is not in this format
-// we return zero.
-int GetXModPagespeedBucketFromVersion(const std::string& version) {
- int a, b, c, d, e;
- int num_parsed = sscanf(version.c_str(), "%d.%d.%d.%d-%d",
- &a, &b, &c, &d, &e);
- int output = 0;
- if (num_parsed == 5) {
- output = 2;
- if (c > 10)
- output += 2 * (c - 10);
- if (d > 1)
- output++;
- if (output < 2 || output > 99)
- output = 0;
- }
- return output;
-}
-
-// Private function to parse the X-Page-Speed header value and determine
-// whether it is in the PageSpeed Service format, namely m_n_dc were m_n is
-// a version number and dc is an encoded 2-character value.
-bool IsPageSpeedServiceVersionNumber(const std::string& version) {
- int a, b;
- char c, d, e; // e is to detect EOL as we check that it /isn't/ converted.
- int num_parsed = sscanf(version.c_str(), "%d_%d_%c%c%c", &a, &b, &c, &d, &e);
- return (num_parsed == 4);
-}
-
enum PrerenderSchemeCancelReason {
PRERENDER_SCHEME_CANCEL_REASON_EXTERNAL_PROTOCOL,
PRERENDER_SCHEME_CANCEL_REASON_DATA,
@@ -163,82 +116,6 @@ bool IsControlGroupExperiment(uint8 experiment_id) {
return experiment_id == 7 || experiment_id == 8;
}
-void GatherPagespeedData(const ResourceType resource_type,
- const GURL& request_url,
- const net::HttpResponseHeaders* response_headers) {
- if (resource_type != content::RESOURCE_TYPE_MAIN_FRAME ||
- !request_url.SchemeIsHTTPOrHTTPS())
- return;
-
- // bucket 0 counts every response seen.
- UMA_HISTOGRAM_ENUMERATION(kPagespeedServerHistogram,
- PAGESPEED_TOTAL_RESPONSES,
- PAGESPEED_SERVER_MAXIMUM);
- if (!response_headers)
- return;
-
- void* iter = NULL;
- std::string name;
- std::string value;
- while (response_headers->EnumerateHeaderLines(&iter, &name, &value)) {
- if (name == kModPagespeedHeader) {
- // Bucket 1 counts occurences of the X-Mod-Pagespeed header.
- UMA_HISTOGRAM_ENUMERATION(kPagespeedServerHistogram,
- PAGESPEED_MOD_PAGESPEED_SERVER,
- PAGESPEED_SERVER_MAXIMUM);
- if (!value.empty()) {
- // If the header value is in the X-Mod-Pagespeed version number format
- // then increment the appropriate bucket, otherwise increment bucket 1,
- // which is the catch-all "unknown version number" bucket.
- int bucket = GetXModPagespeedBucketFromVersion(value);
- if (bucket > 0) {
- UMA_HISTOGRAM_SPARSE_SLOWLY(kPagespeedVersionHistogram, bucket);
- } else {
- UMA_HISTOGRAM_SPARSE_SLOWLY(kPagespeedVersionHistogram, 1);
- }
- }
- break;
- } else if (name == kPageSpeedHeader) {
- // X-Page-Speed header versions are either in the X-Mod-Pagespeed format,
- // indicating an nginx installation, or they're in the PageSpeed Service
- // format, indicating a PSS installation, or in some other format,
- // indicating an unknown installation [possibly IISpeed].
- if (!value.empty()) {
- int bucket = GetXModPagespeedBucketFromVersion(value);
- if (bucket > 0) {
- // Bucket 2 counts occurences of the X-Page-Speed header with a
- // value in the X-Mod-Pagespeed version number format. We also
- // count these responses in the version histogram.
- UMA_HISTOGRAM_ENUMERATION(kPagespeedServerHistogram,
- PAGESPEED_NGX_PAGESPEED_SERVER,
- PAGESPEED_SERVER_MAXIMUM);
- UMA_HISTOGRAM_SPARSE_SLOWLY(kPagespeedVersionHistogram, bucket);
- } else if (IsPageSpeedServiceVersionNumber(value)) {
- // Bucket 3 counts occurences of the X-Page-Speed header with a
- // value in the PageSpeed Service version number format.
- UMA_HISTOGRAM_ENUMERATION(kPagespeedServerHistogram,
- PAGESPEED_PAGESPEED_SERVICE_SERVER,
- PAGESPEED_SERVER_MAXIMUM);
- } else {
- // Bucket 4 counts occurences of all other values.
- UMA_HISTOGRAM_ENUMERATION(kPagespeedServerHistogram,
- PAGESPEED_UNKNOWN_SERVER,
- PAGESPEED_SERVER_MAXIMUM);
- }
- }
- break;
- }
- }
-}
-
-void URLRequestResponseStarted(net::URLRequest* request) {
- const content::ResourceRequestInfo* info =
- content::ResourceRequestInfo::ForRequest(request);
- GatherPagespeedData(info->GetResourceType(),
- request->url(),
- request->response_headers());
-}
-
void ReportPrerenderExternalURL() {
ReportPrerenderSchemeCancelReason(
PRERENDER_SCHEME_CANCEL_REASON_EXTERNAL_PROTOCOL);
« no previous file with comments | « chrome/browser/prerender/prerender_util.h ('k') | chrome/browser/prerender/prerender_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698