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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/prerender/external_prerender_handler_android.h" 5 #include "chrome/browser/prerender/external_prerender_handler_android.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/strings/string16.h" 9 #include "base/strings/string16.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/browser/browser_process.h" 11 #include "chrome/browser/browser_process.h"
12 #include "chrome/browser/prerender/prerender_handle.h" 12 #include "chrome/browser/prerender/prerender_handle.h"
13 #include "chrome/browser/prerender/prerender_manager.h" 13 #include "chrome/browser/prerender/prerender_manager.h"
14 #include "chrome/browser/prerender/prerender_manager_factory.h" 14 #include "chrome/browser/prerender/prerender_manager_factory.h"
15 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
16 #include "chrome/browser/profiles/profile_android.h" 16 #include "chrome/browser/profiles/profile_android.h"
17 #include "content/public/browser/web_contents.h" 17 #include "content/public/browser/web_contents.h"
18 18
19 #include "jni/ExternalPrerenderHandler_jni.h" 19 #include "jni/ExternalPrerenderHandler_jni.h"
20 20
21 using base::android::ConvertJavaStringToUTF16; 21 using base::android::ConvertJavaStringToUTF16;
22 22
23 namespace prerender { 23 namespace prerender {
24 24
25 namespace {
26
27 static bool CheckAndConvertParams(
28 JNIEnv* env,
29 const JavaParamRef<jobject>& jprofile,
30 const JavaParamRef<jstring>& jurl,
31 const JavaParamRef<jobject>& jweb_contents,
32 GURL* url,
33 prerender::PrerenderManager** prerender_manager,
34 content::WebContents** web_contents) {
35 if (jurl == NULL)
36 return false;
37 *url = GURL(ConvertJavaStringToUTF16(env, jurl));
38 if (!url->is_valid())
39 return false;
40
41 Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile);
42 *prerender_manager =
43 prerender::PrerenderManagerFactory::GetForProfile(profile);
44 if (!*prerender_manager)
45 return false;
46 *web_contents = content::WebContents::FromJavaWebContents(jweb_contents);
47 return true;
48 }
49
50 } // namespace
51
25 bool ExternalPrerenderHandlerAndroid::AddPrerender( 52 bool ExternalPrerenderHandlerAndroid::AddPrerender(
26 JNIEnv* env, 53 JNIEnv* env,
27 const JavaParamRef<jobject>& obj, 54 const JavaParamRef<jobject>& obj,
28 const JavaParamRef<jobject>& jprofile, 55 const JavaParamRef<jobject>& jprofile,
29 const JavaParamRef<jobject>& jweb_contents, 56 const JavaParamRef<jobject>& jweb_contents,
30 const JavaParamRef<jstring>& jurl, 57 const JavaParamRef<jstring>& jurl,
31 const JavaParamRef<jstring>& jreferrer, 58 const JavaParamRef<jstring>& jreferrer,
32 jint width, 59 jint width,
33 jint height) { 60 jint height) {
34 Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile); 61 Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 return; 95 return;
69 prerender_handle_->OnCancel(); 96 prerender_handle_->OnCancel();
70 prerender_handle_.reset(); 97 prerender_handle_.reset();
71 } 98 }
72 99
73 static jboolean HasPrerenderedUrl(JNIEnv* env, 100 static jboolean HasPrerenderedUrl(JNIEnv* env,
74 const JavaParamRef<jclass>& clazz, 101 const JavaParamRef<jclass>& clazz,
75 const JavaParamRef<jobject>& jprofile, 102 const JavaParamRef<jobject>& jprofile,
76 const JavaParamRef<jstring>& jurl, 103 const JavaParamRef<jstring>& jurl,
77 const JavaParamRef<jobject>& jweb_contents) { 104 const JavaParamRef<jobject>& jweb_contents) {
78 if (jurl == NULL) 105 GURL url;
106 prerender::PrerenderManager* prerender_manager;
107 content::WebContents* web_contents;
108 if (!CheckAndConvertParams(env, jprofile, jurl, jweb_contents, &url,
109 &prerender_manager, &web_contents))
79 return false; 110 return false;
80
81 Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile);
82 GURL url = GURL(ConvertJavaStringToUTF16(env, jurl));
83 if (!url.is_valid())
84 return false;
85 prerender::PrerenderManager* prerender_manager =
86 prerender::PrerenderManagerFactory::GetForProfile(profile);
87 if (!prerender_manager)
88 return false;
89 content::WebContents* web_contents =
90 content::WebContents::FromJavaWebContents(jweb_contents);
91 return prerender_manager->HasPrerenderedUrl(url, web_contents); 111 return prerender_manager->HasPrerenderedUrl(url, web_contents);
92 } 112 }
93 113
114 static jboolean HasPrerenderedAndFinishedLoadingUrl(
115 JNIEnv* env,
116 const JavaParamRef<jclass>& clazz,
117 const JavaParamRef<jobject>& jprofile,
118 const JavaParamRef<jstring>& jurl,
119 const JavaParamRef<jobject>& jweb_contents) {
120 GURL url;
121 prerender::PrerenderManager* prerender_manager;
122 content::WebContents* web_contents;
123 if (!CheckAndConvertParams(env, jprofile, jurl, jweb_contents, &url,
124 &prerender_manager, &web_contents))
125 return false;
126 return prerender_manager->HasPrerenderedAndFinishedLoadingUrl(url,
127 web_contents);
128 }
129
94 ExternalPrerenderHandlerAndroid::ExternalPrerenderHandlerAndroid() {} 130 ExternalPrerenderHandlerAndroid::ExternalPrerenderHandlerAndroid() {}
95 131
96 ExternalPrerenderHandlerAndroid::~ExternalPrerenderHandlerAndroid() {} 132 ExternalPrerenderHandlerAndroid::~ExternalPrerenderHandlerAndroid() {}
97 133
98 static jlong Init(JNIEnv* env, const JavaParamRef<jclass>& clazz) { 134 static jlong Init(JNIEnv* env, const JavaParamRef<jclass>& clazz) {
99 ExternalPrerenderHandlerAndroid* external_handler = 135 ExternalPrerenderHandlerAndroid* external_handler =
100 new ExternalPrerenderHandlerAndroid(); 136 new ExternalPrerenderHandlerAndroid();
101 return reinterpret_cast<intptr_t>(external_handler); 137 return reinterpret_cast<intptr_t>(external_handler);
102 } 138 }
103 139
104 bool ExternalPrerenderHandlerAndroid::RegisterExternalPrerenderHandlerAndroid( 140 bool ExternalPrerenderHandlerAndroid::RegisterExternalPrerenderHandlerAndroid(
105 JNIEnv* env) { 141 JNIEnv* env) {
106 return RegisterNativesImpl(env); 142 return RegisterNativesImpl(env);
107 } 143 }
108 144
109 } // namespace prerender 145 } // namespace prerender
OLDNEW
« 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