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

Unified Diff: chrome/browser/prerender/prerender_manager.cc

Issue 1767243002: Update prerender policy for custom tabs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: mmenke@'s comments Created 4 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
« no previous file with comments | « chrome/browser/prerender/prerender_manager.h ('k') | chrome/browser/prerender/prerender_origin.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_manager.cc
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc
index 5b63e0b75a0f0761bf6f23966bccfbf9b5183278..d0c659b30652083132fede732638775c76ca8843 100644
--- a/chrome/browser/prerender/prerender_manager.cc
+++ b/chrome/browser/prerender/prerender_manager.cc
@@ -300,7 +300,19 @@ PrerenderHandle* PrerenderManager::AddPrerenderFromExternalRequest(
const content::Referrer& referrer,
SessionStorageNamespace* session_storage_namespace,
const gfx::Size& size) {
- return AddPrerender(ORIGIN_EXTERNAL_REQUEST, url, referrer, size,
+ return AddPrerender(
+ ORIGIN_EXTERNAL_REQUEST, url, referrer, size, session_storage_namespace);
+}
+
+PrerenderHandle* PrerenderManager::AddPrerenderOnCellularFromExternalRequest(
+ const GURL& url,
+ const content::Referrer& referrer,
+ SessionStorageNamespace* session_storage_namespace,
+ const gfx::Size& size) {
+ return AddPrerender(ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
+ url,
+ referrer,
+ size,
session_storage_namespace);
}
@@ -577,8 +589,10 @@ void PrerenderManager::RecordPerceivedPageLoadTime(
double fraction_plt_elapsed_at_swap_in,
const GURL& url) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- if (GetPredictionStatus() != NetworkPredictionStatus::ENABLED)
+ if (GetPredictionStatusForOrigin(origin)
+ != NetworkPredictionStatus::ENABLED) {
return;
+ }
histograms_->RecordPerceivedPageLoadTime(
origin, perceived_page_load_time, navigation_type, url);
@@ -791,6 +805,12 @@ base::DictionaryValue* PrerenderManager::GetAsValue() const {
dict_value->Set("active", GetActivePrerendersAsValue());
dict_value->SetBoolean("enabled",
GetPredictionStatus() == NetworkPredictionStatus::ENABLED);
+ std::string disabled_note;
+ if (GetPredictionStatus() == NetworkPredictionStatus::DISABLED_ALWAYS)
+ disabled_note = "Disabled by user setting";
+ if (GetPredictionStatus() == NetworkPredictionStatus::DISABLED_DUE_TO_NETWORK)
+ disabled_note = "Disabled on cellular connection by default";
+ dict_value->SetString("disabled_note", disabled_note);
dict_value->SetBoolean("omnibox_enabled", IsOmniboxEnabled(profile_));
// If prerender is disabled via a flag this method is not even called.
std::string enabled_note;
@@ -942,7 +962,8 @@ PrerenderHandle* PrerenderManager::AddPrerender(
return nullptr;
}
- NetworkPredictionStatus prerendering_status = GetPredictionStatus();
+ NetworkPredictionStatus prerendering_status =
+ GetPredictionStatusForOrigin(origin);
if (prerendering_status != NetworkPredictionStatus::ENABLED) {
FinalStatus final_status =
prerendering_status == NetworkPredictionStatus::DISABLED_DUE_TO_NETWORK
@@ -1291,6 +1312,18 @@ NetworkPredictionStatus PrerenderManager::GetPredictionStatus() const {
return CanPrefetchAndPrerenderUI(profile_->GetPrefs());
}
+NetworkPredictionStatus PrerenderManager::GetPredictionStatusForOrigin(
+ Origin origin) const {
+ DCHECK(CalledOnValidThread());
+ NetworkPredictionStatus prediction_status =
+ CanPrefetchAndPrerenderUI(profile_->GetPrefs());
+ if (prediction_status == NetworkPredictionStatus::DISABLED_DUE_TO_NETWORK
+ && origin == ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR) {
+ prediction_status = NetworkPredictionStatus::ENABLED;
+ }
+ return prediction_status;
+}
+
void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64_t bytes) {
DCHECK_GE(bytes, 0);
if (GetPredictionStatus() == NetworkPredictionStatus::ENABLED &&
« no previous file with comments | « chrome/browser/prerender/prerender_manager.h ('k') | chrome/browser/prerender/prerender_origin.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698