Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b84f7b20 authored by Manjeet Rulhania's avatar Manjeet Rulhania
Browse files

Add appops policy tags to dumpsys appops output

Bug: 191046644
Test: manual test
Change-Id: Id44ac77632babeb9c4a0b6b20321dfec28b32a3f
parent 7a53fdf6
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -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
+28 −0
Original line number Diff line number Diff line
@@ -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);