OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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_proxy.h" | 5 #include "content/browser/android/web_contents_observer_proxy.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
10 #include "base/android/jni_string.h" | 10 #include "base/android/jni_string.h" |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 ScopedJavaLocalRef<jobject> obj(java_observer_); | 80 ScopedJavaLocalRef<jobject> obj(java_observer_); |
81 ScopedJavaLocalRef<jstring> jstring_url( | 81 ScopedJavaLocalRef<jstring> jstring_url( |
82 ConvertUTF8ToJavaString(env, web_contents()->GetVisibleURL().spec())); | 82 ConvertUTF8ToJavaString(env, web_contents()->GetVisibleURL().spec())); |
83 Java_WebContentsObserverProxy_didStartLoading(env, obj.obj(), | 83 Java_WebContentsObserverProxy_didStartLoading(env, obj.obj(), |
84 jstring_url.obj()); | 84 jstring_url.obj()); |
85 } | 85 } |
86 | 86 |
87 void WebContentsObserverProxy::DidStopLoading() { | 87 void WebContentsObserverProxy::DidStopLoading() { |
88 JNIEnv* env = AttachCurrentThread(); | 88 JNIEnv* env = AttachCurrentThread(); |
89 ScopedJavaLocalRef<jobject> obj(java_observer_); | 89 ScopedJavaLocalRef<jobject> obj(java_observer_); |
| 90 std::string url_string = web_contents()->GetLastCommittedURL().spec(); |
| 91 SetToBaseURLForDataURLIfNeeded(&url_string); |
90 ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString( | 92 ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString( |
91 env, web_contents()->GetLastCommittedURL().spec())); | 93 env, url_string)); |
92 Java_WebContentsObserverProxy_didStopLoading(env, obj.obj(), | 94 Java_WebContentsObserverProxy_didStopLoading(env, obj.obj(), |
93 jstring_url.obj()); | 95 jstring_url.obj()); |
94 } | 96 } |
95 | 97 |
96 void WebContentsObserverProxy::DidFailProvisionalLoad( | 98 void WebContentsObserverProxy::DidFailProvisionalLoad( |
97 RenderFrameHost* render_frame_host, | 99 RenderFrameHost* render_frame_host, |
98 const GURL& validated_url, | 100 const GURL& validated_url, |
99 int error_code, | 101 int error_code, |
100 const base::string16& error_description, | 102 const base::string16& error_description, |
101 bool was_ignored_by_handler) { | 103 bool was_ignored_by_handler) { |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 env, obj.obj(), render_frame_host->GetRoutingID(), | 200 env, obj.obj(), render_frame_host->GetRoutingID(), |
199 !render_frame_host->GetParent(), jstring_url.obj(), transition_type); | 201 !render_frame_host->GetParent(), jstring_url.obj(), transition_type); |
200 } | 202 } |
201 | 203 |
202 void WebContentsObserverProxy::DidFinishLoad(RenderFrameHost* render_frame_host, | 204 void WebContentsObserverProxy::DidFinishLoad(RenderFrameHost* render_frame_host, |
203 const GURL& validated_url) { | 205 const GURL& validated_url) { |
204 JNIEnv* env = AttachCurrentThread(); | 206 JNIEnv* env = AttachCurrentThread(); |
205 ScopedJavaLocalRef<jobject> obj(java_observer_); | 207 ScopedJavaLocalRef<jobject> obj(java_observer_); |
206 | 208 |
207 std::string url_string = validated_url.spec(); | 209 std::string url_string = validated_url.spec(); |
208 NavigationEntry* entry = | 210 SetToBaseURLForDataURLIfNeeded(&url_string); |
209 web_contents()->GetController().GetLastCommittedEntry(); | |
210 // Note that GetBaseURLForDataURL is only used by the Android WebView. | |
211 if (entry && !entry->GetBaseURLForDataURL().is_empty()) | |
212 url_string = entry->GetBaseURLForDataURL().possibly_invalid_spec(); | |
213 | 211 |
214 ScopedJavaLocalRef<jstring> jstring_url( | 212 ScopedJavaLocalRef<jstring> jstring_url( |
215 ConvertUTF8ToJavaString(env, url_string)); | 213 ConvertUTF8ToJavaString(env, url_string)); |
216 Java_WebContentsObserverProxy_didFinishLoad( | 214 Java_WebContentsObserverProxy_didFinishLoad( |
217 env, obj.obj(), render_frame_host->GetRoutingID(), jstring_url.obj(), | 215 env, obj.obj(), render_frame_host->GetRoutingID(), jstring_url.obj(), |
218 !render_frame_host->GetParent()); | 216 !render_frame_host->GetParent()); |
219 } | 217 } |
220 | 218 |
221 void WebContentsObserverProxy::DocumentLoadedInFrame( | 219 void WebContentsObserverProxy::DocumentLoadedInFrame( |
222 RenderFrameHost* render_frame_host) { | 220 RenderFrameHost* render_frame_host) { |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 void WebContentsObserverProxy::MediaSessionStateChanged(bool is_controllable, | 291 void WebContentsObserverProxy::MediaSessionStateChanged(bool is_controllable, |
294 bool is_suspended) { | 292 bool is_suspended) { |
295 JNIEnv* env = AttachCurrentThread(); | 293 JNIEnv* env = AttachCurrentThread(); |
296 | 294 |
297 ScopedJavaLocalRef<jobject> obj(java_observer_); | 295 ScopedJavaLocalRef<jobject> obj(java_observer_); |
298 | 296 |
299 Java_WebContentsObserverProxy_mediaSessionStateChanged( | 297 Java_WebContentsObserverProxy_mediaSessionStateChanged( |
300 env, obj.obj(), is_controllable, is_suspended); | 298 env, obj.obj(), is_controllable, is_suspended); |
301 } | 299 } |
302 | 300 |
| 301 void WebContentsObserverProxy::SetToBaseURLForDataURLIfNeeded( |
| 302 std::string* url) { |
| 303 NavigationEntry* entry = |
| 304 web_contents()->GetController().GetLastCommittedEntry(); |
| 305 // Note that GetBaseURLForDataURL is only used by the Android WebView. |
| 306 if (entry && !entry->GetBaseURLForDataURL().is_empty()) |
| 307 *url = entry->GetBaseURLForDataURL().possibly_invalid_spec(); |
| 308 } |
| 309 |
303 bool RegisterWebContentsObserverProxy(JNIEnv* env) { | 310 bool RegisterWebContentsObserverProxy(JNIEnv* env) { |
304 return RegisterNativesImpl(env); | 311 return RegisterNativesImpl(env); |
305 } | 312 } |
306 } // namespace content | 313 } // namespace content |
OLD | NEW |