Merge "Add stats log for sensor privacy." into sc-dev

This commit is contained in:
Pyuli Naithani
2021-07-08 17:24:52 +00:00
committed by Android (Google) Code Review
5 changed files with 33 additions and 25 deletions

View File

@@ -17,6 +17,7 @@
package com.android.settings.display; package com.android.settings.display;
import static android.hardware.SensorPrivacyManager.Sensors.CAMERA; import static android.hardware.SensorPrivacyManager.Sensors.CAMERA;
import static android.hardware.SensorPrivacyManager.Sources.DIALOG;
import android.content.Context; import android.content.Context;
import android.hardware.SensorPrivacyManager; import android.hardware.SensorPrivacyManager;
@@ -77,7 +78,7 @@ public class AdaptiveSleepCameraStatePreferenceController {
mPreference.setSummary(R.string.adaptive_sleep_camera_lock_summary); mPreference.setSummary(R.string.adaptive_sleep_camera_lock_summary);
mPreference.setPositiveButtonText(R.string.allow); mPreference.setPositiveButtonText(R.string.allow);
mPreference.setPositiveButtonOnClickListener( mPreference.setPositiveButtonOnClickListener(
p -> mPrivacyManager.setSensorPrivacy(CAMERA, false)); p -> mPrivacyManager.setSensorPrivacy(DIALOG, CAMERA, false));
} }
} }
} }

View File

@@ -17,6 +17,7 @@
package com.android.settings.display; package com.android.settings.display;
import static android.hardware.SensorPrivacyManager.Sensors.CAMERA; import static android.hardware.SensorPrivacyManager.Sensors.CAMERA;
import static android.hardware.SensorPrivacyManager.Sources.DIALOG;
import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable; import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable;
@@ -63,7 +64,7 @@ public class SmartAutoRotateCameraStateController extends BasePreferenceControll
((BannerMessagePreference) mPreference) ((BannerMessagePreference) mPreference)
.setPositiveButtonText(R.string.allow) .setPositiveButtonText(R.string.allow)
.setPositiveButtonOnClickListener(v -> { .setPositiveButtonOnClickListener(v -> {
mPrivacyManager.setSensorPrivacy(CAMERA, false); mPrivacyManager.setSensorPrivacy(DIALOG, CAMERA, false);
}); });
} }

View File

@@ -16,6 +16,8 @@
package com.android.settings.privacy; package com.android.settings.privacy;
import static android.hardware.SensorPrivacyManager.Sources.SETTINGS;
import android.content.Context; import android.content.Context;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
@@ -51,7 +53,7 @@ public abstract class SensorToggleController extends TogglePreferenceController
@Override @Override
public boolean setChecked(boolean isChecked) { public boolean setChecked(boolean isChecked) {
mSensorPrivacyManagerHelper.setSensorBlocked(getSensor(), !isChecked); mSensorPrivacyManagerHelper.setSensorBlocked(SETTINGS, getSensor(), !isChecked);
return true; return true;
} }

View File

@@ -153,21 +153,23 @@ public class SensorPrivacyManagerHelper {
/** /**
* Sets the sensor privacy for the current user. * 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 sensor The sensor to set for
* @param blocked The state to set to * @param blocked The state to set to
*/ */
public void setSensorBlocked(int sensor, boolean blocked) { public void setSensorBlocked(int source, int sensor, boolean blocked) {
mSensorPrivacyManager.setSensorPrivacy(sensor, blocked); mSensorPrivacyManager.setSensorPrivacy(source, sensor, blocked);
} }
/** /**
* Sets the sensor privacy for the given user. * 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 sensor The sensor to set for
* @param blocked The state to set to * @param blocked The state to set to
* @param userId The user to set for * @param userId The user to set for
*/ */
public void setSensorBlocked(int sensor, boolean blocked, int userId) { public void setSensorBlocked(int source, int sensor, boolean blocked, int userId) {
mSensorPrivacyManager.setSensorPrivacy(sensor, blocked, userId); mSensorPrivacyManager.setSensorPrivacy(source, sensor, blocked, userId);
} }
/** /**

View File

@@ -18,11 +18,13 @@ package com.android.settings.privacy;
import static android.hardware.SensorPrivacyManager.Sensors.CAMERA; import static android.hardware.SensorPrivacyManager.Sensors.CAMERA;
import static android.hardware.SensorPrivacyManager.Sensors.MICROPHONE; 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.assertFalse;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
@@ -91,14 +93,14 @@ public class SensorToggleControllerTest {
listener.onSensorPrivacyChanged(MICROPHONE, mMicState); listener.onSensorPrivacyChanged(MICROPHONE, mMicState);
} }
return null; return null;
}).when(mSensorPrivacyManager).setSensorPrivacy(eq(MICROPHONE), anyBoolean()); }).when(mSensorPrivacyManager).setSensorPrivacy(anyInt(), eq(MICROPHONE), anyBoolean());
doAnswer(invocation -> { doAnswer(invocation -> {
mCamState = invocation.getArgument(1); mCamState = invocation.getArgument(1);
for (OnSensorPrivacyChangedListener listener : mMicListeners) { for (OnSensorPrivacyChangedListener listener : mMicListeners) {
listener.onSensorPrivacyChanged(CAMERA, mMicState); listener.onSensorPrivacyChanged(CAMERA, mMicState);
} }
return null; return null;
}).when(mSensorPrivacyManager).setSensorPrivacy(eq(CAMERA), anyBoolean()); }).when(mSensorPrivacyManager).setSensorPrivacy(anyInt(), eq(CAMERA), anyBoolean());
doAnswer(invocation -> mMicListeners.add(invocation.getArgument(1))) doAnswer(invocation -> mMicListeners.add(invocation.getArgument(1)))
.when(mSensorPrivacyManager).addSensorPrivacyListener(eq(MICROPHONE), any()); .when(mSensorPrivacyManager).addSensorPrivacyListener(eq(MICROPHONE), any());
@@ -108,37 +110,37 @@ public class SensorToggleControllerTest {
@Test @Test
public void isChecked_disableMicrophoneSensorPrivacy_returnTrue() { public void isChecked_disableMicrophoneSensorPrivacy_returnTrue() {
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, false); mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, false);
MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle"); MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle");
assertTrue(micToggleController.isChecked()); assertTrue(micToggleController.isChecked());
} }
@Test @Test
public void isChecked_enableMicrophoneSensorPrivacy_returnFalse() { public void isChecked_enableMicrophoneSensorPrivacy_returnFalse() {
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, true); mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, true);
MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle"); MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle");
assertFalse(micToggleController.isChecked()); assertFalse(micToggleController.isChecked());
} }
@Test @Test
public void isChecked_disableMicrophoneSensorPrivacyThenChanged_returnFalse() { public void isChecked_disableMicrophoneSensorPrivacyThenChanged_returnFalse() {
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, false); mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, false);
MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle"); MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle");
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, true); mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, true);
assertFalse(micToggleController.isChecked()); assertFalse(micToggleController.isChecked());
} }
@Test @Test
public void isChecked_enableMicrophoneSensorPrivacyThenChanged_returnTrue() { public void isChecked_enableMicrophoneSensorPrivacyThenChanged_returnTrue() {
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, true); mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, true);
MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle"); MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle");
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, false); mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, false);
assertTrue(micToggleController.isChecked()); assertTrue(micToggleController.isChecked());
} }
@Test @Test
public void isMicrophoneSensorPrivacyEnabled_uncheckMicToggle_returnTrue() { public void isMicrophoneSensorPrivacyEnabled_uncheckMicToggle_returnTrue() {
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, false); mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, false);
MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle"); MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle");
micToggleController.setChecked(false); micToggleController.setChecked(false);
assertTrue(mMicState); assertTrue(mMicState);
@@ -146,7 +148,7 @@ public class SensorToggleControllerTest {
@Test @Test
public void isMicrophoneSensorPrivacyEnabled_checkMicToggle_returnFalse() { public void isMicrophoneSensorPrivacyEnabled_checkMicToggle_returnFalse() {
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, true); mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, true);
MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle"); MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle");
micToggleController.setChecked(true); micToggleController.setChecked(true);
assertFalse(mMicState); assertFalse(mMicState);
@@ -154,7 +156,7 @@ public class SensorToggleControllerTest {
@Test @Test
public void isChecked_disableCameraSensorPrivacy_returnTrue() { public void isChecked_disableCameraSensorPrivacy_returnTrue() {
mSensorPrivacyManager.setSensorPrivacy(CAMERA, false); mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, false);
CameraToggleController camToggleController = CameraToggleController camToggleController =
new CameraToggleController(mContext, "cam_toggle"); new CameraToggleController(mContext, "cam_toggle");
assertTrue(camToggleController.isChecked()); assertTrue(camToggleController.isChecked());
@@ -162,7 +164,7 @@ public class SensorToggleControllerTest {
@Test @Test
public void isChecked_enableCameraSensorPrivacy_returnFalse() { public void isChecked_enableCameraSensorPrivacy_returnFalse() {
mSensorPrivacyManager.setSensorPrivacy(CAMERA, true); mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, true);
CameraToggleController camToggleController = CameraToggleController camToggleController =
new CameraToggleController(mContext, "cam_toggle"); new CameraToggleController(mContext, "cam_toggle");
assertFalse(camToggleController.isChecked()); assertFalse(camToggleController.isChecked());
@@ -170,25 +172,25 @@ public class SensorToggleControllerTest {
@Test @Test
public void isChecked_disableCameraSensorPrivacyThenChanged_returnFalse() { public void isChecked_disableCameraSensorPrivacyThenChanged_returnFalse() {
mSensorPrivacyManager.setSensorPrivacy(CAMERA, false); mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, false);
CameraToggleController camToggleController = CameraToggleController camToggleController =
new CameraToggleController(mContext, "cam_toggle"); new CameraToggleController(mContext, "cam_toggle");
mSensorPrivacyManager.setSensorPrivacy(CAMERA, true); mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, true);
assertFalse(camToggleController.isChecked()); assertFalse(camToggleController.isChecked());
} }
@Test @Test
public void isChecked_enableCameraSensorPrivacyThenChanged_returnTrue() { public void isChecked_enableCameraSensorPrivacyThenChanged_returnTrue() {
mSensorPrivacyManager.setSensorPrivacy(CAMERA, true); mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, true);
CameraToggleController camToggleController = CameraToggleController camToggleController =
new CameraToggleController(mContext, "cam_toggle"); new CameraToggleController(mContext, "cam_toggle");
mSensorPrivacyManager.setSensorPrivacy(CAMERA, false); mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, false);
assertTrue(camToggleController.isChecked()); assertTrue(camToggleController.isChecked());
} }
@Test @Test
public void isCameraSensorPrivacyEnabled_uncheckMicToggle_returnTrue() { public void isCameraSensorPrivacyEnabled_uncheckMicToggle_returnTrue() {
mSensorPrivacyManager.setSensorPrivacy(CAMERA, false); mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, false);
CameraToggleController camToggleController = CameraToggleController camToggleController =
new CameraToggleController(mContext, "cam_toggle"); new CameraToggleController(mContext, "cam_toggle");
camToggleController.setChecked(false); camToggleController.setChecked(false);
@@ -197,7 +199,7 @@ public class SensorToggleControllerTest {
@Test @Test
public void isCameraSensorPrivacyEnabled_checkMicToggle_returnFalse() { public void isCameraSensorPrivacyEnabled_checkMicToggle_returnFalse() {
mSensorPrivacyManager.setSensorPrivacy(CAMERA, true); mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, true);
CameraToggleController camToggleController = CameraToggleController camToggleController =
new CameraToggleController(mContext, "cam_toggle"); new CameraToggleController(mContext, "cam_toggle");
camToggleController.setChecked(true); camToggleController.setChecked(true);