OLD | NEW |
---|---|
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/android/content_view_core_impl.h" | 14 #include "content/browser/android/content_view_core_impl.h" |
15 #include "content/browser/renderer_host/render_widget_host_impl.h" | 15 #include "content/browser/renderer_host/render_widget_host_impl.h" |
16 #include "content/browser/web_contents/web_contents_impl.h" | 16 #include "content/browser/web_contents/web_contents_impl.h" |
17 #include "content/public/browser/navigation_details.h" | 17 #include "content/public/browser/navigation_details.h" |
18 #include "content/public/browser/navigation_entry.h" | 18 #include "content/public/browser/navigation_entry.h" |
19 #include "content/public/common/url_constants.h" | |
19 #include "jni/WebContentsObserverAndroid_jni.h" | 20 #include "jni/WebContentsObserverAndroid_jni.h" |
20 | 21 |
21 using base::android::AttachCurrentThread; | 22 using base::android::AttachCurrentThread; |
22 using base::android::ScopedJavaLocalRef; | 23 using base::android::ScopedJavaLocalRef; |
23 using base::android::ConvertUTF8ToJavaString; | 24 using base::android::ConvertUTF8ToJavaString; |
24 using base::android::ConvertUTF16ToJavaString; | 25 using base::android::ConvertUTF16ToJavaString; |
25 | 26 |
26 namespace content { | 27 namespace content { |
27 | 28 |
28 WebContentsObserverAndroid::WebContentsObserverAndroid( | 29 WebContentsObserverAndroid::WebContentsObserverAndroid( |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
208 int64 frame_id, | 209 int64 frame_id, |
209 const GURL& validated_url, | 210 const GURL& validated_url, |
210 bool is_main_frame, | 211 bool is_main_frame, |
211 RenderViewHost* render_view_host) { | 212 RenderViewHost* render_view_host) { |
212 JNIEnv* env = AttachCurrentThread(); | 213 JNIEnv* env = AttachCurrentThread(); |
213 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); | 214 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); |
214 if (obj.is_null()) | 215 if (obj.is_null()) |
215 return; | 216 return; |
216 | 217 |
217 std::string url_string = validated_url.spec(); | 218 std::string url_string = validated_url.spec(); |
219 bool is_error_page = content::kUnreachableWebDataURL == url_string; | |
218 NavigationEntry* entry = | 220 NavigationEntry* entry = |
219 web_contents()->GetController().GetLastCommittedEntry(); | 221 web_contents()->GetController().GetLastCommittedEntry(); |
220 // Note that GetBaseURLForDataURL is only used by the Android WebView. | 222 // Note that GetBaseURLForDataURL is only used by the Android WebView. |
221 if (entry && !entry->GetBaseURLForDataURL().is_empty()) | 223 if (entry && !entry->GetBaseURLForDataURL().is_empty()) |
222 url_string = entry->GetBaseURLForDataURL().possibly_invalid_spec(); | 224 url_string = entry->GetBaseURLForDataURL().possibly_invalid_spec(); |
223 | 225 |
224 ScopedJavaLocalRef<jstring> jstring_url( | 226 ScopedJavaLocalRef<jstring> jstring_url( |
225 ConvertUTF8ToJavaString(env, url_string)); | 227 ConvertUTF8ToJavaString(env, url_string)); |
bulach
2014/06/17 00:42:12
hmm.... I'm not quite sure about the approach here
mnaganov (inactive)
2014/06/17 09:52:15
Yes, sounds reasonable. Sorry for not making that
| |
226 Java_WebContentsObserverAndroid_didFinishLoad( | 228 Java_WebContentsObserverAndroid_didFinishLoad(env, |
227 env, obj.obj(), frame_id, jstring_url.obj(), is_main_frame); | 229 obj.obj(), |
230 frame_id, | |
231 jstring_url.obj(), | |
232 is_main_frame, | |
233 is_error_page); | |
228 } | 234 } |
229 | 235 |
230 void WebContentsObserverAndroid::DocumentLoadedInFrame( | 236 void WebContentsObserverAndroid::DocumentLoadedInFrame( |
231 int64 frame_id, | 237 int64 frame_id, |
232 RenderViewHost* render_view_host) { | 238 RenderViewHost* render_view_host) { |
233 JNIEnv* env = AttachCurrentThread(); | 239 JNIEnv* env = AttachCurrentThread(); |
234 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); | 240 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); |
235 if (obj.is_null()) | 241 if (obj.is_null()) |
236 return; | 242 return; |
237 Java_WebContentsObserverAndroid_documentLoadedInFrame( | 243 Java_WebContentsObserverAndroid_documentLoadedInFrame( |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
292 if (obj.is_null()) | 298 if (obj.is_null()) |
293 return; | 299 return; |
294 Java_WebContentsObserverAndroid_didFirstVisuallyNonEmptyPaint( | 300 Java_WebContentsObserverAndroid_didFirstVisuallyNonEmptyPaint( |
295 env, obj.obj()); | 301 env, obj.obj()); |
296 } | 302 } |
297 | 303 |
298 bool RegisterWebContentsObserverAndroid(JNIEnv* env) { | 304 bool RegisterWebContentsObserverAndroid(JNIEnv* env) { |
299 return RegisterNativesImpl(env); | 305 return RegisterNativesImpl(env); |
300 } | 306 } |
301 } // namespace content | 307 } // namespace content |
OLD | NEW |