Merge "@EnforcePermission migrations - services.core"

This commit is contained in:
Matt Gilbride
2022-07-12 20:09:47 +00:00
committed by Android (Google) Code Review
21 changed files with 384 additions and 204 deletions

View File

@@ -33,12 +33,15 @@ import android.hardware.biometrics.SensorPropertiesInternal;
*/
interface IAuthService {
// Creates a test session with the specified sensorId
@EnforcePermission("TEST_BIOMETRIC")
ITestSession createTestSession(int sensorId, ITestSessionCallback callback, String opPackageName);
// Retrieve static sensor properties for all biometric sensors
@EnforcePermission("TEST_BIOMETRIC")
List<SensorPropertiesInternal> getSensorProperties(String opPackageName);
// Retrieve the package where BIometricOrompt's UI is implemented
@EnforcePermission("TEST_BIOMETRIC")
String getUiPackage();
// Requests authentication. The service chooses the appropriate biometric to use, and shows

View File

@@ -31,59 +31,74 @@ import android.hardware.biometrics.SensorPropertiesInternal;
*/
interface IBiometricService {
// Creates a test session with the specified sensorId
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
ITestSession createTestSession(int sensorId, ITestSessionCallback callback, String opPackageName);
// Retrieve static sensor properties for all biometric sensors
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
List<SensorPropertiesInternal> getSensorProperties(String opPackageName);
// Requests authentication. The service chooses the appropriate biometric to use, and shows
// the corresponding BiometricDialog. A requestId is returned that can be used to cancel
// this operation.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
long authenticate(IBinder token, long operationId, int userId,
IBiometricServiceReceiver receiver, String opPackageName, in PromptInfo promptInfo);
// Cancel authentication for the given requestId.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void cancelAuthentication(IBinder token, String opPackageName, long requestId);
// Checks if biometrics can be used.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
int canAuthenticate(String opPackageName, int userId, int callingUserId, int authenticators);
// Checks if any biometrics are enrolled.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
boolean hasEnrolledBiometrics(int userId, String opPackageName);
// Registers an authenticator (e.g. face, fingerprint, iris).
// Id must be unique, whereas strength and modality don't need to be.
// TODO(b/123321528): Turn strength and modality into enums.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void registerAuthenticator(int id, int modality, int strength,
IBiometricAuthenticator authenticator);
// Register callback for when keyguard biometric eligibility changes.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void registerEnabledOnKeyguardCallback(IBiometricEnabledOnKeyguardCallback callback,
int callingUserId);
// Notify BiometricService when <Biometric>Service is ready to start the prepared client.
// Client lifecycle is still managed in <Biometric>Service.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void onReadyForAuthentication(long requestId, int cookie);
// Requests all BIOMETRIC_STRONG sensors to have their authenticatorId invalidated for the
// specified user. This happens when enrollments have been added on devices with multiple
// biometric sensors.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void invalidateAuthenticatorIds(int userId, int fromSensorId, IInvalidationCallback callback);
// Get a list of AuthenticatorIDs for authenticators which have enrolled templates and meet
// the requirements for integrating with Keystore. The AuthenticatorID are known in Keystore
// land as SIDs, and are used during key generation.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
long[] getAuthenticatorIds(int callingUserId);
// See documentation in BiometricManager.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void resetLockoutTimeBound(IBinder token, String opPackageName, int fromSensorId, int userId,
in byte[] hardwareAuthToken);
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
int getCurrentStrength(int sensorId);
// Returns a bit field of the modality (or modalities) that are will be used for authentication.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
int getCurrentModality(String opPackageName, int userId, int callingUserId, int authenticators);
// Returns a bit field of the authentication modalities that are supported by this device.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
int getSupportedModalities(int authenticators);
}

View File

@@ -27,28 +27,36 @@ interface ITestSession {
// portion of the framework code that would otherwise require human interaction. Note that
// secure pathways such as HAT/Keystore are not testable, since they depend on the TEE or its
// equivalent for the secret key.
@EnforcePermission("TEST_BIOMETRIC")
void setTestHalEnabled(boolean enableTestHal);
// Starts the enrollment process. This should generally be used when the test HAL is enabled.
@EnforcePermission("TEST_BIOMETRIC")
void startEnroll(int userId);
// Finishes the enrollment process. Simulates the HAL's callback.
@EnforcePermission("TEST_BIOMETRIC")
void finishEnroll(int userId);
// Simulates a successful authentication, but does not provide a valid HAT.
@EnforcePermission("TEST_BIOMETRIC")
void acceptAuthentication(int userId);
// Simulates a rejected attempt.
@EnforcePermission("TEST_BIOMETRIC")
void rejectAuthentication(int userId);
// Simulates an acquired message from the HAL.
@EnforcePermission("TEST_BIOMETRIC")
void notifyAcquired(int userId, int acquireInfo);
// Simulates an error message from the HAL.
@EnforcePermission("TEST_BIOMETRIC")
void notifyError(int userId, int errorCode);
// Matches the framework's cached enrollments against the HAL's enrollments. Any enrollment
// that isn't known by both sides are deleted. This should generally be used when the test
// HAL is disabled (e.g. to clean up after a test).
@EnforcePermission("TEST_BIOMETRIC")
void cleanupInternalState(int userId);
}

View File

@@ -33,24 +33,30 @@ import android.view.Surface;
interface IFaceService {
// Creates a test session with the specified sensorId
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
ITestSession createTestSession(int sensorId, ITestSessionCallback callback, String opPackageName);
// Requests a proto dump of the specified sensor
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
byte[] dumpSensorServiceStateProto(int sensorId, boolean clearSchedulerBuffer);
// Retrieve static sensor properties for all face sensors
@EnforcePermission("MANAGE_BIOMETRIC")
List<FaceSensorPropertiesInternal> getSensorPropertiesInternal(String opPackageName);
// Retrieve static sensor properties for the specified sensor
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
FaceSensorPropertiesInternal getSensorProperties(int sensorId, String opPackageName);
// Authenticate with a face. A requestId is returned that can be used to cancel this operation.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
long authenticate(IBinder token, long operationId, int userId, IFaceServiceReceiver receiver,
String opPackageName, boolean isKeyguardBypassEnabled);
// Uses the face hardware to detect for the presence of a face, without giving details
// about accept/reject/lockout. A requestId is returned that can be used to cancel this
// operation.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
long detectFace(IBinder token, int userId, IFaceServiceReceiver receiver, String opPackageName);
// This method prepares the service to start authenticating, but doesn't start authentication.
@@ -58,80 +64,103 @@ interface IFaceService {
// called from BiometricService. The additional uid, pid, userId arguments should be determined
// by BiometricService. To start authentication after the clients are ready, use
// startPreparedClient().
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void prepareForAuthentication(int sensorId, boolean requireConfirmation, IBinder token,
long operationId, int userId, IBiometricSensorReceiver sensorReceiver,
String opPackageName, long requestId, int cookie,
boolean allowBackgroundAuthentication);
// Starts authentication with the previously prepared client.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void startPreparedClient(int sensorId, int cookie);
// Cancel authentication for the given requestId.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void cancelAuthentication(IBinder token, String opPackageName, long requestId);
// Cancel face detection for the given requestId.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void cancelFaceDetect(IBinder token, String opPackageName, long requestId);
// Same as above, with extra arguments.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void cancelAuthenticationFromService(int sensorId, IBinder token, String opPackageName, long requestId);
// Start face enrollment
@EnforcePermission("MANAGE_BIOMETRIC")
long enroll(int userId, IBinder token, in byte [] hardwareAuthToken, IFaceServiceReceiver receiver,
String opPackageName, in int [] disabledFeatures,
in Surface previewSurface, boolean debugConsent);
// Start remote face enrollment
@EnforcePermission("MANAGE_BIOMETRIC")
long enrollRemotely(int userId, IBinder token, in byte [] hardwareAuthToken, IFaceServiceReceiver receiver,
String opPackageName, in int [] disabledFeatures);
// Cancel enrollment in progress
@EnforcePermission("MANAGE_BIOMETRIC")
void cancelEnrollment(IBinder token, long requestId);
// Removes the specified face enrollment for the specified userId.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void remove(IBinder token, int faceId, int userId, IFaceServiceReceiver receiver,
String opPackageName);
// Removes all face enrollments for the specified userId.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void removeAll(IBinder token, int userId, IFaceServiceReceiver receiver, String opPackageName);
// Get the enrolled face for user.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
List<Face> getEnrolledFaces(int sensorId, int userId, String opPackageName);
// Determine if HAL is loaded and ready
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
boolean isHardwareDetected(int sensorId, String opPackageName);
// Get a pre-enrollment authentication token
@EnforcePermission("MANAGE_BIOMETRIC")
void generateChallenge(IBinder token, int sensorId, int userId, IFaceServiceReceiver receiver, String opPackageName);
// Finish an enrollment sequence and invalidate the authentication token
@EnforcePermission("MANAGE_BIOMETRIC")
void revokeChallenge(IBinder token, int sensorId, int userId, String opPackageName, long challenge);
// Determine if a user has at least one enrolled face
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
boolean hasEnrolledFaces(int sensorId, int userId, String opPackageName);
// Return the LockoutTracker status for the specified user
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
int getLockoutModeForUser(int sensorId, int userId);
// Requests for the specified sensor+userId's authenticatorId to be invalidated
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void invalidateAuthenticatorId(int sensorId, int userId, IInvalidationCallback callback);
// Gets the authenticator ID for face
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
long getAuthenticatorId(int sensorId, int callingUserId);
// Reset the lockout when user authenticates with strong auth (e.g. PIN, pattern or password)
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void resetLockout(IBinder token, int sensorId, int userId, in byte [] hardwareAuthToken, String opPackageName);
// Add a callback which gets notified when the face lockout period expired.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void addLockoutResetCallback(IBiometricServiceLockoutResetCallback callback, String opPackageName);
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void setFeature(IBinder token, int userId, int feature, boolean enabled,
in byte [] hardwareAuthToken, IFaceServiceReceiver receiver, String opPackageName);
@EnforcePermission("MANAGE_BIOMETRIC")
void getFeature(IBinder token, int userId, int feature, IFaceServiceReceiver receiver,
String opPackageName);
// Registers all HIDL and AIDL sensors. Only HIDL sensor properties need to be provided, because
// AIDL sensor properties are retrieved directly from the available HALs. If no HIDL HALs exist,
// hidlSensors must be non-null and empty. See AuthService.java
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void registerAuthenticators(in List<FaceSensorPropertiesInternal> hidlSensors);
}

View File

@@ -37,15 +37,18 @@ import java.util.List;
interface IFingerprintService {
// Creates a test session with the specified sensorId
@EnforcePermission("TEST_BIOMETRIC")
ITestSession createTestSession(int sensorId, ITestSessionCallback callback, String opPackageName);
// Requests a proto dump of the specified sensor
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
byte[] dumpSensorServiceStateProto(int sensorId, boolean clearSchedulerBuffer);
// Retrieve static sensor properties for all fingerprint sensors
List<FingerprintSensorPropertiesInternal> getSensorPropertiesInternal(String opPackageName);
// Retrieve static sensor properties for the specified sensor
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
FingerprintSensorPropertiesInternal getSensorProperties(int sensorId, String opPackageName);
// Authenticate with a fingerprint. This is protected by USE_FINGERPRINT/USE_BIOMETRIC
@@ -58,6 +61,7 @@ interface IFingerprintService {
// Uses the fingerprint hardware to detect for the presence of a finger, without giving details
// about accept/reject/lockout. A requestId is returned that can be used to cancel this
// operation.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
long detectFingerprint(IBinder token, int userId, IFingerprintServiceReceiver receiver,
String opPackageName);
@@ -66,38 +70,47 @@ interface IFingerprintService {
// called from BiometricService. The additional uid, pid, userId arguments should be determined
// by BiometricService. To start authentication after the clients are ready, use
// startPreparedClient().
@EnforcePermission("MANAGE_BIOMETRIC")
void prepareForAuthentication(int sensorId, IBinder token, long operationId, int userId,
IBiometricSensorReceiver sensorReceiver, String opPackageName, long requestId,
int cookie, boolean allowBackgroundAuthentication);
// Starts authentication with the previously prepared client.
@EnforcePermission("MANAGE_BIOMETRIC")
void startPreparedClient(int sensorId, int cookie);
// Cancel authentication for the given requestId.
void cancelAuthentication(IBinder token, String opPackageName, String attributionTag, long requestId);
// Cancel finger detection for the given requestId.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void cancelFingerprintDetect(IBinder token, String opPackageName, long requestId);
// Same as above, except this is protected by the MANAGE_BIOMETRIC signature permission. Takes
// an additional uid, pid, userid.
@EnforcePermission("MANAGE_BIOMETRIC")
void cancelAuthenticationFromService(int sensorId, IBinder token, String opPackageName, long requestId);
// Start fingerprint enrollment
@EnforcePermission("MANAGE_FINGERPRINT")
long enroll(IBinder token, in byte [] hardwareAuthToken, int userId, IFingerprintServiceReceiver receiver,
String opPackageName, int enrollReason);
// Cancel enrollment in progress
@EnforcePermission("MANAGE_FINGERPRINT")
void cancelEnrollment(IBinder token, long requestId);
// Any errors resulting from this call will be returned to the listener
@EnforcePermission("MANAGE_FINGERPRINT")
void remove(IBinder token, int fingerId, int userId, IFingerprintServiceReceiver receiver,
String opPackageName);
// Removes all face enrollments for the specified userId.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void removeAll(IBinder token, int userId, IFingerprintServiceReceiver receiver, String opPackageName);
// Rename the fingerprint specified by fingerId and userId to the given name
@EnforcePermission("MANAGE_FINGERPRINT")
void rename(int fingerId, int userId, String name);
// Get a list of enrolled fingerprints in the given userId.
@@ -107,66 +120,85 @@ interface IFingerprintService {
boolean isHardwareDetectedDeprecated(String opPackageName, String attributionTag);
// Determine if the specified HAL is loaded and ready
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
boolean isHardwareDetected(int sensorId, String opPackageName);
// Get a pre-enrollment authentication token
@EnforcePermission("MANAGE_FINGERPRINT")
void generateChallenge(IBinder token, int sensorId, int userId, IFingerprintServiceReceiver receiver, String opPackageName);
// Finish an enrollment sequence and invalidate the authentication token
@EnforcePermission("MANAGE_FINGERPRINT")
void revokeChallenge(IBinder token, int sensorId, int userId, String opPackageName, long challenge);
// Determine if a user has at least one enrolled fingerprint. Meant to support the deprecated FingerprintManager APIs
boolean hasEnrolledFingerprintsDeprecated(int userId, String opPackageName, String attributionTag);
// Determine if a user has at least one enrolled fingerprint.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
boolean hasEnrolledFingerprints(int sensorId, int userId, String opPackageName);
// Return the LockoutTracker status for the specified user
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
int getLockoutModeForUser(int sensorId, int userId);
// Requests for the specified sensor+userId's authenticatorId to be invalidated
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void invalidateAuthenticatorId(int sensorId, int userId, IInvalidationCallback callback);
// Gets the authenticator ID for fingerprint
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
long getAuthenticatorId(int sensorId, int callingUserId);
// Reset the timeout when user authenticates with strong auth (e.g. PIN, pattern or password)
@EnforcePermission("RESET_FINGERPRINT_LOCKOUT")
void resetLockout(IBinder token, int sensorId, int userId, in byte[] hardwareAuthToken, String opPackageNAame);
// Add a callback which gets notified when the fingerprint lockout period expired.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void addLockoutResetCallback(IBiometricServiceLockoutResetCallback callback, String opPackageName);
// Check if a client request is currently being handled
@EnforcePermission("MANAGE_FINGERPRINT")
boolean isClientActive();
// Add a callback which gets notified when the service starts and stops handling client requests
@EnforcePermission("MANAGE_FINGERPRINT")
void addClientActiveCallback(IFingerprintClientActiveCallback callback);
// Removes a callback set by addClientActiveCallback
@EnforcePermission("MANAGE_FINGERPRINT")
void removeClientActiveCallback(IFingerprintClientActiveCallback callback);
// Registers all HIDL and AIDL sensors. Only HIDL sensor properties need to be provided, because
// AIDL sensor properties are retrieved directly from the available HALs. If no HIDL HALs exist,
// hidlSensors must be non-null and empty. See AuthService.java
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void registerAuthenticators(in List<FingerprintSensorPropertiesInternal> hidlSensors);
// Adds a callback which gets called when the service registers all of the fingerprint
// authenticators. The callback is automatically removed after it's invoked.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void addAuthenticatorsRegisteredCallback(IFingerprintAuthenticatorsRegisteredCallback callback);
// Notifies about a finger touching the sensor area.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void onPointerDown(long requestId, int sensorId, int x, int y, float minor, float major);
// Notifies about a finger leaving the sensor area.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void onPointerUp(long requestId, int sensorId);
// Notifies about the fingerprint UI being ready (e.g. HBM illumination is enabled).
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void onUiReady(long requestId, int sensorId);
// Sets the controller for managing the UDFPS overlay.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void setUdfpsOverlayController(in IUdfpsOverlayController controller);
// Sets the controller for managing the SideFPS overlay.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void setSidefpsController(in ISidefpsController controller);
// Registers BiometricStateListener.

View File

@@ -26,5 +26,6 @@ interface IIrisService {
// Registers all HIDL and AIDL sensors. Only HIDL sensor properties need to be provided, because
// AIDL sensor properties are retrieved directly from the available HALs. If no HIDL HALs exist,
// hidlSensors must be non-null and empty. See AuthService.java
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void registerAuthenticators(in List<SensorPropertiesInternal> hidlSensors);
}

View File

@@ -35,62 +35,78 @@ import android.hardware.location.IContextHubTransactionCallback;
interface IContextHubService {
// Registers a callback to receive messages
@EnforcePermission("ACCESS_CONTEXT_HUB")
int registerCallback(in IContextHubCallback callback);
// Gets a list of available context hub handles
@EnforcePermission("ACCESS_CONTEXT_HUB")
int[] getContextHubHandles();
// Gets the properties of a hub
@EnforcePermission("ACCESS_CONTEXT_HUB")
ContextHubInfo getContextHubInfo(int contextHubHandle);
// Loads a nanoapp at the specified hub (old API)
@EnforcePermission("ACCESS_CONTEXT_HUB")
int loadNanoApp(int contextHubHandle, in NanoApp nanoApp);
// Unloads a nanoapp given its instance ID (old API)
@EnforcePermission("ACCESS_CONTEXT_HUB")
int unloadNanoApp(int nanoAppHandle);
// Gets the NanoAppInstanceInfo of a nanoapp give its instance ID
@EnforcePermission("ACCESS_CONTEXT_HUB")
NanoAppInstanceInfo getNanoAppInstanceInfo(int nanoAppHandle);
// Finds all nanoApp instances matching some filter
@EnforcePermission("ACCESS_CONTEXT_HUB")
int[] findNanoAppOnHub(int contextHubHandle, in NanoAppFilter filter);
// Sends a message to a nanoApp
@EnforcePermission("ACCESS_CONTEXT_HUB")
int sendMessage(int contextHubHandle, int nanoAppHandle, in ContextHubMessage msg);
// Creates a client to send and receive messages
@EnforcePermission("ACCESS_CONTEXT_HUB")
IContextHubClient createClient(
int contextHubId, in IContextHubClientCallback client, in String attributionTag,
in String packageName);
// Creates a PendingIntent-based client to send and receive messages
@EnforcePermission("ACCESS_CONTEXT_HUB")
IContextHubClient createPendingIntentClient(
int contextHubId, in PendingIntent pendingIntent, long nanoAppId,
in String attributionTag);
// Returns a list of ContextHub objects of available hubs
@EnforcePermission("ACCESS_CONTEXT_HUB")
List<ContextHubInfo> getContextHubs();
// Loads a nanoapp at the specified hub (new API)
@EnforcePermission("ACCESS_CONTEXT_HUB")
void loadNanoAppOnHub(
int contextHubId, in IContextHubTransactionCallback transactionCallback,
in NanoAppBinary nanoAppBinary);
// Unloads a nanoapp on a specified context hub (new API)
@EnforcePermission("ACCESS_CONTEXT_HUB")
void unloadNanoAppFromHub(
int contextHubId, in IContextHubTransactionCallback transactionCallback,
long nanoAppId);
// Enables a nanoapp at the specified hub
@EnforcePermission("ACCESS_CONTEXT_HUB")
void enableNanoApp(
int contextHubId, in IContextHubTransactionCallback transactionCallback,
long nanoAppId);
// Disables a nanoapp at the specified hub
@EnforcePermission("ACCESS_CONTEXT_HUB")
void disableNanoApp(
int contextHubId, in IContextHubTransactionCallback transactionCallback,
long nanoAppId);
// Queries for a list of nanoapps
@EnforcePermission("ACCESS_CONTEXT_HUB")
void queryNanoApps(int contextHubId, in IContextHubTransactionCallback transactionCallback);
}

View File

@@ -52,6 +52,7 @@ interface IStorageManager {
* Shuts down the StorageManagerService and gracefully unmounts all external media.
* Invokes call back once the shutdown is complete.
*/
@EnforcePermission("SHUTDOWN")
void shutdown(IStorageShutdownObserver observer) = 19;
/**
* Mounts an Opaque Binary Blob (OBB). Only allows the calling process's UID
@@ -100,33 +101,55 @@ interface IStorageManager {
* Kick off an immediate maintenance operation
* @throws RemoteException
*/
@EnforcePermission("MOUNT_UNMOUNT_FILESYSTEMS")
void runMaintenance() = 42;
DiskInfo[] getDisks() = 44;
VolumeInfo[] getVolumes(int flags) = 45;
VolumeRecord[] getVolumeRecords(int flags) = 46;
@EnforcePermission("MOUNT_UNMOUNT_FILESYSTEMS")
void mount(in String volId) = 47;
@EnforcePermission("MOUNT_UNMOUNT_FILESYSTEMS")
void unmount(in String volId) = 48;
@EnforcePermission("MOUNT_FORMAT_FILESYSTEMS")
void format(in String volId) = 49;
@EnforcePermission("MOUNT_FORMAT_FILESYSTEMS")
void partitionPublic(in String diskId) = 50;
@EnforcePermission("MOUNT_FORMAT_FILESYSTEMS")
void partitionPrivate(in String diskId) = 51;
@EnforcePermission("MOUNT_FORMAT_FILESYSTEMS")
void partitionMixed(in String diskId, int ratio) = 52;
@EnforcePermission("MOUNT_UNMOUNT_FILESYSTEMS")
void setVolumeNickname(in String fsUuid, in String nickname) = 53;
@EnforcePermission("MOUNT_UNMOUNT_FILESYSTEMS")
void setVolumeUserFlags(in String fsUuid, int flags, int mask) = 54;
@EnforcePermission("MOUNT_UNMOUNT_FILESYSTEMS")
void forgetVolume(in String fsUuid) = 55;
@EnforcePermission("MOUNT_UNMOUNT_FILESYSTEMS")
void forgetAllVolumes() = 56;
String getPrimaryStorageUuid() = 57;
@EnforcePermission("MOUNT_UNMOUNT_FILESYSTEMS")
void setPrimaryStorageUuid(in String volumeUuid, IPackageMoveObserver callback) = 58;
@EnforcePermission("MOUNT_FORMAT_FILESYSTEMS")
void benchmark(in String volId, IVoldTaskListener listener) = 59;
@EnforcePermission("MOUNT_UNMOUNT_FILESYSTEMS")
void setDebugFlags(int flags, int mask) = 60;
@EnforcePermission("STORAGE_INTERNAL")
void createUserKey(int userId, int serialNumber, boolean ephemeral) = 61;
@EnforcePermission("STORAGE_INTERNAL")
void destroyUserKey(int userId) = 62;
void unlockUserKey(int userId, int serialNumber, in byte[] secret) = 63;
@EnforcePermission("STORAGE_INTERNAL")
void lockUserKey(int userId) = 64;
boolean isUserKeyUnlocked(int userId) = 65;
@EnforcePermission("STORAGE_INTERNAL")
void prepareUserStorage(in String volumeUuid, int userId, int serialNumber, int flags) = 66;
@EnforcePermission("STORAGE_INTERNAL")
void destroyUserStorage(in String volumeUuid, int userId, int flags) = 67;
@EnforcePermission("STORAGE_INTERNAL")
void addUserKeyAuth(int userId, int serialNumber, in byte[] secret) = 70;
@EnforcePermission("STORAGE_INTERNAL")
void fixateNewestUserKeyAuth(int userId) = 71;
@EnforcePermission("MOUNT_FORMAT_FILESYSTEMS")
void fstrim(int flags, IVoldTaskListener listener) = 72;
AppFuseMount mountProxyFileDescriptorBridge() = 73;
ParcelFileDescriptor openProxyFileDescriptor(int mountPointId, int fileId, int mode) = 74;
@@ -139,14 +162,17 @@ interface IStorageManager {
void commitChanges() = 83;
boolean supportsCheckpoint() = 84;
void startCheckpoint(int numTries) = 85;
@EnforcePermission("MOUNT_FORMAT_FILESYSTEMS")
boolean needsCheckpoint() = 86;
void abortChanges(in String message, boolean retry) = 87;
@EnforcePermission("STORAGE_INTERNAL")
void clearUserKeyAuth(int userId, int serialNumber, in byte[] secret) = 88;
void fixupAppDir(in String path) = 89;
void disableAppDataIsolation(in String pkgName, int pid, int userId) = 90;
PendingIntent getManageSpaceActivityIntent(in String packageName, int requestCode) = 91;
void notifyAppIoBlocked(in String volumeUuid, int uid, int tid, int reason) = 92;
void notifyAppIoResumed(in String volumeUuid, int uid, int tid, int reason) = 93;
@EnforcePermission("WRITE_MEDIA_STORAGE")
int getExternalStorageMountMode(int uid, in String packageName) = 94;
boolean isAppIoBlocked(in String volumeUuid, int uid, int tid, int reason) = 95;
void setCloudMediaProvider(in String authority) = 96;

View File

@@ -107,6 +107,7 @@ interface IAudioService {
boolean isMasterMute();
@EnforcePermission("MODIFY_AUDIO_ROUTING")
void setMasterMute(boolean mute, int flags, String callingPackage, int userId,
in String attributionTag);
@@ -118,27 +119,37 @@ interface IAudioService {
@UnsupportedAppUsage
int getStreamMaxVolume(int streamType);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
List<AudioVolumeGroup> getAudioVolumeGroups();
@EnforcePermission("MODIFY_AUDIO_ROUTING")
void setVolumeIndexForAttributes(in AudioAttributes aa, int index, int flags,
String callingPackage, in String attributionTag);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
int getVolumeIndexForAttributes(in AudioAttributes aa);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
int getMaxVolumeIndexForAttributes(in AudioAttributes aa);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
int getMinVolumeIndexForAttributes(in AudioAttributes aa);
@EnforcePermission("QUERY_AUDIO_STATE")
int getLastAudibleStreamVolume(int streamType);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
void setSupportedSystemUsages(in int[] systemUsages);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
int[] getSupportedSystemUsages();
@EnforcePermission("MODIFY_AUDIO_ROUTING")
List<AudioProductStrategy> getAudioProductStrategies();
boolean isMicrophoneMuted();
@EnforcePermission("ACCESS_ULTRASOUND")
boolean isUltrasoundSupported();
void setMicrophoneMute(boolean on, String callingPackage, int userId, in String attributionTag);
@@ -220,6 +231,7 @@ interface IAudioService {
IRingtonePlayer getRingtonePlayer();
int getUiSoundsStreamType();
@EnforcePermission("MODIFY_AUDIO_ROUTING")
void setWiredDeviceConnectionState(in AudioDeviceAttributes aa, int state, String caller);
@UnsupportedAppUsage
@@ -306,8 +318,10 @@ interface IAudioService {
int setPreferredDevicesForStrategy(in int strategy, in List<AudioDeviceAttributes> device);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
int removePreferredDevicesForStrategy(in int strategy);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
List<AudioDeviceAttributes> getPreferredDevicesForStrategy(in int strategy);
List<AudioDeviceAttributes> getDevicesForAttributes(in AudioAttributes attributes);
@@ -325,6 +339,7 @@ interface IAudioService {
oneway void setRttEnabled(in boolean rttEnabled);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
void setDeviceVolumeBehavior(in AudioDeviceAttributes device,
in int deviceVolumeBehavior, in String pkgName);
@@ -333,13 +348,16 @@ interface IAudioService {
// WARNING: read warning at top of file, new methods that need to be used by native
// code via IAudioManager.h need to be added to the top section.
@EnforcePermission("MODIFY_AUDIO_ROUTING")
oneway void setMultiAudioFocusEnabled(in boolean enabled);
int setPreferredDevicesForCapturePreset(
in int capturePreset, in List<AudioDeviceAttributes> devices);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
int clearPreferredDevicesForCapturePreset(in int capturePreset);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
List<AudioDeviceAttributes> getPreferredDevicesForCapturePreset(in int capturePreset);
void registerCapturePresetDevicesRoleDispatcher(ICapturePresetDevicesRoleDispatcher dispatcher);
@@ -407,12 +425,16 @@ interface IAudioService {
boolean isSpatializerAvailable();
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
boolean isSpatializerAvailableForDevice(in AudioDeviceAttributes device);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
boolean hasHeadTracker(in AudioDeviceAttributes device);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
void setHeadTrackerEnabled(boolean enabled, in AudioDeviceAttributes device);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
boolean isHeadTrackerEnabled(in AudioDeviceAttributes device);
boolean isHeadTrackerAvailable();
@@ -420,6 +442,7 @@ interface IAudioService {
void registerSpatializerHeadTrackerAvailableCallback(
in ISpatializerHeadTrackerAvailableCallback cb, boolean register);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
void setSpatializerEnabled(boolean enabled);
boolean canBeSpatialized(in AudioAttributes aa, in AudioFormat af);
@@ -428,46 +451,65 @@ interface IAudioService {
void unregisterSpatializerCallback(in ISpatializerCallback cb);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
void registerSpatializerHeadTrackingCallback(in ISpatializerHeadTrackingModeCallback cb);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
void unregisterSpatializerHeadTrackingCallback(in ISpatializerHeadTrackingModeCallback cb);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
void registerHeadToSoundstagePoseCallback(in ISpatializerHeadToSoundStagePoseCallback cb);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
void unregisterHeadToSoundstagePoseCallback(in ISpatializerHeadToSoundStagePoseCallback cb);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
List<AudioDeviceAttributes> getSpatializerCompatibleAudioDevices();
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
void addSpatializerCompatibleAudioDevice(in AudioDeviceAttributes ada);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
void removeSpatializerCompatibleAudioDevice(in AudioDeviceAttributes ada);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
void setDesiredHeadTrackingMode(int mode);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
int getDesiredHeadTrackingMode();
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
int[] getSupportedHeadTrackingModes();
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
int getActualHeadTrackingMode();
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
oneway void setSpatializerGlobalTransform(in float[] transform);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
oneway void recenterHeadTracker();
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
void setSpatializerParameter(int key, in byte[] value);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
void getSpatializerParameter(int key, inout byte[] value);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
int getSpatializerOutput();
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
void registerSpatializerOutputCallback(in ISpatializerOutputCallback cb);
@EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS")
void unregisterSpatializerOutputCallback(in ISpatializerOutputCallback cb);
boolean isVolumeFixed();
VolumeInfo getDefaultVolumeInfo();
@EnforcePermission("CALL_AUDIO_INTERCEPTION")
boolean isPstnCallAudioInterceptable();
oneway void muteAwaitConnection(in int[] usagesToMute, in AudioDeviceAttributes dev,
@@ -475,8 +517,10 @@ interface IAudioService {
oneway void cancelMuteAwaitConnection(in AudioDeviceAttributes dev);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
AudioDeviceAttributes getMutingExpectedDevice();
@EnforcePermission("MODIFY_AUDIO_ROUTING")
void registerMuteAwaitConnectionDispatcher(in IMuteAwaitConnectionCallback cb,
boolean register);
@@ -486,22 +530,28 @@ interface IAudioService {
void registerDeviceVolumeBehaviorDispatcher(boolean register,
in IDeviceVolumeBehaviorDispatcher dispatcher);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
List<AudioFocusInfo> getFocusStack();
boolean sendFocusLoss(in AudioFocusInfo focusLoser, in IAudioPolicyCallback apcb);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)")
void addAssistantServicesUids(in int[] assistantUID);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)")
void removeAssistantServicesUids(in int[] assistantUID);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)")
void setActiveAssistantServiceUids(in int[] activeUids);
@EnforcePermission("MODIFY_AUDIO_ROUTING")
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)")
int[] getAssistantServicesUids();
@EnforcePermission("MODIFY_AUDIO_ROUTING")
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)")
int[] getActiveAssistantServiceUids();

View File

@@ -1248,10 +1248,10 @@ class StorageManagerService extends IStorageManager.Stub
mHandler.sendMessage(mHandler.obtainMessage(H_FSTRIM, callback));
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS)
// Binder entry point for kicking off an immediate fstrim
@Override
public void runMaintenance() {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
runIdleMaintenance(null);
}
@@ -2165,17 +2165,17 @@ class StorageManagerService extends IStorageManager.Stub
mCallbacks.unregister(listener);
}
@android.annotation.EnforcePermission(android.Manifest.permission.SHUTDOWN)
@Override
public void shutdown(final IStorageShutdownObserver observer) {
enforcePermission(android.Manifest.permission.SHUTDOWN);
Slog.i(TAG, "Shutting down");
mHandler.obtainMessage(H_SHUTDOWN, observer).sendToTarget();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS)
@Override
public void mount(String volId) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
final VolumeInfo vol = findVolumeByIdOrThrow(volId);
if (isMountDisallowed(vol)) {
@@ -2241,9 +2241,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS)
@Override
public void unmount(String volId) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
final VolumeInfo vol = findVolumeByIdOrThrow(volId);
unmount(vol);
@@ -2265,9 +2265,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS)
@Override
public void format(String volId) {
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
final VolumeInfo vol = findVolumeByIdOrThrow(volId);
final String fsUuid = vol.fsUuid;
@@ -2284,9 +2284,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS)
@Override
public void benchmark(String volId, IVoldTaskListener listener) {
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
try {
mVold.benchmark(volId, new IVoldTaskListener.Stub() {
@@ -2323,9 +2323,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS)
@Override
public void partitionPublic(String diskId) {
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
final CountDownLatch latch = findOrCreateDiskScanLatch(diskId);
try {
@@ -2336,9 +2336,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS)
@Override
public void partitionPrivate(String diskId) {
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
enforceAdminUser();
final CountDownLatch latch = findOrCreateDiskScanLatch(diskId);
@@ -2350,9 +2350,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS)
@Override
public void partitionMixed(String diskId, int ratio) {
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
enforceAdminUser();
final CountDownLatch latch = findOrCreateDiskScanLatch(diskId);
@@ -2364,9 +2364,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS)
@Override
public void setVolumeNickname(String fsUuid, String nickname) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
Objects.requireNonNull(fsUuid);
synchronized (mLock) {
@@ -2377,9 +2377,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS)
@Override
public void setVolumeUserFlags(String fsUuid, int flags, int mask) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
Objects.requireNonNull(fsUuid);
synchronized (mLock) {
@@ -2390,9 +2390,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS)
@Override
public void forgetVolume(String fsUuid) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
Objects.requireNonNull(fsUuid);
@@ -2414,9 +2414,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS)
@Override
public void forgetAllVolumes() {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
synchronized (mLock) {
for (int i = 0; i < mRecords.size(); i++) {
@@ -2446,9 +2446,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS)
@Override
public void fstrim(int flags, IVoldTaskListener listener) {
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
try {
// Block based checkpoint process runs fstrim. So, if checkpoint is in progress
@@ -2737,9 +2737,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS)
@Override
public void setDebugFlags(int flags, int mask) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
if ((mask & (StorageManager.DEBUG_ADOPTABLE_FORCE_ON
| StorageManager.DEBUG_ADOPTABLE_FORCE_OFF)) != 0) {
@@ -2807,9 +2807,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS)
@Override
public void setPrimaryStorageUuid(String volumeUuid, IPackageMoveObserver callback) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
final VolumeInfo from;
final VolumeInfo to;
@@ -3013,12 +3013,12 @@ class StorageManagerService extends IStorageManager.Stub
mVold.commitChanges();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS)
/**
* Check if we should be mounting with checkpointing or are checkpointing now
*/
@Override
public boolean needsCheckpoint() throws RemoteException {
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
return mVold.needsCheckpoint();
}
@@ -3035,9 +3035,9 @@ class StorageManagerService extends IStorageManager.Stub
mVold.abortChanges(message, retry);
}
@android.annotation.EnforcePermission(android.Manifest.permission.STORAGE_INTERNAL)
@Override
public void createUserKey(int userId, int serialNumber, boolean ephemeral) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
try {
mVold.createUserKey(userId, serialNumber, ephemeral);
@@ -3046,9 +3046,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.STORAGE_INTERNAL)
@Override
public void destroyUserKey(int userId) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
try {
mVold.destroyUserKey(userId);
@@ -3065,6 +3065,7 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.STORAGE_INTERNAL)
/*
* Add this secret to the set of ways we can recover a user's disk
* encryption key. Changing the secret for a disk encryption key is done in
@@ -3075,7 +3076,6 @@ class StorageManagerService extends IStorageManager.Stub
*/
@Override
public void addUserKeyAuth(int userId, int serialNumber, byte[] secret) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
try {
mVold.addUserKeyAuth(userId, serialNumber, encodeBytes(secret));
@@ -3084,6 +3084,7 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.STORAGE_INTERNAL)
/*
* Store a user's disk encryption key without secret binding. Removing the
* secret for a disk encryption key is done in two phases. First, this
@@ -3093,7 +3094,6 @@ class StorageManagerService extends IStorageManager.Stub
*/
@Override
public void clearUserKeyAuth(int userId, int serialNumber, byte[] secret) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
try {
mVold.clearUserKeyAuth(userId, serialNumber, encodeBytes(secret));
@@ -3102,13 +3102,13 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.STORAGE_INTERNAL)
/*
* Delete all bindings of a user's disk encryption key except the most
* recently added one.
*/
@Override
public void fixateNewestUserKeyAuth(int userId) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
try {
mVold.fixateNewestUserKeyAuth(userId);
@@ -3152,6 +3152,7 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.STORAGE_INTERNAL)
@Override
public void lockUserKey(int userId) {
// Do not lock user 0 data for headless system user
@@ -3160,7 +3161,6 @@ class StorageManagerService extends IStorageManager.Stub
throw new IllegalArgumentException("Headless system user data cannot be locked..");
}
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
if (!isUserKeyUnlocked(userId)) {
Slog.d(TAG, "User " + userId + "'s CE storage is already locked");
@@ -3215,9 +3215,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.STORAGE_INTERNAL)
@Override
public void prepareUserStorage(String volumeUuid, int userId, int serialNumber, int flags) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
try {
prepareUserStorageInternal(volumeUuid, userId, serialNumber, flags);
@@ -3258,9 +3258,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.STORAGE_INTERNAL)
@Override
public void destroyUserStorage(String volumeUuid, int userId, int flags) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
try {
mVold.destroyUserStorage(volumeUuid, userId, flags);
@@ -4305,9 +4305,9 @@ class StorageManagerService extends IStorageManager.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.WRITE_MEDIA_STORAGE)
@Override
public int getExternalStorageMountMode(int uid, String packageName) {
enforcePermission(android.Manifest.permission.WRITE_MEDIA_STORAGE);
return mStorageManagerInternal.getExternalStorageMountMode(uid, packageName);
}

View File

@@ -1792,11 +1792,11 @@ public class AudioService extends IAudioService.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/**
* @see AudioManager#setSupportedSystemUsages(int[])
*/
public void setSupportedSystemUsages(@NonNull @AttributeSystemUsage int[] systemUsages) {
enforceModifyAudioRoutingPermission();
verifySystemUsages(systemUsages);
synchronized (mSupportedSystemUsagesLock) {
@@ -1805,11 +1805,11 @@ public class AudioService extends IAudioService.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/**
* @see AudioManager#getSupportedSystemUsages()
*/
public @NonNull @AttributeSystemUsage int[] getSupportedSystemUsages() {
enforceModifyAudioRoutingPermission();
synchronized (mSupportedSystemUsagesLock) {
return Arrays.copyOf(mSupportedSystemUsages, mSupportedSystemUsages.length);
}
@@ -1823,6 +1823,7 @@ public class AudioService extends IAudioService.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/**
* @return the {@link android.media.audiopolicy.AudioProductStrategy} discovered from the
* platform configuration file.
@@ -1830,10 +1831,10 @@ public class AudioService extends IAudioService.Stub
@NonNull
public List<AudioProductStrategy> getAudioProductStrategies() {
// verify permissions
enforceModifyAudioRoutingPermission();
return AudioProductStrategy.getAudioProductStrategies();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/**
* @return the List of {@link android.media.audiopolicy.AudioVolumeGroup} discovered from the
* platform configuration file.
@@ -1841,7 +1842,6 @@ public class AudioService extends IAudioService.Stub
@NonNull
public List<AudioVolumeGroup> getAudioVolumeGroups() {
// verify permissions
enforceModifyAudioRoutingPermission();
return AudioVolumeGroup.getAudioVolumeGroups();
}
@@ -2723,9 +2723,9 @@ public class AudioService extends IAudioService.Stub
return status;
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#removePreferredDeviceForStrategy(AudioProductStrategy) */
public int removePreferredDevicesForStrategy(int strategy) {
enforceModifyAudioRoutingPermission();
final String logString =
String.format("removePreferredDeviceForStrategy strat:%d", strategy);
sDeviceLogger.log(new AudioEventLogger.StringEvent(logString).printLog(TAG));
@@ -2737,12 +2737,12 @@ public class AudioService extends IAudioService.Stub
return status;
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/**
* @see AudioManager#getPreferredDeviceForStrategy(AudioProductStrategy)
* @see AudioManager#getPreferredDevicesForStrategy(AudioProductStrategy)
*/
public List<AudioDeviceAttributes> getPreferredDevicesForStrategy(int strategy) {
enforceModifyAudioRoutingPermission();
List<AudioDeviceAttributes> devices = new ArrayList<>();
final long identity = Binder.clearCallingIdentity();
final int status = AudioSystem.getDevicesForRoleAndStrategy(
@@ -2810,9 +2810,9 @@ public class AudioService extends IAudioService.Stub
return status;
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#clearPreferredDevicesForCapturePreset(int) */
public int clearPreferredDevicesForCapturePreset(int capturePreset) {
enforceModifyAudioRoutingPermission();
final String logString = String.format(
"removePreferredDeviceForCapturePreset source:%d", capturePreset);
sDeviceLogger.log(new AudioEventLogger.StringEvent(logString).printLog(TAG));
@@ -2824,11 +2824,11 @@ public class AudioService extends IAudioService.Stub
return status;
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/**
* @see AudioManager#getPreferredDevicesForCapturePreset(int)
*/
public List<AudioDeviceAttributes> getPreferredDevicesForCapturePreset(int capturePreset) {
enforceModifyAudioRoutingPermission();
List<AudioDeviceAttributes> devices = new ArrayList<>();
final long identity = Binder.clearCallingIdentity();
final int status = AudioSystem.getDevicesForRoleAndCapturePreset(
@@ -3558,10 +3558,10 @@ public class AudioService extends IAudioService.Stub
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#setVolumeIndexForAttributes(attr, int, int) */
public void setVolumeIndexForAttributes(@NonNull AudioAttributes attr, int index, int flags,
String callingPackage, String attributionTag) {
enforceModifyAudioRoutingPermission();
Objects.requireNonNull(attr, "attr must not be null");
final int volumeGroup = getVolumeGroupIdForAttributes(attr);
if (sVolumeGroupStates.indexOfKey(volumeGroup) < 0) {
@@ -3601,9 +3601,9 @@ public class AudioService extends IAudioService.Stub
return null;
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#getVolumeIndexForAttributes(attr) */
public int getVolumeIndexForAttributes(@NonNull AudioAttributes attr) {
enforceModifyAudioRoutingPermission();
Objects.requireNonNull(attr, "attr must not be null");
final int volumeGroup = getVolumeGroupIdForAttributes(attr);
if (sVolumeGroupStates.indexOfKey(volumeGroup) < 0) {
@@ -3613,16 +3613,16 @@ public class AudioService extends IAudioService.Stub
return vgs.getVolumeIndex();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#getMaxVolumeIndexForAttributes(attr) */
public int getMaxVolumeIndexForAttributes(@NonNull AudioAttributes attr) {
enforceModifyAudioRoutingPermission();
Objects.requireNonNull(attr, "attr must not be null");
return AudioSystem.getMaxVolumeIndexForAttributes(attr);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#getMinVolumeIndexForAttributes(attr) */
public int getMinVolumeIndexForAttributes(@NonNull AudioAttributes attr) {
enforceModifyAudioRoutingPermission();
Objects.requireNonNull(attr, "attr must not be null");
return AudioSystem.getMinVolumeIndexForAttributes(attr);
}
@@ -3664,9 +3664,9 @@ public class AudioService extends IAudioService.Stub
attributionTag, Binder.getCallingUid(), callingOrSelfHasAudioSettingsPermission());
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_ULTRASOUND)
/** @see AudioManager#isUltrasoundSupported() */
public boolean isUltrasoundSupported() {
enforceAccessUltrasoundPermission();
return AudioSystem.isUltrasoundSupported();
}
@@ -4438,10 +4438,10 @@ public class AudioService extends IAudioService.Stub
return AudioSystem.getMasterMute();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#setMasterMute(boolean, int) */
public void setMasterMute(boolean mute, int flags, String callingPackage, int userId,
String attributionTag) {
enforceModifyAudioRoutingPermission();
setMasterMuteInternal(mute, flags, callingPackage,
Binder.getCallingUid(), userId, Binder.getCallingPid(), attributionTag);
}
@@ -4483,9 +4483,9 @@ public class AudioService extends IAudioService.Stub
return (mStreamStates[streamType].getMinIndex(isPrivileged) + 5) / 10;
}
@android.annotation.EnforcePermission(android.Manifest.permission.QUERY_AUDIO_STATE)
/** Get last audible volume before stream was muted. */
public int getLastAudibleStreamVolume(int streamType) {
enforceQueryStatePermission();
ensureValidStreamType(streamType);
int device = getDeviceForStream(streamType);
return (mStreamStates[streamType].getIndex(device) + 5) / 10;
@@ -5332,9 +5332,9 @@ public class AudioService extends IAudioService.Stub
mModeDispatchers.unregister(dispatcher);
}
@android.annotation.EnforcePermission(android.Manifest.permission.CALL_AUDIO_INTERCEPTION)
/** @see AudioManager#isPstnCallAudioInterceptable() */
public boolean isPstnCallAudioInterceptable() {
enforceCallAudioInterceptionPermission();
boolean uplinkDeviceFound = false;
boolean downlinkDeviceFound = false;
@@ -6689,6 +6689,7 @@ public class AudioService extends IAudioService.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/**
* @see AudioManager#setDeviceVolumeBehavior(AudioDeviceAttributes, int)
* @param device the audio device to be affected
@@ -6697,7 +6698,6 @@ public class AudioService extends IAudioService.Stub
public void setDeviceVolumeBehavior(@NonNull AudioDeviceAttributes device,
@AudioManager.DeviceVolumeBehavior int deviceVolumeBehavior, @Nullable String pkgName) {
// verify permissions
enforceModifyAudioRoutingPermission();
// verify arguments
Objects.requireNonNull(device);
AudioManager.enforceValidVolumeBehavior(deviceVolumeBehavior);
@@ -6847,12 +6847,12 @@ public class AudioService extends IAudioService.Stub
@Retention(RetentionPolicy.SOURCE)
public @interface ConnectionState {}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/**
* see AudioManager.setWiredDeviceConnectionState()
*/
public void setWiredDeviceConnectionState(AudioDeviceAttributes attributes,
@ConnectionState int state, String caller) {
enforceModifyAudioRoutingPermission();
if (state != CONNECTION_STATE_CONNECTED
&& state != CONNECTION_STATE_DISCONNECTED) {
throw new IllegalArgumentException("Invalid state " + state);
@@ -8970,27 +8970,27 @@ public class AudioService extends IAudioService.Stub
return mSpatializerHelper.isAvailable();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#isAvailableForDevice(AudioDeviceAttributes) */
public boolean isSpatializerAvailableForDevice(@NonNull AudioDeviceAttributes device) {
enforceModifyDefaultAudioEffectsPermission();
return mSpatializerHelper.isAvailableForDevice(Objects.requireNonNull(device));
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#hasHeadTracker(AudioDeviceAttributes) */
public boolean hasHeadTracker(@NonNull AudioDeviceAttributes device) {
enforceModifyDefaultAudioEffectsPermission();
return mSpatializerHelper.hasHeadTracker(Objects.requireNonNull(device));
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#setHeadTrackerEnabled(boolean, AudioDeviceAttributes) */
public void setHeadTrackerEnabled(boolean enabled, @NonNull AudioDeviceAttributes device) {
enforceModifyDefaultAudioEffectsPermission();
mSpatializerHelper.setHeadTrackerEnabled(enabled, Objects.requireNonNull(device));
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#isHeadTrackerEnabled(AudioDeviceAttributes) */
public boolean isHeadTrackerEnabled(@NonNull AudioDeviceAttributes device) {
enforceModifyDefaultAudioEffectsPermission();
return mSpatializerHelper.isHeadTrackerEnabled(Objects.requireNonNull(device));
}
@@ -8999,9 +8999,9 @@ public class AudioService extends IAudioService.Stub
return mSpatializerHelper.isHeadTrackerAvailable();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#setSpatializerEnabled(boolean) */
public void setSpatializerEnabled(boolean enabled) {
enforceModifyDefaultAudioEffectsPermission();
mSpatializerHelper.setFeatureEnabled(enabled);
}
@@ -9027,18 +9027,18 @@ public class AudioService extends IAudioService.Stub
mSpatializerHelper.unregisterStateCallback(cb);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#SpatializerHeadTrackingDispatcherStub */
public void registerSpatializerHeadTrackingCallback(
@NonNull ISpatializerHeadTrackingModeCallback cb) {
enforceModifyDefaultAudioEffectsPermission();
Objects.requireNonNull(cb);
mSpatializerHelper.registerHeadTrackingModeCallback(cb);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#SpatializerHeadTrackingDispatcherStub */
public void unregisterSpatializerHeadTrackingCallback(
@NonNull ISpatializerHeadTrackingModeCallback cb) {
enforceModifyDefaultAudioEffectsPermission();
Objects.requireNonNull(cb);
mSpatializerHelper.unregisterHeadTrackingModeCallback(cb);
}
@@ -9050,76 +9050,76 @@ public class AudioService extends IAudioService.Stub
mSpatializerHelper.registerHeadTrackerAvailableCallback(cb, register);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#setOnHeadToSoundstagePoseUpdatedListener */
public void registerHeadToSoundstagePoseCallback(
@NonNull ISpatializerHeadToSoundStagePoseCallback cb) {
enforceModifyDefaultAudioEffectsPermission();
Objects.requireNonNull(cb);
mSpatializerHelper.registerHeadToSoundstagePoseCallback(cb);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#clearOnHeadToSoundstagePoseUpdatedListener */
public void unregisterHeadToSoundstagePoseCallback(
@NonNull ISpatializerHeadToSoundStagePoseCallback cb) {
enforceModifyDefaultAudioEffectsPermission();
Objects.requireNonNull(cb);
mSpatializerHelper.unregisterHeadToSoundstagePoseCallback(cb);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#getSpatializerCompatibleAudioDevices() */
public @NonNull List<AudioDeviceAttributes> getSpatializerCompatibleAudioDevices() {
enforceModifyDefaultAudioEffectsPermission();
return mSpatializerHelper.getCompatibleAudioDevices();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#addSpatializerCompatibleAudioDevice(AudioDeviceAttributes) */
public void addSpatializerCompatibleAudioDevice(@NonNull AudioDeviceAttributes ada) {
enforceModifyDefaultAudioEffectsPermission();
Objects.requireNonNull(ada);
mSpatializerHelper.addCompatibleAudioDevice(ada);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#removeSpatializerCompatibleAudioDevice(AudioDeviceAttributes) */
public void removeSpatializerCompatibleAudioDevice(@NonNull AudioDeviceAttributes ada) {
enforceModifyDefaultAudioEffectsPermission();
Objects.requireNonNull(ada);
mSpatializerHelper.removeCompatibleAudioDevice(ada);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#getSupportedHeadTrackingModes() */
public int[] getSupportedHeadTrackingModes() {
enforceModifyDefaultAudioEffectsPermission();
return mSpatializerHelper.getSupportedHeadTrackingModes();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#getHeadTrackingMode() */
public int getActualHeadTrackingMode() {
enforceModifyDefaultAudioEffectsPermission();
return mSpatializerHelper.getActualHeadTrackingMode();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#getDesiredHeadTrackingMode() */
public int getDesiredHeadTrackingMode() {
enforceModifyDefaultAudioEffectsPermission();
return mSpatializerHelper.getDesiredHeadTrackingMode();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#setGlobalTransform */
public void setSpatializerGlobalTransform(@NonNull float[] transform) {
enforceModifyDefaultAudioEffectsPermission();
Objects.requireNonNull(transform);
mSpatializerHelper.setGlobalTransform(transform);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#recenterHeadTracker() */
public void recenterHeadTracker() {
enforceModifyDefaultAudioEffectsPermission();
mSpatializerHelper.recenterHeadTracker();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#setDesiredHeadTrackingMode */
public void setDesiredHeadTrackingMode(@Spatializer.HeadTrackingModeSet int mode) {
enforceModifyDefaultAudioEffectsPermission();
switch(mode) {
case Spatializer.HEAD_TRACKING_MODE_DISABLED:
case Spatializer.HEAD_TRACKING_MODE_RELATIVE_WORLD:
@@ -9131,36 +9131,36 @@ public class AudioService extends IAudioService.Stub
mSpatializerHelper.setDesiredHeadTrackingMode(mode);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#setEffectParameter */
public void setSpatializerParameter(int key, @NonNull byte[] value) {
enforceModifyDefaultAudioEffectsPermission();
Objects.requireNonNull(value);
mSpatializerHelper.setEffectParameter(key, value);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#getEffectParameter */
public void getSpatializerParameter(int key, @NonNull byte[] value) {
enforceModifyDefaultAudioEffectsPermission();
Objects.requireNonNull(value);
mSpatializerHelper.getEffectParameter(key, value);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#getOutput */
public int getSpatializerOutput() {
enforceModifyDefaultAudioEffectsPermission();
return mSpatializerHelper.getOutput();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#setOnSpatializerOutputChangedListener */
public void registerSpatializerOutputCallback(ISpatializerOutputCallback cb) {
enforceModifyDefaultAudioEffectsPermission();
Objects.requireNonNull(cb);
mSpatializerHelper.registerSpatializerOutputCallback(cb);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
/** @see Spatializer#clearOnSpatializerOutputChangedListener */
public void unregisterSpatializerOutputCallback(ISpatializerOutputCallback cb) {
enforceModifyDefaultAudioEffectsPermission();
Objects.requireNonNull(cb);
mSpatializerHelper.unregisterSpatializerOutputCallback(cb);
}
@@ -9268,9 +9268,9 @@ public class AudioService extends IAudioService.Stub
cb.dispatchOnMutedUntilConnection(device, usages); } catch (RemoteException e) { } });
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#getMutingExpectedDevice */
public @Nullable AudioDeviceAttributes getMutingExpectedDevice() {
enforceModifyAudioRoutingPermission();
synchronized (mMuteAwaitConnectionLock) {
return mMutingExpectedDevice;
}
@@ -9308,10 +9308,10 @@ public class AudioService extends IAudioService.Stub
final RemoteCallbackList<IMuteAwaitConnectionCallback> mMuteAwaitConnectionDispatchers =
new RemoteCallbackList<IMuteAwaitConnectionCallback>();
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#registerMuteAwaitConnectionCallback */
public void registerMuteAwaitConnectionDispatcher(@NonNull IMuteAwaitConnectionCallback cb,
boolean register) {
enforceModifyAudioRoutingPermission();
if (register) {
mMuteAwaitConnectionDispatchers.register(cb);
} else {
@@ -10817,9 +10817,9 @@ public class AudioService extends IAudioService.Stub
return AudioManager.SUCCESS;
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioPolicy#getFocusStack() */
public List<AudioFocusInfo> getFocusStack() {
enforceModifyAudioRoutingPermission();
return mMediaFocusControl.getFocusStack();
}
@@ -11582,11 +11582,11 @@ public class AudioService extends IAudioService.Stub
AudioSystem.setAudioHalPids(pidsArray);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
//======================
// Multi Audio Focus
//======================
public void setMultiAudioFocusEnabled(boolean enabled) {
enforceModifyAudioRoutingPermission();
if (mMediaFocusControl != null) {
boolean mafEnabled = mMediaFocusControl.getMultiAudioFocusEnabled();
if (mafEnabled != enabled) {
@@ -11685,10 +11685,10 @@ public class AudioService extends IAudioService.Stub
return delayMillis;
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#addAssistantServicesUids(int []) */
@Override
public void addAssistantServicesUids(int [] assistantUids) {
enforceModifyAudioRoutingPermission();
Objects.requireNonNull(assistantUids);
synchronized (mSettingsLock) {
@@ -11696,20 +11696,20 @@ public class AudioService extends IAudioService.Stub
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#removeAssistantServicesUids(int []) */
@Override
public void removeAssistantServicesUids(int [] assistantUids) {
enforceModifyAudioRoutingPermission();
Objects.requireNonNull(assistantUids);
synchronized (mSettingsLock) {
removeAssistantServiceUidsLocked(assistantUids);
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#getAssistantServicesUids() */
@Override
public int[] getAssistantServicesUids() {
enforceModifyAudioRoutingPermission();
int [] assistantUids;
synchronized (mSettingsLock) {
assistantUids = mAssistantUids.stream().mapToInt(Integer::intValue).toArray();
@@ -11717,10 +11717,10 @@ public class AudioService extends IAudioService.Stub
return assistantUids;
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#setActiveAssistantServiceUids(int []) */
@Override
public void setActiveAssistantServiceUids(int [] activeAssistantUids) {
enforceModifyAudioRoutingPermission();
Objects.requireNonNull(activeAssistantUids);
synchronized (mSettingsLock) {
mActiveAssistantServiceUids = activeAssistantUids;
@@ -11728,10 +11728,10 @@ public class AudioService extends IAudioService.Stub
updateActiveAssistantServiceUids();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
/** @see AudioManager#getActiveAssistantServiceUids() */
@Override
public int[] getActiveAssistantServiceUids() {
enforceModifyAudioRoutingPermission();
int [] activeAssistantUids;
synchronized (mSettingsLock) {
activeAssistantUids = mActiveAssistantServiceUids.clone();

View File

@@ -173,10 +173,10 @@ public class AuthService extends SystemService {
}
private final class AuthServiceImpl extends IAuthService.Stub {
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
@NonNull String opPackageName) throws RemoteException {
Utils.checkPermission(getContext(), TEST_BIOMETRIC);
final long identity = Binder.clearCallingIdentity();
try {
@@ -187,10 +187,10 @@ public class AuthService extends SystemService {
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public List<SensorPropertiesInternal> getSensorProperties(String opPackageName)
throws RemoteException {
Utils.checkPermission(getContext(), TEST_BIOMETRIC);
final long identity = Binder.clearCallingIdentity();
try {
@@ -202,9 +202,9 @@ public class AuthService extends SystemService {
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public String getUiPackage() {
Utils.checkPermission(getContext(), TEST_BIOMETRIC);
return getContext().getResources()
.getString(R.string.config_biometric_prompt_ui_package);

View File

@@ -491,10 +491,10 @@ public class BiometricService extends SystemService {
* sensor arbitration, threading, etc.
*/
private final class BiometricServiceWrapper extends IBiometricService.Stub {
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
@NonNull String opPackageName) throws RemoteException {
checkInternalPermission();
for (BiometricSensor sensor : mSensors) {
if (sensor.id == sensorId) {
@@ -506,10 +506,10 @@ public class BiometricService extends SystemService {
return null;
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public List<SensorPropertiesInternal> getSensorProperties(String opPackageName)
throws RemoteException {
checkInternalPermission();
final List<SensorPropertiesInternal> sensors = new ArrayList<>();
for (BiometricSensor sensor : mSensors) {
@@ -523,17 +523,17 @@ public class BiometricService extends SystemService {
return sensors;
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void onReadyForAuthentication(long requestId, int cookie) {
checkInternalPermission();
mHandler.post(() -> handleOnReadyForAuthentication(requestId, cookie));
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public long authenticate(IBinder token, long operationId, int userId,
IBiometricServiceReceiver receiver, String opPackageName, PromptInfo promptInfo) {
checkInternalPermission();
if (token == null || receiver == null || opPackageName == null || promptInfo == null) {
Slog.e(TAG, "Unable to authenticate, one or more null arguments");
@@ -561,9 +561,9 @@ public class BiometricService extends SystemService {
return requestId;
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void cancelAuthentication(IBinder token, String opPackageName, long requestId) {
checkInternalPermission();
SomeArgs args = SomeArgs.obtain();
args.arg1 = token;
@@ -573,10 +573,10 @@ public class BiometricService extends SystemService {
mHandler.post(() -> handleCancelAuthentication(requestId));
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public int canAuthenticate(String opPackageName, int userId, int callingUserId,
@Authenticators.Types int authenticators) {
checkInternalPermission();
Slog.d(TAG, "canAuthenticate: User=" + userId
+ ", Caller=" + callingUserId
@@ -596,9 +596,9 @@ public class BiometricService extends SystemService {
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public boolean hasEnrolledBiometrics(int userId, String opPackageName) {
checkInternalPermission();
try {
for (BiometricSensor sensor : mSensors) {
@@ -613,11 +613,11 @@ public class BiometricService extends SystemService {
return false;
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public synchronized void registerAuthenticator(int id, int modality,
@Authenticators.Types int strength,
@NonNull IBiometricAuthenticator authenticator) {
checkInternalPermission();
Slog.d(TAG, "Registering ID: " + id
+ " Modality: " + modality
@@ -660,10 +660,10 @@ public class BiometricService extends SystemService {
mBiometricStrengthController.updateStrengths();
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void registerEnabledOnKeyguardCallback(
IBiometricEnabledOnKeyguardCallback callback, int callingUserId) {
checkInternalPermission();
mEnabledOnKeyguardCallbacks.add(new EnabledOnKeyguardCallback(callback));
try {
@@ -674,17 +674,17 @@ public class BiometricService extends SystemService {
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void invalidateAuthenticatorIds(int userId, int fromSensorId,
IInvalidationCallback callback) {
checkInternalPermission();
InvalidationTracker.start(getContext(), mSensors, userId, fromSensorId, callback);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public long[] getAuthenticatorIds(int callingUserId) {
checkInternalPermission();
final List<Long> authenticatorIds = new ArrayList<>();
for (BiometricSensor sensor : mSensors) {
@@ -712,10 +712,10 @@ public class BiometricService extends SystemService {
return result;
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void resetLockoutTimeBound(IBinder token, String opPackageName, int fromSensorId,
int userId, byte[] hardwareAuthToken) {
checkInternalPermission();
// Check originating strength
if (!Utils.isAtLeastStrength(getSensorForId(fromSensorId).getCurrentStrength(),
@@ -751,9 +751,9 @@ public class BiometricService extends SystemService {
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public int getCurrentStrength(int sensorId) {
checkInternalPermission();
for (BiometricSensor sensor : mSensors) {
if (sensor.id == sensorId) {
@@ -764,6 +764,7 @@ public class BiometricService extends SystemService {
return Authenticators.EMPTY_SET;
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public int getCurrentModality(
String opPackageName,
@@ -771,7 +772,6 @@ public class BiometricService extends SystemService {
int callingUserId,
@Authenticators.Types int authenticators) {
checkInternalPermission();
Slog.d(TAG, "getCurrentModality: User=" + userId
+ ", Caller=" + callingUserId
@@ -791,9 +791,9 @@ public class BiometricService extends SystemService {
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public int getSupportedModalities(@Authenticators.Types int authenticators) {
checkInternalPermission();
Slog.d(TAG, "getSupportedModalities: Authenticators=" + authenticators);

View File

@@ -138,10 +138,10 @@ public class FaceService extends SystemService {
* Receives the incoming binder calls from FaceManager.
*/
private final class FaceServiceWrapper extends IFaceService.Stub {
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
@NonNull String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
@@ -153,9 +153,9 @@ public class FaceService extends SystemService {
return provider.createTestSession(sensorId, callback, opPackageName);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public byte[] dumpSensorServiceStateProto(int sensorId, boolean clearSchedulerBuffer) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ProtoOutputStream proto = new ProtoOutputStream();
final ServiceProvider provider = getProviderForSensor(sensorId);
@@ -166,18 +166,18 @@ public class FaceService extends SystemService {
return proto.getBytes();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_BIOMETRIC)
@Override // Binder call
public List<FaceSensorPropertiesInternal> getSensorPropertiesInternal(
String opPackageName) {
Utils.checkPermission(getContext(), MANAGE_BIOMETRIC);
return FaceService.this.getSensorProperties();
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public FaceSensorPropertiesInternal getSensorProperties(int sensorId,
@NonNull String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -189,10 +189,10 @@ public class FaceService extends SystemService {
return provider.getSensorProperties(sensorId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_BIOMETRIC)
@Override // Binder call
public void generateChallenge(IBinder token, int sensorId, int userId,
IFaceServiceReceiver receiver, String opPackageName) {
Utils.checkPermission(getContext(), MANAGE_BIOMETRIC);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -203,10 +203,10 @@ public class FaceService extends SystemService {
provider.scheduleGenerateChallenge(sensorId, userId, token, receiver, opPackageName);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_BIOMETRIC)
@Override // Binder call
public void revokeChallenge(IBinder token, int sensorId, int userId, String opPackageName,
long challenge) {
Utils.checkPermission(getContext(), MANAGE_BIOMETRIC);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -217,11 +217,11 @@ public class FaceService extends SystemService {
provider.scheduleRevokeChallenge(sensorId, userId, token, opPackageName, challenge);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_BIOMETRIC)
@Override // Binder call
public long enroll(int userId, final IBinder token, final byte[] hardwareAuthToken,
final IFaceServiceReceiver receiver, final String opPackageName,
final int[] disabledFeatures, Surface previewSurface, boolean debugConsent) {
Utils.checkPermission(getContext(), MANAGE_BIOMETRIC);
final Pair<Integer, ServiceProvider> provider = getSingleProvider();
if (provider == null) {
@@ -233,18 +233,18 @@ public class FaceService extends SystemService {
receiver, opPackageName, disabledFeatures, previewSurface, debugConsent);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_BIOMETRIC)
@Override // Binder call
public long enrollRemotely(int userId, final IBinder token, final byte[] hardwareAuthToken,
final IFaceServiceReceiver receiver, final String opPackageName,
final int[] disabledFeatures) {
Utils.checkPermission(getContext(), MANAGE_BIOMETRIC);
// TODO(b/145027036): Implement this.
return -1;
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_BIOMETRIC)
@Override // Binder call
public void cancelEnrollment(final IBinder token, long requestId) {
Utils.checkPermission(getContext(), MANAGE_BIOMETRIC);
final Pair<Integer, ServiceProvider> provider = getSingleProvider();
if (provider == null) {
@@ -255,11 +255,11 @@ public class FaceService extends SystemService {
provider.second.cancelEnrollment(provider.first, token, requestId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public long authenticate(final IBinder token, final long operationId, int userId,
final IFaceServiceReceiver receiver, final String opPackageName,
boolean isKeyguardBypassEnabled) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
// TODO(b/152413782): If the sensor supports face detect and the device is encrypted or
// lockdown, something wrong happened. See similar path in FingerprintService.
@@ -285,10 +285,10 @@ public class FaceService extends SystemService {
statsClient, isKeyguard, isKeyguardBypassEnabled);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public long detectFace(final IBinder token, final int userId,
final IFaceServiceReceiver receiver, final String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
if (!Utils.isKeyguard(getContext(), opPackageName)) {
Slog.w(TAG, "detectFace called from non-sysui package: " + opPackageName);
return -1;
@@ -312,12 +312,12 @@ public class FaceService extends SystemService {
BiometricsProtoEnums.CLIENT_KEYGUARD);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void prepareForAuthentication(int sensorId, boolean requireConfirmation,
IBinder token, long operationId, int userId,
IBiometricSensorReceiver sensorReceiver, String opPackageName, long requestId,
int cookie, boolean allowBackgroundAuthentication) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -333,9 +333,9 @@ public class FaceService extends SystemService {
allowBackgroundAuthentication, isKeyguardBypassEnabled);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void startPreparedClient(int sensorId, int cookie) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -346,10 +346,10 @@ public class FaceService extends SystemService {
provider.startPreparedClient(sensorId, cookie);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void cancelAuthentication(final IBinder token, final String opPackageName,
final long requestId) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final Pair<Integer, ServiceProvider> provider = getSingleProvider();
if (provider == null) {
@@ -360,10 +360,10 @@ public class FaceService extends SystemService {
provider.second.cancelAuthentication(provider.first, token, requestId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void cancelFaceDetect(final IBinder token, final String opPackageName,
final long requestId) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
if (!Utils.isKeyguard(getContext(), opPackageName)) {
Slog.w(TAG, "cancelFaceDetect called from non-sysui package: "
+ opPackageName);
@@ -379,10 +379,10 @@ public class FaceService extends SystemService {
provider.second.cancelFaceDetect(provider.first, token, requestId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void cancelAuthenticationFromService(int sensorId, final IBinder token,
final String opPackageName, final long requestId) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -393,10 +393,10 @@ public class FaceService extends SystemService {
provider.cancelAuthentication(sensorId, token, requestId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void remove(final IBinder token, final int faceId, final int userId,
final IFaceServiceReceiver receiver, final String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final Pair<Integer, ServiceProvider> provider = getSingleProvider();
if (provider == null) {
@@ -408,10 +408,10 @@ public class FaceService extends SystemService {
opPackageName);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void removeAll(final IBinder token, final int userId,
final IFaceServiceReceiver receiver, final String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final FaceServiceReceiver internalReceiver = new FaceServiceReceiver() {
int sensorsFinishedRemoving = 0;
@@ -441,10 +441,10 @@ public class FaceService extends SystemService {
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void addLockoutResetCallback(final IBiometricServiceLockoutResetCallback callback,
final String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
mLockoutResetDispatcher.addCallback(callback, opPackageName);
}
@@ -501,9 +501,9 @@ public class FaceService extends SystemService {
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public boolean isHardwareDetected(int sensorId, String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final long token = Binder.clearCallingIdentity();
try {
@@ -518,9 +518,9 @@ public class FaceService extends SystemService {
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public List<Face> getEnrolledFaces(int sensorId, int userId, String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
if (userId != UserHandle.getCallingUserId()) {
Utils.checkPermission(getContext(), INTERACT_ACROSS_USERS);
@@ -535,9 +535,9 @@ public class FaceService extends SystemService {
return provider.getEnrolledFaces(sensorId, userId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public boolean hasEnrolledFaces(int sensorId, int userId, String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
if (userId != UserHandle.getCallingUserId()) {
Utils.checkPermission(getContext(), INTERACT_ACROSS_USERS);
@@ -552,9 +552,9 @@ public class FaceService extends SystemService {
return provider.getEnrolledFaces(sensorId, userId).size() > 0;
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public @LockoutTracker.LockoutMode int getLockoutModeForUser(int sensorId, int userId) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -565,10 +565,10 @@ public class FaceService extends SystemService {
return provider.getLockoutModeForUser(sensorId, userId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public void invalidateAuthenticatorId(int sensorId, int userId,
IInvalidationCallback callback) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -578,9 +578,9 @@ public class FaceService extends SystemService {
provider.scheduleInvalidateAuthenticatorId(sensorId, userId, callback);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public long getAuthenticatorId(int sensorId, int userId) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -591,10 +591,10 @@ public class FaceService extends SystemService {
return provider.getAuthenticatorId(sensorId, userId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void resetLockout(IBinder token, int sensorId, int userId, byte[] hardwareAuthToken,
String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -605,11 +605,11 @@ public class FaceService extends SystemService {
provider.scheduleResetLockout(sensorId, userId, hardwareAuthToken);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public void setFeature(final IBinder token, int userId, int feature, boolean enabled,
final byte[] hardwareAuthToken, IFaceServiceReceiver receiver,
final String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final Pair<Integer, ServiceProvider> provider = getSingleProvider();
if (provider == null) {
@@ -621,10 +621,10 @@ public class FaceService extends SystemService {
hardwareAuthToken, receiver, opPackageName);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_BIOMETRIC)
@Override
public void getFeature(final IBinder token, int userId, int feature,
IFaceServiceReceiver receiver, final String opPackageName) {
Utils.checkPermission(getContext(), MANAGE_BIOMETRIC);
final Pair<Integer, ServiceProvider> provider = getSingleProvider();
if (provider == null) {
@@ -667,10 +667,10 @@ public class FaceService extends SystemService {
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void registerAuthenticators(
@NonNull List<FaceSensorPropertiesInternal> hidlSensors) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
// Some HAL might not be started before the system service and will cause the code below
// to wait, and some of the operations below might take a significant amount of time to

View File

@@ -138,26 +138,26 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
mRandom = new Random();
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void setTestHalEnabled(boolean enabled) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mProvider.setTestHalEnabled(enabled);
mSensor.setTestHalEnabled(enabled);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void startEnroll(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mProvider.scheduleEnroll(mSensorId, new Binder(), new byte[69], userId, mReceiver,
mContext.getOpPackageName(), new int[0] /* disabledFeatures */,
null /* previewSurface */, false /* debugConsent */);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void finishEnroll(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
int nextRandomId = mRandom.nextInt();
while (mEnrollmentIds.contains(nextRandomId)) {
@@ -169,9 +169,9 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
.onEnrollmentProgress(nextRandomId, 0 /* remaining */);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void acceptAuthentication(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
// Fake authentication with any of the existing faces
List<Face> faces = FaceUtils.getInstance(mSensorId)
@@ -185,17 +185,17 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
HardwareAuthTokenUtils.toHardwareAuthToken(new byte[69]));
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void rejectAuthentication(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mSensor.getSessionForUser(userId).getHalSessionCallback().onAuthenticationFailed();
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
// TODO(b/178414967): replace with notifyAuthenticationFrame and notifyEnrollmentFrame.
@Override
public void notifyAcquired(int userId, int acquireInfo) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
BaseFrame data = new BaseFrame();
data.acquiredInfo = (byte) acquireInfo;
@@ -209,17 +209,17 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
authenticationFrame);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void notifyError(int userId, int errorCode) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mSensor.getSessionForUser(userId).getHalSessionCallback().onError((byte) errorCode,
0 /* vendorCode */);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void cleanupInternalState(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
Slog.d(TAG, "cleanupInternalState: " + userId);
mProvider.scheduleInternalCleanup(mSensorId, userId, new ClientMonitorCallback() {

View File

@@ -127,25 +127,25 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
mRandom = new Random();
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void setTestHalEnabled(boolean enabled) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mFace10.setTestHalEnabled(enabled);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void startEnroll(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mFace10.scheduleEnroll(mSensorId, new Binder(), new byte[69], userId, mReceiver,
mContext.getOpPackageName(), new int[0] /* disabledFeatures */,
null /* previewSurface */, false /* debugConsent */);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void finishEnroll(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
int nextRandomId = mRandom.nextInt();
while (mEnrollmentIds.contains(nextRandomId)) {
@@ -157,9 +157,9 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
nextRandomId /* faceId */, userId, 0);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void acceptAuthentication(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
// Fake authentication with any of the existing fingers
List<Face> faces = FaceUtils.getLegacyInstance(mSensorId)
@@ -173,30 +173,30 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
mHalResultController.onAuthenticated(0 /* deviceId */, fid, userId, hat);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void rejectAuthentication(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mHalResultController.onAuthenticated(0 /* deviceId */, 0 /* faceId */, userId, null);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void notifyAcquired(int userId, int acquireInfo) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mHalResultController.onAcquired(0 /* deviceId */, userId, acquireInfo, 0 /* vendorCode */);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void notifyError(int userId, int errorCode) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mHalResultController.onError(0 /* deviceId */, userId, errorCode, 0 /* vendorCode */);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void cleanupInternalState(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mFace10.scheduleInternalCleanup(mSensorId, userId, new ClientMonitorCallback() {
@Override

View File

@@ -177,10 +177,10 @@ public class FingerprintService extends SystemService {
* Receives the incoming binder calls from FingerprintManager.
*/
private final IFingerprintService.Stub mServiceWrapper = new IFingerprintService.Stub() {
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
@NonNull String opPackageName) {
Utils.checkPermission(getContext(), TEST_BIOMETRIC);
final ServiceProvider provider = getProviderForSensor(sensorId);
@@ -192,9 +192,9 @@ public class FingerprintService extends SystemService {
return provider.createTestSession(sensorId, callback, opPackageName);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public byte[] dumpSensorServiceStateProto(int sensorId, boolean clearSchedulerBuffer) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ProtoOutputStream proto = new ProtoOutputStream();
final ServiceProvider provider = getProviderForSensor(sensorId);
@@ -216,10 +216,10 @@ public class FingerprintService extends SystemService {
return FingerprintService.this.getSensorProperties();
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public FingerprintSensorPropertiesInternal getSensorProperties(int sensorId,
@NonNull String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -230,10 +230,10 @@ public class FingerprintService extends SystemService {
return provider.getSensorProperties(sensorId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_FINGERPRINT)
@Override // Binder call
public void generateChallenge(IBinder token, int sensorId, int userId,
IFingerprintServiceReceiver receiver, String opPackageName) {
Utils.checkPermission(getContext(), MANAGE_FINGERPRINT);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -244,10 +244,10 @@ public class FingerprintService extends SystemService {
provider.scheduleGenerateChallenge(sensorId, userId, token, receiver, opPackageName);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_FINGERPRINT)
@Override // Binder call
public void revokeChallenge(IBinder token, int sensorId, int userId, String opPackageName,
long challenge) {
Utils.checkPermission(getContext(), MANAGE_FINGERPRINT);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -259,11 +259,11 @@ public class FingerprintService extends SystemService {
challenge);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_FINGERPRINT)
@Override // Binder call
public long enroll(final IBinder token, @NonNull final byte[] hardwareAuthToken,
final int userId, final IFingerprintServiceReceiver receiver,
final String opPackageName, @FingerprintManager.EnrollReason int enrollReason) {
Utils.checkPermission(getContext(), MANAGE_FINGERPRINT);
final Pair<Integer, ServiceProvider> provider = getSingleProvider();
if (provider == null) {
@@ -275,9 +275,9 @@ public class FingerprintService extends SystemService {
receiver, opPackageName, enrollReason);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_FINGERPRINT)
@Override // Binder call
public void cancelEnrollment(final IBinder token, long requestId) {
Utils.checkPermission(getContext(), MANAGE_FINGERPRINT);
final Pair<Integer, ServiceProvider> provider = getSingleProvider();
if (provider == null) {
@@ -452,10 +452,10 @@ public class FingerprintService extends SystemService {
new CancellationSignal(), executor, promptCallback, operationId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public long detectFingerprint(final IBinder token, final int userId,
final IFingerprintServiceReceiver receiver, final String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
if (!Utils.isKeyguard(getContext(), opPackageName)) {
Slog.w(TAG, "detectFingerprint called from non-sysui package: " + opPackageName);
return -1;
@@ -479,11 +479,11 @@ public class FingerprintService extends SystemService {
BiometricsProtoEnums.CLIENT_KEYGUARD);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_BIOMETRIC)
@Override // Binder call
public void prepareForAuthentication(int sensorId, IBinder token, long operationId,
int userId, IBiometricSensorReceiver sensorReceiver, String opPackageName,
long requestId, int cookie, boolean allowBackgroundAuthentication) {
Utils.checkPermission(getContext(), MANAGE_BIOMETRIC);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -498,9 +498,9 @@ public class FingerprintService extends SystemService {
allowBackgroundAuthentication);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_BIOMETRIC)
@Override // Binder call
public void startPreparedClient(int sensorId, int cookie) {
Utils.checkPermission(getContext(), MANAGE_BIOMETRIC);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -541,10 +541,10 @@ public class FingerprintService extends SystemService {
provider.second.cancelAuthentication(provider.first, token, requestId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void cancelFingerprintDetect(final IBinder token, final String opPackageName,
final long requestId) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
if (!Utils.isKeyguard(getContext(), opPackageName)) {
Slog.w(TAG, "cancelFingerprintDetect called from non-sysui package: "
+ opPackageName);
@@ -562,11 +562,11 @@ public class FingerprintService extends SystemService {
provider.second.cancelAuthentication(provider.first, token, requestId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_BIOMETRIC)
@Override // Binder call
public void cancelAuthenticationFromService(final int sensorId, final IBinder token,
final String opPackageName, final long requestId) {
Utils.checkPermission(getContext(), MANAGE_BIOMETRIC);
Slog.d(TAG, "cancelAuthenticationFromService, sensorId: " + sensorId);
@@ -579,10 +579,10 @@ public class FingerprintService extends SystemService {
provider.cancelAuthentication(sensorId, token, requestId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_FINGERPRINT)
@Override // Binder call
public void remove(final IBinder token, final int fingerId, final int userId,
final IFingerprintServiceReceiver receiver, final String opPackageName) {
Utils.checkPermission(getContext(), MANAGE_FINGERPRINT);
final Pair<Integer, ServiceProvider> provider = getSingleProvider();
if (provider == null) {
@@ -593,10 +593,10 @@ public class FingerprintService extends SystemService {
opPackageName);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void removeAll(final IBinder token, final int userId,
final IFingerprintServiceReceiver receiver, final String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final FingerprintServiceReceiver internalReceiver = new FingerprintServiceReceiver() {
int sensorsFinishedRemoving = 0;
@@ -626,10 +626,10 @@ public class FingerprintService extends SystemService {
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void addLockoutResetCallback(final IBiometricServiceLockoutResetCallback callback,
final String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
mLockoutResetDispatcher.addCallback(callback, opPackageName);
}
@@ -710,9 +710,9 @@ public class FingerprintService extends SystemService {
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public boolean isHardwareDetected(int sensorId, String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -723,9 +723,9 @@ public class FingerprintService extends SystemService {
return provider.isHardwareDetected(sensorId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_FINGERPRINT)
@Override // Binder call
public void rename(final int fingerId, final int userId, final String name) {
Utils.checkPermission(getContext(), MANAGE_FINGERPRINT);
if (!Utils.isCurrentUserOrProfile(getContext(), userId)) {
return;
}
@@ -779,8 +779,8 @@ public class FingerprintService extends SystemService {
.isEmpty();
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
public boolean hasEnrolledFingerprints(int sensorId, int userId, String opPackageName) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -791,9 +791,9 @@ public class FingerprintService extends SystemService {
return provider.getEnrolledFingerprints(sensorId, userId).size() > 0;
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public @LockoutTracker.LockoutMode int getLockoutModeForUser(int sensorId, int userId) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -803,10 +803,10 @@ public class FingerprintService extends SystemService {
return provider.getLockoutModeForUser(sensorId, userId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public void invalidateAuthenticatorId(int sensorId, int userId,
IInvalidationCallback callback) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -816,9 +816,9 @@ public class FingerprintService extends SystemService {
provider.scheduleInvalidateAuthenticatorId(sensorId, userId, callback);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public long getAuthenticatorId(int sensorId, int userId) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -828,10 +828,10 @@ public class FingerprintService extends SystemService {
return provider.getAuthenticatorId(sensorId, userId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.RESET_FINGERPRINT_LOCKOUT)
@Override // Binder call
public void resetLockout(IBinder token, int sensorId, int userId,
@Nullable byte[] hardwareAuthToken, String opPackageName) {
Utils.checkPermission(getContext(), RESET_FINGERPRINT_LOCKOUT);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -842,28 +842,28 @@ public class FingerprintService extends SystemService {
provider.scheduleResetLockout(sensorId, userId, hardwareAuthToken);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_FINGERPRINT)
@Override
public boolean isClientActive() {
Utils.checkPermission(getContext(), MANAGE_FINGERPRINT);
return mGestureAvailabilityDispatcher.isAnySensorActive();
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_FINGERPRINT)
@Override
public void addClientActiveCallback(IFingerprintClientActiveCallback callback) {
Utils.checkPermission(getContext(), MANAGE_FINGERPRINT);
mGestureAvailabilityDispatcher.registerCallback(callback);
}
@android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_FINGERPRINT)
@Override
public void removeClientActiveCallback(IFingerprintClientActiveCallback callback) {
Utils.checkPermission(getContext(), MANAGE_FINGERPRINT);
mGestureAvailabilityDispatcher.removeCallback(callback);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void registerAuthenticators(
@NonNull List<FingerprintSensorPropertiesInternal> hidlSensors) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
// Some HAL might not be started before the system service and will cause the code below
// to wait, and some of the operations below might take a significant amount of time to
@@ -885,10 +885,10 @@ public class FingerprintService extends SystemService {
thread.quitSafely();
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public void addAuthenticatorsRegisteredCallback(
IFingerprintAuthenticatorsRegisteredCallback callback) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
if (callback == null) {
Slog.e(TAG, "addAuthenticatorsRegisteredCallback, callback is null");
return;
@@ -907,10 +907,10 @@ public class FingerprintService extends SystemService {
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public void onPointerDown(long requestId, int sensorId, int x, int y,
float minor, float major) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -920,9 +920,9 @@ public class FingerprintService extends SystemService {
provider.onPointerDown(requestId, sensorId, x, y, minor, major);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public void onPointerUp(long requestId, int sensorId) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -932,9 +932,9 @@ public class FingerprintService extends SystemService {
provider.onPointerUp(requestId, sensorId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public void onUiReady(long requestId, int sensorId) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
@@ -944,18 +944,18 @@ public class FingerprintService extends SystemService {
provider.onUiReady(requestId, sensorId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public void setUdfpsOverlayController(@NonNull IUdfpsOverlayController controller) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
for (ServiceProvider provider : mServiceProviders) {
provider.setUdfpsOverlayController(controller);
}
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public void setSidefpsController(@NonNull ISidefpsController controller) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
for (ServiceProvider provider : mServiceProviders) {
provider.setSidefpsController(controller);

View File

@@ -131,25 +131,25 @@ class BiometricTestSessionImpl extends ITestSession.Stub {
mRandom = new Random();
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void setTestHalEnabled(boolean enabled) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mProvider.setTestHalEnabled(enabled);
mSensor.setTestHalEnabled(enabled);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void startEnroll(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mProvider.scheduleEnroll(mSensorId, new Binder(), new byte[69], userId, mReceiver,
mContext.getOpPackageName(), FingerprintManager.ENROLL_ENROLL);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void finishEnroll(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
int nextRandomId = mRandom.nextInt();
while (mEnrollmentIds.contains(nextRandomId)) {
@@ -161,9 +161,9 @@ class BiometricTestSessionImpl extends ITestSession.Stub {
.onEnrollmentProgress(nextRandomId, 0 /* remaining */);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void acceptAuthentication(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
// Fake authentication with any of the existing fingers
List<Fingerprint> fingerprints = FingerprintUtils.getInstance(mSensorId)
@@ -177,32 +177,32 @@ class BiometricTestSessionImpl extends ITestSession.Stub {
HardwareAuthTokenUtils.toHardwareAuthToken(new byte[69]));
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void rejectAuthentication(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mSensor.getSessionForUser(userId).getHalSessionCallback().onAuthenticationFailed();
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void notifyAcquired(int userId, int acquireInfo) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mSensor.getSessionForUser(userId).getHalSessionCallback()
.onAcquired((byte) acquireInfo, 0 /* vendorCode */);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void notifyError(int userId, int errorCode) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mSensor.getSessionForUser(userId).getHalSessionCallback().onError((byte) errorCode,
0 /* vendorCode */);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void cleanupInternalState(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
Slog.d(TAG, "cleanupInternalState: " + userId);
mProvider.scheduleInternalCleanup(mSensorId, userId, new ClientMonitorCallback() {

View File

@@ -132,24 +132,24 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
mRandom = new Random();
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void setTestHalEnabled(boolean enabled) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mFingerprint21.setTestHalEnabled(enabled);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void startEnroll(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mFingerprint21.scheduleEnroll(mSensorId, new Binder(), new byte[69], userId, mReceiver,
mContext.getOpPackageName(), FingerprintManager.ENROLL_ENROLL);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void finishEnroll(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
int nextRandomId = mRandom.nextInt();
while (mEnrollmentIds.contains(nextRandomId)) {
@@ -161,9 +161,9 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
nextRandomId /* fingerId */, userId, 0);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void acceptAuthentication(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
// Fake authentication with any of the existing fingers
List<Fingerprint> fingerprints = FingerprintUtils.getLegacyInstance(mSensorId)
@@ -177,30 +177,30 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
mHalResultController.onAuthenticated(0 /* deviceId */, fid, userId, hat);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void rejectAuthentication(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mHalResultController.onAuthenticated(0 /* deviceId */, 0 /* fingerId */, userId, null);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void notifyAcquired(int userId, int acquireInfo) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mHalResultController.onAcquired(0 /* deviceId */, acquireInfo, 0 /* vendorCode */);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void notifyError(int userId, int errorCode) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mHalResultController.onError(0 /* deviceId */, errorCode, 0 /* vendorCode */);
}
@android.annotation.EnforcePermission(android.Manifest.permission.TEST_BIOMETRIC)
@Override
public void cleanupInternalState(int userId) {
Utils.checkPermission(mContext, TEST_BIOMETRIC);
mFingerprint21.scheduleInternalCleanup(mSensorId, userId, new ClientMonitorCallback() {
@Override

View File

@@ -55,9 +55,9 @@ public class IrisService extends SystemService {
* Receives the incoming binder calls from IrisManager.
*/
private final class IrisServiceWrapper extends IIrisService.Stub {
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override // Binder call
public void registerAuthenticators(@NonNull List<SensorPropertiesInternal> hidlSensors) {
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
// Some HAL might not be started before the system service and will cause the code below
// to wait, and some of the operations below might take a significant amount of time to

View File

@@ -465,9 +465,9 @@ public class ContextHubService extends IContextHubService.Stub {
new ContextHubShellCommand(mContext, this).exec(this, in, out, err, args, callback, result);
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
@Override
public int registerCallback(IContextHubCallback callback) throws RemoteException {
checkPermissions();
mCallbacksList.register(callback);
Log.d(TAG, "Added callback, total callbacks " +
@@ -475,15 +475,15 @@ public class ContextHubService extends IContextHubService.Stub {
return 0;
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
@Override
public int[] getContextHubHandles() throws RemoteException {
checkPermissions();
return ContextHubServiceUtil.createPrimitiveIntArray(mContextHubIdToInfoMap.keySet());
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
@Override
public ContextHubInfo getContextHubInfo(int contextHubHandle) throws RemoteException {
checkPermissions();
if (!mContextHubIdToInfoMap.containsKey(contextHubHandle)) {
Log.e(TAG, "Invalid Context Hub handle " + contextHubHandle + " in getContextHubInfo");
return null;
@@ -492,6 +492,7 @@ public class ContextHubService extends IContextHubService.Stub {
return mContextHubIdToInfoMap.get(contextHubHandle);
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
/**
* Returns a List of ContextHubInfo object describing the available hubs.
*
@@ -499,7 +500,6 @@ public class ContextHubService extends IContextHubService.Stub {
*/
@Override
public List<ContextHubInfo> getContextHubs() throws RemoteException {
checkPermissions();
return mContextHubInfoList;
}
@@ -563,9 +563,9 @@ public class ContextHubService extends IContextHubService.Stub {
};
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
@Override
public int loadNanoApp(int contextHubHandle, NanoApp nanoApp) throws RemoteException {
checkPermissions();
if (mContextHubWrapper == null) {
return -1;
}
@@ -590,9 +590,9 @@ public class ContextHubService extends IContextHubService.Stub {
return 0;
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
@Override
public int unloadNanoApp(int nanoAppHandle) throws RemoteException {
checkPermissions();
if (mContextHubWrapper == null) {
return -1;
}
@@ -615,17 +615,17 @@ public class ContextHubService extends IContextHubService.Stub {
return 0;
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
@Override
public NanoAppInstanceInfo getNanoAppInstanceInfo(int nanoAppHandle) throws RemoteException {
checkPermissions();
return mNanoAppStateManager.getNanoAppInstanceInfo(nanoAppHandle);
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
@Override
public int[] findNanoAppOnHub(
int contextHubHandle, NanoAppFilter filter) throws RemoteException {
checkPermissions();
ArrayList<Integer> foundInstances = new ArrayList<>();
if (filter != null) {
@@ -667,10 +667,10 @@ public class ContextHubService extends IContextHubService.Stub {
return true;
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
@Override
public int sendMessage(int contextHubHandle, int nanoAppHandle, ContextHubMessage msg)
throws RemoteException {
checkPermissions();
if (mContextHubWrapper == null) {
return -1;
}
@@ -849,6 +849,7 @@ public class ContextHubService extends IContextHubService.Stub {
return mContextHubIdToInfoMap.containsKey(contextHubId);
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
/**
* Creates and registers a client at the service for the specified Context Hub.
*
@@ -865,7 +866,6 @@ public class ContextHubService extends IContextHubService.Stub {
public IContextHubClient createClient(
int contextHubId, IContextHubClientCallback clientCallback,
@Nullable String attributionTag, String packageName) throws RemoteException {
checkPermissions();
if (!isValidContextHubId(contextHubId)) {
throw new IllegalArgumentException("Invalid context hub ID " + contextHubId);
}
@@ -878,6 +878,7 @@ public class ContextHubService extends IContextHubService.Stub {
contextHubInfo, clientCallback, attributionTag, mTransactionManager, packageName);
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
/**
* Creates and registers a PendingIntent client at the service for the specified Context Hub.
*
@@ -893,7 +894,6 @@ public class ContextHubService extends IContextHubService.Stub {
public IContextHubClient createPendingIntentClient(
int contextHubId, PendingIntent pendingIntent, long nanoAppId,
@Nullable String attributionTag) throws RemoteException {
checkPermissions();
if (!isValidContextHubId(contextHubId)) {
throw new IllegalArgumentException("Invalid context hub ID " + contextHubId);
}
@@ -903,6 +903,7 @@ public class ContextHubService extends IContextHubService.Stub {
contextHubInfo, pendingIntent, nanoAppId, attributionTag, mTransactionManager);
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
/**
* Loads a nanoapp binary at the specified Context hub.
*
@@ -915,7 +916,6 @@ public class ContextHubService extends IContextHubService.Stub {
public void loadNanoAppOnHub(
int contextHubId, IContextHubTransactionCallback transactionCallback,
NanoAppBinary nanoAppBinary) throws RemoteException {
checkPermissions();
if (!checkHalProxyAndContextHubId(
contextHubId, transactionCallback, ContextHubTransaction.TYPE_LOAD_NANOAPP)) {
return;
@@ -932,6 +932,7 @@ public class ContextHubService extends IContextHubService.Stub {
mTransactionManager.addTransaction(transaction);
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
/**
* Unloads a nanoapp from the specified Context Hub.
*
@@ -944,7 +945,6 @@ public class ContextHubService extends IContextHubService.Stub {
public void unloadNanoAppFromHub(
int contextHubId, IContextHubTransactionCallback transactionCallback, long nanoAppId)
throws RemoteException {
checkPermissions();
if (!checkHalProxyAndContextHubId(
contextHubId, transactionCallback, ContextHubTransaction.TYPE_UNLOAD_NANOAPP)) {
return;
@@ -955,6 +955,7 @@ public class ContextHubService extends IContextHubService.Stub {
mTransactionManager.addTransaction(transaction);
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
/**
* Enables a nanoapp at the specified Context Hub.
*
@@ -967,7 +968,6 @@ public class ContextHubService extends IContextHubService.Stub {
public void enableNanoApp(
int contextHubId, IContextHubTransactionCallback transactionCallback, long nanoAppId)
throws RemoteException {
checkPermissions();
if (!checkHalProxyAndContextHubId(
contextHubId, transactionCallback, ContextHubTransaction.TYPE_ENABLE_NANOAPP)) {
return;
@@ -978,6 +978,7 @@ public class ContextHubService extends IContextHubService.Stub {
mTransactionManager.addTransaction(transaction);
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
/**
* Disables a nanoapp at the specified Context Hub.
*
@@ -990,7 +991,6 @@ public class ContextHubService extends IContextHubService.Stub {
public void disableNanoApp(
int contextHubId, IContextHubTransactionCallback transactionCallback, long nanoAppId)
throws RemoteException {
checkPermissions();
if (!checkHalProxyAndContextHubId(
contextHubId, transactionCallback, ContextHubTransaction.TYPE_DISABLE_NANOAPP)) {
return;
@@ -1001,6 +1001,7 @@ public class ContextHubService extends IContextHubService.Stub {
mTransactionManager.addTransaction(transaction);
}
@android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_CONTEXT_HUB)
/**
* Queries for a list of nanoapps from the specified Context hub.
*
@@ -1011,7 +1012,6 @@ public class ContextHubService extends IContextHubService.Stub {
@Override
public void queryNanoApps(int contextHubId, IContextHubTransactionCallback transactionCallback)
throws RemoteException {
checkPermissions();
if (!checkHalProxyAndContextHubId(
contextHubId, transactionCallback, ContextHubTransaction.TYPE_QUERY_NANOAPPS)) {
return;