Loading services/core/java/com/android/server/appop/AppOpHistoryHelper.java +31 −18 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import static android.app.AppOpsManager.ATTRIBUTION_CHAIN_ID_NONE; import static android.app.AppOpsManager.ATTRIBUTION_FLAG_ACCESSOR; import static android.app.AppOpsManager.ATTRIBUTION_FLAG_RECEIVER; import static android.app.AppOpsManager.ATTRIBUTION_FLAG_TRUSTED; import static android.app.AppOpsManager.HISTORY_FLAG_AGGREGATE; import static android.app.AppOpsManager.HISTORY_FLAG_DISCRETE; import static android.app.AppOpsManager.flagsToString; import static android.app.AppOpsManager.getUidStateName; Loading Loading @@ -152,11 +154,12 @@ public class AppOpHistoryHelper { @Nullable String packageNameFilter, @Nullable String[] opNamesFilter, @Nullable String attributionTagFilter, int opFlagsFilter, Set<String> attributionExemptPkgs) { Set<String> attributionExemptPkgs, @AppOpsManager.OpHistoryFlags int historyFlags) { List<AggregatedAppOpAccessEvent> discreteOps = getAppOpHistory(result, beginTimeMillis, endTimeMillis, filter, uidFilter, packageNameFilter, opNamesFilter, attributionTagFilter, opFlagsFilter); boolean assembleChains = attributionExemptPkgs != null; boolean includeDiscreteEvents = (historyFlags & HISTORY_FLAG_DISCRETE) != 0; boolean assembleChains = attributionExemptPkgs != null && includeDiscreteEvents; LongSparseArray<AttributionChain> attributionChains = null; if (assembleChains) { attributionChains = createAttributionChains(discreteOps, attributionExemptPkgs); Loading @@ -176,11 +179,16 @@ public class AppOpHistoryHelper { proxyEvent.packageName(), proxyEvent.attributionTag()); } } if (includeDiscreteEvents) { result.addDiscreteAccess(event.opCode(), event.uid(), event.packageName(), event.attributionTag(), event.uidState(), event.opFlags(), discretizeTimestamp(event.accessTimeMillis()), discretizeDuration(event.durationMillis()), proxy); } if ((historyFlags & HISTORY_FLAG_AGGREGATE) != 0) { addAppOpAccessEventToHistoricalOps(result, event); } } } void addLongIntervalOpsToHistoricalOpsResult(AppOpsManager.HistoricalOps result, Loading @@ -193,6 +201,12 @@ public class AppOpHistoryHelper { beginTimeMillis, endTimeMillis, filter, uidFilter, packageNameFilter, opNamesFilter, attributionTagFilter, opFlagsFilter); for (AggregatedAppOpAccessEvent opEvent : appOpHistoryAccesses) { addAppOpAccessEventToHistoricalOps(result, opEvent); } } private void addAppOpAccessEventToHistoricalOps(AppOpsManager.HistoricalOps result, AggregatedAppOpAccessEvent opEvent) { result.increaseAccessCount(opEvent.opCode(), opEvent.uid(), opEvent.packageName(), opEvent.attributionTag(), opEvent.uidState(), opEvent.opFlags(), Loading @@ -206,7 +220,6 @@ public class AppOpHistoryHelper { opEvent.attributionTag(), opEvent.uidState(), opEvent.opFlags(), opEvent.totalDurationMillis()); } } private List<AggregatedAppOpAccessEvent> getAppOpHistory(AppOpsManager.HistoricalOps result, long beginTimeMillis, long endTimeMillis, int filter, int uidFilter, Loading services/core/java/com/android/server/appop/HistoricalRegistry.java +3 −6 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.server.appop; import static android.app.AppOpsManager.ATTRIBUTION_CHAIN_ID_NONE; import static android.app.AppOpsManager.HISTORY_FLAG_AGGREGATE; import static android.app.AppOpsManager.HISTORY_FLAG_DISCRETE; import static android.app.AppOpsManager.OP_ACCESS_ACCESSIBILITY; import static android.app.AppOpsManager.OP_ACCESS_NOTIFICATIONS; import static android.app.AppOpsManager.OP_BIND_ACCESSIBILITY_SERVICE; Loading Loading @@ -550,11 +549,9 @@ public class HistoricalRegistry implements HistoricalRegistryInterface { final AppOpsManager.HistoricalOps result = new AppOpsManager.HistoricalOps(beginTimeMillis, endTimeMillis); if ((historyFlags & HISTORY_FLAG_DISCRETE) != 0) { mShortIntervalHistoryHelper.addShortIntervalOpsToHistoricalOpsResult(result, beginTimeMillis, endTimeMillis, filter, uid, packageName, opNames, attributionTag, flags, new ArraySet<>(attributionExemptPkgs)); } attributionTag, flags, new ArraySet<>(attributionExemptPkgs), historyFlags); if ((historyFlags & HISTORY_FLAG_AGGREGATE) != 0) { mLongIntervalHistoryHelper.addLongIntervalOpsToHistoricalOpsResult(result, beginTimeMillis, endTimeMillis, filter, uid, packageName, opNames, Loading Loading
services/core/java/com/android/server/appop/AppOpHistoryHelper.java +31 −18 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import static android.app.AppOpsManager.ATTRIBUTION_CHAIN_ID_NONE; import static android.app.AppOpsManager.ATTRIBUTION_FLAG_ACCESSOR; import static android.app.AppOpsManager.ATTRIBUTION_FLAG_RECEIVER; import static android.app.AppOpsManager.ATTRIBUTION_FLAG_TRUSTED; import static android.app.AppOpsManager.HISTORY_FLAG_AGGREGATE; import static android.app.AppOpsManager.HISTORY_FLAG_DISCRETE; import static android.app.AppOpsManager.flagsToString; import static android.app.AppOpsManager.getUidStateName; Loading Loading @@ -152,11 +154,12 @@ public class AppOpHistoryHelper { @Nullable String packageNameFilter, @Nullable String[] opNamesFilter, @Nullable String attributionTagFilter, int opFlagsFilter, Set<String> attributionExemptPkgs) { Set<String> attributionExemptPkgs, @AppOpsManager.OpHistoryFlags int historyFlags) { List<AggregatedAppOpAccessEvent> discreteOps = getAppOpHistory(result, beginTimeMillis, endTimeMillis, filter, uidFilter, packageNameFilter, opNamesFilter, attributionTagFilter, opFlagsFilter); boolean assembleChains = attributionExemptPkgs != null; boolean includeDiscreteEvents = (historyFlags & HISTORY_FLAG_DISCRETE) != 0; boolean assembleChains = attributionExemptPkgs != null && includeDiscreteEvents; LongSparseArray<AttributionChain> attributionChains = null; if (assembleChains) { attributionChains = createAttributionChains(discreteOps, attributionExemptPkgs); Loading @@ -176,11 +179,16 @@ public class AppOpHistoryHelper { proxyEvent.packageName(), proxyEvent.attributionTag()); } } if (includeDiscreteEvents) { result.addDiscreteAccess(event.opCode(), event.uid(), event.packageName(), event.attributionTag(), event.uidState(), event.opFlags(), discretizeTimestamp(event.accessTimeMillis()), discretizeDuration(event.durationMillis()), proxy); } if ((historyFlags & HISTORY_FLAG_AGGREGATE) != 0) { addAppOpAccessEventToHistoricalOps(result, event); } } } void addLongIntervalOpsToHistoricalOpsResult(AppOpsManager.HistoricalOps result, Loading @@ -193,6 +201,12 @@ public class AppOpHistoryHelper { beginTimeMillis, endTimeMillis, filter, uidFilter, packageNameFilter, opNamesFilter, attributionTagFilter, opFlagsFilter); for (AggregatedAppOpAccessEvent opEvent : appOpHistoryAccesses) { addAppOpAccessEventToHistoricalOps(result, opEvent); } } private void addAppOpAccessEventToHistoricalOps(AppOpsManager.HistoricalOps result, AggregatedAppOpAccessEvent opEvent) { result.increaseAccessCount(opEvent.opCode(), opEvent.uid(), opEvent.packageName(), opEvent.attributionTag(), opEvent.uidState(), opEvent.opFlags(), Loading @@ -206,7 +220,6 @@ public class AppOpHistoryHelper { opEvent.attributionTag(), opEvent.uidState(), opEvent.opFlags(), opEvent.totalDurationMillis()); } } private List<AggregatedAppOpAccessEvent> getAppOpHistory(AppOpsManager.HistoricalOps result, long beginTimeMillis, long endTimeMillis, int filter, int uidFilter, Loading
services/core/java/com/android/server/appop/HistoricalRegistry.java +3 −6 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.server.appop; import static android.app.AppOpsManager.ATTRIBUTION_CHAIN_ID_NONE; import static android.app.AppOpsManager.HISTORY_FLAG_AGGREGATE; import static android.app.AppOpsManager.HISTORY_FLAG_DISCRETE; import static android.app.AppOpsManager.OP_ACCESS_ACCESSIBILITY; import static android.app.AppOpsManager.OP_ACCESS_NOTIFICATIONS; import static android.app.AppOpsManager.OP_BIND_ACCESSIBILITY_SERVICE; Loading Loading @@ -550,11 +549,9 @@ public class HistoricalRegistry implements HistoricalRegistryInterface { final AppOpsManager.HistoricalOps result = new AppOpsManager.HistoricalOps(beginTimeMillis, endTimeMillis); if ((historyFlags & HISTORY_FLAG_DISCRETE) != 0) { mShortIntervalHistoryHelper.addShortIntervalOpsToHistoricalOpsResult(result, beginTimeMillis, endTimeMillis, filter, uid, packageName, opNames, attributionTag, flags, new ArraySet<>(attributionExemptPkgs)); } attributionTag, flags, new ArraySet<>(attributionExemptPkgs), historyFlags); if ((historyFlags & HISTORY_FLAG_AGGREGATE) != 0) { mLongIntervalHistoryHelper.addLongIntervalOpsToHistoricalOpsResult(result, beginTimeMillis, endTimeMillis, filter, uid, packageName, opNames, Loading