Merge "Add appops policy tags to dumpsys appops output" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f197339ea8
@@ -178,6 +178,7 @@ import com.android.server.SystemServiceManager;
|
||||
import com.android.server.pm.PackageList;
|
||||
import com.android.server.pm.parsing.pkg.AndroidPackage;
|
||||
import com.android.server.pm.pkg.component.ParsedAttribution;
|
||||
import com.android.server.policy.AppOpsPolicy;
|
||||
|
||||
import dalvik.annotation.optimization.NeverCompile;
|
||||
|
||||
@@ -6231,8 +6232,8 @@ public class AppOpsService extends IAppOpsService.Stub {
|
||||
}
|
||||
}
|
||||
if (mAudioRestrictionManager.hasActiveRestrictions() && dumpOp < 0
|
||||
&& dumpPackage != null && dumpMode < 0 && !dumpWatchers && !dumpWatchers) {
|
||||
needSep = mAudioRestrictionManager.dump(pw) | needSep ;
|
||||
&& dumpPackage != null && dumpMode < 0 && !dumpWatchers) {
|
||||
needSep = mAudioRestrictionManager.dump(pw) || needSep;
|
||||
}
|
||||
if (needSep) {
|
||||
pw.println();
|
||||
@@ -6508,6 +6509,17 @@ public class AppOpsService extends IAppOpsService.Stub {
|
||||
ipw.decreaseIndent();
|
||||
}
|
||||
}
|
||||
|
||||
if (!dumpHistory && !dumpWatchers) {
|
||||
pw.println();
|
||||
if (mCheckOpsDelegateDispatcher.mPolicy != null
|
||||
&& mCheckOpsDelegateDispatcher.mPolicy instanceof AppOpsPolicy) {
|
||||
AppOpsPolicy policy = (AppOpsPolicy) mCheckOpsDelegateDispatcher.mPolicy;
|
||||
policy.dumpTags(pw);
|
||||
} else {
|
||||
pw.println(" AppOps policy not set.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Must not hold the appops lock
|
||||
|
||||
@@ -55,6 +55,7 @@ import com.android.internal.util.function.TriFunction;
|
||||
import com.android.internal.util.function.UndecFunction;
|
||||
import com.android.server.LocalServices;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -283,6 +284,33 @@ public final class AppOpsPolicy implements AppOpsManagerInternal.CheckOpsDelegat
|
||||
attributionSource, skipProxyOperation);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write location and activity recognition tags to console.
|
||||
* See also {@code adb shell dumpsys appops}.
|
||||
*/
|
||||
public void dumpTags(PrintWriter writer) {
|
||||
if (!mLocationTags.isEmpty()) {
|
||||
writer.println(" AppOps policy location tags:");
|
||||
writeTags(mLocationTags, writer);
|
||||
writer.println();
|
||||
}
|
||||
if (!mActivityRecognitionTags.isEmpty()) {
|
||||
writer.println(" AppOps policy activity recognition tags:");
|
||||
writeTags(mActivityRecognitionTags, writer);
|
||||
writer.println();
|
||||
}
|
||||
}
|
||||
|
||||
private void writeTags(Map<Integer, PackageTagsList> tags, PrintWriter writer) {
|
||||
int counter = 0;
|
||||
for (Map.Entry<Integer, PackageTagsList> tagEntry : tags.entrySet()) {
|
||||
writer.print(" #"); writer.print(counter++); writer.print(": ");
|
||||
writer.print(tagEntry.getKey().toString()); writer.print("=");
|
||||
tagEntry.getValue().dump(writer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private int resolveDatasourceOp(int code, int uid, @NonNull String packageName,
|
||||
@Nullable String attributionTag) {
|
||||
code = resolveRecordAudioOp(code, uid);
|
||||
|
||||
Reference in New Issue
Block a user