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

Commit 6c6403e3 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Encapusale running app-ops in an object

... instead of having some counters.

Also:
- No need to store token/clientId in system server
- startOP/finishOp does not require a featureId, null is ok.

Fixes: 144997947
Change-Id: Ic955cb2686f3d53b957d816397e978a80cf4d29b
parent 49bd9e1e
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -4308,7 +4308,7 @@ package android.app {
    method public static String permissionToOp(String);
    method public static String permissionToOp(String);
    method public void setNotedAppOpsCollector(@Nullable android.app.AppOpsManager.AppOpsCollector);
    method public void setNotedAppOpsCollector(@Nullable android.app.AppOpsManager.AppOpsCollector);
    method @Deprecated public int startOp(@NonNull String, int, @NonNull String);
    method @Deprecated public int startOp(@NonNull String, int, @NonNull String);
    method public int startOp(@NonNull String, int, @Nullable String, @NonNull String, @Nullable String);
    method public int startOp(@NonNull String, int, @Nullable String, @Nullable String, @Nullable String);
    method @Deprecated public int startOpNoThrow(@NonNull String, int, @NonNull String);
    method @Deprecated public int startOpNoThrow(@NonNull String, int, @NonNull String);
    method public int startOpNoThrow(@NonNull String, int, @NonNull String, @NonNull String, @Nullable String);
    method public int startOpNoThrow(@NonNull String, int, @NonNull String, @NonNull String, @Nullable String);
    method public void startWatchingActive(@NonNull String[], @NonNull java.util.concurrent.Executor, @NonNull android.app.AppOpsManager.OnOpActiveChangedListener);
    method public void startWatchingActive(@NonNull String[], @NonNull java.util.concurrent.Executor, @NonNull android.app.AppOpsManager.OnOpActiveChangedListener);
+22 −16
Original line number Original line Diff line number Diff line
@@ -139,7 +139,7 @@ public class AppOpsManager {
    @GuardedBy("sLock")
    @GuardedBy("sLock")
    private static @Nullable AppOpsCollector sNotedAppOpsCollector;
    private static @Nullable AppOpsCollector sNotedAppOpsCollector;


    static IBinder sToken;
    static IBinder sClientId;


    /** @hide */
    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @Retention(RetentionPolicy.SOURCE)
@@ -6487,23 +6487,29 @@ public class AppOpsManager {
        }
        }
    }
    }


    /** @hide */
    /**
    @UnsupportedAppUsage
     * @deprecated Use own local {@link android.os.Binder#Binder()}
     *
     * @hide
     */
    @Deprecated
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q, publicAlternatives = "Create own "
            + "local {@link android.os.Binder}")
    public static IBinder getToken(IAppOpsService service) {
    public static IBinder getToken(IAppOpsService service) {
        synchronized (AppOpsManager.class) {
        return getClientId();
            if (sToken != null) {
                return sToken;
    }
    }
            try {

                sToken = service.getToken(new Binder());
    /** @hide */
            } catch (RemoteException e) {
    public static IBinder getClientId() {
                throw e.rethrowFromSystemServer();
        synchronized (AppOpsManager.class) {
            if (sClientId == null) {
                sClientId = new Binder();
            }
            }
            return sToken;

            return sClientId;
        }
        }
    }
    }



    /**
    /**
     * @deprecated use {@link #startOp(String, int, String, String, String)} instead
     * @deprecated use {@link #startOp(String, int, String, String, String)} instead
     */
     */
@@ -6559,7 +6565,7 @@ public class AppOpsManager {
     * the package is not in the passed in UID.
     * the package is not in the passed in UID.
     */
     */
    public int startOp(@NonNull String op, int uid, @Nullable String packageName,
    public int startOp(@NonNull String op, int uid, @Nullable String packageName,
            @NonNull String featureId, @Nullable String message) {
            @Nullable String featureId, @Nullable String message) {
        return startOp(strOpToOp(op), uid, packageName, false, featureId, message);
        return startOp(strOpToOp(op), uid, packageName, false, featureId, message);
    }
    }


@@ -6583,7 +6589,7 @@ public class AppOpsManager {
     * @hide
     * @hide
     */
     */
    public int startOp(int op, int uid, @Nullable String packageName, boolean startIfModeDefault,
    public int startOp(int op, int uid, @Nullable String packageName, boolean startIfModeDefault,
            @NonNull String featureId, @Nullable String message) {
            @Nullable String featureId, @Nullable String message) {
        final int mode = startOpNoThrow(op, uid, packageName, startIfModeDefault, featureId,
        final int mode = startOpNoThrow(op, uid, packageName, startIfModeDefault, featureId,
                message);
                message);
        if (mode == MODE_ERRORED) {
        if (mode == MODE_ERRORED) {
@@ -6659,7 +6665,7 @@ public class AppOpsManager {
    public int startOpNoThrow(int op, int uid, @NonNull String packageName,
    public int startOpNoThrow(int op, int uid, @NonNull String packageName,
            boolean startIfModeDefault, @Nullable String featureId, @Nullable String message) {
            boolean startIfModeDefault, @Nullable String featureId, @Nullable String message) {
        try {
        try {
            int mode = mService.startOperation(getToken(mService), op, uid, packageName,
            int mode = mService.startOperation(getClientId(), op, uid, packageName,
                    featureId, startIfModeDefault);
                    featureId, startIfModeDefault);
            if (mode == MODE_ALLOWED) {
            if (mode == MODE_ALLOWED) {
                markAppOpNoted(uid, packageName, op, featureId, message);
                markAppOpNoted(uid, packageName, op, featureId, message);
@@ -6719,7 +6725,7 @@ public class AppOpsManager {
    public void finishOp(int op, int uid, @NonNull String packageName,
    public void finishOp(int op, int uid, @NonNull String packageName,
            @Nullable String featureId) {
            @Nullable String featureId) {
        try {
        try {
            mService.finishOperation(getToken(mService), op, uid, packageName, featureId);
            mService.finishOperation(getClientId(), op, uid, packageName, featureId);
        } catch (RemoteException e) {
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
            throw e.rethrowFromSystemServer();
        }
        }
+2 −3
Original line number Original line Diff line number Diff line
@@ -32,14 +32,13 @@ interface IAppOpsService {
    // and not be reordered
    // and not be reordered
    int checkOperation(int code, int uid, String packageName);
    int checkOperation(int code, int uid, String packageName);
    int noteOperation(int code, int uid, String packageName, @nullable String featureId);
    int noteOperation(int code, int uid, String packageName, @nullable String featureId);
    int startOperation(IBinder token, int code, int uid, String packageName,
    int startOperation(IBinder clientId, int code, int uid, String packageName,
            @nullable String featureId, boolean startIfModeDefault);
            @nullable String featureId, boolean startIfModeDefault);
    @UnsupportedAppUsage
    @UnsupportedAppUsage
    void finishOperation(IBinder token, int code, int uid, String packageName,
    void finishOperation(IBinder clientId, int code, int uid, String packageName,
            @nullable String featureId);
            @nullable String featureId);
    void startWatchingMode(int op, String packageName, IAppOpsCallback callback);
    void startWatchingMode(int op, String packageName, IAppOpsCallback callback);
    void stopWatchingMode(IAppOpsCallback callback);
    void stopWatchingMode(IAppOpsCallback callback);
    IBinder getToken(IBinder clientToken);
    int permissionToOpCode(String permission);
    int permissionToOpCode(String permission);
    int checkAudioOperation(int code, int usage, int uid, String packageName);
    int checkAudioOperation(int code, int usage, int uid, String packageName);
    void noteAsyncOp(@nullable String callingPackageName, int uid, @nullable String packageName,
    void noteAsyncOp(@nullable String callingPackageName, int uid, @nullable String packageName,
+281 −281

File changed.

Preview size limit exceeded, changes collapsed.