From c9dfa59d7c4dcc588caaed4f2d09e4ecd11f2455 Mon Sep 17 00:00:00 2001 From: Pyuli Naithani Date: Sat, 3 Jul 2021 00:14:04 +0000 Subject: [PATCH] Add stats log for sensor privacy. Test: statsd_testdrive 381 BUG: 192269258 Change-Id: I69e766b789b4b4a6ca0ad26b3a312baca3dbccd2 --- ...eSleepCameraStatePreferenceController.java | 3 +- .../SmartAutoRotateCameraStateController.java | 3 +- .../privacy/SensorToggleController.java | 4 +- .../utils/SensorPrivacyManagerHelper.java | 10 +++-- .../privacy/SensorToggleControllerTest.java | 38 ++++++++++--------- 5 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/com/android/settings/display/AdaptiveSleepCameraStatePreferenceController.java b/src/com/android/settings/display/AdaptiveSleepCameraStatePreferenceController.java index 20080ce972f..4963e2fc947 100644 --- a/src/com/android/settings/display/AdaptiveSleepCameraStatePreferenceController.java +++ b/src/com/android/settings/display/AdaptiveSleepCameraStatePreferenceController.java @@ -17,6 +17,7 @@ package com.android.settings.display; import static android.hardware.SensorPrivacyManager.Sensors.CAMERA; +import static android.hardware.SensorPrivacyManager.Sources.DIALOG; import android.content.Context; import android.hardware.SensorPrivacyManager; @@ -77,7 +78,7 @@ public class AdaptiveSleepCameraStatePreferenceController { mPreference.setSummary(R.string.adaptive_sleep_camera_lock_summary); mPreference.setPositiveButtonText(R.string.allow); mPreference.setPositiveButtonOnClickListener( - p -> mPrivacyManager.setSensorPrivacy(CAMERA, false)); + p -> mPrivacyManager.setSensorPrivacy(DIALOG, CAMERA, false)); } } } diff --git a/src/com/android/settings/display/SmartAutoRotateCameraStateController.java b/src/com/android/settings/display/SmartAutoRotateCameraStateController.java index a17a903532e..dcb225d6e97 100644 --- a/src/com/android/settings/display/SmartAutoRotateCameraStateController.java +++ b/src/com/android/settings/display/SmartAutoRotateCameraStateController.java @@ -17,6 +17,7 @@ package com.android.settings.display; import static android.hardware.SensorPrivacyManager.Sensors.CAMERA; +import static android.hardware.SensorPrivacyManager.Sources.DIALOG; import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable; @@ -63,7 +64,7 @@ public class SmartAutoRotateCameraStateController extends BasePreferenceControll ((BannerMessagePreference) mPreference) .setPositiveButtonText(R.string.allow) .setPositiveButtonOnClickListener(v -> { - mPrivacyManager.setSensorPrivacy(CAMERA, false); + mPrivacyManager.setSensorPrivacy(DIALOG, CAMERA, false); }); } diff --git a/src/com/android/settings/privacy/SensorToggleController.java b/src/com/android/settings/privacy/SensorToggleController.java index 9e8aca2de2d..60f19d17128 100644 --- a/src/com/android/settings/privacy/SensorToggleController.java +++ b/src/com/android/settings/privacy/SensorToggleController.java @@ -16,6 +16,8 @@ package com.android.settings.privacy; +import static android.hardware.SensorPrivacyManager.Sources.SETTINGS; + import android.content.Context; import androidx.preference.PreferenceScreen; @@ -51,7 +53,7 @@ public abstract class SensorToggleController extends TogglePreferenceController @Override public boolean setChecked(boolean isChecked) { - mSensorPrivacyManagerHelper.setSensorBlocked(getSensor(), !isChecked); + mSensorPrivacyManagerHelper.setSensorBlocked(SETTINGS, getSensor(), !isChecked); return true; } diff --git a/src/com/android/settings/utils/SensorPrivacyManagerHelper.java b/src/com/android/settings/utils/SensorPrivacyManagerHelper.java index 13a987d73d4..8872f699478 100644 --- a/src/com/android/settings/utils/SensorPrivacyManagerHelper.java +++ b/src/com/android/settings/utils/SensorPrivacyManagerHelper.java @@ -153,21 +153,23 @@ public class SensorPrivacyManagerHelper { /** * Sets the sensor privacy for the current user. + * @param source The source with which sensor privacy is toggled. * @param sensor The sensor to set for * @param blocked The state to set to */ - public void setSensorBlocked(int sensor, boolean blocked) { - mSensorPrivacyManager.setSensorPrivacy(sensor, blocked); + public void setSensorBlocked(int source, int sensor, boolean blocked) { + mSensorPrivacyManager.setSensorPrivacy(source, sensor, blocked); } /** * Sets the sensor privacy for the given user. + * @param source The source with which sensor privacy is toggled. * @param sensor The sensor to set for * @param blocked The state to set to * @param userId The user to set for */ - public void setSensorBlocked(int sensor, boolean blocked, int userId) { - mSensorPrivacyManager.setSensorPrivacy(sensor, blocked, userId); + public void setSensorBlocked(int source, int sensor, boolean blocked, int userId) { + mSensorPrivacyManager.setSensorPrivacy(source, sensor, blocked, userId); } /** diff --git a/tests/robotests/src/com/android/settings/privacy/SensorToggleControllerTest.java b/tests/robotests/src/com/android/settings/privacy/SensorToggleControllerTest.java index b38dbe8fd61..a6a16fc0e59 100644 --- a/tests/robotests/src/com/android/settings/privacy/SensorToggleControllerTest.java +++ b/tests/robotests/src/com/android/settings/privacy/SensorToggleControllerTest.java @@ -18,11 +18,13 @@ package com.android.settings.privacy; import static android.hardware.SensorPrivacyManager.Sensors.CAMERA; import static android.hardware.SensorPrivacyManager.Sensors.MICROPHONE; +import static android.hardware.SensorPrivacyManager.Sources.OTHER; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; @@ -91,14 +93,14 @@ public class SensorToggleControllerTest { listener.onSensorPrivacyChanged(MICROPHONE, mMicState); } return null; - }).when(mSensorPrivacyManager).setSensorPrivacy(eq(MICROPHONE), anyBoolean()); + }).when(mSensorPrivacyManager).setSensorPrivacy(anyInt(), eq(MICROPHONE), anyBoolean()); doAnswer(invocation -> { mCamState = invocation.getArgument(1); for (OnSensorPrivacyChangedListener listener : mMicListeners) { listener.onSensorPrivacyChanged(CAMERA, mMicState); } return null; - }).when(mSensorPrivacyManager).setSensorPrivacy(eq(CAMERA), anyBoolean()); + }).when(mSensorPrivacyManager).setSensorPrivacy(anyInt(), eq(CAMERA), anyBoolean()); doAnswer(invocation -> mMicListeners.add(invocation.getArgument(1))) .when(mSensorPrivacyManager).addSensorPrivacyListener(eq(MICROPHONE), any()); @@ -108,37 +110,37 @@ public class SensorToggleControllerTest { @Test public void isChecked_disableMicrophoneSensorPrivacy_returnTrue() { - mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, false); + mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, false); MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle"); assertTrue(micToggleController.isChecked()); } @Test public void isChecked_enableMicrophoneSensorPrivacy_returnFalse() { - mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, true); + mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, true); MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle"); assertFalse(micToggleController.isChecked()); } @Test public void isChecked_disableMicrophoneSensorPrivacyThenChanged_returnFalse() { - mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, false); + mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, false); MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle"); - mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, true); + mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, true); assertFalse(micToggleController.isChecked()); } @Test public void isChecked_enableMicrophoneSensorPrivacyThenChanged_returnTrue() { - mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, true); + mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, true); MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle"); - mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, false); + mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, false); assertTrue(micToggleController.isChecked()); } @Test public void isMicrophoneSensorPrivacyEnabled_uncheckMicToggle_returnTrue() { - mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, false); + mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, false); MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle"); micToggleController.setChecked(false); assertTrue(mMicState); @@ -146,7 +148,7 @@ public class SensorToggleControllerTest { @Test public void isMicrophoneSensorPrivacyEnabled_checkMicToggle_returnFalse() { - mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, true); + mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, true); MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle"); micToggleController.setChecked(true); assertFalse(mMicState); @@ -154,7 +156,7 @@ public class SensorToggleControllerTest { @Test public void isChecked_disableCameraSensorPrivacy_returnTrue() { - mSensorPrivacyManager.setSensorPrivacy(CAMERA, false); + mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, false); CameraToggleController camToggleController = new CameraToggleController(mContext, "cam_toggle"); assertTrue(camToggleController.isChecked()); @@ -162,7 +164,7 @@ public class SensorToggleControllerTest { @Test public void isChecked_enableCameraSensorPrivacy_returnFalse() { - mSensorPrivacyManager.setSensorPrivacy(CAMERA, true); + mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, true); CameraToggleController camToggleController = new CameraToggleController(mContext, "cam_toggle"); assertFalse(camToggleController.isChecked()); @@ -170,25 +172,25 @@ public class SensorToggleControllerTest { @Test public void isChecked_disableCameraSensorPrivacyThenChanged_returnFalse() { - mSensorPrivacyManager.setSensorPrivacy(CAMERA, false); + mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, false); CameraToggleController camToggleController = new CameraToggleController(mContext, "cam_toggle"); - mSensorPrivacyManager.setSensorPrivacy(CAMERA, true); + mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, true); assertFalse(camToggleController.isChecked()); } @Test public void isChecked_enableCameraSensorPrivacyThenChanged_returnTrue() { - mSensorPrivacyManager.setSensorPrivacy(CAMERA, true); + mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, true); CameraToggleController camToggleController = new CameraToggleController(mContext, "cam_toggle"); - mSensorPrivacyManager.setSensorPrivacy(CAMERA, false); + mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, false); assertTrue(camToggleController.isChecked()); } @Test public void isCameraSensorPrivacyEnabled_uncheckMicToggle_returnTrue() { - mSensorPrivacyManager.setSensorPrivacy(CAMERA, false); + mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, false); CameraToggleController camToggleController = new CameraToggleController(mContext, "cam_toggle"); camToggleController.setChecked(false); @@ -197,7 +199,7 @@ public class SensorToggleControllerTest { @Test public void isCameraSensorPrivacyEnabled_checkMicToggle_returnFalse() { - mSensorPrivacyManager.setSensorPrivacy(CAMERA, true); + mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, true); CameraToggleController camToggleController = new CameraToggleController(mContext, "cam_toggle"); camToggleController.setChecked(true);