Loading core/java/android/provider/Settings.java +17 −1 Original line number Diff line number Diff line Loading @@ -687,7 +687,8 @@ public final class Settings { "com.android.settings.MONITORING_CERT_INFO"; /** * Activity Action: Show settings to allow configuration of privacy options. * Activity Action: Show settings to allow configuration of privacy options, i.e. permission * manager, privacy dashboard, privacy controls and more. * <p> * In some cases, a matching Activity may not exist, so ensure you * safeguard against this. Loading @@ -700,6 +701,21 @@ public final class Settings { public static final String ACTION_PRIVACY_SETTINGS = "android.settings.PRIVACY_SETTINGS"; /** * Activity Action: Show privacy controls sub-page, i.e. privacy (camera/mic) toggles and more. * <p> * In some cases, a matching Activity may not exist, so ensure you * safeguard against this. * <p> * Input: Nothing. * <p> * Output: Nothing. * @hide */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_PRIVACY_CONTROLS = "android.settings.PRIVACY_CONTROLS"; /** * Activity Action: Show settings to allow configuration of VPN. * <p> Loading packages/SystemUI/src/com/android/systemui/qs/tiles/CameraToggleTile.java +4 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.hardware.SensorPrivacyManager.Sensors.Sensor; import android.os.Handler; import android.os.Looper; import android.provider.DeviceConfig; import android.safetycenter.SafetyCenterManager; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; Loading Loading @@ -60,10 +61,11 @@ public class CameraToggleTile extends SensorPrivacyToggleTile { ActivityStarter activityStarter, QSLogger qsLogger, IndividualSensorPrivacyController sensorPrivacyController, KeyguardStateController keyguardStateController) { KeyguardStateController keyguardStateController, SafetyCenterManager safetyCenterManager) { super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger, statusBarStateController, activityStarter, qsLogger, sensorPrivacyController, keyguardStateController); keyguardStateController, safetyCenterManager); } @Override Loading packages/SystemUI/src/com/android/systemui/qs/tiles/MicrophoneToggleTile.java +4 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.hardware.SensorPrivacyManager.Sensors.Sensor; import android.os.Handler; import android.os.Looper; import android.provider.DeviceConfig; import android.safetycenter.SafetyCenterManager; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; Loading Loading @@ -60,10 +61,11 @@ public class MicrophoneToggleTile extends SensorPrivacyToggleTile { ActivityStarter activityStarter, QSLogger qsLogger, IndividualSensorPrivacyController sensorPrivacyController, KeyguardStateController keyguardStateController) { KeyguardStateController keyguardStateController, SafetyCenterManager safetyCenterManager) { super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger, statusBarStateController, activityStarter, qsLogger, sensorPrivacyController, keyguardStateController); keyguardStateController, safetyCenterManager); } @Override Loading packages/SystemUI/src/com/android/systemui/qs/tiles/SensorPrivacyToggleTile.java +11 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.hardware.SensorPrivacyManager.Sensors.Sensor; import android.os.Handler; import android.os.Looper; import android.provider.Settings; import android.safetycenter.SafetyCenterManager; import android.service.quicksettings.Tile; import android.view.View; import android.widget.Switch; Loading Loading @@ -54,6 +55,8 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS private final KeyguardStateController mKeyguard; protected IndividualSensorPrivacyController mSensorPrivacyController; private final SafetyCenterManager mSafetyCenterManager; /** * @return Id of the sensor that will be toggled */ Loading @@ -80,11 +83,13 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS ActivityStarter activityStarter, QSLogger qsLogger, IndividualSensorPrivacyController sensorPrivacyController, KeyguardStateController keyguardStateController) { KeyguardStateController keyguardStateController, SafetyCenterManager safetyCenterManager) { super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger, statusBarStateController, activityStarter, qsLogger); mSensorPrivacyController = sensorPrivacyController; mKeyguard = keyguardStateController; mSafetyCenterManager = safetyCenterManager; mSensorPrivacyController.observe(getLifecycle(), this); } Loading Loading @@ -133,8 +138,12 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS @Override public Intent getLongClickIntent() { if (mSafetyCenterManager.isSafetyCenterEnabled()) { return new Intent(Settings.ACTION_PRIVACY_CONTROLS); } else { return new Intent(Settings.ACTION_PRIVACY_SETTINGS); } } @Override public void onSensorBlockedChanged(int sensor, boolean blocked) { Loading packages/SystemUI/tests/src/com/android/systemui/qs/tiles/CameraToggleTileTest.kt +15 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.systemui.qs.tiles import android.os.Handler import android.provider.Settings import android.safetycenter.SafetyCenterManager import android.testing.AndroidTestingRunner import android.testing.TestableLooper import androidx.test.filters.SmallTest Loading Loading @@ -68,6 +70,8 @@ class CameraToggleTileTest : SysuiTestCase() { private lateinit var keyguardStateController: KeyguardStateController @Mock private lateinit var uiEventLogger: QsEventLoggerFake @Mock private lateinit var safetyCenterManager: SafetyCenterManager private lateinit var testableLooper: TestableLooper private lateinit var tile: CameraToggleTile Loading @@ -89,7 +93,8 @@ class CameraToggleTileTest : SysuiTestCase() { activityStarter, qsLogger, privacyController, keyguardStateController) keyguardStateController, safetyCenterManager) } @After Loading Loading @@ -117,4 +122,13 @@ class CameraToggleTileTest : SysuiTestCase() { assertThat(state.icon) .isEqualTo(QSTileImpl.ResourceIcon.get(R.drawable.qs_camera_access_icon_off)) } @Test fun testLongClickIntent() { whenever(safetyCenterManager.isSafetyCenterEnabled).thenReturn(true) assertThat(tile.longClickIntent?.action).isEqualTo(Settings.ACTION_PRIVACY_CONTROLS) whenever(safetyCenterManager.isSafetyCenterEnabled).thenReturn(false) assertThat(tile.longClickIntent?.action).isEqualTo(Settings.ACTION_PRIVACY_SETTINGS) } } Loading
core/java/android/provider/Settings.java +17 −1 Original line number Diff line number Diff line Loading @@ -687,7 +687,8 @@ public final class Settings { "com.android.settings.MONITORING_CERT_INFO"; /** * Activity Action: Show settings to allow configuration of privacy options. * Activity Action: Show settings to allow configuration of privacy options, i.e. permission * manager, privacy dashboard, privacy controls and more. * <p> * In some cases, a matching Activity may not exist, so ensure you * safeguard against this. Loading @@ -700,6 +701,21 @@ public final class Settings { public static final String ACTION_PRIVACY_SETTINGS = "android.settings.PRIVACY_SETTINGS"; /** * Activity Action: Show privacy controls sub-page, i.e. privacy (camera/mic) toggles and more. * <p> * In some cases, a matching Activity may not exist, so ensure you * safeguard against this. * <p> * Input: Nothing. * <p> * Output: Nothing. * @hide */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_PRIVACY_CONTROLS = "android.settings.PRIVACY_CONTROLS"; /** * Activity Action: Show settings to allow configuration of VPN. * <p> Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/CameraToggleTile.java +4 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.hardware.SensorPrivacyManager.Sensors.Sensor; import android.os.Handler; import android.os.Looper; import android.provider.DeviceConfig; import android.safetycenter.SafetyCenterManager; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; Loading Loading @@ -60,10 +61,11 @@ public class CameraToggleTile extends SensorPrivacyToggleTile { ActivityStarter activityStarter, QSLogger qsLogger, IndividualSensorPrivacyController sensorPrivacyController, KeyguardStateController keyguardStateController) { KeyguardStateController keyguardStateController, SafetyCenterManager safetyCenterManager) { super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger, statusBarStateController, activityStarter, qsLogger, sensorPrivacyController, keyguardStateController); keyguardStateController, safetyCenterManager); } @Override Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/MicrophoneToggleTile.java +4 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.hardware.SensorPrivacyManager.Sensors.Sensor; import android.os.Handler; import android.os.Looper; import android.provider.DeviceConfig; import android.safetycenter.SafetyCenterManager; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; Loading Loading @@ -60,10 +61,11 @@ public class MicrophoneToggleTile extends SensorPrivacyToggleTile { ActivityStarter activityStarter, QSLogger qsLogger, IndividualSensorPrivacyController sensorPrivacyController, KeyguardStateController keyguardStateController) { KeyguardStateController keyguardStateController, SafetyCenterManager safetyCenterManager) { super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger, statusBarStateController, activityStarter, qsLogger, sensorPrivacyController, keyguardStateController); keyguardStateController, safetyCenterManager); } @Override Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/SensorPrivacyToggleTile.java +11 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.hardware.SensorPrivacyManager.Sensors.Sensor; import android.os.Handler; import android.os.Looper; import android.provider.Settings; import android.safetycenter.SafetyCenterManager; import android.service.quicksettings.Tile; import android.view.View; import android.widget.Switch; Loading Loading @@ -54,6 +55,8 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS private final KeyguardStateController mKeyguard; protected IndividualSensorPrivacyController mSensorPrivacyController; private final SafetyCenterManager mSafetyCenterManager; /** * @return Id of the sensor that will be toggled */ Loading @@ -80,11 +83,13 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS ActivityStarter activityStarter, QSLogger qsLogger, IndividualSensorPrivacyController sensorPrivacyController, KeyguardStateController keyguardStateController) { KeyguardStateController keyguardStateController, SafetyCenterManager safetyCenterManager) { super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger, statusBarStateController, activityStarter, qsLogger); mSensorPrivacyController = sensorPrivacyController; mKeyguard = keyguardStateController; mSafetyCenterManager = safetyCenterManager; mSensorPrivacyController.observe(getLifecycle(), this); } Loading Loading @@ -133,8 +138,12 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS @Override public Intent getLongClickIntent() { if (mSafetyCenterManager.isSafetyCenterEnabled()) { return new Intent(Settings.ACTION_PRIVACY_CONTROLS); } else { return new Intent(Settings.ACTION_PRIVACY_SETTINGS); } } @Override public void onSensorBlockedChanged(int sensor, boolean blocked) { Loading
packages/SystemUI/tests/src/com/android/systemui/qs/tiles/CameraToggleTileTest.kt +15 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.systemui.qs.tiles import android.os.Handler import android.provider.Settings import android.safetycenter.SafetyCenterManager import android.testing.AndroidTestingRunner import android.testing.TestableLooper import androidx.test.filters.SmallTest Loading Loading @@ -68,6 +70,8 @@ class CameraToggleTileTest : SysuiTestCase() { private lateinit var keyguardStateController: KeyguardStateController @Mock private lateinit var uiEventLogger: QsEventLoggerFake @Mock private lateinit var safetyCenterManager: SafetyCenterManager private lateinit var testableLooper: TestableLooper private lateinit var tile: CameraToggleTile Loading @@ -89,7 +93,8 @@ class CameraToggleTileTest : SysuiTestCase() { activityStarter, qsLogger, privacyController, keyguardStateController) keyguardStateController, safetyCenterManager) } @After Loading Loading @@ -117,4 +122,13 @@ class CameraToggleTileTest : SysuiTestCase() { assertThat(state.icon) .isEqualTo(QSTileImpl.ResourceIcon.get(R.drawable.qs_camera_access_icon_off)) } @Test fun testLongClickIntent() { whenever(safetyCenterManager.isSafetyCenterEnabled).thenReturn(true) assertThat(tile.longClickIntent?.action).isEqualTo(Settings.ACTION_PRIVACY_CONTROLS) whenever(safetyCenterManager.isSafetyCenterEnabled).thenReturn(false) assertThat(tile.longClickIntent?.action).isEqualTo(Settings.ACTION_PRIVACY_SETTINGS) } }