summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2021-05-06 12:53:24 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-05-06 12:53:24 +0000
commit38e2d409eab8c634ea03cb3fcb33d365f9f01e1f (patch)
treed6de9eb03e41801fe6b6469c5da539fd32a1e5df /core/java/android
parent3a424f08d810ff64eb4e53a1eac99c940bdd5f33 (diff)
parentecb45f7e331d2f2e1b4e58413b773535036bf26f (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.java27
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();
}
/**