OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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/content_view_core_impl.h" | 5 #include "content/browser/android/content_view_core_impl.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/android/jni_array.h" | 8 #include "base/android/jni_array.h" |
9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
10 #include "base/android/scoped_java_ref.h" | 10 #include "base/android/scoped_java_ref.h" |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 DCHECK(env->IsSameObject(java_ref_.get(env).obj(), obj)); | 211 DCHECK(env->IsSameObject(java_ref_.get(env).obj(), obj)); |
212 java_ref_.reset(); | 212 java_ref_.reset(); |
213 } | 213 } |
214 | 214 |
215 void ContentViewCoreImpl::InitWebContents() { | 215 void ContentViewCoreImpl::InitWebContents() { |
216 DCHECK(web_contents_); | 216 DCHECK(web_contents_); |
217 notification_registrar_.Add( | 217 notification_registrar_.Add( |
218 this, NOTIFICATION_RENDER_VIEW_HOST_CHANGED, | 218 this, NOTIFICATION_RENDER_VIEW_HOST_CHANGED, |
219 Source<WebContents>(web_contents_)); | 219 Source<WebContents>(web_contents_)); |
220 notification_registrar_.Add( | 220 notification_registrar_.Add( |
221 this, NOTIFICATION_RENDERER_PROCESS_CREATED, | |
222 content::NotificationService::AllBrowserContextsAndSources()); | |
223 notification_registrar_.Add( | |
224 this, NOTIFICATION_WEB_CONTENTS_CONNECTED, | 221 this, NOTIFICATION_WEB_CONTENTS_CONNECTED, |
225 Source<WebContents>(web_contents_)); | 222 Source<WebContents>(web_contents_)); |
226 | 223 |
227 static_cast<WebContentsViewAndroid*>(web_contents_->GetView())-> | 224 static_cast<WebContentsViewAndroid*>(web_contents_->GetView())-> |
228 SetContentViewCore(this); | 225 SetContentViewCore(this); |
229 DCHECK(!web_contents_->GetUserData(kContentViewUserDataKey)); | 226 DCHECK(!web_contents_->GetUserData(kContentViewUserDataKey)); |
230 web_contents_->SetUserData(kContentViewUserDataKey, | 227 web_contents_->SetUserData(kContentViewUserDataKey, |
231 new ContentViewUserData(this)); | 228 new ContentViewUserData(this)); |
232 } | 229 } |
233 | 230 |
(...skipping 16 matching lines...) Expand all Loading... |
250 JNIEnv* env = AttachCurrentThread(); | 247 JNIEnv* env = AttachCurrentThread(); |
251 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 248 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
252 if (!obj.is_null()) { | 249 if (!obj.is_null()) { |
253 Java_ContentViewCore_onRenderProcessSwap( | 250 Java_ContentViewCore_onRenderProcessSwap( |
254 env, obj.obj(), old_pid, new_pid); | 251 env, obj.obj(), old_pid, new_pid); |
255 } | 252 } |
256 } | 253 } |
257 SetFocusInternal(HasFocus()); | 254 SetFocusInternal(HasFocus()); |
258 break; | 255 break; |
259 } | 256 } |
260 case NOTIFICATION_RENDERER_PROCESS_CREATED: { | |
261 // Notify the Java side of the current renderer process. | |
262 RenderProcessHost* source_process_host = | |
263 Source<RenderProcessHost>(source).ptr(); | |
264 RenderProcessHost* current_process_host = | |
265 web_contents_->GetRenderViewHost()->GetProcess(); | |
266 | |
267 if (source_process_host == current_process_host) { | |
268 int pid = GetRenderProcessIdFromRenderViewHost( | |
269 web_contents_->GetRenderViewHost()); | |
270 JNIEnv* env = AttachCurrentThread(); | |
271 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | |
272 if (!obj.is_null()) { | |
273 Java_ContentViewCore_onRenderProcessSwap(env, obj.obj(), 0, pid); | |
274 } | |
275 } | |
276 break; | |
277 } | |
278 case NOTIFICATION_WEB_CONTENTS_CONNECTED: { | 257 case NOTIFICATION_WEB_CONTENTS_CONNECTED: { |
279 JNIEnv* env = AttachCurrentThread(); | 258 JNIEnv* env = AttachCurrentThread(); |
280 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 259 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
281 if (!obj.is_null()) { | 260 if (!obj.is_null()) { |
282 Java_ContentViewCore_onWebContentsConnected(env, obj.obj()); | 261 Java_ContentViewCore_onWebContentsConnected(env, obj.obj()); |
283 } | 262 } |
284 break; | 263 break; |
285 } | 264 } |
286 } | 265 } |
287 } | 266 } |
(...skipping 1361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1649 reinterpret_cast<ui::ViewAndroid*>(view_android), | 1628 reinterpret_cast<ui::ViewAndroid*>(view_android), |
1650 reinterpret_cast<ui::WindowAndroid*>(window_android)); | 1629 reinterpret_cast<ui::WindowAndroid*>(window_android)); |
1651 return reinterpret_cast<jint>(view); | 1630 return reinterpret_cast<jint>(view); |
1652 } | 1631 } |
1653 | 1632 |
1654 bool RegisterContentViewCore(JNIEnv* env) { | 1633 bool RegisterContentViewCore(JNIEnv* env) { |
1655 return RegisterNativesImpl(env); | 1634 return RegisterNativesImpl(env); |
1656 } | 1635 } |
1657 | 1636 |
1658 } // namespace content | 1637 } // namespace content |
OLD | NEW |