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 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 return reinterpret_cast<jint>(native_observer); | 43 return reinterpret_cast<jint>(native_observer); |
44 } | 44 } |
45 | 45 |
46 void WebContentsObserverAndroid::Destroy(JNIEnv* env, jobject obj) { | 46 void WebContentsObserverAndroid::Destroy(JNIEnv* env, jobject obj) { |
47 delete this; | 47 delete this; |
48 } | 48 } |
49 | 49 |
50 void WebContentsObserverAndroid::WebContentsDestroyed( | 50 void WebContentsObserverAndroid::WebContentsDestroyed( |
51 WebContents* web_contents) { | 51 WebContents* web_contents) { |
52 JNIEnv* env = AttachCurrentThread(); | 52 JNIEnv* env = AttachCurrentThread(); |
53 ScopedJavaLocalRef<jobject> obj = weak_java_observer_.get(env); | 53 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); |
54 if (obj.is_null()) { | 54 if (obj.is_null()) { |
55 delete this; | 55 delete this; |
56 } else { | 56 } else { |
57 // The java side will destroy |this| | 57 // The java side will destroy |this| |
58 Java_WebContentsObserverAndroid_detachFromWebContents(env, obj.obj()); | 58 Java_WebContentsObserverAndroid_detachFromWebContents(env, obj.obj()); |
59 } | 59 } |
60 } | 60 } |
61 | 61 |
62 void WebContentsObserverAndroid::DidStartLoading( | 62 void WebContentsObserverAndroid::DidStartLoading( |
63 RenderViewHost* render_view_host) { | 63 RenderViewHost* render_view_host) { |
64 JNIEnv* env = AttachCurrentThread(); | 64 JNIEnv* env = AttachCurrentThread(); |
65 ScopedJavaLocalRef<jobject> obj = weak_java_observer_.get(env); | 65 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); |
66 if (obj.is_null()) | 66 if (obj.is_null()) |
67 return; | 67 return; |
68 ScopedJavaLocalRef<jstring> jstring_url = | 68 ScopedJavaLocalRef<jstring> jstring_url( |
69 ConvertUTF8ToJavaString(env, web_contents()->GetURL().spec()); | 69 ConvertUTF8ToJavaString(env, web_contents()->GetURL().spec())); |
70 Java_WebContentsObserverAndroid_didStartLoading( | 70 Java_WebContentsObserverAndroid_didStartLoading( |
71 env, obj.obj(), jstring_url.obj()); | 71 env, obj.obj(), jstring_url.obj()); |
72 } | 72 } |
73 | 73 |
74 void WebContentsObserverAndroid::DidStopLoading( | 74 void WebContentsObserverAndroid::DidStopLoading( |
75 RenderViewHost* render_view_host) { | 75 RenderViewHost* render_view_host) { |
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 ScopedJavaLocalRef<jstring> jstring_url = | 80 ScopedJavaLocalRef<jstring> jstring_url( |
81 ConvertUTF8ToJavaString(env, web_contents()->GetURL().spec()); | 81 ConvertUTF8ToJavaString(env, web_contents()->GetURL().spec())); |
82 Java_WebContentsObserverAndroid_didStopLoading( | 82 Java_WebContentsObserverAndroid_didStopLoading( |
83 env, obj.obj(), jstring_url.obj()); | 83 env, obj.obj(), jstring_url.obj()); |
84 } | 84 } |
85 | 85 |
86 void WebContentsObserverAndroid::DidFailProvisionalLoad( | 86 void WebContentsObserverAndroid::DidFailProvisionalLoad( |
87 int64 frame_id, | 87 int64 frame_id, |
88 bool is_main_frame, | 88 bool is_main_frame, |
89 const GURL& validated_url, | 89 const GURL& validated_url, |
90 int error_code, | 90 int error_code, |
91 const string16& error_description, | 91 const string16& error_description, |
(...skipping 10 matching lines...) Expand all Loading... |
102 const string16& error_description, | 102 const string16& error_description, |
103 RenderViewHost* render_view_host) { | 103 RenderViewHost* render_view_host) { |
104 DidFailLoadInternal( | 104 DidFailLoadInternal( |
105 false, is_main_frame, error_code, error_description, validated_url); | 105 false, is_main_frame, error_code, error_description, validated_url); |
106 } | 106 } |
107 | 107 |
108 void WebContentsObserverAndroid::DidNavigateMainFrame( | 108 void WebContentsObserverAndroid::DidNavigateMainFrame( |
109 const LoadCommittedDetails& details, | 109 const LoadCommittedDetails& details, |
110 const FrameNavigateParams& params) { | 110 const FrameNavigateParams& params) { |
111 JNIEnv* env = AttachCurrentThread(); | 111 JNIEnv* env = AttachCurrentThread(); |
112 ScopedJavaLocalRef<jobject> obj = weak_java_observer_.get(env); | 112 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); |
113 if (obj.is_null()) | 113 if (obj.is_null()) |
114 return; | 114 return; |
115 ScopedJavaLocalRef<jstring> jstring_url = | 115 ScopedJavaLocalRef<jstring> jstring_url( |
116 ConvertUTF8ToJavaString(env, params.url.spec()); | 116 ConvertUTF8ToJavaString(env, params.url.spec())); |
117 ScopedJavaLocalRef<jstring> jstring_base_url = | 117 ScopedJavaLocalRef<jstring> jstring_base_url( |
118 ConvertUTF8ToJavaString(env, params.base_url.spec()); | 118 ConvertUTF8ToJavaString(env, params.base_url.spec())); |
119 Java_WebContentsObserverAndroid_didNavigateMainFrame( | 119 Java_WebContentsObserverAndroid_didNavigateMainFrame( |
120 env, obj.obj(), jstring_url.obj(), jstring_base_url.obj()); | 120 env, obj.obj(), jstring_url.obj(), jstring_base_url.obj()); |
121 } | 121 } |
122 | 122 |
123 void WebContentsObserverAndroid::DidNavigateAnyFrame( | 123 void WebContentsObserverAndroid::DidNavigateAnyFrame( |
124 const LoadCommittedDetails& details, | 124 const LoadCommittedDetails& details, |
125 const FrameNavigateParams& params) { | 125 const FrameNavigateParams& params) { |
126 JNIEnv* env = AttachCurrentThread(); | 126 JNIEnv* env = AttachCurrentThread(); |
127 ScopedJavaLocalRef<jobject> obj = weak_java_observer_.get(env); | 127 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); |
128 if (obj.is_null()) | 128 if (obj.is_null()) |
129 return; | 129 return; |
130 ScopedJavaLocalRef<jstring> jstring_url = | 130 ScopedJavaLocalRef<jstring> jstring_url( |
131 ConvertUTF8ToJavaString(env, params.url.spec()); | 131 ConvertUTF8ToJavaString(env, params.url.spec())); |
132 ScopedJavaLocalRef<jstring> jstring_base_url = | 132 ScopedJavaLocalRef<jstring> jstring_base_url( |
133 ConvertUTF8ToJavaString(env, params.base_url.spec()); | 133 ConvertUTF8ToJavaString(env, params.base_url.spec())); |
134 jboolean jboolean_is_reload = PAGE_TRANSITION_RELOAD == params.transition; | 134 jboolean jboolean_is_reload = PAGE_TRANSITION_RELOAD == params.transition; |
135 Java_WebContentsObserverAndroid_didNavigateAnyFrame( | 135 Java_WebContentsObserverAndroid_didNavigateAnyFrame( |
136 env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(), | 136 env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(), |
137 jboolean_is_reload); | 137 jboolean_is_reload); |
138 } | 138 } |
139 | 139 |
| 140 void WebContentsObserverAndroid::DidStartProvisionalLoadForFrame( |
| 141 int64 frame_id, |
| 142 int64 parent_frame_id, |
| 143 bool is_main_frame, |
| 144 const GURL& validated_url, |
| 145 bool is_error_page, |
| 146 bool is_iframe_srcdoc, |
| 147 RenderViewHost* render_view_host) { |
| 148 JNIEnv* env = AttachCurrentThread(); |
| 149 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); |
| 150 if (obj.is_null()) |
| 151 return; |
| 152 ScopedJavaLocalRef<jstring> jstring_url( |
| 153 ConvertUTF8ToJavaString(env, validated_url.spec())); |
| 154 Java_WebContentsObserverAndroid_didStartProvisionalLoadForFrame( |
| 155 env, obj.obj(), frame_id, parent_frame_id, is_main_frame, |
| 156 jstring_url.obj(), is_error_page, is_iframe_srcdoc); |
| 157 } |
| 158 |
140 void WebContentsObserverAndroid::DidFailLoadInternal( | 159 void WebContentsObserverAndroid::DidFailLoadInternal( |
141 bool is_provisional_load, | 160 bool is_provisional_load, |
142 bool is_main_frame, | 161 bool is_main_frame, |
143 int error_code, | 162 int error_code, |
144 const string16& description, | 163 const string16& description, |
145 const GURL& url) { | 164 const GURL& url) { |
146 JNIEnv* env = AttachCurrentThread(); | 165 JNIEnv* env = AttachCurrentThread(); |
147 ScopedJavaLocalRef<jobject> obj = weak_java_observer_.get(env); | 166 ScopedJavaLocalRef<jobject> obj(weak_java_observer_.get(env)); |
148 if (obj.is_null()) | 167 if (obj.is_null()) |
149 return; | 168 return; |
150 ScopedJavaLocalRef<jstring> jstring_error_description = | 169 ScopedJavaLocalRef<jstring> jstring_error_description( |
151 ConvertUTF16ToJavaString(env, description); | 170 ConvertUTF16ToJavaString(env, description)); |
152 ScopedJavaLocalRef<jstring> jstring_url = | 171 ScopedJavaLocalRef<jstring> jstring_url( |
153 ConvertUTF8ToJavaString(env, url.spec()); | 172 ConvertUTF8ToJavaString(env, url.spec())); |
154 | 173 |
155 Java_WebContentsObserverAndroid_didFailLoad( | 174 Java_WebContentsObserverAndroid_didFailLoad( |
156 env, obj.obj(), | 175 env, obj.obj(), |
157 is_provisional_load, | 176 is_provisional_load, |
158 is_main_frame, | 177 is_main_frame, |
159 error_code, | 178 error_code, |
160 jstring_error_description.obj(), jstring_url.obj()); | 179 jstring_error_description.obj(), jstring_url.obj()); |
161 } | 180 } |
162 | 181 |
163 bool RegisterWebContentsObserverAndroid(JNIEnv* env) { | 182 bool RegisterWebContentsObserverAndroid(JNIEnv* env) { |
164 if (!HasClass(env, kWebContentsObserverAndroidClassPath)) { | 183 if (!HasClass(env, kWebContentsObserverAndroidClassPath)) { |
165 DLOG(ERROR) << "Unable to find class WebContentsObserverAndroid!"; | 184 DLOG(ERROR) << "Unable to find class WebContentsObserverAndroid!"; |
166 return false; | 185 return false; |
167 } | 186 } |
168 return RegisterNativesImpl(env); | 187 return RegisterNativesImpl(env); |
169 } | 188 } |
170 } // namespace content | 189 } // namespace content |
OLD | NEW |