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

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

Issue 2632503005: predictors: Collect page load metrics for ResourcePrefetchPredictor. (Closed)
Patch Set: Created 3 years, 11 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 3c5da2843d3839f01c2209d332ad2a1c35925aa5..f4f27076575344b8619f3c67a9714fa5cd0ff7b9 100644
--- a/chrome/browser/predictors/resource_prefetch_predictor.cc
+++ b/chrome/browser/predictors/resource_prefetch_predictor.cc
@@ -507,6 +507,14 @@ void ResourcePrefetchPredictor::OnPrefetchingFinished(
observer_->OnPrefetchingFinished(main_frame_url);
}
+bool ResourcePrefetchPredictor::IsUrlPrefetchable(const GURL& main_frame_url) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ if (initialization_state_ != INITIALIZED)
+ return false;
+
+ return GetPrefetchData(main_frame_url, nullptr);
+}
+
void ResourcePrefetchPredictor::SetObserverForTesting(TestObserver* observer) {
observer_ = observer;
}
@@ -624,9 +632,8 @@ void ResourcePrefetchPredictor::OnNavigationComplete(
}
bool ResourcePrefetchPredictor::GetPrefetchData(const GURL& main_frame_url,
- std::vector<GURL>* urls) {
- DCHECK(urls);
- DCHECK(urls->empty());
+ std::vector<GURL>* urls) const {
+ DCHECK(!urls || urls->empty());
// Fetch URLs based on a redirect endpoint for URL/host first.
std::string redirect_endpoint;
@@ -655,19 +662,21 @@ bool ResourcePrefetchPredictor::GetPrefetchData(const GURL& main_frame_url,
bool ResourcePrefetchPredictor::PopulatePrefetcherRequest(
const std::string& main_frame_key,
const PrefetchDataMap& data_map,
- std::vector<GURL>* urls) {
- DCHECK(urls);
+ std::vector<GURL>* urls) const {
PrefetchDataMap::const_iterator it = data_map.find(main_frame_key);
if (it == data_map.end())
return false;
- size_t initial_size = urls->size();
+ bool has_prefetchable_resource = false;
for (const ResourceData& resource : it->second.resources()) {
- if (IsResourcePrefetchable(resource))
- urls->push_back(GURL(resource.resource_url()));
+ if (IsResourcePrefetchable(resource)) {
+ has_prefetchable_resource = true;
+ if (urls)
+ urls->push_back(GURL(resource.resource_url()));
+ }
}
- return urls->size() > initial_size;
+ return has_prefetchable_resource;
}
void ResourcePrefetchPredictor::CreateCaches(
@@ -1110,20 +1119,6 @@ void ResourcePrefetchPredictor::LearnRedirect(const std::string& key,
}
}
-bool ResourcePrefetchPredictor::IsDataPrefetchable(
- const std::string& main_frame_key,
- const PrefetchDataMap& data_map) const {
- PrefetchDataMap::const_iterator it = data_map.find(main_frame_key);
- if (it == data_map.end())
- return false;
-
- return std::any_of(it->second.resources().begin(),
- it->second.resources().end(),
- [this](const ResourceData& resource) {
- return IsResourcePrefetchable(resource);
- });
-}
-
bool ResourcePrefetchPredictor::IsResourcePrefetchable(
const ResourceData& resource) const {
float confidence = static_cast<float>(resource.number_of_hits()) /
@@ -1148,9 +1143,10 @@ void ResourcePrefetchPredictor::ReportDatabaseReadiness(
// Hostnames in TopHostsLists are stripped of their 'www.' prefix. We
// assume that www.foo.com entry from |host_table_cache_| is also suitable
// for foo.com.
- if (IsDataPrefetchable(host, *host_table_cache_) ||
+ if (PopulatePrefetcherRequest(host, *host_table_cache_, nullptr) ||
(!base::StartsWith(host, "www.", base::CompareCase::SENSITIVE) &&
- IsDataPrefetchable("www." + host, *host_table_cache_))) {
+ PopulatePrefetcherRequest("www." + host, *host_table_cache_,
+ nullptr))) {
++count_in_cache;
}
}

Powered by Google App Engine
This is Rietveld 408576698