| Index: chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
|
| diff --git a/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc b/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
|
| index c3f862c9a41fcbaffdff847335c56a8dde263347..ddf643bcbc279bf50755c3772480f7b4fb9afb09 100644
|
| --- a/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
|
| +++ b/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
|
| @@ -14,8 +14,10 @@
|
| #include "base/test/histogram_tester.h"
|
| #include "base/time/time.h"
|
| #include "chrome/browser/history/history_service_factory.h"
|
| +#include "chrome/browser/predictors/loading_predictor.h"
|
| #include "chrome/browser/predictors/resource_prefetch_predictor_tables.h"
|
| #include "chrome/browser/predictors/resource_prefetch_predictor_test_util.h"
|
| +#include "chrome/browser/predictors/resource_prefetcher_manager.h"
|
| #include "chrome/test/base/testing_profile.h"
|
| #include "components/history/core/browser/history_service.h"
|
| #include "components/history/core/browser/history_types.h"
|
| @@ -225,7 +227,7 @@ class ResourcePrefetchPredictorTest : public testing::Test {
|
| }
|
|
|
| void InitializePredictor() {
|
| - predictor_->StartInitialization();
|
| + loading_predictor_->StartInitialization();
|
| base::RunLoop loop;
|
| loop.RunUntilIdle(); // Runs the DB lookup.
|
| profile_->BlockUntilHistoryProcessesPendingRequests();
|
| @@ -233,19 +235,11 @@ class ResourcePrefetchPredictorTest : public testing::Test {
|
|
|
| void ResetPredictor() {
|
| LoadingPredictorConfig config;
|
| - config.max_urls_to_track = 3;
|
| - config.max_hosts_to_track = 2;
|
| - config.min_url_visit_count = 2;
|
| - config.max_resources_per_entry = 4;
|
| - config.max_consecutive_misses = 2;
|
| - config.max_redirect_consecutive_misses = 2;
|
| - config.min_resource_confidence_to_trigger_prefetch = 0.5;
|
| - config.is_url_learning_enabled = true;
|
| - config.is_manifests_enabled = true;
|
| - config.is_origin_learning_enabled = true;
|
| -
|
| - config.mode |= LoadingPredictorConfig::LEARNING;
|
| - predictor_.reset(new ResourcePrefetchPredictor(config, profile_.get()));
|
| + PopulateTestConfig(&config);
|
| +
|
| + loading_predictor_ =
|
| + base::MakeUnique<LoadingPredictor>(config, profile_.get());
|
| + predictor_ = loading_predictor_->resource_prefetch_predictor();
|
| predictor_->set_mock_tables(mock_tables_);
|
| }
|
|
|
| @@ -261,7 +255,8 @@ class ResourcePrefetchPredictorTest : public testing::Test {
|
| std::unique_ptr<TestingProfile> profile_;
|
| net::TestURLRequestContext url_request_context_;
|
|
|
| - std::unique_ptr<ResourcePrefetchPredictor> predictor_;
|
| + std::unique_ptr<LoadingPredictor> loading_predictor_;
|
| + ResourcePrefetchPredictor* predictor_;
|
| scoped_refptr<StrictMock<MockResourcePrefetchPredictorTables>> mock_tables_;
|
|
|
| PrefetchDataMap test_url_data_;
|
| @@ -316,7 +311,7 @@ void ResourcePrefetchPredictorTest::SetUp() {
|
| }
|
|
|
| void ResourcePrefetchPredictorTest::TearDown() {
|
| - predictor_.reset(NULL);
|
| + loading_predictor_ = nullptr;
|
| profile_->DestroyHistoryService();
|
| }
|
|
|
| @@ -480,15 +475,14 @@ void ResourcePrefetchPredictorTest::TestRedirectStatusHistogram(
|
| InitializeResourceData(google.add_resources(), script_url,
|
| content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1,
|
| net::MEDIUM, false, false);
|
| - predictor_->host_table_cache_->insert(
|
| - std::make_pair(google.primary_key(), google));
|
| + predictor_->host_table_cache_->emplace(google.primary_key(), google);
|
|
|
| if (predictor_initial_key != predictor_key) {
|
| RedirectData redirect = CreateRedirectData(predictor_initial_key, 1);
|
| InitializeRedirectStat(redirect.add_redirect_endpoints(), predictor_key, 10,
|
| 0, 0);
|
| - predictor_->host_redirect_table_cache_->insert(
|
| - std::make_pair(redirect.primary_key(), redirect));
|
| + predictor_->host_redirect_table_cache_->emplace(redirect.primary_key(),
|
| + redirect);
|
| }
|
|
|
| // Navigation simulation.
|
| @@ -605,8 +599,7 @@ TEST_F(ResourcePrefetchPredictorTest, NavigationNotRecorded) {
|
| content::RESOURCE_TYPE_SCRIPT, net::MEDIUM, "text/javascript", false);
|
| predictor_->RecordURLResponse(resource3);
|
|
|
| - StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(
|
| - predictor_.get());
|
| + StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(predictor_);
|
| EXPECT_CALL(
|
| mock_observer,
|
| OnNavigationLearned(kVisitCount,
|
| @@ -703,8 +696,7 @@ TEST_F(ResourcePrefetchPredictorTest, NavigationUrlNotInDB) {
|
|
|
| predictor_->RecordURLResponse(redirected);
|
|
|
| - StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(
|
| - predictor_.get());
|
| + StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(predictor_);
|
| EXPECT_CALL(mock_observer,
|
| OnNavigationLearned(
|
| kVisitCount, CreatePageRequestSummary("http://www.google.com",
|
| @@ -823,8 +815,7 @@ TEST_F(ResourcePrefetchPredictorTest, NavigationUrlInDB) {
|
| no_store.is_no_store = true;
|
| predictor_->RecordURLResponse(no_store);
|
|
|
| - StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(
|
| - predictor_.get());
|
| + StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(predictor_);
|
| EXPECT_CALL(mock_observer,
|
| OnNavigationLearned(
|
| kVisitCount, CreatePageRequestSummary("http://www.google.com",
|
| @@ -929,8 +920,7 @@ TEST_F(ResourcePrefetchPredictorTest, NavigationUrlNotInDBAndDBFull) {
|
| content::RESOURCE_TYPE_IMAGE, net::MEDIUM, "image/png", false);
|
| predictor_->RecordURLResponse(resource2);
|
|
|
| - StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(
|
| - predictor_.get());
|
| + StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(predictor_);
|
| EXPECT_CALL(mock_observer,
|
| OnNavigationLearned(
|
| kVisitCount, CreatePageRequestSummary(
|
| @@ -995,8 +985,7 @@ TEST_F(ResourcePrefetchPredictorTest, RedirectUrlNotInDB) {
|
| predictor_->RecordURLRedirect(fb3);
|
| NavigationID fb_end = CreateNavigationID(1, "https://facebook.com/google");
|
|
|
| - StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(
|
| - predictor_.get());
|
| + StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(predictor_);
|
| EXPECT_CALL(
|
| mock_observer,
|
| OnNavigationLearned(kVisitCount, CreatePageRequestSummary(
|
| @@ -1060,8 +1049,7 @@ TEST_F(ResourcePrefetchPredictorTest, RedirectUrlInDB) {
|
| predictor_->RecordURLRedirect(fb3);
|
| NavigationID fb_end = CreateNavigationID(1, "https://facebook.com/google");
|
|
|
| - StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(
|
| - predictor_.get());
|
| + StrictMock<MockResourcePrefetchPredictorObserver> mock_observer(predictor_);
|
| EXPECT_CALL(
|
| mock_observer,
|
| OnNavigationLearned(kVisitCount, CreatePageRequestSummary(
|
| @@ -2096,29 +2084,6 @@ TEST_F(ResourcePrefetchPredictorTest,
|
| ResourcePrefetchPredictor::RedirectStatus::REDIRECT_CORRECTLY_PREDICTED);
|
| }
|
|
|
| -TEST_F(ResourcePrefetchPredictorTest, TestPrefetchingDurationHistogram) {
|
| - // Prefetching duration for an url without resources in the database
|
| - // shouldn't be recorded.
|
| - const std::string main_frame_url = "http://google.com/?query=cats";
|
| - predictor_->StartPrefetching(GURL(main_frame_url), HintOrigin::EXTERNAL);
|
| - predictor_->StopPrefetching(GURL(main_frame_url));
|
| - histogram_tester_->ExpectTotalCount(
|
| - internal::kResourcePrefetchPredictorPrefetchingDurationHistogram, 0);
|
| -
|
| - // Fill the database to record a duration.
|
| - PrefetchData google = CreatePrefetchData("google.com", 1);
|
| - InitializeResourceData(
|
| - google.add_resources(), "https://cdn.google.com/script.js",
|
| - content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1, net::MEDIUM, false, false);
|
| - predictor_->host_table_cache_->insert(
|
| - std::make_pair(google.primary_key(), google));
|
| -
|
| - predictor_->StartPrefetching(GURL(main_frame_url), HintOrigin::EXTERNAL);
|
| - predictor_->StopPrefetching(GURL(main_frame_url));
|
| - histogram_tester_->ExpectTotalCount(
|
| - internal::kResourcePrefetchPredictorPrefetchingDurationHistogram, 1);
|
| -}
|
| -
|
| TEST_F(ResourcePrefetchPredictorTest, TestRecordFirstContentfulPaint) {
|
| using testing::_;
|
| EXPECT_CALL(*mock_tables_.get(), UpdateRedirectData(_, _));
|
|
|