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

Commit f197339e authored by Manjeet Rulhania's avatar Manjeet Rulhania Committed by Android (Google) Code Review
Browse files

Merge "Add appops policy tags to dumpsys appops output" into tm-dev

parents fe435670 b84f7b20
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);