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

Side by Side Diff: content/browser/android/web_contents_observer_android.cc

Issue 786933005: [Android] Add proxy for Java-based WebContentsObservers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix build Created 5 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/android/web_contents_observer_android.h" 5 #include "content/browser/android/web_contents_observer_android.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include <jni.h> 9 #include <jni.h>
10 10
11 #include "base/android/jni_android.h" 11 #include "base/android/jni_android.h"
12 #include "base/android/jni_string.h" 12 #include "base/android/jni_string.h"
13 #include "base/android/scoped_java_ref.h" 13 #include "base/android/scoped_java_ref.h"
14 #include "content/browser/renderer_host/render_widget_host_impl.h" 14 #include "content/browser/renderer_host/render_widget_host_impl.h"
15 #include "content/browser/web_contents/web_contents_impl.h" 15 #include "content/browser/web_contents/web_contents_impl.h"
16 #include "content/public/browser/navigation_details.h" 16 #include "content/public/browser/navigation_details.h"
17 #include "content/public/browser/navigation_entry.h" 17 #include "content/public/browser/navigation_entry.h"
18 #include "jni/WebContentsObserver_jni.h" 18 #include "jni/WebContentsObserverProxy_jni.h"
19 19
20 using base::android::AttachCurrentThread; 20 using base::android::AttachCurrentThread;
21 using base::android::ScopedJavaLocalRef; 21 using base::android::ScopedJavaLocalRef;
22 using base::android::ConvertUTF8ToJavaString; 22 using base::android::ConvertUTF8ToJavaString;
23 using base::android::ConvertUTF16ToJavaString; 23 using base::android::ConvertUTF16ToJavaString;
24 24
25 namespace content { 25 namespace content {
26 26
27 // TODO(dcheng): File a bug. This class incorrectly passes just a frame ID, 27 // TODO(dcheng): File a bug. This class incorrectly passes just a frame ID,
28 // which is not sufficient to identify a frame (since frame IDs are scoped per 28 // which is not sufficient to identify a frame (since frame IDs are scoped per
(...skipping 16 matching lines...) Expand all
45 45
46 WebContentsObserverAndroid* native_observer = new WebContentsObserverAndroid( 46 WebContentsObserverAndroid* native_observer = new WebContentsObserverAndroid(
47 env, obj, web_contents); 47 env, obj, web_contents);
48 return reinterpret_cast<intptr_t>(native_observer); 48 return reinterpret_cast<intptr_t>(native_observer);
49 } 49 }
50 50
51 void WebContentsObserverAndroid::Destroy(JNIEnv* env, jobject obj) { 51 void WebContentsObserverAndroid::Destroy(JNIEnv* env, jobject obj) {
52 delete this; 52 delete this;
53 } 53 }
54 54
55 void WebContentsObserverAndroid::WebContentsDestroyed() { 55 void WebContentsObserverAndroid::WebContentsDestroyed() {
Ted C 2015/02/18 22:54:36 I would update the name of this to make it easier
jdduke (slow) 2015/02/24 20:55:49 Done.
56 JNIEnv* env = AttachCurrentThread(); 56 JNIEnv* env = AttachCurrentThread();
57 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 57 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
58 if (obj.is_null()) { 58 if (obj.is_null()) {
59 delete this; 59 delete this;
60 } else { 60 } else {
61 // The java side will destroy |this| 61 // The java side will destroy |this|
62 Java_WebContentsObserver_detachFromWebContents(env, obj.obj()); 62 Java_WebContentsObserverProxy_detachFromWebContents(env, obj.obj());
63 } 63 }
64 } 64 }
65 65
66 void WebContentsObserverAndroid::RenderViewReady() { 66 void WebContentsObserverAndroid::RenderViewReady() {
67 JNIEnv* env = AttachCurrentThread(); 67 JNIEnv* env = AttachCurrentThread();
68 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 68 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
69 if (obj.is_null()) 69 if (obj.is_null())
70 return; 70 return;
71 Java_WebContentsObserver_renderViewReady(env, obj.obj()); 71 Java_WebContentsObserverProxy_renderViewReady(env, obj.obj());
72 } 72 }
73 73
74 void WebContentsObserverAndroid::RenderProcessGone( 74 void WebContentsObserverAndroid::RenderProcessGone(
75 base::TerminationStatus termination_status) { 75 base::TerminationStatus termination_status) {
76 JNIEnv* env = AttachCurrentThread(); 76 JNIEnv* env = AttachCurrentThread();
77 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 77 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
78 if (obj.is_null()) 78 if (obj.is_null())
79 return; 79 return;
80 jboolean was_oom_protected = 80 jboolean was_oom_protected =
81 termination_status == base::TERMINATION_STATUS_OOM_PROTECTED; 81 termination_status == base::TERMINATION_STATUS_OOM_PROTECTED;
82 Java_WebContentsObserver_renderProcessGone( 82 Java_WebContentsObserverProxy_renderProcessGone(
83 env, obj.obj(), was_oom_protected); 83 env, obj.obj(), was_oom_protected);
84 } 84 }
85 85
86 void WebContentsObserverAndroid::DidStartLoading( 86 void WebContentsObserverAndroid::DidStartLoading(
87 RenderViewHost* render_view_host) { 87 RenderViewHost* render_view_host) {
88 JNIEnv* env = AttachCurrentThread(); 88 JNIEnv* env = AttachCurrentThread();
89 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 89 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
90 if (obj.is_null()) 90 if (obj.is_null())
91 return; 91 return;
92 ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString( 92 ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString(
93 env, web_contents()->GetVisibleURL().spec())); 93 env, web_contents()->GetVisibleURL().spec()));
94 Java_WebContentsObserver_didStartLoading( 94 Java_WebContentsObserverProxy_didStartLoading(
95 env, obj.obj(), jstring_url.obj()); 95 env, obj.obj(), jstring_url.obj());
96 } 96 }
97 97
98 void WebContentsObserverAndroid::DidStopLoading( 98 void WebContentsObserverAndroid::DidStopLoading(
99 RenderViewHost* render_view_host) { 99 RenderViewHost* render_view_host) {
100 JNIEnv* env = AttachCurrentThread(); 100 JNIEnv* env = AttachCurrentThread();
101 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 101 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
102 if (obj.is_null()) 102 if (obj.is_null())
103 return; 103 return;
104 ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString( 104 ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString(
105 env, web_contents()->GetLastCommittedURL().spec())); 105 env, web_contents()->GetLastCommittedURL().spec()));
106 Java_WebContentsObserver_didStopLoading( 106 Java_WebContentsObserverProxy_didStopLoading(
107 env, obj.obj(), jstring_url.obj()); 107 env, obj.obj(), jstring_url.obj());
108 } 108 }
109 109
110 void WebContentsObserverAndroid::DidFailProvisionalLoad( 110 void WebContentsObserverAndroid::DidFailProvisionalLoad(
111 RenderFrameHost* render_frame_host, 111 RenderFrameHost* render_frame_host,
112 const GURL& validated_url, 112 const GURL& validated_url,
113 int error_code, 113 int error_code,
114 const base::string16& error_description) { 114 const base::string16& error_description) {
115 DidFailLoadInternal(true, 115 DidFailLoadInternal(true,
116 !render_frame_host->GetParent(), 116 !render_frame_host->GetParent(),
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 bool urls_same_ignoring_fragment = 149 bool urls_same_ignoring_fragment =
150 params.url.ReplaceComponents(replacements) == 150 params.url.ReplaceComponents(replacements) ==
151 details.previous_url.ReplaceComponents(replacements); 151 details.previous_url.ReplaceComponents(replacements);
152 152
153 // is_fragment_navigation is indicative of the intent of this variable. 153 // is_fragment_navigation is indicative of the intent of this variable.
154 // However, there isn't sufficient information here to determine whether this 154 // However, there isn't sufficient information here to determine whether this
155 // is actually a fragment navigation, or a history API navigation to a URL 155 // is actually a fragment navigation, or a history API navigation to a URL
156 // that would also be valid for a fragment navigation. 156 // that would also be valid for a fragment navigation.
157 bool is_fragment_navigation = urls_same_ignoring_fragment && 157 bool is_fragment_navigation = urls_same_ignoring_fragment &&
158 (details.type == NAVIGATION_TYPE_IN_PAGE || details.is_in_page); 158 (details.type == NAVIGATION_TYPE_IN_PAGE || details.is_in_page);
159 Java_WebContentsObserver_didNavigateMainFrame( 159 Java_WebContentsObserverProxy_didNavigateMainFrame(
160 env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(), 160 env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(),
161 details.is_navigation_to_different_page(), is_fragment_navigation, 161 details.is_navigation_to_different_page(), is_fragment_navigation,
162 details.http_status_code); 162 details.http_status_code);
163 } 163 }
164 164
165 void WebContentsObserverAndroid::DidNavigateAnyFrame( 165 void WebContentsObserverAndroid::DidNavigateAnyFrame(
166 RenderFrameHost* render_frame_host, 166 RenderFrameHost* render_frame_host,
167 const LoadCommittedDetails& details, 167 const LoadCommittedDetails& details,
168 const FrameNavigateParams& params) { 168 const FrameNavigateParams& params) {
169 JNIEnv* env = AttachCurrentThread(); 169 JNIEnv* env = AttachCurrentThread();
170 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 170 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
171 if (obj.is_null()) 171 if (obj.is_null())
172 return; 172 return;
173 ScopedJavaLocalRef<jstring> jstring_url( 173 ScopedJavaLocalRef<jstring> jstring_url(
174 ConvertUTF8ToJavaString(env, params.url.spec())); 174 ConvertUTF8ToJavaString(env, params.url.spec()));
175 ScopedJavaLocalRef<jstring> jstring_base_url( 175 ScopedJavaLocalRef<jstring> jstring_base_url(
176 ConvertUTF8ToJavaString(env, params.base_url.spec())); 176 ConvertUTF8ToJavaString(env, params.base_url.spec()));
177 jboolean jboolean_is_reload = ui::PageTransitionCoreTypeIs( 177 jboolean jboolean_is_reload = ui::PageTransitionCoreTypeIs(
178 params.transition, ui::PAGE_TRANSITION_RELOAD); 178 params.transition, ui::PAGE_TRANSITION_RELOAD);
179 179
180 Java_WebContentsObserver_didNavigateAnyFrame( 180 Java_WebContentsObserverProxy_didNavigateAnyFrame(
181 env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(), 181 env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(),
182 jboolean_is_reload); 182 jboolean_is_reload);
183 } 183 }
184 184
185 void WebContentsObserverAndroid::DocumentAvailableInMainFrame() { 185 void WebContentsObserverAndroid::DocumentAvailableInMainFrame() {
186 JNIEnv* env = AttachCurrentThread(); 186 JNIEnv* env = AttachCurrentThread();
187 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 187 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
188 if (obj.is_null()) 188 if (obj.is_null())
189 return; 189 return;
190 Java_WebContentsObserver_documentAvailableInMainFrame(env, obj.obj()); 190 Java_WebContentsObserverProxy_documentAvailableInMainFrame(env, obj.obj());
191 } 191 }
192 192
193 void WebContentsObserverAndroid::DidStartProvisionalLoadForFrame( 193 void WebContentsObserverAndroid::DidStartProvisionalLoadForFrame(
194 RenderFrameHost* render_frame_host, 194 RenderFrameHost* render_frame_host,
195 const GURL& validated_url, 195 const GURL& validated_url,
196 bool is_error_page, 196 bool is_error_page,
197 bool is_iframe_srcdoc) { 197 bool is_iframe_srcdoc) {
198 JNIEnv* env = AttachCurrentThread(); 198 JNIEnv* env = AttachCurrentThread();
199 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 199 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
200 if (obj.is_null()) 200 if (obj.is_null())
201 return; 201 return;
202 ScopedJavaLocalRef<jstring> jstring_url( 202 ScopedJavaLocalRef<jstring> jstring_url(
203 ConvertUTF8ToJavaString(env, validated_url.spec())); 203 ConvertUTF8ToJavaString(env, validated_url.spec()));
204 // TODO(dcheng): Does Java really need the parent frame ID? It doesn't appear 204 // TODO(dcheng): Does Java really need the parent frame ID? It doesn't appear
205 // to be used at all, and it just adds complexity here. 205 // to be used at all, and it just adds complexity here.
206 Java_WebContentsObserver_didStartProvisionalLoadForFrame( 206 Java_WebContentsObserverProxy_didStartProvisionalLoadForFrame(
207 env, 207 env,
208 obj.obj(), 208 obj.obj(),
209 render_frame_host->GetRoutingID(), 209 render_frame_host->GetRoutingID(),
210 render_frame_host->GetParent() 210 render_frame_host->GetParent()
211 ? render_frame_host->GetParent()->GetRoutingID() 211 ? render_frame_host->GetParent()->GetRoutingID()
212 : -1, 212 : -1,
213 !render_frame_host->GetParent(), 213 !render_frame_host->GetParent(),
214 jstring_url.obj(), 214 jstring_url.obj(),
215 is_error_page, 215 is_error_page,
216 is_iframe_srcdoc); 216 is_iframe_srcdoc);
217 } 217 }
218 218
219 void WebContentsObserverAndroid::DidCommitProvisionalLoadForFrame( 219 void WebContentsObserverAndroid::DidCommitProvisionalLoadForFrame(
220 RenderFrameHost* render_frame_host, 220 RenderFrameHost* render_frame_host,
221 const GURL& url, 221 const GURL& url,
222 ui::PageTransition transition_type) { 222 ui::PageTransition transition_type) {
223 JNIEnv* env = AttachCurrentThread(); 223 JNIEnv* env = AttachCurrentThread();
224 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 224 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
225 if (obj.is_null()) 225 if (obj.is_null())
226 return; 226 return;
227 ScopedJavaLocalRef<jstring> jstring_url( 227 ScopedJavaLocalRef<jstring> jstring_url(
228 ConvertUTF8ToJavaString(env, url.spec())); 228 ConvertUTF8ToJavaString(env, url.spec()));
229 Java_WebContentsObserver_didCommitProvisionalLoadForFrame( 229 Java_WebContentsObserverProxy_didCommitProvisionalLoadForFrame(
230 env, 230 env,
231 obj.obj(), 231 obj.obj(),
232 render_frame_host->GetRoutingID(), 232 render_frame_host->GetRoutingID(),
233 !render_frame_host->GetParent(), 233 !render_frame_host->GetParent(),
234 jstring_url.obj(), 234 jstring_url.obj(),
235 transition_type); 235 transition_type);
236 } 236 }
237 237
238 void WebContentsObserverAndroid::DidFinishLoad( 238 void WebContentsObserverAndroid::DidFinishLoad(
239 RenderFrameHost* render_frame_host, 239 RenderFrameHost* render_frame_host,
240 const GURL& validated_url) { 240 const GURL& validated_url) {
241 JNIEnv* env = AttachCurrentThread(); 241 JNIEnv* env = AttachCurrentThread();
242 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 242 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
243 if (obj.is_null()) 243 if (obj.is_null())
244 return; 244 return;
245 245
246 std::string url_string = validated_url.spec(); 246 std::string url_string = validated_url.spec();
247 NavigationEntry* entry = 247 NavigationEntry* entry =
248 web_contents()->GetController().GetLastCommittedEntry(); 248 web_contents()->GetController().GetLastCommittedEntry();
249 // Note that GetBaseURLForDataURL is only used by the Android WebView. 249 // Note that GetBaseURLForDataURL is only used by the Android WebView.
250 if (entry && !entry->GetBaseURLForDataURL().is_empty()) 250 if (entry && !entry->GetBaseURLForDataURL().is_empty())
251 url_string = entry->GetBaseURLForDataURL().possibly_invalid_spec(); 251 url_string = entry->GetBaseURLForDataURL().possibly_invalid_spec();
252 252
253 ScopedJavaLocalRef<jstring> jstring_url( 253 ScopedJavaLocalRef<jstring> jstring_url(
254 ConvertUTF8ToJavaString(env, url_string)); 254 ConvertUTF8ToJavaString(env, url_string));
255 Java_WebContentsObserver_didFinishLoad( 255 Java_WebContentsObserverProxy_didFinishLoad(
256 env, 256 env,
257 obj.obj(), 257 obj.obj(),
258 render_frame_host->GetRoutingID(), 258 render_frame_host->GetRoutingID(),
259 jstring_url.obj(), 259 jstring_url.obj(),
260 !render_frame_host->GetParent()); 260 !render_frame_host->GetParent());
261 } 261 }
262 262
263 void WebContentsObserverAndroid::DocumentLoadedInFrame( 263 void WebContentsObserverAndroid::DocumentLoadedInFrame(
264 RenderFrameHost* render_frame_host) { 264 RenderFrameHost* render_frame_host) {
265 JNIEnv* env = AttachCurrentThread(); 265 JNIEnv* env = AttachCurrentThread();
266 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 266 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
267 if (obj.is_null()) 267 if (obj.is_null())
268 return; 268 return;
269 Java_WebContentsObserver_documentLoadedInFrame( 269 Java_WebContentsObserverProxy_documentLoadedInFrame(
270 env, obj.obj(), render_frame_host->GetRoutingID()); 270 env, obj.obj(), render_frame_host->GetRoutingID());
271 } 271 }
272 272
273 void WebContentsObserverAndroid::NavigationEntryCommitted( 273 void WebContentsObserverAndroid::NavigationEntryCommitted(
274 const LoadCommittedDetails& load_details) { 274 const LoadCommittedDetails& load_details) {
275 JNIEnv* env = AttachCurrentThread(); 275 JNIEnv* env = AttachCurrentThread();
276 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 276 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
277 if (obj.is_null()) 277 if (obj.is_null())
278 return; 278 return;
279 Java_WebContentsObserver_navigationEntryCommitted(env, obj.obj()); 279 Java_WebContentsObserverProxy_navigationEntryCommitted(env, obj.obj());
280 } 280 }
281 281
282 void WebContentsObserverAndroid::DidAttachInterstitialPage() { 282 void WebContentsObserverAndroid::DidAttachInterstitialPage() {
283 JNIEnv* env = AttachCurrentThread(); 283 JNIEnv* env = AttachCurrentThread();
284 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 284 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
285 if (obj.is_null()) 285 if (obj.is_null())
286 return; 286 return;
287 Java_WebContentsObserver_didAttachInterstitialPage(env, obj.obj()); 287 Java_WebContentsObserverProxy_didAttachInterstitialPage(env, obj.obj());
288 } 288 }
289 289
290 void WebContentsObserverAndroid::DidDetachInterstitialPage() { 290 void WebContentsObserverAndroid::DidDetachInterstitialPage() {
291 JNIEnv* env = AttachCurrentThread(); 291 JNIEnv* env = AttachCurrentThread();
292 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 292 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
293 if (obj.is_null()) 293 if (obj.is_null())
294 return; 294 return;
295 Java_WebContentsObserver_didDetachInterstitialPage(env, obj.obj()); 295 Java_WebContentsObserverProxy_didDetachInterstitialPage(env, obj.obj());
296 } 296 }
297 297
298 void WebContentsObserverAndroid::DidChangeThemeColor(SkColor color) { 298 void WebContentsObserverAndroid::DidChangeThemeColor(SkColor color) {
299 JNIEnv* env = AttachCurrentThread(); 299 JNIEnv* env = AttachCurrentThread();
300 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 300 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
301 if (obj.is_null()) 301 if (obj.is_null())
302 return; 302 return;
303 Java_WebContentsObserver_didChangeThemeColor(env, obj.obj(), color); 303 Java_WebContentsObserverProxy_didChangeThemeColor(env, obj.obj(), color);
304 } 304 }
305 305
306 void WebContentsObserverAndroid::DidFailLoadInternal( 306 void WebContentsObserverAndroid::DidFailLoadInternal(
307 bool is_provisional_load, 307 bool is_provisional_load,
308 bool is_main_frame, 308 bool is_main_frame,
309 int error_code, 309 int error_code,
310 const base::string16& description, 310 const base::string16& description,
311 const GURL& url) { 311 const GURL& url) {
312 JNIEnv* env = AttachCurrentThread(); 312 JNIEnv* env = AttachCurrentThread();
313 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 313 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
314 if (obj.is_null()) 314 if (obj.is_null())
315 return; 315 return;
316 ScopedJavaLocalRef<jstring> jstring_error_description( 316 ScopedJavaLocalRef<jstring> jstring_error_description(
317 ConvertUTF16ToJavaString(env, description)); 317 ConvertUTF16ToJavaString(env, description));
318 ScopedJavaLocalRef<jstring> jstring_url( 318 ScopedJavaLocalRef<jstring> jstring_url(
319 ConvertUTF8ToJavaString(env, url.spec())); 319 ConvertUTF8ToJavaString(env, url.spec()));
320 320
321 Java_WebContentsObserver_didFailLoad( 321 Java_WebContentsObserverProxy_didFailLoad(
322 env, obj.obj(), 322 env, obj.obj(),
323 is_provisional_load, 323 is_provisional_load,
324 is_main_frame, 324 is_main_frame,
325 error_code, 325 error_code,
326 jstring_error_description.obj(), jstring_url.obj()); 326 jstring_error_description.obj(), jstring_url.obj());
327 } 327 }
328 328
329 void WebContentsObserverAndroid::DidFirstVisuallyNonEmptyPaint() { 329 void WebContentsObserverAndroid::DidFirstVisuallyNonEmptyPaint() {
330 JNIEnv* env = AttachCurrentThread(); 330 JNIEnv* env = AttachCurrentThread();
331 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 331 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
332 if (obj.is_null()) 332 if (obj.is_null())
333 return; 333 return;
334 Java_WebContentsObserver_didFirstVisuallyNonEmptyPaint( 334 Java_WebContentsObserverProxy_didFirstVisuallyNonEmptyPaint(
335 env, obj.obj()); 335 env, obj.obj());
336 } 336 }
337 337
338 void WebContentsObserverAndroid::DidStartNavigationToPendingEntry( 338 void WebContentsObserverAndroid::DidStartNavigationToPendingEntry(
339 const GURL& url, 339 const GURL& url,
340 NavigationController::ReloadType reload_type) { 340 NavigationController::ReloadType reload_type) {
341 JNIEnv* env = AttachCurrentThread(); 341 JNIEnv* env = AttachCurrentThread();
342 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 342 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
343 if (obj.is_null()) 343 if (obj.is_null())
344 return; 344 return;
345 ScopedJavaLocalRef<jstring> jstring_url( 345 ScopedJavaLocalRef<jstring> jstring_url(
346 ConvertUTF8ToJavaString(env, url.spec())); 346 ConvertUTF8ToJavaString(env, url.spec()));
347 347
348 Java_WebContentsObserver_didStartNavigationToPendingEntry(env, obj.obj(), 348 Java_WebContentsObserverProxy_didStartNavigationToPendingEntry(
349 jstring_url.obj()); 349 env, obj.obj(), jstring_url.obj());
350 } 350 }
351 351
352 bool RegisterWebContentsObserverAndroid(JNIEnv* env) { 352 bool RegisterWebContentsObserverAndroid(JNIEnv* env) {
353 return RegisterNativesImpl(env); 353 return RegisterNativesImpl(env);
354 } 354 }
355 } // namespace content 355 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698