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