Index: content/browser/android/java/gin_java_bridge_dispatcher_host.cc |
diff --git a/content/browser/android/java/gin_java_bridge_dispatcher_host.cc b/content/browser/android/java/gin_java_bridge_dispatcher_host.cc |
index c0b20b975abde48041526e049028b6c35ca18d72..c8fb2fd989962a0d27e7e59b46f4cfbf32a7c399 100644 |
--- a/content/browser/android/java/gin_java_bridge_dispatcher_host.cc |
+++ b/content/browser/android/java/gin_java_bridge_dispatcher_host.cc |
@@ -210,18 +210,10 @@ void GinJavaBridgeDispatcherHost::RemoveNamedObject( |
named_objects_.erase(iter); |
object->RemoveName(); |
- // Not erasing from the objects map, as we can still receive method |
- // invocation requests for this object, and they should work until the |
- // java object is gone. |
- if (!object->IsNamed()) { |
- JNIEnv* env = base::android::AttachCurrentThread(); |
- base::android::ScopedJavaLocalRef<jobject> retained_object_set = |
- retained_object_set_.get(env); |
- if (!retained_object_set.is_null()) { |
- JNI_Java_HashSet_remove( |
- env, retained_object_set, object->GetLocalRef(env)); |
- } |
- } |
+ // As the object isn't going to be removed from the JavaScript side until the |
+ // next page reload, calls to it must still work, thus we should continue to |
+ // hold it. All the transient objects and removed named objects will be purged |
+ // during the cleansing caused by DocumentAvailableInMainFrame event. |
web_contents()->SendToAllFrames( |
new GinJavaBridgeMsg_RemoveNamedObject(MSG_ROUTING_NONE, copied_name)); |