| 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/renderer_host/java/java_bridge_dispatcher_host_manager
.h" | 5 #include "content/browser/renderer_host/java/java_bridge_dispatcher_host_manager
.h" |
| 6 | 6 |
| 7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
| 8 #include "base/android/jni_helper.h" | 8 #include "base/android/jni_helper.h" |
| 9 #include "base/android/scoped_java_ref.h" | 9 #include "base/android/scoped_java_ref.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 | 107 |
| 108 void JavaBridgeDispatcherHostManager::RenderFrameDeleted( | 108 void JavaBridgeDispatcherHostManager::RenderFrameDeleted( |
| 109 RenderFrameHost* render_frame_host) { | 109 RenderFrameHost* render_frame_host) { |
| 110 if (!instances_.count(render_frame_host)) // Needed for tests. | 110 if (!instances_.count(render_frame_host)) // Needed for tests. |
| 111 return; | 111 return; |
| 112 instances_[render_frame_host]->RenderFrameDeleted(); | 112 instances_[render_frame_host]->RenderFrameDeleted(); |
| 113 instances_.erase(render_frame_host); | 113 instances_.erase(render_frame_host); |
| 114 } | 114 } |
| 115 | 115 |
| 116 void JavaBridgeDispatcherHostManager::DocumentAvailableInMainFrame() { | 116 void JavaBridgeDispatcherHostManager::DocumentAvailableInMainFrame() { |
| 117 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 117 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 118 // Called when the window object has been cleared in the main frame. | 118 // Called when the window object has been cleared in the main frame. |
| 119 JNIEnv* env = base::android::AttachCurrentThread(); | 119 JNIEnv* env = base::android::AttachCurrentThread(); |
| 120 base::android::ScopedJavaLocalRef<jobject> retained_object_set = | 120 base::android::ScopedJavaLocalRef<jobject> retained_object_set = |
| 121 retained_object_set_.get(env); | 121 retained_object_set_.get(env); |
| 122 if (!retained_object_set.is_null()) { | 122 if (!retained_object_set.is_null()) { |
| 123 JNI_Java_HashSet_clear(env, retained_object_set); | 123 JNI_Java_HashSet_clear(env, retained_object_set); |
| 124 | 124 |
| 125 // We also need to add back the named objects we have so far as they | 125 // We also need to add back the named objects we have so far as they |
| 126 // should survive navigations. | 126 // should survive navigations. |
| 127 ObjectMap::iterator it = objects_.begin(); | 127 ObjectMap::iterator it = objects_.begin(); |
| 128 for (; it != objects_.end(); ++it) { | 128 for (; it != objects_.end(); ++it) { |
| 129 JNI_Java_HashSet_add(env, retained_object_set, | 129 JNI_Java_HashSet_add(env, retained_object_set, |
| 130 JavaBoundObject::GetJavaObject(it->second)); | 130 JavaBoundObject::GetJavaObject(it->second)); |
| 131 } | 131 } |
| 132 } | 132 } |
| 133 } | 133 } |
| 134 | 134 |
| 135 void JavaBridgeDispatcherHostManager::JavaBoundObjectCreated( | 135 void JavaBridgeDispatcherHostManager::JavaBoundObjectCreated( |
| 136 const base::android::JavaRef<jobject>& object) { | 136 const base::android::JavaRef<jobject>& object) { |
| 137 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 137 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 138 | 138 |
| 139 JNIEnv* env = base::android::AttachCurrentThread(); | 139 JNIEnv* env = base::android::AttachCurrentThread(); |
| 140 base::android::ScopedJavaLocalRef<jobject> retained_object_set = | 140 base::android::ScopedJavaLocalRef<jobject> retained_object_set = |
| 141 retained_object_set_.get(env); | 141 retained_object_set_.get(env); |
| 142 if (!retained_object_set.is_null()) { | 142 if (!retained_object_set.is_null()) { |
| 143 JNI_Java_HashSet_add(env, retained_object_set, object); | 143 JNI_Java_HashSet_add(env, retained_object_set, object); |
| 144 } | 144 } |
| 145 } | 145 } |
| 146 | 146 |
| 147 void JavaBridgeDispatcherHostManager::JavaBoundObjectDestroyed( | 147 void JavaBridgeDispatcherHostManager::JavaBoundObjectDestroyed( |
| 148 const base::android::JavaRef<jobject>& object) { | 148 const base::android::JavaRef<jobject>& object) { |
| 149 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 149 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 150 | 150 |
| 151 JNIEnv* env = base::android::AttachCurrentThread(); | 151 JNIEnv* env = base::android::AttachCurrentThread(); |
| 152 base::android::ScopedJavaLocalRef<jobject> retained_object_set = | 152 base::android::ScopedJavaLocalRef<jobject> retained_object_set = |
| 153 retained_object_set_.get(env); | 153 retained_object_set_.get(env); |
| 154 if (!retained_object_set.is_null()) { | 154 if (!retained_object_set.is_null()) { |
| 155 JNI_Java_HashSet_remove(env, retained_object_set, object); | 155 JNI_Java_HashSet_remove(env, retained_object_set, object); |
| 156 } | 156 } |
| 157 } | 157 } |
| 158 | 158 |
| 159 void JavaBridgeDispatcherHostManager::SetAllowObjectContentsInspection( | 159 void JavaBridgeDispatcherHostManager::SetAllowObjectContentsInspection( |
| 160 bool allow) { | 160 bool allow) { |
| 161 allow_object_contents_inspection_ = allow; | 161 allow_object_contents_inspection_ = allow; |
| 162 } | 162 } |
| 163 | 163 |
| 164 } // namespace content | 164 } // namespace content |
| OLD | NEW |