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

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

Issue 589113002: Rename java WebContentsObserverAndroid to WebContentsObserver (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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/WebContentsObserverAndroid_jni.h" 18 #include "jni/WebContentsObserver_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 23 matching lines...) Expand all
52 delete this; 52 delete this;
53 } 53 }
54 54
55 void WebContentsObserverAndroid::WebContentsDestroyed() { 55 void WebContentsObserverAndroid::WebContentsDestroyed() {
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_WebContentsObserverAndroid_detachFromWebContents(env, obj.obj()); 62 Java_WebContentsObserver_detachFromWebContents(env, obj.obj());
63 } 63 }
64 } 64 }
65 65
66 void WebContentsObserverAndroid::RenderProcessGone( 66 void WebContentsObserverAndroid::RenderProcessGone(
67 base::TerminationStatus termination_status) { 67 base::TerminationStatus termination_status) {
68 JNIEnv* env = AttachCurrentThread(); 68 JNIEnv* env = AttachCurrentThread();
69 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 69 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
70 if (obj.is_null()) 70 if (obj.is_null())
71 return; 71 return;
72 jboolean was_oom_protected = 72 jboolean was_oom_protected =
73 termination_status == base::TERMINATION_STATUS_OOM_PROTECTED; 73 termination_status == base::TERMINATION_STATUS_OOM_PROTECTED;
74 Java_WebContentsObserverAndroid_renderProcessGone( 74 Java_WebContentsObserver_renderProcessGone(
75 env, obj.obj(), was_oom_protected); 75 env, obj.obj(), was_oom_protected);
76 } 76 }
77 77
78 void WebContentsObserverAndroid::DidStartLoading( 78 void WebContentsObserverAndroid::DidStartLoading(
79 RenderViewHost* render_view_host) { 79 RenderViewHost* render_view_host) {
80 JNIEnv* env = AttachCurrentThread(); 80 JNIEnv* env = AttachCurrentThread();
81 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 81 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
82 if (obj.is_null()) 82 if (obj.is_null())
83 return; 83 return;
84 ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString( 84 ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString(
85 env, web_contents()->GetVisibleURL().spec())); 85 env, web_contents()->GetVisibleURL().spec()));
86 Java_WebContentsObserverAndroid_didStartLoading( 86 Java_WebContentsObserver_didStartLoading(
87 env, obj.obj(), jstring_url.obj()); 87 env, obj.obj(), jstring_url.obj());
88 } 88 }
89 89
90 void WebContentsObserverAndroid::DidStopLoading( 90 void WebContentsObserverAndroid::DidStopLoading(
91 RenderViewHost* render_view_host) { 91 RenderViewHost* render_view_host) {
92 JNIEnv* env = AttachCurrentThread(); 92 JNIEnv* env = AttachCurrentThread();
93 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 93 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
94 if (obj.is_null()) 94 if (obj.is_null())
95 return; 95 return;
96 ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString( 96 ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString(
97 env, web_contents()->GetLastCommittedURL().spec())); 97 env, web_contents()->GetLastCommittedURL().spec()));
98 Java_WebContentsObserverAndroid_didStopLoading( 98 Java_WebContentsObserver_didStopLoading(
99 env, obj.obj(), jstring_url.obj()); 99 env, obj.obj(), jstring_url.obj());
100 } 100 }
101 101
102 void WebContentsObserverAndroid::DidFailProvisionalLoad( 102 void WebContentsObserverAndroid::DidFailProvisionalLoad(
103 RenderFrameHost* render_frame_host, 103 RenderFrameHost* render_frame_host,
104 const GURL& validated_url, 104 const GURL& validated_url,
105 int error_code, 105 int error_code,
106 const base::string16& error_description) { 106 const base::string16& error_description) {
107 DidFailLoadInternal(true, 107 DidFailLoadInternal(true,
108 !render_frame_host->GetParent(), 108 !render_frame_host->GetParent(),
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 bool urls_same_ignoring_fragment = 141 bool urls_same_ignoring_fragment =
142 params.url.ReplaceComponents(replacements) == 142 params.url.ReplaceComponents(replacements) ==
143 details.previous_url.ReplaceComponents(replacements); 143 details.previous_url.ReplaceComponents(replacements);
144 144
145 // is_fragment_navigation is indicative of the intent of this variable. 145 // is_fragment_navigation is indicative of the intent of this variable.
146 // However, there isn't sufficient information here to determine whether this 146 // However, there isn't sufficient information here to determine whether this
147 // is actually a fragment navigation, or a history API navigation to a URL 147 // is actually a fragment navigation, or a history API navigation to a URL
148 // that would also be valid for a fragment navigation. 148 // that would also be valid for a fragment navigation.
149 bool is_fragment_navigation = urls_same_ignoring_fragment && 149 bool is_fragment_navigation = urls_same_ignoring_fragment &&
150 (details.type == NAVIGATION_TYPE_IN_PAGE || details.is_in_page); 150 (details.type == NAVIGATION_TYPE_IN_PAGE || details.is_in_page);
151 Java_WebContentsObserverAndroid_didNavigateMainFrame( 151 Java_WebContentsObserver_didNavigateMainFrame(
152 env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(), 152 env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(),
153 details.is_navigation_to_different_page(), is_fragment_navigation); 153 details.is_navigation_to_different_page(), is_fragment_navigation);
154 } 154 }
155 155
156 void WebContentsObserverAndroid::DidNavigateAnyFrame( 156 void WebContentsObserverAndroid::DidNavigateAnyFrame(
157 const LoadCommittedDetails& details, 157 const LoadCommittedDetails& details,
158 const FrameNavigateParams& params) { 158 const FrameNavigateParams& params) {
159 JNIEnv* env = AttachCurrentThread(); 159 JNIEnv* env = AttachCurrentThread();
160 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 160 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
161 if (obj.is_null()) 161 if (obj.is_null())
162 return; 162 return;
163 ScopedJavaLocalRef<jstring> jstring_url( 163 ScopedJavaLocalRef<jstring> jstring_url(
164 ConvertUTF8ToJavaString(env, params.url.spec())); 164 ConvertUTF8ToJavaString(env, params.url.spec()));
165 ScopedJavaLocalRef<jstring> jstring_base_url( 165 ScopedJavaLocalRef<jstring> jstring_base_url(
166 ConvertUTF8ToJavaString(env, params.base_url.spec())); 166 ConvertUTF8ToJavaString(env, params.base_url.spec()));
167 jboolean jboolean_is_reload = ui::PageTransitionCoreTypeIs( 167 jboolean jboolean_is_reload = ui::PageTransitionCoreTypeIs(
168 params.transition, ui::PAGE_TRANSITION_RELOAD); 168 params.transition, ui::PAGE_TRANSITION_RELOAD);
169 169
170 Java_WebContentsObserverAndroid_didNavigateAnyFrame( 170 Java_WebContentsObserver_didNavigateAnyFrame(
171 env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(), 171 env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(),
172 jboolean_is_reload); 172 jboolean_is_reload);
173 } 173 }
174 174
175 void WebContentsObserverAndroid::DidStartProvisionalLoadForFrame( 175 void WebContentsObserverAndroid::DidStartProvisionalLoadForFrame(
176 RenderFrameHost* render_frame_host, 176 RenderFrameHost* render_frame_host,
177 const GURL& validated_url, 177 const GURL& validated_url,
178 bool is_error_page, 178 bool is_error_page,
179 bool is_iframe_srcdoc) { 179 bool is_iframe_srcdoc) {
180 JNIEnv* env = AttachCurrentThread(); 180 JNIEnv* env = AttachCurrentThread();
181 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 181 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
182 if (obj.is_null()) 182 if (obj.is_null())
183 return; 183 return;
184 ScopedJavaLocalRef<jstring> jstring_url( 184 ScopedJavaLocalRef<jstring> jstring_url(
185 ConvertUTF8ToJavaString(env, validated_url.spec())); 185 ConvertUTF8ToJavaString(env, validated_url.spec()));
186 // TODO(dcheng): Does Java really need the parent frame ID? It doesn't appear 186 // TODO(dcheng): Does Java really need the parent frame ID? It doesn't appear
187 // to be used at all, and it just adds complexity here. 187 // to be used at all, and it just adds complexity here.
188 Java_WebContentsObserverAndroid_didStartProvisionalLoadForFrame( 188 Java_WebContentsObserver_didStartProvisionalLoadForFrame(
189 env, 189 env,
190 obj.obj(), 190 obj.obj(),
191 render_frame_host->GetRoutingID(), 191 render_frame_host->GetRoutingID(),
192 render_frame_host->GetParent() 192 render_frame_host->GetParent()
193 ? render_frame_host->GetParent()->GetRoutingID() 193 ? render_frame_host->GetParent()->GetRoutingID()
194 : -1, 194 : -1,
195 !render_frame_host->GetParent(), 195 !render_frame_host->GetParent(),
196 jstring_url.obj(), 196 jstring_url.obj(),
197 is_error_page, 197 is_error_page,
198 is_iframe_srcdoc); 198 is_iframe_srcdoc);
199 } 199 }
200 200
201 void WebContentsObserverAndroid::DidCommitProvisionalLoadForFrame( 201 void WebContentsObserverAndroid::DidCommitProvisionalLoadForFrame(
202 RenderFrameHost* render_frame_host, 202 RenderFrameHost* render_frame_host,
203 const GURL& url, 203 const GURL& url,
204 ui::PageTransition transition_type) { 204 ui::PageTransition transition_type) {
205 JNIEnv* env = AttachCurrentThread(); 205 JNIEnv* env = AttachCurrentThread();
206 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 206 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
207 if (obj.is_null()) 207 if (obj.is_null())
208 return; 208 return;
209 ScopedJavaLocalRef<jstring> jstring_url( 209 ScopedJavaLocalRef<jstring> jstring_url(
210 ConvertUTF8ToJavaString(env, url.spec())); 210 ConvertUTF8ToJavaString(env, url.spec()));
211 Java_WebContentsObserverAndroid_didCommitProvisionalLoadForFrame( 211 Java_WebContentsObserver_didCommitProvisionalLoadForFrame(
212 env, 212 env,
213 obj.obj(), 213 obj.obj(),
214 render_frame_host->GetRoutingID(), 214 render_frame_host->GetRoutingID(),
215 !render_frame_host->GetParent(), 215 !render_frame_host->GetParent(),
216 jstring_url.obj(), 216 jstring_url.obj(),
217 transition_type); 217 transition_type);
218 } 218 }
219 219
220 void WebContentsObserverAndroid::DidFinishLoad( 220 void WebContentsObserverAndroid::DidFinishLoad(
221 RenderFrameHost* render_frame_host, 221 RenderFrameHost* render_frame_host,
222 const GURL& validated_url) { 222 const GURL& validated_url) {
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 227
228 std::string url_string = validated_url.spec(); 228 std::string url_string = validated_url.spec();
229 NavigationEntry* entry = 229 NavigationEntry* entry =
230 web_contents()->GetController().GetLastCommittedEntry(); 230 web_contents()->GetController().GetLastCommittedEntry();
231 // Note that GetBaseURLForDataURL is only used by the Android WebView. 231 // Note that GetBaseURLForDataURL is only used by the Android WebView.
232 if (entry && !entry->GetBaseURLForDataURL().is_empty()) 232 if (entry && !entry->GetBaseURLForDataURL().is_empty())
233 url_string = entry->GetBaseURLForDataURL().possibly_invalid_spec(); 233 url_string = entry->GetBaseURLForDataURL().possibly_invalid_spec();
234 234
235 ScopedJavaLocalRef<jstring> jstring_url( 235 ScopedJavaLocalRef<jstring> jstring_url(
236 ConvertUTF8ToJavaString(env, url_string)); 236 ConvertUTF8ToJavaString(env, url_string));
237 Java_WebContentsObserverAndroid_didFinishLoad( 237 Java_WebContentsObserver_didFinishLoad(
238 env, 238 env,
239 obj.obj(), 239 obj.obj(),
240 render_frame_host->GetRoutingID(), 240 render_frame_host->GetRoutingID(),
241 jstring_url.obj(), 241 jstring_url.obj(),
242 !render_frame_host->GetParent()); 242 !render_frame_host->GetParent());
243 } 243 }
244 244
245 void WebContentsObserverAndroid::DocumentLoadedInFrame( 245 void WebContentsObserverAndroid::DocumentLoadedInFrame(
246 RenderFrameHost* render_frame_host) { 246 RenderFrameHost* render_frame_host) {
247 JNIEnv* env = AttachCurrentThread(); 247 JNIEnv* env = AttachCurrentThread();
248 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 248 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
249 if (obj.is_null()) 249 if (obj.is_null())
250 return; 250 return;
251 Java_WebContentsObserverAndroid_documentLoadedInFrame( 251 Java_WebContentsObserver_documentLoadedInFrame(
252 env, obj.obj(), render_frame_host->GetRoutingID()); 252 env, obj.obj(), render_frame_host->GetRoutingID());
253 } 253 }
254 254
255 void WebContentsObserverAndroid::NavigationEntryCommitted( 255 void WebContentsObserverAndroid::NavigationEntryCommitted(
256 const LoadCommittedDetails& load_details) { 256 const LoadCommittedDetails& load_details) {
257 JNIEnv* env = AttachCurrentThread(); 257 JNIEnv* env = AttachCurrentThread();
258 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 258 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
259 if (obj.is_null()) 259 if (obj.is_null())
260 return; 260 return;
261 Java_WebContentsObserverAndroid_navigationEntryCommitted(env, obj.obj()); 261 Java_WebContentsObserver_navigationEntryCommitted(env, obj.obj());
262 } 262 }
263 263
264 void WebContentsObserverAndroid::DidAttachInterstitialPage() { 264 void WebContentsObserverAndroid::DidAttachInterstitialPage() {
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_WebContentsObserverAndroid_didAttachInterstitialPage(env, obj.obj()); 269 Java_WebContentsObserver_didAttachInterstitialPage(env, obj.obj());
270 } 270 }
271 271
272 void WebContentsObserverAndroid::DidDetachInterstitialPage() { 272 void WebContentsObserverAndroid::DidDetachInterstitialPage() {
273 JNIEnv* env = AttachCurrentThread(); 273 JNIEnv* env = AttachCurrentThread();
274 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 274 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
275 if (obj.is_null()) 275 if (obj.is_null())
276 return; 276 return;
277 Java_WebContentsObserverAndroid_didDetachInterstitialPage(env, obj.obj()); 277 Java_WebContentsObserver_didDetachInterstitialPage(env, obj.obj());
278 } 278 }
279 279
280 void WebContentsObserverAndroid::DidChangeThemeColor(SkColor color) { 280 void WebContentsObserverAndroid::DidChangeThemeColor(SkColor color) {
281 JNIEnv* env = AttachCurrentThread(); 281 JNIEnv* env = AttachCurrentThread();
282 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 282 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
283 if (obj.is_null()) 283 if (obj.is_null())
284 return; 284 return;
285 Java_WebContentsObserverAndroid_didChangeThemeColor(env, obj.obj(), color); 285 Java_WebContentsObserver_didChangeThemeColor(env, obj.obj(), color);
286 } 286 }
287 287
288 void WebContentsObserverAndroid::DidFailLoadInternal( 288 void WebContentsObserverAndroid::DidFailLoadInternal(
289 bool is_provisional_load, 289 bool is_provisional_load,
290 bool is_main_frame, 290 bool is_main_frame,
291 int error_code, 291 int error_code,
292 const base::string16& description, 292 const base::string16& description,
293 const GURL& url) { 293 const GURL& url) {
294 JNIEnv* env = AttachCurrentThread(); 294 JNIEnv* env = AttachCurrentThread();
295 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); 295 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env));
296 if (obj.is_null()) 296 if (obj.is_null())
297 return; 297 return;
298 ScopedJavaLocalRef<jstring> jstring_error_description( 298 ScopedJavaLocalRef<jstring> jstring_error_description(
299 ConvertUTF16ToJavaString(env, description)); 299 ConvertUTF16ToJavaString(env, description));
300 ScopedJavaLocalRef<jstring> jstring_url( 300 ScopedJavaLocalRef<jstring> jstring_url(
301 ConvertUTF8ToJavaString(env, url.spec())); 301 ConvertUTF8ToJavaString(env, url.spec()));
302 302
303 Java_WebContentsObserverAndroid_didFailLoad( 303 Java_WebContentsObserver_didFailLoad(
304 env, obj.obj(), 304 env, obj.obj(),
305 is_provisional_load, 305 is_provisional_load,
306 is_main_frame, 306 is_main_frame,
307 error_code, 307 error_code,
308 jstring_error_description.obj(), jstring_url.obj()); 308 jstring_error_description.obj(), jstring_url.obj());
309 } 309 }
310 310
311 void WebContentsObserverAndroid::DidFirstVisuallyNonEmptyPaint() { 311 void WebContentsObserverAndroid::DidFirstVisuallyNonEmptyPaint() {
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 Java_WebContentsObserverAndroid_didFirstVisuallyNonEmptyPaint( 316 Java_WebContentsObserver_didFirstVisuallyNonEmptyPaint(
317 env, obj.obj()); 317 env, obj.obj());
318 } 318 }
319 319
320 bool RegisterWebContentsObserverAndroid(JNIEnv* env) { 320 bool RegisterWebContentsObserver(JNIEnv* env) {
321 return RegisterNativesImpl(env); 321 return RegisterNativesImpl(env);
322 } 322 }
323 } // namespace content 323 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698