 Chromium Code Reviews
 Chromium Code Reviews 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
    
  
    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| 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() {} |