diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2021-05-06 12:53:24 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-05-06 12:53:24 +0000 |
| commit | 38e2d409eab8c634ea03cb3fcb33d365f9f01e1f (patch) | |
| tree | d6de9eb03e41801fe6b6469c5da539fd32a1e5df /core/java/android | |
| parent | 3a424f08d810ff64eb4e53a1eac99c940bdd5f33 (diff) | |
| parent | ecb45f7e331d2f2e1b4e58413b773535036bf26f (diff) | |
Merge "Fix issues with getHistoricalOps() results overflowing Binder connection." into sc-dev
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/app/AppOpsManager.java | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 52b38a20e4a1..4975fc222ef3 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -6854,7 +6854,7 @@ public class AppOpsManager { writeLongSparseLongArrayToParcel(mAccessCount, parcel); writeLongSparseLongArrayToParcel(mRejectCount, parcel); writeLongSparseLongArrayToParcel(mAccessDuration, parcel); - writeDiscreteAccessArrayToParcel(mDiscreteAccesses, parcel); + writeDiscreteAccessArrayToParcel(mDiscreteAccesses, parcel, flags); } @Override @@ -9711,29 +9711,16 @@ public class AppOpsManager { } private static void writeDiscreteAccessArrayToParcel( - @Nullable List<AttributedOpEntry> array, @NonNull Parcel parcel) { - if (array != null) { - final int size = array.size(); - parcel.writeInt(size); - for (int i = 0; i < size; i++) { - array.get(i).writeToParcel(parcel, 0); - } - } else { - parcel.writeInt(-1); - } + @Nullable List<AttributedOpEntry> array, @NonNull Parcel parcel, int flags) { + ParceledListSlice<AttributedOpEntry> listSlice = + array == null ? null : new ParceledListSlice<>(array); + parcel.writeParcelable(listSlice, flags); } private static @Nullable List<AttributedOpEntry> readDiscreteAccessArrayFromParcel( @NonNull Parcel parcel) { - final int size = parcel.readInt(); - if (size < 0) { - return null; - } - final List<AttributedOpEntry> array = new ArrayList<>(size); - for (int i = 0; i < size; i++) { - array.add(new AttributedOpEntry(parcel)); - } - return array; + final ParceledListSlice<AttributedOpEntry> listSlice = parcel.readParcelable(null); + return listSlice == null ? null : listSlice.getList(); } /** |
