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