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

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

Issue 1710853002: android: Add a method to let Java know whether a prerender has finished loading. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Indentation. Created 4 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
Index: chrome/browser/prerender/external_prerender_handler_android.cc
diff --git a/chrome/browser/prerender/external_prerender_handler_android.cc b/chrome/browser/prerender/external_prerender_handler_android.cc
index 8714710bff238039b904da3516153d0a12819218..2981f73561a4f529361cdb028c1996ccff1fdde0 100644
--- a/chrome/browser/prerender/external_prerender_handler_android.cc
+++ b/chrome/browser/prerender/external_prerender_handler_android.cc
@@ -22,6 +22,33 @@ using base::android::ConvertJavaStringToUTF16;
namespace prerender {
+namespace {
+
+static bool CheckAndConvertParams(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& jprofile,
+ const JavaParamRef<jstring>& jurl,
+ const JavaParamRef<jobject>& jweb_contents,
+ GURL* url,
+ prerender::PrerenderManager** prerender_manager,
+ content::WebContents** web_contents) {
+ if (jurl == NULL)
+ return false;
+ *url = GURL(ConvertJavaStringToUTF16(env, jurl));
+ if (!url->is_valid())
+ return false;
+
+ Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile);
+ *prerender_manager =
+ prerender::PrerenderManagerFactory::GetForProfile(profile);
+ if (!*prerender_manager)
+ return false;
+ *web_contents = content::WebContents::FromJavaWebContents(jweb_contents);
+ return true;
+}
+
+} // namespace
+
bool ExternalPrerenderHandlerAndroid::AddPrerender(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
@@ -75,20 +102,29 @@ static jboolean HasPrerenderedUrl(JNIEnv* env,
const JavaParamRef<jobject>& jprofile,
const JavaParamRef<jstring>& jurl,
const JavaParamRef<jobject>& jweb_contents) {
- if (jurl == NULL)
+ GURL url;
+ prerender::PrerenderManager* prerender_manager;
+ content::WebContents* web_contents;
+ if (!CheckAndConvertParams(env, jprofile, jurl, jweb_contents, &url,
+ &prerender_manager, &web_contents))
return false;
+ return prerender_manager->HasPrerenderedUrl(url, web_contents);
+}
- Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile);
- GURL url = GURL(ConvertJavaStringToUTF16(env, jurl));
- if (!url.is_valid())
- return false;
- prerender::PrerenderManager* prerender_manager =
- prerender::PrerenderManagerFactory::GetForProfile(profile);
- if (!prerender_manager)
+static jboolean HasPrerenderedAndFinishedLoadingUrl(
+ JNIEnv* env,
+ const JavaParamRef<jclass>& clazz,
+ const JavaParamRef<jobject>& jprofile,
+ const JavaParamRef<jstring>& jurl,
+ const JavaParamRef<jobject>& jweb_contents) {
+ GURL url;
+ prerender::PrerenderManager* prerender_manager;
+ content::WebContents* web_contents;
+ if (!CheckAndConvertParams(env, jprofile, jurl, jweb_contents, &url,
+ &prerender_manager, &web_contents))
return false;
- content::WebContents* web_contents =
- content::WebContents::FromJavaWebContents(jweb_contents);
- return prerender_manager->HasPrerenderedUrl(url, web_contents);
+ return prerender_manager->HasPrerenderedAndFinishedLoadingUrl(url,
+ web_contents);
}
ExternalPrerenderHandlerAndroid::ExternalPrerenderHandlerAndroid() {}
« no previous file with comments | « chrome/browser/prerender/external_prerender_handler_android.h ('k') | chrome/browser/prerender/prerender_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698