| 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
|
| deleted file mode 100644
|
| index 4dc2b0bce2d2e7ad49ddf05f7d512f595eb6708d..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/net/resource_prefetch_predictor_observer.cc
|
| +++ /dev/null
|
| @@ -1,237 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/net/resource_prefetch_predictor_observer.h"
|
| -
|
| -#include <memory>
|
| -#include <string>
|
| -#include <utility>
|
| -
|
| -#include "base/memory/ptr_util.h"
|
| -#include "base/metrics/histogram_macros.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "content/public/browser/resource_request_info.h"
|
| -#include "net/url_request/url_request.h"
|
| -#include "url/gurl.h"
|
| -
|
| -namespace content {
|
| -class WebContents;
|
| -}
|
| -
|
| -using content::BrowserThread;
|
| -using predictors::ResourcePrefetchPredictor;
|
| -using URLRequestSummary =
|
| - predictors::ResourcePrefetchPredictor::URLRequestSummary;
|
| -
|
| -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, // Not recorded (never was).
|
| - REQUEST_STATS_NO_RENDER_FRAME_ID_FROM_REQUEST_INFO = 3, // Not recorded.
|
| - 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,
|
| -};
|
| -
|
| -void ReportRequestStats(RequestStats stat) {
|
| - UMA_HISTOGRAM_ENUMERATION("ResourcePrefetchPredictor.RequestStats",
|
| - stat,
|
| - REQUEST_STATS_MAX);
|
| -}
|
| -
|
| -void ReportMainFrameRequestStats(MainFrameRequestStats stat) {
|
| - UMA_HISTOGRAM_ENUMERATION("ResourcePrefetchPredictor.MainFrameRequestStats",
|
| - stat,
|
| - MAIN_FRAME_REQUEST_STATS_MAX);
|
| -}
|
| -
|
| -bool TryToFillNavigationID(
|
| - predictors::NavigationID* navigation_id,
|
| - const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
|
| - const GURL& main_frame_url,
|
| - const base::TimeTicks& creation_time) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| - content::WebContents* web_contents = web_contents_getter.Run();
|
| - if (!web_contents)
|
| - return false;
|
| - *navigation_id =
|
| - predictors::NavigationID(web_contents, main_frame_url, creation_time);
|
| - // A WebContents might be associated with something that is not a tab.
|
| - // In this case tab_id will be -1 and is_valid() will return false.
|
| - return navigation_id->is_valid();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -namespace chrome_browser_net {
|
| -
|
| -ResourcePrefetchPredictorObserver::ResourcePrefetchPredictorObserver(
|
| - ResourcePrefetchPredictor* predictor)
|
| - : predictor_(predictor->AsWeakPtr()) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| -}
|
| -
|
| -ResourcePrefetchPredictorObserver::~ResourcePrefetchPredictorObserver() {
|
| - CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) ||
|
| - BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| -}
|
| -
|
| -void ResourcePrefetchPredictorObserver::OnRequestStarted(
|
| - net::URLRequest* request,
|
| - content::ResourceType resource_type,
|
| - const content::ResourceRequestInfo::WebContentsGetter&
|
| - web_contents_getter) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| -
|
| - if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME)
|
| - ReportMainFrameRequestStats(MAIN_FRAME_REQUEST_STATS_TOTAL_REQUESTS);
|
| -
|
| - if (!ResourcePrefetchPredictor::ShouldRecordRequest(request, resource_type))
|
| - return;
|
| -
|
| - auto summary = base::MakeUnique<URLRequestSummary>();
|
| - summary->resource_url = request->original_url();
|
| - summary->resource_type = resource_type;
|
| -
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::BindOnce(
|
| - &ResourcePrefetchPredictorObserver::OnRequestStartedOnUIThread,
|
| - base::Unretained(this), base::Passed(std::move(summary)),
|
| - web_contents_getter, request->first_party_for_cookies(),
|
| - request->creation_time()));
|
| -
|
| - if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME)
|
| - ReportMainFrameRequestStats(MAIN_FRAME_REQUEST_STATS_PROCESSED_REQUESTS);
|
| -}
|
| -
|
| -void ResourcePrefetchPredictorObserver::OnRequestRedirected(
|
| - net::URLRequest* request,
|
| - const GURL& redirect_url,
|
| - const content::ResourceRequestInfo::WebContentsGetter&
|
| - web_contents_getter) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| -
|
| - const content::ResourceRequestInfo* request_info =
|
| - content::ResourceRequestInfo::ForRequest(request);
|
| - if (request_info &&
|
| - request_info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME) {
|
| - ReportMainFrameRequestStats(MAIN_FRAME_REQUEST_STATS_TOTAL_REDIRECTS);
|
| - }
|
| -
|
| - if (!ResourcePrefetchPredictor::ShouldRecordRedirect(request))
|
| - return;
|
| -
|
| - auto summary = base::MakeUnique<URLRequestSummary>();
|
| - if (!ResourcePrefetchPredictor::URLRequestSummary::SummarizeResponse(
|
| - *request, summary.get())) {
|
| - return;
|
| - }
|
| - summary->redirect_url = redirect_url;
|
| -
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::BindOnce(
|
| - &ResourcePrefetchPredictorObserver::OnRequestRedirectedOnUIThread,
|
| - base::Unretained(this), base::Passed(std::move(summary)),
|
| - web_contents_getter, request->first_party_for_cookies(),
|
| - request->creation_time()));
|
| -
|
| - if (request_info &&
|
| - request_info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME) {
|
| - ReportMainFrameRequestStats(MAIN_FRAME_REQUEST_STATS_PROCESSED_REDIRECTS);
|
| - }
|
| -}
|
| -
|
| -void ResourcePrefetchPredictorObserver::OnResponseStarted(
|
| - net::URLRequest* request,
|
| - const content::ResourceRequestInfo::WebContentsGetter&
|
| - web_contents_getter) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| -
|
| - ReportRequestStats(REQUEST_STATS_TOTAL_RESPONSES);
|
| -
|
| - const content::ResourceRequestInfo* request_info =
|
| - content::ResourceRequestInfo::ForRequest(request);
|
| - if (request_info &&
|
| - request_info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME) {
|
| - ReportMainFrameRequestStats(MAIN_FRAME_REQUEST_STATS_TOTAL_RESPONSES);
|
| - }
|
| -
|
| - if (!ResourcePrefetchPredictor::ShouldRecordResponse(request))
|
| - return;
|
| - auto summary = base::MakeUnique<URLRequestSummary>();
|
| - if (!ResourcePrefetchPredictor::URLRequestSummary::SummarizeResponse(
|
| - *request, summary.get())) {
|
| - return;
|
| - }
|
| -
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::BindOnce(
|
| - &ResourcePrefetchPredictorObserver::OnResponseStartedOnUIThread,
|
| - base::Unretained(this), base::Passed(std::move(summary)),
|
| - web_contents_getter, request->first_party_for_cookies(),
|
| - request->creation_time()));
|
| -
|
| - ReportRequestStats(REQUEST_STATS_TOTAL_PROCESSED_RESPONSES);
|
| - if (request_info &&
|
| - request_info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME) {
|
| - ReportMainFrameRequestStats(MAIN_FRAME_REQUEST_STATS_PROCESSED_RESPONSES);
|
| - }
|
| -}
|
| -
|
| -void ResourcePrefetchPredictorObserver::OnRequestStartedOnUIThread(
|
| - std::unique_ptr<URLRequestSummary> summary,
|
| - const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
|
| - const GURL& main_frame_url,
|
| - const base::TimeTicks& creation_time) const {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| - if (!TryToFillNavigationID(&summary->navigation_id, web_contents_getter,
|
| - main_frame_url, creation_time)) {
|
| - return;
|
| - }
|
| - predictor_->RecordURLRequest(*summary);
|
| -}
|
| -
|
| -void ResourcePrefetchPredictorObserver::OnRequestRedirectedOnUIThread(
|
| - std::unique_ptr<URLRequestSummary> summary,
|
| - const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
|
| - const GURL& main_frame_url,
|
| - const base::TimeTicks& creation_time) const {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| - if (!TryToFillNavigationID(&summary->navigation_id, web_contents_getter,
|
| - main_frame_url, creation_time)) {
|
| - return;
|
| - }
|
| - predictor_->RecordURLRedirect(*summary);
|
| -}
|
| -
|
| -void ResourcePrefetchPredictorObserver::OnResponseStartedOnUIThread(
|
| - std::unique_ptr<URLRequestSummary> summary,
|
| - const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
|
| - const GURL& main_frame_url,
|
| - const base::TimeTicks& creation_time) const {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| - if (!TryToFillNavigationID(&summary->navigation_id, web_contents_getter,
|
| - main_frame_url, creation_time)) {
|
| - return;
|
| - }
|
| - predictor_->RecordURLResponse(*summary);
|
| -}
|
| -
|
| -} // namespace chrome_browser_net
|
|
|