From f28937b0b575c01b4f471987111eb9c42b1a47b8 Mon Sep 17 00:00:00 2001 From: Evan Severson Date: Wed, 13 Jan 2021 11:05:56 -0800 Subject: [PATCH 1/2] Make the sensor privacy calls testable Test: Build Bug: 162549680 Change-Id: I0f159034690a1a802cae89c67ab8f68258aea702 --- core/api/test-current.txt | 12 +++++++ .../hardware/SensorPrivacyManager.java | 33 +++++++++++++++++-- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/core/api/test-current.txt b/core/api/test-current.txt index c03461aa77422..c2fb998fec4e9 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -730,6 +730,18 @@ package android.graphics.drawable { } +package android.hardware { + + public final class SensorPrivacyManager { + method public boolean isIndividualSensorPrivacyEnabled(int); + method @RequiresPermission(android.Manifest.permission.MANAGE_SENSOR_PRIVACY) public void setIndividualSensorPrivacy(int, boolean); + method @RequiresPermission(android.Manifest.permission.MANAGE_SENSOR_PRIVACY) public void setIndividualSensorPrivacyForProfileGroup(int, boolean); + field public static final int INDIVIDUAL_SENSOR_CAMERA = 2; // 0x2 + field public static final int INDIVIDUAL_SENSOR_MICROPHONE = 1; // 0x1 + } + +} + package android.hardware.biometrics { public class BiometricManager { diff --git a/core/java/android/hardware/SensorPrivacyManager.java b/core/java/android/hardware/SensorPrivacyManager.java index 8497525f85b3c..e165ad694fcc8 100644 --- a/core/java/android/hardware/SensorPrivacyManager.java +++ b/core/java/android/hardware/SensorPrivacyManager.java @@ -20,6 +20,7 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.RequiresPermission; import android.annotation.SystemService; +import android.annotation.TestApi; import android.content.Context; import android.os.IBinder; import android.os.RemoteException; @@ -40,14 +41,19 @@ import java.lang.annotation.RetentionPolicy; * * @hide */ +@TestApi @SystemService(Context.SENSOR_PRIVACY_SERVICE) public final class SensorPrivacyManager { - /** Microphone */ + /** Microphone + * @hide */ + @TestApi public static final int INDIVIDUAL_SENSOR_MICROPHONE = SensorPrivacyIndividualEnabledSensorProto.MICROPHONE; - /** Camera */ + /** Camera + * @hide */ + @TestApi public static final int INDIVIDUAL_SENSOR_CAMERA = SensorPrivacyIndividualEnabledSensorProto.CAMERA; @@ -66,6 +72,8 @@ public final class SensorPrivacyManager { * A class implementing this interface can register with the {@link * android.hardware.SensorPrivacyManager} to receive notification when the sensor privacy * state changes. + * + * @hide */ public interface OnSensorPrivacyChangedListener { /** @@ -101,6 +109,8 @@ public final class SensorPrivacyManager { /** * Returns the single instance of the SensorPrivacyManager. + * + * @hide */ public static SensorPrivacyManager getInstance(Context context) { synchronized (sInstanceLock) { @@ -121,6 +131,8 @@ public final class SensorPrivacyManager { * Sets sensor privacy to the specified state. * * @param enable the state to which sensor privacy should be set. + * + * @hide */ @RequiresPermission(android.Manifest.permission.MANAGE_SENSOR_PRIVACY) public void setSensorPrivacy(boolean enable) { @@ -137,6 +149,8 @@ public final class SensorPrivacyManager { * * @param listener the OnSensorPrivacyChangedListener to be notified when the state of sensor * privacy changes. + * + * @hide */ public void addSensorPrivacyListener(final OnSensorPrivacyChangedListener listener) { synchronized (mListeners) { @@ -166,6 +180,8 @@ public final class SensorPrivacyManager { * @param sensor the sensor to listen to changes to * @param listener the OnSensorPrivacyChangedListener to be notified when the state of sensor * privacy changes. + * + * @hide */ public void addSensorPrivacyListener(@IndividualSensor int sensor, final OnSensorPrivacyChangedListener listener) { @@ -196,6 +212,8 @@ public final class SensorPrivacyManager { * * @param listener the OnSensorPrivacyChangedListener to be unregistered from notifications when * sensor privacy changes. + * + * @hide */ public void removeSensorPrivacyListener(OnSensorPrivacyChangedListener listener) { synchronized (mListeners) { @@ -215,6 +233,8 @@ public final class SensorPrivacyManager { * Returns whether sensor privacy is currently enabled. * * @return true if sensor privacy is currently enabled, false otherwise. + * + * @hide */ public boolean isSensorPrivacyEnabled() { try { @@ -228,7 +248,10 @@ public final class SensorPrivacyManager { * Returns whether sensor privacy is currently enabled for a specific sensor. * * @return true if sensor privacy is currently enabled, false otherwise. + * + * @hide */ + @TestApi public boolean isIndividualSensorPrivacyEnabled(@IndividualSensor int sensor) { try { return mService.isIndividualSensorPrivacyEnabled(mContext.getUserId(), sensor); @@ -242,7 +265,10 @@ public final class SensorPrivacyManager { * * @param sensor the sensor which to change the state for * @param enable the state to which sensor privacy should be set. + * + * @hide */ + @TestApi @RequiresPermission(android.Manifest.permission.MANAGE_SENSOR_PRIVACY) public void setIndividualSensorPrivacy(@IndividualSensor int sensor, boolean enable) { @@ -259,7 +285,10 @@ public final class SensorPrivacyManager { * * @param sensor the sensor which to change the state for * @param enable the state to which sensor privacy should be set. + * + * @hide */ + @TestApi @RequiresPermission(android.Manifest.permission.MANAGE_SENSOR_PRIVACY) public void setIndividualSensorPrivacyForProfileGroup(@IndividualSensor int sensor, boolean enable) { From 9340d25cbba03a62f6b85bf1b697532d9d07684c Mon Sep 17 00:00:00 2001 From: Evan Severson Date: Wed, 13 Jan 2021 16:15:14 -0800 Subject: [PATCH 2/2] Add MANAGE_SENSOR_PRIVACY to shell permissions Test: test shell commands Bug: 162549680 Change-Id: I8a56b70c928b7ddd3904c2e9533578b531d81757 --- packages/Shell/AndroidManifest.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml index 1415119117f8d..d4d42b97f5b83 100644 --- a/packages/Shell/AndroidManifest.xml +++ b/packages/Shell/AndroidManifest.xml @@ -382,6 +382,9 @@ + + +