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

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

Issue 2755093002: predictors: Mark before_first_contentful_paint for resources fetched before fcp. (Closed)
Patch Set: Mark before_first_contentful_paint. Created 3 years, 9 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 ad3e824f5ea5adadb37ada20bb5fbf40412e3ae5..b26b7add827810a961b55b9b03348892d6b63380 100644
--- a/chrome/browser/predictors/resource_prefetch_predictor.cc
+++ b/chrome/browser/predictors/resource_prefetch_predictor.cc
@@ -417,6 +417,8 @@ void ResourcePrefetchPredictor::SetAllowPortInUrlsForTesting(bool state) {
ResourcePrefetchPredictor::URLRequestSummary::URLRequestSummary()
: resource_type(content::RESOURCE_TYPE_LAST_TYPE),
priority(net::IDLE),
+ creation_time(base::TimeTicks()),
+ before_first_contentful_paint(false),
was_cached(false),
has_validators(false),
always_revalidate(false) {}
@@ -427,6 +429,8 @@ ResourcePrefetchPredictor::URLRequestSummary::URLRequestSummary(
resource_url(other.resource_url),
resource_type(other.resource_type),
priority(other.priority),
+ creation_time(other.creation_time),
+ before_first_contentful_paint(other.before_first_contentful_paint),
mime_type(other.mime_type),
was_cached(other.was_cached),
redirect_url(other.redirect_url),
@@ -445,6 +449,7 @@ bool ResourcePrefetchPredictor::URLRequestSummary::SummarizeResponse(
if (!request_info)
return false;
+ summary->creation_time = request.creation_time();
summary->resource_url = request.original_url();
content::ResourceType resource_type_from_request =
request_info->GetResourceType();
@@ -591,6 +596,22 @@ void ResourcePrefetchPredictor::RecordMainFrameLoadComplete(
}
}
+void ResourcePrefetchPredictor::RecordFirstContentfulPaint(
+ const NavigationID& navigation_id,
+ const base::TimeDelta& first_contentful_paint) {
+ NavigationMap::iterator nav_it =
+ inflight_navigations_.find(navigation_id);
+ if (nav_it == inflight_navigations_.end())
+ return;
+
+ base::TimeTicks fcp = nav_it->first.creation_time + first_contentful_paint;
+ for (auto& request_summary : nav_it->second->subresource_requests) {
+ request_summary.before_first_contentful_paint =
+ request_summary.creation_time < fcp;
+ }
+}
+
+
void ResourcePrefetchPredictor::StartPrefetching(const GURL& url,
PrefetchOrigin origin) {
TRACE_EVENT1("browser", "ResourcePrefetchPredictor::StartPrefetching", "url",
@@ -1179,6 +1200,8 @@ void ResourcePrefetchPredictor::LearnNavigation(
continue;
ResourceData* resource_to_add = data.add_resources();
+ resource_to_add->set_before_first_contentful_paint(
+ summary.before_first_contentful_paint);
resource_to_add->set_resource_url(summary.resource_url.spec());
resource_to_add->set_resource_type(
static_cast<ResourceData::ResourceType>(summary.resource_type));

Powered by Google App Engine
This is Rietveld 408576698