Loading core/java/android/app/AppOpsManager.java +19 −16 Original line number Original line Diff line number Diff line Loading @@ -6475,7 +6475,7 @@ public class AppOpsManager { historicalDiscreteAccesses.add(other.mDiscreteAccesses.get(i++)); historicalDiscreteAccesses.add(other.mDiscreteAccesses.get(i++)); } } } } mDiscreteAccesses = historicalDiscreteAccesses; mDiscreteAccesses = deduplicateDiscreteEvents(historicalDiscreteAccesses); } } private void increaseAccessCount(@UidState int uidState, @OpFlags int flags, private void increaseAccessCount(@UidState int uidState, @OpFlags int flags, Loading Loading @@ -6996,21 +6996,7 @@ public class AppOpsManager { } } result.add(entry); result.add(entry); } } nAccesses = result.size(); return deduplicateDiscreteEvents(result); int i = 0; for (int j = 0, k = 0; j < nAccesses; i++, j = k) { long currentAccessTime = result.get(j).getLastAccessTime(OP_FLAGS_ALL); k = j + 1; while(k < nAccesses && result.get(k).getLastAccessTime(OP_FLAGS_ALL) == currentAccessTime) { k++; } result.set(i, mergeAttributedOpEntries(result.subList(j, k))); } for (; i < nAccesses; i++) { result.remove(result.size() - 1); } return result; } } /** /** Loading Loading @@ -9834,6 +9820,23 @@ public class AppOpsManager { } } } } private static List<AttributedOpEntry> deduplicateDiscreteEvents(List<AttributedOpEntry> list) { int n = list.size(); int i = 0; for (int j = 0, k = 0; j < n; i++, j = k) { long currentAccessTime = list.get(j).getLastAccessTime(OP_FLAGS_ALL); k = j + 1; while(k < n && list.get(k).getLastAccessTime(OP_FLAGS_ALL) == currentAccessTime) { k++; } list.set(i, mergeAttributedOpEntries(list.subList(j, k))); } for (; i < n; i++) { list.remove(list.size() - 1); } return list; } private static AttributedOpEntry mergeAttributedOpEntries(List<AttributedOpEntry> opEntries) { private static AttributedOpEntry mergeAttributedOpEntries(List<AttributedOpEntry> opEntries) { if (opEntries.size() == 1) { if (opEntries.size() == 1) { return opEntries.get(0); return opEntries.get(0); Loading Loading
core/java/android/app/AppOpsManager.java +19 −16 Original line number Original line Diff line number Diff line Loading @@ -6475,7 +6475,7 @@ public class AppOpsManager { historicalDiscreteAccesses.add(other.mDiscreteAccesses.get(i++)); historicalDiscreteAccesses.add(other.mDiscreteAccesses.get(i++)); } } } } mDiscreteAccesses = historicalDiscreteAccesses; mDiscreteAccesses = deduplicateDiscreteEvents(historicalDiscreteAccesses); } } private void increaseAccessCount(@UidState int uidState, @OpFlags int flags, private void increaseAccessCount(@UidState int uidState, @OpFlags int flags, Loading Loading @@ -6996,21 +6996,7 @@ public class AppOpsManager { } } result.add(entry); result.add(entry); } } nAccesses = result.size(); return deduplicateDiscreteEvents(result); int i = 0; for (int j = 0, k = 0; j < nAccesses; i++, j = k) { long currentAccessTime = result.get(j).getLastAccessTime(OP_FLAGS_ALL); k = j + 1; while(k < nAccesses && result.get(k).getLastAccessTime(OP_FLAGS_ALL) == currentAccessTime) { k++; } result.set(i, mergeAttributedOpEntries(result.subList(j, k))); } for (; i < nAccesses; i++) { result.remove(result.size() - 1); } return result; } } /** /** Loading Loading @@ -9834,6 +9820,23 @@ public class AppOpsManager { } } } } private static List<AttributedOpEntry> deduplicateDiscreteEvents(List<AttributedOpEntry> list) { int n = list.size(); int i = 0; for (int j = 0, k = 0; j < n; i++, j = k) { long currentAccessTime = list.get(j).getLastAccessTime(OP_FLAGS_ALL); k = j + 1; while(k < n && list.get(k).getLastAccessTime(OP_FLAGS_ALL) == currentAccessTime) { k++; } list.set(i, mergeAttributedOpEntries(list.subList(j, k))); } for (; i < n; i++) { list.remove(list.size() - 1); } return list; } private static AttributedOpEntry mergeAttributedOpEntries(List<AttributedOpEntry> opEntries) { private static AttributedOpEntry mergeAttributedOpEntries(List<AttributedOpEntry> opEntries) { if (opEntries.size() == 1) { if (opEntries.size() == 1) { return opEntries.get(0); return opEntries.get(0); Loading