Commit 173b55d5 authored by Robert Ogden's avatar Robert Ogden Committed by Commit Bot

Add user setting check to IsolatedPrerender prefetching

Checks that the user has allowed pre* actions before prefetching a link.

Bug: 1023486
Change-Id: Ie1f6c2315124c3cfcdc13f41ae9cf1d126fa733e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2064462Reviewed-by: default avatarTarun Bansal <tbansal@chromium.org>
Commit-Queue: Robert Ogden <robertogden@chromium.org>
Cr-Commit-Position: refs/heads/master@{#742754}
parent 414bfbcf
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/bind.h" #include "base/bind.h"
#include "base/feature_list.h" #include "base/feature_list.h"
#include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service_factory.h" #include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service_factory.h"
#include "chrome/browser/net/prediction_options.h"
#include "chrome/browser/prerender/isolated/isolated_prerender_features.h" #include "chrome/browser/prerender/isolated/isolated_prerender_features.h"
#include "chrome/browser/prerender/isolated/isolated_prerender_params.h" #include "chrome/browser/prerender/isolated/isolated_prerender_params.h"
#include "chrome/browser/prerender/isolated/isolated_prerender_service.h" #include "chrome/browser/prerender/isolated/isolated_prerender_service.h"
...@@ -244,6 +245,11 @@ void IsolatedPrerenderTabHelper::OnPredictionUpdated( ...@@ -244,6 +245,11 @@ void IsolatedPrerenderTabHelper::OnPredictionUpdated(
return; return;
} }
// This checks whether the user has enabled pre* actions in the settings UI.
if (!chrome_browser_net::CanPreresolveAndPreconnectUI(profile_->GetPrefs())) {
return;
}
IsolatedPrerenderService* isolated_prerender_service = IsolatedPrerenderService* isolated_prerender_service =
IsolatedPrerenderServiceFactory::GetForProfile(profile_); IsolatedPrerenderServiceFactory::GetForProfile(profile_);
if (!isolated_prerender_service) { if (!isolated_prerender_service) {
......
...@@ -15,13 +15,16 @@ ...@@ -15,13 +15,16 @@
#include "base/test/scoped_feature_list.h" #include "base/test/scoped_feature_list.h"
#include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service.h" #include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service.h"
#include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service_factory.h" #include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service_factory.h"
#include "chrome/browser/net/prediction_options.h"
#include "chrome/browser/prerender/isolated/isolated_prerender_features.h" #include "chrome/browser/prerender/isolated/isolated_prerender_features.h"
#include "chrome/browser/prerender/isolated/isolated_prerender_service.h" #include "chrome/browser/prerender/isolated/isolated_prerender_service.h"
#include "chrome/browser/prerender/isolated/isolated_prerender_service_factory.h" #include "chrome/browser/prerender/isolated/isolated_prerender_service_factory.h"
#include "chrome/browser/prerender/isolated/isolated_prerender_service_workers_observer.h" #include "chrome/browser/prerender/isolated/isolated_prerender_service_workers_observer.h"
#include "chrome/browser/prerender/isolated/prefetched_mainframe_response_container.h" #include "chrome/browser/prerender/isolated/prefetched_mainframe_response_container.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/base/chrome_render_view_host_test_harness.h" #include "chrome/test/base/chrome_render_view_host_test_harness.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h"
#include "components/prefs/pref_service.h"
#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_context.h"
#include "content/public/browser/storage_partition.h" #include "content/public/browser/storage_partition.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
...@@ -378,6 +381,23 @@ TEST_F(IsolatedPrerenderTabHelperTest, NonHTML) { ...@@ -378,6 +381,23 @@ TEST_F(IsolatedPrerenderTabHelperTest, NonHTML) {
0U); 0U);
} }
TEST_F(IsolatedPrerenderTabHelperTest, UserSettingDisabled) {
base::test::ScopedFeatureList scoped_feature_list;
scoped_feature_list.InitAndEnableFeature(
features::kPrefetchSRPNavigationPredictions_HTMLOnly);
profile()->GetPrefs()->SetInteger(
prefs::kNetworkPredictionOptions,
chrome_browser_net::NETWORK_PREDICTION_NEVER);
GURL doc_url("https://www.google.com/search?q=cats");
GURL prediction_url("https://www.cat-food.com/");
MakeNavigationPrediction(web_contents(), doc_url, {prediction_url});
base::RunLoop().RunUntilIdle();
EXPECT_EQ(RequestCount(), 0);
}
TEST_F(IsolatedPrerenderTabHelperTest, SuccessCase) { TEST_F(IsolatedPrerenderTabHelperTest, SuccessCase) {
base::test::ScopedFeatureList scoped_feature_list; base::test::ScopedFeatureList scoped_feature_list;
scoped_feature_list.InitAndEnableFeature( scoped_feature_list.InitAndEnableFeature(
......
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