Loading core/java/android/accounts/ChooseTypeAndAccountActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -396,7 +396,7 @@ public class ChooseTypeAndAccountActivity extends Activity mExistingAccounts = AccountManager.get(this).getAccountsForPackage(mCallingPackage, mCallingUid); intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK); startActivityForResult(intent, REQUEST_ADD_ACCOUNT); startActivityForResult(new Intent(intent), REQUEST_ADD_ACCOUNT); return; } } catch (OperationCanceledException e) { Loading core/java/android/app/AppOpsManager.java +13 −9 Original line number Diff line number Diff line Loading @@ -8888,8 +8888,9 @@ public class AppOpsManager { */ public int startProxyOpNoThrow(int op, @NonNull AttributionSource attributionSource, @Nullable String message, boolean skipProxyOperation) { return startProxyOpNoThrow(op, attributionSource, message, skipProxyOperation, ATTRIBUTION_FLAGS_NONE, ATTRIBUTION_FLAGS_NONE, ATTRIBUTION_CHAIN_ID_NONE); return startProxyOpNoThrow(attributionSource.getToken(), op, attributionSource, message, skipProxyOperation, ATTRIBUTION_FLAGS_NONE, ATTRIBUTION_FLAGS_NONE, ATTRIBUTION_CHAIN_ID_NONE); } /** Loading @@ -8901,7 +8902,8 @@ public class AppOpsManager { * * @hide */ public int startProxyOpNoThrow(int op, @NonNull AttributionSource attributionSource, public int startProxyOpNoThrow(@NonNull IBinder clientId, int op, @NonNull AttributionSource attributionSource, @Nullable String message, boolean skipProxyOperation, @AttributionFlags int proxyAttributionFlags, @AttributionFlags int proxiedAttributionFlags, int attributionChainId) { Loading @@ -8919,7 +8921,7 @@ public class AppOpsManager { } } SyncNotedAppOp syncOp = mService.startProxyOperation(op, SyncNotedAppOp syncOp = mService.startProxyOperation(clientId, op, attributionSource, false, collectionMode == COLLECT_ASYNC, message, shouldCollectMessage, skipProxyOperation, proxyAttributionFlags, proxiedAttributionFlags, attributionChainId); Loading Loading @@ -9017,9 +9019,10 @@ public class AppOpsManager { */ public void finishProxyOp(@NonNull String op, int proxiedUid, @NonNull String proxiedPackageName, @Nullable String proxiedAttributionTag) { finishProxyOp(op, new AttributionSource(mContext.getAttributionSource(), IBinder token = mContext.getAttributionSource().getToken(); finishProxyOp(token, op, new AttributionSource(mContext.getAttributionSource(), new AttributionSource(proxiedUid, proxiedPackageName, proxiedAttributionTag, mContext.getAttributionSource().getToken())), /*skipProxyOperation*/ false); token)), /*skipProxyOperation*/ false); } /** Loading @@ -9034,10 +9037,11 @@ public class AppOpsManager { * * @hide */ public void finishProxyOp(@NonNull String op, @NonNull AttributionSource attributionSource, boolean skipProxyOperation) { public void finishProxyOp(@NonNull IBinder clientId, @NonNull String op, @NonNull AttributionSource attributionSource, boolean skipProxyOperation) { try { mService.finishProxyOperation(strOpToOp(op), attributionSource, skipProxyOperation); mService.finishProxyOperation(clientId, strOpToOp(op), attributionSource, skipProxyOperation); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading core/java/android/app/AppOpsManagerInternal.java +14 −9 Original line number Diff line number Diff line Loading @@ -26,13 +26,11 @@ import android.util.SparseArray; import android.util.SparseIntArray; import com.android.internal.app.IAppOpsCallback; 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 @@ -135,6 +133,7 @@ public abstract class AppOpsManagerInternal { /** * Allows overriding start proxy operation behavior. * * @param clientId The client calling start, represented by an IBinder * @param code The op code to start. * @param attributionSource The permission identity of the caller. * @param startIfModeDefault Whether to start the op of the mode is default. Loading @@ -148,11 +147,12 @@ public abstract class AppOpsManagerInternal { * @param superImpl The super implementation. * @return The app op note result. */ SyncNotedAppOp startProxyOperation(int code, @NonNull AttributionSource attributionSource, boolean startIfModeDefault, boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage, boolean skipProxyOperation, @AttributionFlags int proxyAttributionFlags, @AttributionFlags int proxiedAttributionFlags, int attributionChainId, @NonNull DecFunction<Integer, AttributionSource, Boolean, SyncNotedAppOp startProxyOperation(@NonNull IBinder clientId, int code, @NonNull AttributionSource attributionSource, boolean startIfModeDefault, boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage, boolean skipProxyOperation, @AttributionFlags int proxyAttributionFlags, @AttributionFlags int proxiedAttributionFlags, int attributionChainId, @NonNull UndecFunction<IBinder, Integer, AttributionSource, Boolean, Boolean, String, Boolean, Boolean, Integer, Integer, Integer, SyncNotedAppOp> superImpl); Loading @@ -176,10 +176,15 @@ public abstract class AppOpsManagerInternal { * * @param code The op code to finish. * @param attributionSource The permission identity of the caller. * @param skipProxyOperation Whether to skip the proxy in the proxy/proxied operation * @param clientId The client calling finishProxyOperation * @param superImpl The "standard" implementation to potentially call */ void finishProxyOperation(int code, @NonNull AttributionSource attributionSource, void finishProxyOperation(@NonNull IBinder clientId, int code, @NonNull AttributionSource attributionSource, boolean skipProxyOperation, @NonNull TriFunction<Integer, AttributionSource, Boolean, Void> superImpl); @NonNull QuadFunction<IBinder, Integer, AttributionSource, Boolean, Void> superImpl); } /** Loading core/java/android/hardware/biometrics/BiometricPrompt.java +29 −9 Original line number Diff line number Diff line Loading @@ -420,6 +420,18 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan return this; } /** * Set if BiometricPrompt is being used by the legacy fingerprint manager API. * @param sensorId sensor id * @return This builder. * @hide */ @NonNull public Builder setIsForLegacyFingerprintManager(int sensorId) { mPromptInfo.setIsForLegacyFingerprintManager(sensorId); return this; } /** * Creates a {@link BiometricPrompt}. * Loading Loading @@ -861,28 +873,36 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan @NonNull @CallbackExecutor Executor executor, @NonNull AuthenticationCallback callback, int userId) { authenticateUserForOperation(cancel, executor, callback, userId, 0 /* operationId */); if (cancel == null) { throw new IllegalArgumentException("Must supply a cancellation signal"); } if (executor == null) { throw new IllegalArgumentException("Must supply an executor"); } if (callback == null) { throw new IllegalArgumentException("Must supply a callback"); } authenticateInternal(0 /* operationId */, cancel, executor, callback, userId); } /** * Authenticates for the given user and keystore operation. * Authenticates for the given keystore operation. * * @param cancel An object that can be used to cancel authentication * @param executor An executor to handle callback events * @param callback An object to receive authentication events * @param userId The user to authenticate * @param operationId The keystore operation associated with authentication * * @return A requestId that can be used to cancel this operation. * * @hide */ @RequiresPermission(USE_BIOMETRIC_INTERNAL) public long authenticateUserForOperation( @RequiresPermission(USE_BIOMETRIC) public long authenticateForOperation( @NonNull CancellationSignal cancel, @NonNull @CallbackExecutor Executor executor, @NonNull AuthenticationCallback callback, int userId, long operationId) { if (cancel == null) { throw new IllegalArgumentException("Must supply a cancellation signal"); Loading @@ -894,7 +914,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan throw new IllegalArgumentException("Must supply a callback"); } return authenticateInternal(operationId, cancel, executor, callback, userId); return authenticateInternal(operationId, cancel, executor, callback, mContext.getUserId()); } /** Loading Loading @@ -1028,7 +1048,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan private void cancelAuthentication(long requestId) { if (mService != null) { try { mService.cancelAuthentication(mToken, mContext.getOpPackageName(), requestId); mService.cancelAuthentication(mToken, mContext.getPackageName(), requestId); } catch (RemoteException e) { Log.e(TAG, "Unable to cancel authentication", e); } Loading Loading @@ -1087,7 +1107,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan } final long authId = mService.authenticate(mToken, operationId, userId, mBiometricServiceReceiver, mContext.getOpPackageName(), promptInfo); mBiometricServiceReceiver, mContext.getPackageName(), promptInfo); cancel.setOnCancelListener(new OnAuthenticationCancelListener(authId)); return authId; } catch (RemoteException e) { Loading core/java/android/hardware/biometrics/ITestSessionCallback.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ package android.hardware.biometrics; * ITestSession callback for FingerprintManager and BiometricManager. * @hide */ interface ITestSessionCallback { oneway interface ITestSessionCallback { void onCleanupStarted(int userId); void onCleanupFinished(int userId); } Loading
core/java/android/accounts/ChooseTypeAndAccountActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -396,7 +396,7 @@ public class ChooseTypeAndAccountActivity extends Activity mExistingAccounts = AccountManager.get(this).getAccountsForPackage(mCallingPackage, mCallingUid); intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK); startActivityForResult(intent, REQUEST_ADD_ACCOUNT); startActivityForResult(new Intent(intent), REQUEST_ADD_ACCOUNT); return; } } catch (OperationCanceledException e) { Loading
core/java/android/app/AppOpsManager.java +13 −9 Original line number Diff line number Diff line Loading @@ -8888,8 +8888,9 @@ public class AppOpsManager { */ public int startProxyOpNoThrow(int op, @NonNull AttributionSource attributionSource, @Nullable String message, boolean skipProxyOperation) { return startProxyOpNoThrow(op, attributionSource, message, skipProxyOperation, ATTRIBUTION_FLAGS_NONE, ATTRIBUTION_FLAGS_NONE, ATTRIBUTION_CHAIN_ID_NONE); return startProxyOpNoThrow(attributionSource.getToken(), op, attributionSource, message, skipProxyOperation, ATTRIBUTION_FLAGS_NONE, ATTRIBUTION_FLAGS_NONE, ATTRIBUTION_CHAIN_ID_NONE); } /** Loading @@ -8901,7 +8902,8 @@ public class AppOpsManager { * * @hide */ public int startProxyOpNoThrow(int op, @NonNull AttributionSource attributionSource, public int startProxyOpNoThrow(@NonNull IBinder clientId, int op, @NonNull AttributionSource attributionSource, @Nullable String message, boolean skipProxyOperation, @AttributionFlags int proxyAttributionFlags, @AttributionFlags int proxiedAttributionFlags, int attributionChainId) { Loading @@ -8919,7 +8921,7 @@ public class AppOpsManager { } } SyncNotedAppOp syncOp = mService.startProxyOperation(op, SyncNotedAppOp syncOp = mService.startProxyOperation(clientId, op, attributionSource, false, collectionMode == COLLECT_ASYNC, message, shouldCollectMessage, skipProxyOperation, proxyAttributionFlags, proxiedAttributionFlags, attributionChainId); Loading Loading @@ -9017,9 +9019,10 @@ public class AppOpsManager { */ public void finishProxyOp(@NonNull String op, int proxiedUid, @NonNull String proxiedPackageName, @Nullable String proxiedAttributionTag) { finishProxyOp(op, new AttributionSource(mContext.getAttributionSource(), IBinder token = mContext.getAttributionSource().getToken(); finishProxyOp(token, op, new AttributionSource(mContext.getAttributionSource(), new AttributionSource(proxiedUid, proxiedPackageName, proxiedAttributionTag, mContext.getAttributionSource().getToken())), /*skipProxyOperation*/ false); token)), /*skipProxyOperation*/ false); } /** Loading @@ -9034,10 +9037,11 @@ public class AppOpsManager { * * @hide */ public void finishProxyOp(@NonNull String op, @NonNull AttributionSource attributionSource, boolean skipProxyOperation) { public void finishProxyOp(@NonNull IBinder clientId, @NonNull String op, @NonNull AttributionSource attributionSource, boolean skipProxyOperation) { try { mService.finishProxyOperation(strOpToOp(op), attributionSource, skipProxyOperation); mService.finishProxyOperation(clientId, strOpToOp(op), attributionSource, skipProxyOperation); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading
core/java/android/app/AppOpsManagerInternal.java +14 −9 Original line number Diff line number Diff line Loading @@ -26,13 +26,11 @@ import android.util.SparseArray; import android.util.SparseIntArray; import com.android.internal.app.IAppOpsCallback; 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 @@ -135,6 +133,7 @@ public abstract class AppOpsManagerInternal { /** * Allows overriding start proxy operation behavior. * * @param clientId The client calling start, represented by an IBinder * @param code The op code to start. * @param attributionSource The permission identity of the caller. * @param startIfModeDefault Whether to start the op of the mode is default. Loading @@ -148,11 +147,12 @@ public abstract class AppOpsManagerInternal { * @param superImpl The super implementation. * @return The app op note result. */ SyncNotedAppOp startProxyOperation(int code, @NonNull AttributionSource attributionSource, boolean startIfModeDefault, boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage, boolean skipProxyOperation, @AttributionFlags int proxyAttributionFlags, @AttributionFlags int proxiedAttributionFlags, int attributionChainId, @NonNull DecFunction<Integer, AttributionSource, Boolean, SyncNotedAppOp startProxyOperation(@NonNull IBinder clientId, int code, @NonNull AttributionSource attributionSource, boolean startIfModeDefault, boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage, boolean skipProxyOperation, @AttributionFlags int proxyAttributionFlags, @AttributionFlags int proxiedAttributionFlags, int attributionChainId, @NonNull UndecFunction<IBinder, Integer, AttributionSource, Boolean, Boolean, String, Boolean, Boolean, Integer, Integer, Integer, SyncNotedAppOp> superImpl); Loading @@ -176,10 +176,15 @@ public abstract class AppOpsManagerInternal { * * @param code The op code to finish. * @param attributionSource The permission identity of the caller. * @param skipProxyOperation Whether to skip the proxy in the proxy/proxied operation * @param clientId The client calling finishProxyOperation * @param superImpl The "standard" implementation to potentially call */ void finishProxyOperation(int code, @NonNull AttributionSource attributionSource, void finishProxyOperation(@NonNull IBinder clientId, int code, @NonNull AttributionSource attributionSource, boolean skipProxyOperation, @NonNull TriFunction<Integer, AttributionSource, Boolean, Void> superImpl); @NonNull QuadFunction<IBinder, Integer, AttributionSource, Boolean, Void> superImpl); } /** Loading
core/java/android/hardware/biometrics/BiometricPrompt.java +29 −9 Original line number Diff line number Diff line Loading @@ -420,6 +420,18 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan return this; } /** * Set if BiometricPrompt is being used by the legacy fingerprint manager API. * @param sensorId sensor id * @return This builder. * @hide */ @NonNull public Builder setIsForLegacyFingerprintManager(int sensorId) { mPromptInfo.setIsForLegacyFingerprintManager(sensorId); return this; } /** * Creates a {@link BiometricPrompt}. * Loading Loading @@ -861,28 +873,36 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan @NonNull @CallbackExecutor Executor executor, @NonNull AuthenticationCallback callback, int userId) { authenticateUserForOperation(cancel, executor, callback, userId, 0 /* operationId */); if (cancel == null) { throw new IllegalArgumentException("Must supply a cancellation signal"); } if (executor == null) { throw new IllegalArgumentException("Must supply an executor"); } if (callback == null) { throw new IllegalArgumentException("Must supply a callback"); } authenticateInternal(0 /* operationId */, cancel, executor, callback, userId); } /** * Authenticates for the given user and keystore operation. * Authenticates for the given keystore operation. * * @param cancel An object that can be used to cancel authentication * @param executor An executor to handle callback events * @param callback An object to receive authentication events * @param userId The user to authenticate * @param operationId The keystore operation associated with authentication * * @return A requestId that can be used to cancel this operation. * * @hide */ @RequiresPermission(USE_BIOMETRIC_INTERNAL) public long authenticateUserForOperation( @RequiresPermission(USE_BIOMETRIC) public long authenticateForOperation( @NonNull CancellationSignal cancel, @NonNull @CallbackExecutor Executor executor, @NonNull AuthenticationCallback callback, int userId, long operationId) { if (cancel == null) { throw new IllegalArgumentException("Must supply a cancellation signal"); Loading @@ -894,7 +914,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan throw new IllegalArgumentException("Must supply a callback"); } return authenticateInternal(operationId, cancel, executor, callback, userId); return authenticateInternal(operationId, cancel, executor, callback, mContext.getUserId()); } /** Loading Loading @@ -1028,7 +1048,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan private void cancelAuthentication(long requestId) { if (mService != null) { try { mService.cancelAuthentication(mToken, mContext.getOpPackageName(), requestId); mService.cancelAuthentication(mToken, mContext.getPackageName(), requestId); } catch (RemoteException e) { Log.e(TAG, "Unable to cancel authentication", e); } Loading Loading @@ -1087,7 +1107,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan } final long authId = mService.authenticate(mToken, operationId, userId, mBiometricServiceReceiver, mContext.getOpPackageName(), promptInfo); mBiometricServiceReceiver, mContext.getPackageName(), promptInfo); cancel.setOnCancelListener(new OnAuthenticationCancelListener(authId)); return authId; } catch (RemoteException e) { Loading
core/java/android/hardware/biometrics/ITestSessionCallback.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ package android.hardware.biometrics; * ITestSession callback for FingerprintManager and BiometricManager. * @hide */ interface ITestSessionCallback { oneway interface ITestSessionCallback { void onCleanupStarted(int userId); void onCleanupFinished(int userId); }