Loading core/java/android/app/AppOpsManagerInternal.java +17 −1 Original line number Diff line number Diff line Loading @@ -16,9 +16,9 @@ package android.app; import android.app.AppOpsManager.AttributionFlags; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.AppOpsManager.AttributionFlags; import android.content.AttributionSource; import android.os.IBinder; import android.util.SparseArray; Loading @@ -29,6 +29,7 @@ import com.android.internal.util.function.DecFunction; import com.android.internal.util.function.HeptFunction; import com.android.internal.util.function.HexFunction; import com.android.internal.util.function.QuadFunction; import com.android.internal.util.function.QuintConsumer; import com.android.internal.util.function.QuintFunction; import com.android.internal.util.function.TriFunction; import com.android.internal.util.function.UndecFunction; Loading Loading @@ -154,6 +155,21 @@ public abstract class AppOpsManagerInternal { Boolean, String, Boolean, Boolean, Integer, Integer, Integer, SyncNotedAppOp> superImpl); /** * Allows overriding finish op. * * @param clientId The client state. * @param code The op code to finish. * @param uid The UID for which the op was noted. * @param packageName The package for which it was noted. {@code null} for system package. * @param attributionTag the attribution tag. */ default void finishOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag, @NonNull QuintConsumer<IBinder, Integer, Integer, String, String> superImpl) { superImpl.accept(clientId, code, uid, packageName, attributionTag); } /** * Allows overriding finish proxy op. * Loading services/core/java/com/android/server/appop/AppOpsService.java +29 −0 Original line number Diff line number Diff line Loading @@ -4027,6 +4027,12 @@ public class AppOpsService extends IAppOpsService.Stub { @Override public void finishOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag) { mCheckOpsDelegateDispatcher.finishOperation(clientId, code, uid, packageName, attributionTag); } private void finishOperationImpl(IBinder clientId, int code, int uid, String packageName, String attributionTag) { verifyIncomingUid(uid); verifyIncomingOp(code); verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); Loading Loading @@ -7530,6 +7536,29 @@ public class AppOpsService extends IAppOpsService.Stub { attributionChainId, AppOpsService.this::startProxyOperationImpl); } public void finishOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag) { if (mPolicy != null) { if (mCheckOpsDelegate != null) { mPolicy.finishOperation(clientId, code, uid, packageName, attributionTag, this::finishDelegateOperationImpl); } else { mPolicy.finishOperation(clientId, code, uid, packageName, attributionTag, AppOpsService.this::finishOperationImpl); } } else if (mCheckOpsDelegate != null) { finishDelegateOperationImpl(clientId, code, uid, packageName, attributionTag); } else { finishOperationImpl(clientId, code, uid, packageName, attributionTag); } } private void finishDelegateOperationImpl(IBinder clientId, int code, int uid, String packageName, String attributionTag) { mCheckOpsDelegate.finishOperation(clientId, code, uid, packageName, attributionTag, AppOpsService.this::finishOperationImpl); } public void finishProxyOperation(int code, @NonNull AttributionSource attributionSource, boolean skipProxyOperation) { if (mPolicy != null) { Loading services/core/java/com/android/server/policy/AppOpsPolicy.java +9 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import com.android.internal.util.function.DecFunction; import com.android.internal.util.function.HeptFunction; import com.android.internal.util.function.HexFunction; import com.android.internal.util.function.QuadFunction; import com.android.internal.util.function.QuintConsumer; import com.android.internal.util.function.QuintFunction; import com.android.internal.util.function.TriFunction; import com.android.internal.util.function.UndecFunction; Loading Loading @@ -242,6 +243,14 @@ public final class AppOpsPolicy implements AppOpsManagerInternal.CheckOpsDelegat proxiedAttributionFlags, attributionChainId); } @Override public void finishOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag, @NonNull QuintConsumer<IBinder, Integer, Integer, String, String> superImpl) { superImpl.accept(clientId, resolveDatasourceOp(code, uid, packageName, attributionTag), resolveUid(code, uid), packageName, attributionTag); } @Override public void finishProxyOperation(int code, @NonNull AttributionSource attributionSource, boolean skipProxyOperation, @NonNull TriFunction<Integer, AttributionSource, Loading Loading
core/java/android/app/AppOpsManagerInternal.java +17 −1 Original line number Diff line number Diff line Loading @@ -16,9 +16,9 @@ package android.app; import android.app.AppOpsManager.AttributionFlags; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.AppOpsManager.AttributionFlags; import android.content.AttributionSource; import android.os.IBinder; import android.util.SparseArray; Loading @@ -29,6 +29,7 @@ import com.android.internal.util.function.DecFunction; import com.android.internal.util.function.HeptFunction; import com.android.internal.util.function.HexFunction; import com.android.internal.util.function.QuadFunction; import com.android.internal.util.function.QuintConsumer; import com.android.internal.util.function.QuintFunction; import com.android.internal.util.function.TriFunction; import com.android.internal.util.function.UndecFunction; Loading Loading @@ -154,6 +155,21 @@ public abstract class AppOpsManagerInternal { Boolean, String, Boolean, Boolean, Integer, Integer, Integer, SyncNotedAppOp> superImpl); /** * Allows overriding finish op. * * @param clientId The client state. * @param code The op code to finish. * @param uid The UID for which the op was noted. * @param packageName The package for which it was noted. {@code null} for system package. * @param attributionTag the attribution tag. */ default void finishOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag, @NonNull QuintConsumer<IBinder, Integer, Integer, String, String> superImpl) { superImpl.accept(clientId, code, uid, packageName, attributionTag); } /** * Allows overriding finish proxy op. * Loading
services/core/java/com/android/server/appop/AppOpsService.java +29 −0 Original line number Diff line number Diff line Loading @@ -4027,6 +4027,12 @@ public class AppOpsService extends IAppOpsService.Stub { @Override public void finishOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag) { mCheckOpsDelegateDispatcher.finishOperation(clientId, code, uid, packageName, attributionTag); } private void finishOperationImpl(IBinder clientId, int code, int uid, String packageName, String attributionTag) { verifyIncomingUid(uid); verifyIncomingOp(code); verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); Loading Loading @@ -7530,6 +7536,29 @@ public class AppOpsService extends IAppOpsService.Stub { attributionChainId, AppOpsService.this::startProxyOperationImpl); } public void finishOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag) { if (mPolicy != null) { if (mCheckOpsDelegate != null) { mPolicy.finishOperation(clientId, code, uid, packageName, attributionTag, this::finishDelegateOperationImpl); } else { mPolicy.finishOperation(clientId, code, uid, packageName, attributionTag, AppOpsService.this::finishOperationImpl); } } else if (mCheckOpsDelegate != null) { finishDelegateOperationImpl(clientId, code, uid, packageName, attributionTag); } else { finishOperationImpl(clientId, code, uid, packageName, attributionTag); } } private void finishDelegateOperationImpl(IBinder clientId, int code, int uid, String packageName, String attributionTag) { mCheckOpsDelegate.finishOperation(clientId, code, uid, packageName, attributionTag, AppOpsService.this::finishOperationImpl); } public void finishProxyOperation(int code, @NonNull AttributionSource attributionSource, boolean skipProxyOperation) { if (mPolicy != null) { Loading
services/core/java/com/android/server/policy/AppOpsPolicy.java +9 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import com.android.internal.util.function.DecFunction; import com.android.internal.util.function.HeptFunction; import com.android.internal.util.function.HexFunction; import com.android.internal.util.function.QuadFunction; import com.android.internal.util.function.QuintConsumer; import com.android.internal.util.function.QuintFunction; import com.android.internal.util.function.TriFunction; import com.android.internal.util.function.UndecFunction; Loading Loading @@ -242,6 +243,14 @@ public final class AppOpsPolicy implements AppOpsManagerInternal.CheckOpsDelegat proxiedAttributionFlags, attributionChainId); } @Override public void finishOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag, @NonNull QuintConsumer<IBinder, Integer, Integer, String, String> superImpl) { superImpl.accept(clientId, resolveDatasourceOp(code, uid, packageName, attributionTag), resolveUid(code, uid), packageName, attributionTag); } @Override public void finishProxyOperation(int code, @NonNull AttributionSource attributionSource, boolean skipProxyOperation, @NonNull TriFunction<Integer, AttributionSource, Loading