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

Unified Diff: chrome/browser/predictors/resource_prefetch_predictor_unittest.cc

Issue 2887133003: predictors: Refactor resource_prefetch_predictor triggering. (Closed)
Patch Set: . Created 3 years, 7 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
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(_, _));

Powered by Google App Engine
This is Rietveld 408576698