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

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

Issue 2365613002: predictors: Refactor the prefetcher in resource_prefetch_predictor. (Closed)
Patch Set: . Created 4 years, 3 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.cc
diff --git a/chrome/browser/predictors/resource_prefetch_predictor.cc b/chrome/browser/predictors/resource_prefetch_predictor.cc
index 110810f90de73cfedf34f8df57c6f6c38887df39..e60edfe70d01bea2e64d020b3a5b8de7dd3488a5 100644
--- a/chrome/browser/predictors/resource_prefetch_predictor.cc
+++ b/chrome/browser/predictors/resource_prefetch_predictor.cc
@@ -318,16 +318,6 @@ bool ResourcePrefetchPredictor::URLRequestSummary::SummarizeResponse(
return true;
}
-ResourcePrefetchPredictor::Result::Result(
- PrefetchKeyType i_key_type,
- ResourcePrefetcher::RequestVector* i_requests)
- : key_type(i_key_type),
- requests(i_requests) {
-}
-
-ResourcePrefetchPredictor::Result::~Result() {
-}
-
////////////////////////////////////////////////////////////////////////////////
// ResourcePrefetchPredictor.
@@ -405,19 +395,6 @@ void ResourcePrefetchPredictor::RecordMainFrameLoadComplete(
}
}
-void ResourcePrefetchPredictor::FinishedPrefetchForNavigation(
- const NavigationID& navigation_id,
- PrefetchKeyType key_type,
- ResourcePrefetcher::RequestVector* requests) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
-
- std::unique_ptr<Result> result(new Result(key_type, requests));
- // Add the results to the results map.
- if (!results_map_.insert(std::make_pair(navigation_id, std::move(result)))
- .second)
- DLOG(FATAL) << "Returning results for existing navigation.";
-}
-
void ResourcePrefetchPredictor::Shutdown() {
if (prefetch_manager_.get()) {
prefetch_manager_->ShutdownOnUIThread();
@@ -521,9 +498,9 @@ void ResourcePrefetchPredictor::OnNavigationComplete(
bool ResourcePrefetchPredictor::GetPrefetchData(
const NavigationID& navigation_id,
- ResourcePrefetcher::RequestVector* prefetch_requests,
+ std::vector<GURL>* urls,
PrefetchKeyType* key_type) {
- DCHECK(prefetch_requests);
+ DCHECK(urls);
DCHECK(key_type);
*key_type = PREFETCH_KEY_TYPE_URL;
@@ -536,29 +513,27 @@ bool ResourcePrefetchPredictor::GetPrefetchData(
PrefetchDataMap::const_iterator iterator =
url_table_cache_->find(main_frame_url.spec());
if (iterator != url_table_cache_->end())
- PopulatePrefetcherRequest(iterator->second, prefetch_requests);
+ PopulatePrefetcherRequest(iterator->second, urls);
}
- if (!prefetch_requests->empty())
- return true;
pasko 2016/09/22 13:21:05 why is this early return removed? guaranteed to be
Benoit L 2016/09/22 14:42:49 No, but the return re-arrangement is equivalent. J
bool use_host_data = config_.IsPrefetchingEnabled(profile_) ?
config_.IsHostPrefetchingEnabled(profile_) :
config_.IsHostLearningEnabled();
- if (use_host_data) {
+ if (urls->empty() && use_host_data) {
PrefetchDataMap::const_iterator iterator =
host_table_cache_->find(main_frame_url.host());
if (iterator != host_table_cache_->end()) {
*key_type = PREFETCH_KEY_TYPE_HOST;
- PopulatePrefetcherRequest(iterator->second, prefetch_requests);
+ PopulatePrefetcherRequest(iterator->second, urls);
}
}
- return !prefetch_requests->empty();
+ return !urls->empty();
}
void ResourcePrefetchPredictor::PopulatePrefetcherRequest(
const PrefetchData& data,
- ResourcePrefetcher::RequestVector* requests) {
+ std::vector<GURL>* urls) {
for (const ResourceRow& row : data.resources) {
float confidence = static_cast<float>(row.number_of_hits) /
(row.number_of_hits + row.number_of_misses);
@@ -567,9 +542,7 @@ void ResourcePrefetchPredictor::PopulatePrefetcherRequest(
continue;
}
- ResourcePrefetcher::Request* req =
- new ResourcePrefetcher::Request(row.resource_url);
- requests->push_back(req);
+ urls->push_back(row.resource_url);
}
}
@@ -579,20 +552,17 @@ void ResourcePrefetchPredictor::StartPrefetching(
return;
// Prefer URL based data first.
- std::unique_ptr<ResourcePrefetcher::RequestVector> requests(
- new ResourcePrefetcher::RequestVector);
+ std::vector<GURL> urls;
PrefetchKeyType key_type;
- if (!GetPrefetchData(navigation_id, requests.get(), &key_type)) {
+ if (!GetPrefetchData(navigation_id, &urls, &key_type)) {
// No prefetching data at host or URL level.
return;
}
- BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
base::Bind(&ResourcePrefetcherManager::MaybeAddPrefetch,
- prefetch_manager_,
- navigation_id,
- key_type,
- base::Passed(&requests)));
+ prefetch_manager_, navigation_id, key_type, urls));
}
void ResourcePrefetchPredictor::StopPrefetching(
@@ -675,15 +645,6 @@ void ResourcePrefetchPredictor::CleanupAbandonedNavigations(
++it;
}
}
- for (ResultsMap::const_iterator it = results_map_.begin();
- it != results_map_.end();) {
- if (it->first.IsSameRenderer(navigation_id) ||
- (time_now - it->first.creation_time > max_navigation_age)) {
- results_map_.erase(it++);
- } else {
- ++it;
- }
- }
}
void ResourcePrefetchPredictor::DeleteAllUrls() {
@@ -777,9 +738,6 @@ void ResourcePrefetchPredictor::OnVisitCountLookup(
config_.max_hosts_to_track,
host_table_cache_.get());
}
-
- // Remove the navigation from the results map.
- results_map_.erase(navigation_id);
}
void ResourcePrefetchPredictor::LearnNavigation(
« no previous file with comments | « chrome/browser/predictors/resource_prefetch_predictor.h ('k') | chrome/browser/predictors/resource_prefetcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698