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

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

Issue 9387015: Upstreaming prerendering changes for Android. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: 3 Created 8 years, 10 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') | no next file » | 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 138785a7df0093d648f3140f3e8e18d95b94f2ff..e4a82e9cad6a444d1f6bf59e2007d813b54148a2 100644
--- a/chrome/browser/prerender/prerender_manager.cc
+++ b/chrome/browser/prerender/prerender_manager.cc
@@ -268,11 +268,17 @@ bool PrerenderManager::AddPrerenderFromLinkRelPrerender(
int route_id,
const GURL& url,
const content::Referrer& referrer) {
+#if defined(OS_ANDROID)
+ // TODO(jcivelli): http://crbug.com/113322 We should have an option to disable
+ // link-prerender and enable omnibox-prerender only.
+ return false;
+#else
std::pair<int, int> child_route_id_pair = std::make_pair(process_id,
route_id);
return AddPrerender(ORIGIN_LINK_REL_PRERENDER, child_route_id_pair,
url, referrer, NULL);
+#endif
}
bool PrerenderManager::AddPrerenderFromOmnibox(
@@ -634,6 +640,12 @@ bool PrerenderManager::IsWebContentsPrerendering(
return false;
}
+bool PrerenderManager::DidPrerenderFinishLoading(const GURL& url) const {
+ DCHECK(CalledOnValidThread());
+ PrerenderContents* contents = FindEntry(url);
+ return contents ? contents->has_finished_loading() : false;
+}
+
void PrerenderManager::MarkWebContentsAsPrerendered(WebContents* web_contents) {
DCHECK(CalledOnValidThread());
prerendered_tab_contents_set_.insert(web_contents);
@@ -828,11 +840,15 @@ bool PrerenderManager::AddPrerender(
// true, so that case needs to be explicitly checked for.
// TODO(tburkard): Figure out how to cancel prerendering in the opposite
// case, when a new tab is added to a process used for prerendering.
+ // On Android we do reuse processes as we have a limited number of them and we
+ // still want the benefits of prerendering even when several tabs are open.
+#if !defined(OS_ANDROID)
if (content::RenderProcessHost::ShouldTryToUseExistingProcessHost() &&
!content::RenderProcessHost::run_renderer_in_process()) {
RecordFinalStatus(origin, experiment, FINAL_STATUS_TOO_MANY_PROCESSES);
return false;
}
+#endif
// Check if enough time has passed since the last prerender.
if (!DoesRateLimitAllowPrerender()) {
« no previous file with comments | « chrome/browser/prerender/prerender_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698