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

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: . 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..3557e94ea29de643ed6a9661b9dac8bb533ae515 100644
--- a/chrome/browser/prerender/external_prerender_handler_android.cc
+++ b/chrome/browser/prerender/external_prerender_handler_android.cc
@@ -22,6 +22,32 @@ using base::android::ConvertJavaStringToUTF16;
namespace prerender {
+namespace {
+
+static bool ConvertParams(JNIEnv* env,
Yusuf 2016/02/22 22:11:31 maybe a better name for this as we don't convert a
Benoit L 2016/02/25 16:03:21 Done.
+ 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 +101,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 (!ConvertParams(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 (!ConvertParams(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() {}

Powered by Google App Engine
This is Rietveld 408576698