Commit 571d97c8 authored by Sophie Chang's avatar Sophie Chang Committed by Commit Bot

Make sure we still have adequate opt guide prediction logging for preconnect even if prefetch is on

This will allow us to continue to evaluate preconnect accuracy even if
the prefetch experiment is on.

Change-Id: I1a0d0d2f10203413fc31b6241b0c9b8bbd49af28
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2308856Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Commit-Queue: Sophie Chang <sophiechang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#790220}
parent db553896
...@@ -201,14 +201,9 @@ void LoadingStatsCollector::RecordPageRequestSummary( ...@@ -201,14 +201,9 @@ void LoadingStatsCollector::RecordPageRequestSummary(
} }
if (!optimization_guide_prediction->preconnect_prediction.requests if (!optimization_guide_prediction->preconnect_prediction.requests
.empty()) { .empty()) {
size_t correctly_predicted_origins = ReportPreconnectPredictionAccuracy( ReportPreconnectPredictionAccuracy(
optimization_guide_prediction->preconnect_prediction, summary, optimization_guide_prediction->preconnect_prediction, summary,
HintOrigin::OPTIMIZATION_GUIDE); HintOrigin::OPTIMIZATION_GUIDE);
builder.SetOptimizationGuidePredictionOrigins(
std::min(ukm_cap, optimization_guide_prediction->preconnect_prediction
.requests.size()));
builder.SetOptimizationGuidePredictionCorrectlyPredictedOrigins(
std::min(ukm_cap, correctly_predicted_origins));
} }
if (!optimization_guide_prediction->predicted_subresources.empty()) { if (!optimization_guide_prediction->predicted_subresources.empty()) {
builder.SetOptimizationGuidePredictionSubresources(std::min( builder.SetOptimizationGuidePredictionSubresources(std::min(
...@@ -224,6 +219,29 @@ void LoadingStatsCollector::RecordPageRequestSummary( ...@@ -224,6 +219,29 @@ void LoadingStatsCollector::RecordPageRequestSummary(
}); });
builder.SetOptimizationGuidePredictionCorrectlyPredictedSubresources( builder.SetOptimizationGuidePredictionCorrectlyPredictedSubresources(
std::min(ukm_cap, correctly_predicted_subresources)); std::min(ukm_cap, correctly_predicted_subresources));
url::Origin main_frame_origin = url::Origin::Create(summary.initial_url);
std::set<url::Origin> predicted_origins;
for (const auto& subresource :
optimization_guide_prediction->predicted_subresources) {
url::Origin subresource_origin = url::Origin::Create(subresource);
if (subresource_origin == main_frame_origin) {
// Do not count the main frame origin as a predicted origin.
continue;
}
predicted_origins.insert(subresource_origin);
}
builder.SetOptimizationGuidePredictionOrigins(
std::min(ukm_cap, predicted_origins.size()));
const auto& actual_subresource_origins = summary.origins;
size_t correctly_predicted_origins = std::count_if(
predicted_origins.begin(), predicted_origins.end(),
[&actual_subresource_origins](const url::Origin& subresource_origin) {
return actual_subresource_origins.find(subresource_origin) !=
actual_subresource_origins.end();
});
builder.SetOptimizationGuidePredictionCorrectlyPredictedOrigins(
std::min(ukm_cap, correctly_predicted_origins));
} }
recorded_ukm = true; recorded_ukm = true;
} }
......
...@@ -308,7 +308,7 @@ TEST_F(LoadingStatsCollectorTest, ...@@ -308,7 +308,7 @@ TEST_F(LoadingStatsCollectorTest,
entry, entry,
ukm::builders::LoadingPredictor:: ukm::builders::LoadingPredictor::
kOptimizationGuidePredictionCorrectlyPredictedOriginsName, kOptimizationGuidePredictionCorrectlyPredictedOriginsName,
2); 1);
ukm_recorder_->ExpectEntryMetric( ukm_recorder_->ExpectEntryMetric(
entry, entry,
ukm::builders::LoadingPredictor:: ukm::builders::LoadingPredictor::
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment