diff options
| author | Chulwoo Lee <chulwoo@google.com> | 2014-08-18 05:49:26 +0000 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2014-08-18 05:49:26 +0000 |
| commit | e33564ab9cd5a71b07a705a7703e69ae6b8be37d (patch) | |
| tree | 0b0eedbd46a2c7fc060fe683a9a6af6ed100c970 | |
| parent | 730095c1d8edfe9d9a7871bc9c24412e2128bad7 (diff) | |
| parent | 3d34b54ca8d5af82e021f9a43dd230af9d2ce918 (diff) | |
| download | frameworks_base-e33564ab9cd5a71b07a705a7703e69ae6b8be37d.zip frameworks_base-e33564ab9cd5a71b07a705a7703e69ae6b8be37d.tar.gz frameworks_base-e33564ab9cd5a71b07a705a7703e69ae6b8be37d.tar.bz2 | |
am 6cc20192: Merge "Fix ConcurrentModificationException in PersistentDataStore" into lmp-dev
* commit '6cc201929764089c49d777ed983ee776b38054e6':
Fix ConcurrentModificationException in PersistentDataStore
| -rw-r--r-- | services/core/java/com/android/server/tv/PersistentDataStore.java | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/tv/PersistentDataStore.java b/services/core/java/com/android/server/tv/PersistentDataStore.java index 05a2bde..fcfaaea 100644 --- a/services/core/java/com/android/server/tv/PersistentDataStore.java +++ b/services/core/java/com/android/server/tv/PersistentDataStore.java @@ -45,6 +45,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -69,7 +70,8 @@ final class PersistentDataStore { // The atomic file used to safely read or write the file. private final AtomicFile mAtomicFile; - private final List<TvContentRating> mBlockedRatings = new ArrayList<TvContentRating>(); + private final List<TvContentRating> mBlockedRatings = + Collections.synchronizedList(new ArrayList<TvContentRating>()); private boolean mBlockedRatingsChanged; @@ -107,9 +109,11 @@ final class PersistentDataStore { public boolean isRatingBlocked(TvContentRating rating) { loadIfNeeded(); - for (TvContentRating blcokedRating : mBlockedRatings) { - if (rating.contains(blcokedRating)) { - return true; + synchronized (mBlockedRatings) { + for (TvContentRating blcokedRating : mBlockedRatings) { + if (rating.contains(blcokedRating)) { + return true; + } } } return false; @@ -271,10 +275,12 @@ final class PersistentDataStore { serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); serializer.startTag(null, TAG_TV_INPUT_MANAGER_STATE); serializer.startTag(null, TAG_BLOCKED_RATINGS); - for (TvContentRating rating : mBlockedRatings) { - serializer.startTag(null, TAG_RATING); - serializer.attribute(null, ATTR_STRING, rating.flattenToString()); - serializer.endTag(null, TAG_RATING); + synchronized (mBlockedRatings) { + for (TvContentRating rating : mBlockedRatings) { + serializer.startTag(null, TAG_RATING); + serializer.attribute(null, ATTR_STRING, rating.flattenToString()); + serializer.endTag(null, TAG_RATING); + } } serializer.endTag(null, TAG_BLOCKED_RATINGS); serializer.startTag(null, TAG_PARENTAL_CONTROLS); |
