| Index: chrome/browser/net/resource_prefetch_predictor_observer.cc
|
| diff --git a/chrome/browser/net/resource_prefetch_predictor_observer.cc b/chrome/browser/net/resource_prefetch_predictor_observer.cc
|
| index 3ea85dce301159ffc72706fdb0c78a88f8339b13..83c2c37931d64a794a41df69ede749b7d5bba8c2 100644
|
| --- a/chrome/browser/net/resource_prefetch_predictor_observer.cc
|
| +++ b/chrome/browser/net/resource_prefetch_predictor_observer.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include <string>
|
|
|
| +#include "base/metrics/histogram.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/resource_request_info.h"
|
| #include "googleurl/src/gurl.h"
|
| @@ -16,18 +17,43 @@ using predictors::ResourcePrefetchPredictor;
|
|
|
| namespace {
|
|
|
| +// Enum for measuring statistics pertaining to observed request, responses and
|
| +// redirects.
|
| +enum RequestStats {
|
| + REQUEST_STATS_TOTAL_RESPONSES = 0,
|
| + REQUEST_STATS_TOTAL_PROCESSED_RESPONSES = 1,
|
| + REQUEST_STATS_NO_RESOURCE_REQUEST_INFO = 2,
|
| + REQUEST_STATS_NO_RENDER_VIEW_ID_FROM_REQUEST_INFO = 3,
|
| + REQUEST_STATS_MAX = 4,
|
| +};
|
| +
|
| +// Specific to main frame requests.
|
| +enum MainFrameRequestStats {
|
| + MAIN_FRAME_REQUEST_STATS_TOTAL_REQUESTS = 0,
|
| + MAIN_FRAME_REQUEST_STATS_PROCESSED_REQUESTS = 1,
|
| + MAIN_FRAME_REQUEST_STATS_TOTAL_REDIRECTS = 2,
|
| + MAIN_FRAME_REQUEST_STATS_PROCESSED_REDIRECTS = 3,
|
| + MAIN_FRAME_REQUEST_STATS_TOTAL_RESPONSES = 4,
|
| + MAIN_FRAME_REQUEST_STATS_PROCESSED_RESPONSES = 5,
|
| + MAIN_FRAME_REQUEST_STATS_MAX = 6,
|
| +};
|
| +
|
| bool SummarizeResponse(net::URLRequest* request,
|
| ResourcePrefetchPredictor::URLRequestSummary* summary) {
|
| const content::ResourceRequestInfo* info =
|
| content::ResourceRequestInfo::ForRequest(request);
|
| if (!info) {
|
| - LOG(ERROR) << "No ResourceRequestInfo in request";
|
| + UMA_HISTOGRAM_ENUMERATION("ResourcePrefetchPredictor.RequestStats",
|
| + REQUEST_STATS_NO_RESOURCE_REQUEST_INFO,
|
| + REQUEST_STATS_MAX);
|
| return false;
|
| }
|
|
|
| int render_process_id, render_view_id;
|
| if (!info->GetAssociatedRenderView(&render_process_id, &render_view_id)) {
|
| - LOG(ERROR) << "Could not get RenderViewId from request info.";
|
| + UMA_HISTOGRAM_ENUMERATION("ResourcePrefetchPredictor.RequestStats",
|
| + REQUEST_STATS_NO_RENDER_VIEW_ID_FROM_REQUEST_INFO,
|
| + REQUEST_STATS_MAX);
|
| return false;
|
| }
|
|
|
| @@ -73,6 +99,12 @@ void ResourcePrefetchPredictorObserver::OnRequestStarted(
|
| int route_id) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
|
|
| + if (resource_type == ResourceType::MAIN_FRAME) {
|
| + UMA_HISTOGRAM_ENUMERATION("ResourcePrefetchPredictor.MainFrameRequestStats",
|
| + MAIN_FRAME_REQUEST_STATS_TOTAL_REQUESTS,
|
| + MAIN_FRAME_REQUEST_STATS_MAX);
|
| + }
|
| +
|
| if (!ResourcePrefetchPredictor::ShouldRecordRequest(request, resource_type))
|
| return;
|
|
|
| @@ -89,6 +121,12 @@ void ResourcePrefetchPredictorObserver::OnRequestStarted(
|
| base::Bind(&ResourcePrefetchPredictor::RecordURLRequest,
|
| predictor_,
|
| summary));
|
| +
|
| + if (resource_type == ResourceType::MAIN_FRAME) {
|
| + UMA_HISTOGRAM_ENUMERATION("ResourcePrefetchPredictor.MainFrameRequestStats",
|
| + MAIN_FRAME_REQUEST_STATS_PROCESSED_REQUESTS,
|
| + MAIN_FRAME_REQUEST_STATS_MAX);
|
| + }
|
| }
|
|
|
| void ResourcePrefetchPredictorObserver::OnRequestRedirected(
|
| @@ -96,6 +134,15 @@ void ResourcePrefetchPredictorObserver::OnRequestRedirected(
|
| net::URLRequest* request) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
|
|
| + const content::ResourceRequestInfo* request_info =
|
| + content::ResourceRequestInfo::ForRequest(request);
|
| + if (request_info &&
|
| + request_info->GetResourceType() == ResourceType::MAIN_FRAME) {
|
| + UMA_HISTOGRAM_ENUMERATION("ResourcePrefetchPredictor.MainFrameRequestStats",
|
| + MAIN_FRAME_REQUEST_STATS_TOTAL_REDIRECTS,
|
| + MAIN_FRAME_REQUEST_STATS_MAX);
|
| + }
|
| +
|
| if (!ResourcePrefetchPredictor::ShouldRecordRedirect(request))
|
| return;
|
|
|
| @@ -111,12 +158,32 @@ void ResourcePrefetchPredictorObserver::OnRequestRedirected(
|
| base::Bind(&ResourcePrefetchPredictor::RecordUrlRedirect,
|
| predictor_,
|
| summary));
|
| +
|
| + if (request_info &&
|
| + request_info->GetResourceType() == ResourceType::MAIN_FRAME) {
|
| + UMA_HISTOGRAM_ENUMERATION("ResourcePrefetchPredictor.MainFrameRequestStats",
|
| + MAIN_FRAME_REQUEST_STATS_PROCESSED_REDIRECTS,
|
| + MAIN_FRAME_REQUEST_STATS_MAX);
|
| + }
|
| }
|
|
|
| void ResourcePrefetchPredictorObserver::OnResponseStarted(
|
| net::URLRequest* request) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
|
|
| + UMA_HISTOGRAM_ENUMERATION("ResourcePrefetchPredictor.RequestStats",
|
| + REQUEST_STATS_TOTAL_RESPONSES,
|
| + REQUEST_STATS_MAX);
|
| +
|
| + const content::ResourceRequestInfo* request_info =
|
| + content::ResourceRequestInfo::ForRequest(request);
|
| + if (request_info &&
|
| + request_info->GetResourceType() == ResourceType::MAIN_FRAME) {
|
| + UMA_HISTOGRAM_ENUMERATION("ResourcePrefetchPredictor.MainFrameRequestStats",
|
| + MAIN_FRAME_REQUEST_STATS_TOTAL_RESPONSES,
|
| + MAIN_FRAME_REQUEST_STATS_MAX);
|
| + }
|
| +
|
| if (!ResourcePrefetchPredictor::ShouldRecordResponse(request))
|
| return;
|
| ResourcePrefetchPredictor::URLRequestSummary summary;
|
| @@ -129,6 +196,17 @@ void ResourcePrefetchPredictorObserver::OnResponseStarted(
|
| base::Bind(&ResourcePrefetchPredictor::RecordUrlResponse,
|
| predictor_,
|
| summary));
|
| +
|
| + UMA_HISTOGRAM_ENUMERATION("ResourcePrefetchPredictor.RequestStats",
|
| + REQUEST_STATS_TOTAL_PROCESSED_RESPONSES,
|
| + REQUEST_STATS_MAX);
|
| + if (request_info &&
|
| + request_info->GetResourceType() == ResourceType::MAIN_FRAME) {
|
| + UMA_HISTOGRAM_ENUMERATION(
|
| + "ResourcePrefetchPredictor.NavigationStatsMainFrame",
|
| + MAIN_FRAME_REQUEST_STATS_PROCESSED_RESPONSES,
|
| + MAIN_FRAME_REQUEST_STATS_MAX);
|
| + }
|
| }
|
|
|
| } // namespace chrome_browser_net
|
|
|