@@ -1033,7 +1033,8 @@ TEST_F(PreloadingDeciderTest,
10331033 /* 100*(75-0/500)=*/ 15 , 1 );
10341034}
10351035
1036- TEST_F (PreloadingDeciderTest, ViewportHeuristicPredictionIsNotEnacted) {
1036+ TEST_F (PreloadingDeciderTest,
1037+ ModerateViewportHeuristicPredictionIsNotEnactedIfDisabled) {
10371038 base::test::ScopedFeatureList feature_list;
10381039 feature_list.InitAndEnableFeatureWithParameters (
10391040 blink::features::kPreloadingModerateViewportHeuristics ,
@@ -1051,13 +1052,14 @@ TEST_F(PreloadingDeciderTest, ViewportHeuristicPredictionIsNotEnacted) {
10511052 candidates.push_back (std::move (candidate));
10521053 preloading_decider->UpdateSpeculationCandidates (candidates);
10531054
1054- preloading_decider->OnViewportHeuristicTriggered (url);
1055+ preloading_decider->OnModerateViewportHeuristicTriggered (url);
10551056 const auto & prefetches = GetPrefetchService ()->prefetches_ ;
10561057 EXPECT_TRUE (prefetches.empty ());
10571058}
10581059
1059- TEST_F (PreloadingDeciderTest,
1060- ViewportHeuristicPredictionIsEnactedForModeratePrefetchCandidate) {
1060+ TEST_F (
1061+ PreloadingDeciderTest,
1062+ ModerateViewportHeuristicPredictionIsEnactedForModeratePrefetchCandidate) {
10611063 base::test::ScopedFeatureList feature_list;
10621064 feature_list.InitAndEnableFeatureWithParameters (
10631065 blink::features::kPreloadingModerateViewportHeuristics ,
@@ -1076,7 +1078,7 @@ TEST_F(PreloadingDeciderTest,
10761078 candidates.push_back (std::move (candidate));
10771079 preloading_decider->UpdateSpeculationCandidates (candidates);
10781080
1079- preloading_decider->OnViewportHeuristicTriggered (url);
1081+ preloading_decider->OnModerateViewportHeuristicTriggered (url);
10801082 const auto & prefetches = GetPrefetchService ()->prefetches_ ;
10811083 ASSERT_EQ (prefetches.size (), 1u );
10821084 EXPECT_EQ (prefetches[0 ]->GetURL (), url);
@@ -1095,7 +1097,44 @@ TEST_F(PreloadingDeciderTest,
10951097}
10961098
10971099TEST_F (PreloadingDeciderTest,
1098- ViewportHeuristicIsEnactedForModeratePrerenderCandidate) {
1100+ EagerViewportHeuristicPredictionIsEnactedForEagerPrefetchCandidate) {
1101+ base::test::ScopedFeatureList feature_list;
1102+ feature_list.InitAndEnableFeature (
1103+ blink::features::kPreloadingEagerViewportHeuristics );
1104+
1105+ base::HistogramTester histogram_tester;
1106+ auto * preloading_decider =
1107+ PreloadingDecider::GetOrCreateForCurrentDocument (&GetPrimaryMainFrame ());
1108+ ASSERT_TRUE (preloading_decider != nullptr );
1109+
1110+ const GURL url (" https://example.com" );
1111+ std::vector<blink::mojom::SpeculationCandidatePtr> candidates;
1112+ auto candidate =
1113+ MakeCandidate (url, blink::mojom::SpeculationAction::kPrefetch ,
1114+ blink::mojom::SpeculationEagerness::kEager );
1115+ candidates.push_back (std::move (candidate));
1116+ preloading_decider->UpdateSpeculationCandidates (candidates);
1117+
1118+ preloading_decider->OnEagerViewportHeuristicTriggered (url);
1119+ const auto & prefetches = GetPrefetchService ()->prefetches_ ;
1120+ ASSERT_EQ (prefetches.size (), 1u );
1121+ EXPECT_EQ (prefetches[0 ]->GetURL (), url);
1122+
1123+ std::unique_ptr<NavigationSimulator> navigation =
1124+ NavigationSimulator::CreateRendererInitiated (url, main_rfh ());
1125+ navigation->SetTransition (ui::PAGE_TRANSITION_LINK);
1126+ navigation->Start ();
1127+
1128+ histogram_tester.ExpectUniqueSample (
1129+ " Preloading.Predictor.EagerViewportHeuristic.Precision" ,
1130+ PredictorConfusionMatrix::kTruePositive , 1 );
1131+ histogram_tester.ExpectUniqueSample (
1132+ " Preloading.Predictor.EagerViewportHeuristic.Recall" ,
1133+ PredictorConfusionMatrix::kTruePositive , 1 );
1134+ }
1135+
1136+ TEST_F (PreloadingDeciderTest,
1137+ ModerateViewportHeuristicIsEnactedForModeratePrerenderCandidate) {
10991138 base::test::ScopedFeatureList feature_list;
11001139 feature_list.InitAndEnableFeatureWithParameters (
11011140 blink::features::kPreloadingModerateViewportHeuristics ,
@@ -1114,17 +1153,43 @@ TEST_F(PreloadingDeciderTest,
11141153 candidates.push_back (std::move (candidate));
11151154 preloading_decider->UpdateSpeculationCandidates (candidates);
11161155
1117- preloading_decider->OnViewportHeuristicTriggered (url);
1156+ preloading_decider->OnModerateViewportHeuristicTriggered (url);
11181157 ASSERT_EQ (mock_prerender.Get ()->prerenders_ .size (), 1u );
11191158 EXPECT_EQ (mock_prerender.Get ()->prerenders_ [0 ].first , url);
11201159}
11211160
11221161TEST_F (PreloadingDeciderTest,
1123- ViewportHeuristicIsNotEnactedForConservativePrefetchCandidate ) {
1162+ EagerViewportHeuristicIsEnactedForEagerPrerenderCandidate ) {
11241163 base::test::ScopedFeatureList feature_list;
1125- feature_list.InitAndEnableFeatureWithParameters (
1126- blink::features::kPreloadingModerateViewportHeuristics ,
1127- {{" enact_candidates" , " true" }});
1164+ feature_list.InitAndEnableFeature (
1165+ blink::features::kPreloadingEagerViewportHeuristics );
1166+
1167+ auto * preloading_decider =
1168+ PreloadingDecider::GetOrCreateForCurrentDocument (&GetPrimaryMainFrame ());
1169+ ASSERT_TRUE (preloading_decider != nullptr );
1170+ ScopedMockPrerenderer mock_prerender (preloading_decider);
1171+
1172+ const GURL url (" https://example.com" );
1173+ std::vector<blink::mojom::SpeculationCandidatePtr> candidates;
1174+ auto candidate =
1175+ MakeCandidate (url, blink::mojom::SpeculationAction::kPrerender ,
1176+ blink::mojom::SpeculationEagerness::kEager );
1177+ candidates.push_back (std::move (candidate));
1178+ preloading_decider->UpdateSpeculationCandidates (candidates);
1179+
1180+ preloading_decider->OnEagerViewportHeuristicTriggered (url);
1181+ ASSERT_EQ (mock_prerender.Get ()->prerenders_ .size (), 1u );
1182+ EXPECT_EQ (mock_prerender.Get ()->prerenders_ [0 ].first , url);
1183+ }
1184+
1185+ TEST_F (PreloadingDeciderTest,
1186+ ViewportHeuristicsAreNotEnactedForConservativePrefetchCandidate) {
1187+ base::test::ScopedFeatureList feature_list;
1188+ feature_list.InitWithFeaturesAndParameters (
1189+ {{blink::features::kPreloadingModerateViewportHeuristics ,
1190+ {{" enact_candidates" , " true" }}},
1191+ {blink::features::kPreloadingEagerViewportHeuristics , {}}},
1192+ /* disabled_features=*/ {});
11281193
11291194 auto * preloading_decider =
11301195 PreloadingDecider::GetOrCreateForCurrentDocument (&GetPrimaryMainFrame ());
@@ -1138,7 +1203,8 @@ TEST_F(PreloadingDeciderTest,
11381203 candidates.push_back (std::move (candidate));
11391204 preloading_decider->UpdateSpeculationCandidates (candidates);
11401205
1141- preloading_decider->OnViewportHeuristicTriggered (url);
1206+ preloading_decider->OnModerateViewportHeuristicTriggered (url);
1207+ preloading_decider->OnEagerViewportHeuristicTriggered (url);
11421208 const auto & prefetches = GetPrefetchService ()->prefetches_ ;
11431209 EXPECT_TRUE (prefetches.empty ());
11441210}
0 commit comments