Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: content/browser/android/java/gin_java_bridge_dispatcher_host.cc

Issue 1124003003: [Android] Fix iteration in GinJavaBridgeDispatcherHost::RemoveHolderAndAdvanceLocked (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/java/gin_java_bridge_dispatcher_host.h" 5 #include "content/browser/android/java/gin_java_bridge_dispatcher_host.h"
6 6
7 #include "base/android/java_handler_thread.h" 7 #include "base/android/java_handler_thread.h"
8 #include "base/android/jni_android.h" 8 #include "base/android/jni_android.h"
9 #include "base/android/scoped_java_ref.h" 9 #include "base/android/scoped_java_ref.h"
10 #include "base/atomic_sequence_num.h" 10 #include "base/atomic_sequence_num.h"
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 return JavaObjectWeakGlobalRef(); 184 return JavaObjectWeakGlobalRef();
185 } 185 }
186 186
187 JavaObjectWeakGlobalRef 187 JavaObjectWeakGlobalRef
188 GinJavaBridgeDispatcherHost::RemoveHolderAndAdvanceLocked( 188 GinJavaBridgeDispatcherHost::RemoveHolderAndAdvanceLocked(
189 int32 holder, 189 int32 holder,
190 ObjectMap::iterator* iter_ptr) { 190 ObjectMap::iterator* iter_ptr) {
191 objects_lock_.AssertAcquired(); 191 objects_lock_.AssertAcquired();
192 JavaObjectWeakGlobalRef result; 192 JavaObjectWeakGlobalRef result;
193 scoped_refptr<GinJavaBoundObject> object((*iter_ptr)->second); 193 scoped_refptr<GinJavaBoundObject> object((*iter_ptr)->second);
194 bool object_erased = false;
194 if (!object->IsNamed()) { 195 if (!object->IsNamed()) {
195 object->RemoveHolder(holder); 196 object->RemoveHolder(holder);
196 if (!object->HasHolders()) { 197 if (!object->HasHolders()) {
197 result = object->GetWeakRef(); 198 result = object->GetWeakRef();
198 objects_.erase((*iter_ptr)++); 199 objects_.erase((*iter_ptr)++);
200 object_erased = true;
199 } 201 }
200 } else { 202 }
203 if (!object_erased) {
201 ++(*iter_ptr); 204 ++(*iter_ptr);
202 } 205 }
203 return result; 206 return result;
204 } 207 }
205 208
206 void GinJavaBridgeDispatcherHost::RemoveFromRetainedObjectSetLocked( 209 void GinJavaBridgeDispatcherHost::RemoveFromRetainedObjectSetLocked(
207 const JavaObjectWeakGlobalRef& ref) { 210 const JavaObjectWeakGlobalRef& ref) {
208 objects_lock_.AssertAcquired(); 211 objects_lock_.AssertAcquired();
209 JNIEnv* env = base::android::AttachCurrentThread(); 212 JNIEnv* env = base::android::AttachCurrentThread();
210 base::android::ScopedJavaLocalRef<jobject> retained_object_set = 213 base::android::ScopedJavaLocalRef<jobject> retained_object_set =
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 if (iter == objects_.end()) 482 if (iter == objects_.end())
480 return; 483 return;
481 JavaObjectWeakGlobalRef ref = 484 JavaObjectWeakGlobalRef ref =
482 RemoveHolderAndAdvanceLocked(GetCurrentRoutingID(), &iter); 485 RemoveHolderAndAdvanceLocked(GetCurrentRoutingID(), &iter);
483 if (!ref.is_empty()) { 486 if (!ref.is_empty()) {
484 RemoveFromRetainedObjectSetLocked(ref); 487 RemoveFromRetainedObjectSetLocked(ref);
485 } 488 }
486 } 489 }
487 490
488 } // namespace content 491 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698