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

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

Issue 2538743002: predictors: Add a origin for prefetch requests, remove the URL/host settings. (Closed)
Patch Set: . Created 4 years, 1 month 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_common.cc
diff --git a/chrome/browser/predictors/resource_prefetch_common.cc b/chrome/browser/predictors/resource_prefetch_common.cc
index b177fca2724e1c5e467adaffa7495df2ef599fd7..8cd02209b3ec65cff4677f920ec98cd3742d119c 100644
--- a/chrome/browser/predictors/resource_prefetch_common.cc
+++ b/chrome/browser/predictors/resource_prefetch_common.cc
@@ -21,11 +21,19 @@ namespace predictors {
namespace {
-constexpr int kLearningMode = ResourcePrefetchPredictorConfig::URL_LEARNING |
- ResourcePrefetchPredictorConfig::HOST_LEARNING;
-constexpr int kPrefetchingMode =
- ResourcePrefetchPredictorConfig::URL_PREFETCHING |
- ResourcePrefetchPredictorConfig::HOST_PREFETCHING;
+bool IsPrefetchingEnabledInternal(Profile* profile, int mode, int mask) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ if ((mode & mask) == 0)
+ return false;
+
+ if (!profile || !profile->GetPrefs() ||
+ chrome_browser_net::CanPrefetchAndPrerenderUI(profile->GetPrefs()) !=
+ chrome_browser_net::NetworkPredictionStatus::ENABLED) {
+ return false;
+ }
+
+ return true;
+}
} // namespace
@@ -49,10 +57,18 @@ bool IsSpeculativeResourcePrefetchingEnabled(
if (value == switches::kSpeculativeResourcePrefetchingDisabled) {
return false;
} else if (value == switches::kSpeculativeResourcePrefetchingLearning) {
- config->mode |= kLearningMode;
+ config->mode |= ResourcePrefetchPredictorConfig::LEARNING;
+ return true;
+ } else if (value ==
+ switches::kSpeculativeResourcePrefetchingEnabledExternal) {
+ config->mode |= ResourcePrefetchPredictorConfig::LEARNING |
+ ResourcePrefetchPredictorConfig::PREFETCHING_FOR_EXTERNAL;
return true;
} else if (value == switches::kSpeculativeResourcePrefetchingEnabled) {
- config->mode |= kLearningMode | kPrefetchingMode;
+ config->mode |=
+ ResourcePrefetchPredictorConfig::LEARNING |
+ ResourcePrefetchPredictorConfig::PREFETCHING_FOR_NAVIGATION |
+ ResourcePrefetchPredictorConfig::PREFETCHING_FOR_EXTERNAL;
return true;
}
}
@@ -128,42 +144,28 @@ ResourcePrefetchPredictorConfig::~ResourcePrefetchPredictorConfig() {
}
bool ResourcePrefetchPredictorConfig::IsLearningEnabled() const {
- return IsURLLearningEnabled() || IsHostLearningEnabled();
-}
-
-bool ResourcePrefetchPredictorConfig::IsPrefetchingEnabled(
- Profile* profile) const {
- return IsURLPrefetchingEnabled(profile) || IsHostPrefetchingEnabled(profile);
-}
-
-bool ResourcePrefetchPredictorConfig::IsURLLearningEnabled() const {
- return (mode & URL_LEARNING) > 0;
-}
-
-bool ResourcePrefetchPredictorConfig::IsHostLearningEnabled() const {
- return (mode & HOST_LEARNING) > 0;
+ return (mode & LEARNING) > 0;
}
-bool ResourcePrefetchPredictorConfig::IsURLPrefetchingEnabled(
+bool ResourcePrefetchPredictorConfig::IsPrefetchingEnabledForSomeOrigin(
Profile* profile) const {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (!profile || !profile->GetPrefs() ||
- chrome_browser_net::CanPrefetchAndPrerenderUI(profile->GetPrefs()) !=
- chrome_browser_net::NetworkPredictionStatus::ENABLED) {
- return false;
- }
- return (mode & URL_PREFETCHING) > 0;
+ int mask = PREFETCHING_FOR_NAVIGATION | PREFETCHING_FOR_EXTERNAL;
+ return IsPrefetchingEnabledInternal(profile, mode, mask);
}
-bool ResourcePrefetchPredictorConfig::IsHostPrefetchingEnabled(
- Profile* profile) const {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (!profile || !profile->GetPrefs() ||
- chrome_browser_net::CanPrefetchAndPrerenderUI(profile->GetPrefs()) !=
- chrome_browser_net::NetworkPredictionStatus::ENABLED) {
- return false;
+bool ResourcePrefetchPredictorConfig::IsPrefetchingEnabledForOrigin(
+ Profile* profile,
+ PrefetchOrigin origin) const {
+ int mask = 0;
+ switch (origin) {
+ case PrefetchOrigin::NAVIGATION:
+ mask = PREFETCHING_FOR_NAVIGATION;
+ break;
+ case PrefetchOrigin::EXTERNAL:
+ mask = PREFETCHING_FOR_EXTERNAL;
+ break;
}
- return (mode & HOST_PREFETCHING) > 0;
+ return IsPrefetchingEnabledInternal(profile, mode, mask);
}
bool ResourcePrefetchPredictorConfig::IsLowConfidenceForTest() const {
« no previous file with comments | « chrome/browser/predictors/resource_prefetch_common.h ('k') | chrome/browser/predictors/resource_prefetch_common_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698