Ensure only microphone attribution chains are recorded
Also ensure each chain is attributed to only one op Test: manual Fixes: 212434116 Change-Id: I50efc2b305627f8e37eb28842487b911dce5d925
This commit is contained in:
@@ -318,7 +318,7 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
|
|||||||
String permGroup = usedPermGroups.get(permGroupNum);
|
String permGroup = usedPermGroups.get(permGroupNum);
|
||||||
|
|
||||||
ArrayMap<OpUsage, CharSequence> usagesWithLabels =
|
ArrayMap<OpUsage, CharSequence> usagesWithLabels =
|
||||||
getUniqueUsagesWithLabels(rawUsages.get(permGroup));
|
getUniqueUsagesWithLabels(permGroup, rawUsages.get(permGroup));
|
||||||
|
|
||||||
if (permGroup.equals(OPSTR_PHONE_CALL_MICROPHONE)) {
|
if (permGroup.equals(OPSTR_PHONE_CALL_MICROPHONE)) {
|
||||||
isPhone = true;
|
isPhone = true;
|
||||||
@@ -439,7 +439,8 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
|
|||||||
return ListFormatter.getInstance().format(labels);
|
return ListFormatter.getInstance().format(labels);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArrayMap<OpUsage, CharSequence> getUniqueUsagesWithLabels(List<OpUsage> usages) {
|
private ArrayMap<OpUsage, CharSequence> getUniqueUsagesWithLabels(String permGroup,
|
||||||
|
List<OpUsage> usages) {
|
||||||
ArrayMap<OpUsage, CharSequence> usagesAndLabels = new ArrayMap<>();
|
ArrayMap<OpUsage, CharSequence> usagesAndLabels = new ArrayMap<>();
|
||||||
|
|
||||||
if (usages == null || usages.isEmpty()) {
|
if (usages == null || usages.isEmpty()) {
|
||||||
@@ -474,7 +475,7 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
|
|||||||
// If this usage has a proxy, but is not a proxy, it is the end of a chain.
|
// If this usage has a proxy, but is not a proxy, it is the end of a chain.
|
||||||
// TODO remove once camera converted
|
// TODO remove once camera converted
|
||||||
if (!proxies.containsKey(usageAttr) && usage.proxy != null
|
if (!proxies.containsKey(usageAttr) && usage.proxy != null
|
||||||
&& !usage.op.equals(OPSTR_RECORD_AUDIO)) {
|
&& !MICROPHONE.equals(permGroup)) {
|
||||||
proxyLabels.put(usage, new ArrayList<>());
|
proxyLabels.put(usage, new ArrayList<>());
|
||||||
proxyPackages.add(usage.getPackageIdHash());
|
proxyPackages.add(usage.getPackageIdHash());
|
||||||
}
|
}
|
||||||
@@ -546,7 +547,7 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
|
|||||||
|
|
||||||
// TODO ntmyren: remove this proxy logic once camera is converted to AttributionSource
|
// TODO ntmyren: remove this proxy logic once camera is converted to AttributionSource
|
||||||
// For now: don't add mic proxy usages
|
// For now: don't add mic proxy usages
|
||||||
if (!start.op.equals(OPSTR_RECORD_AUDIO)) {
|
if (!MICROPHONE.equals(permGroup)) {
|
||||||
usagesAndLabels.put(start,
|
usagesAndLabels.put(start,
|
||||||
proxyLabelList.isEmpty() ? null : formatLabelList(proxyLabelList));
|
proxyLabelList.isEmpty() ? null : formatLabelList(proxyLabelList));
|
||||||
}
|
}
|
||||||
@@ -560,7 +561,8 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis
|
|||||||
// if the list is empty or incomplete, do not show it.
|
// if the list is empty or incomplete, do not show it.
|
||||||
if (usageList.isEmpty() || !usageList.get(lastVisible).isEnd()
|
if (usageList.isEmpty() || !usageList.get(lastVisible).isEnd()
|
||||||
|| !usageList.get(0).isStart()
|
|| !usageList.get(0).isStart()
|
||||||
|| !usageList.get(lastVisible).usage.op.equals(OPSTR_RECORD_AUDIO)) {
|
|| !permGroup.equals(getGroupForOp(usageList.get(0).usage.op))
|
||||||
|
|| !MICROPHONE.equals(permGroup)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user