Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e81b697b authored by Manjeet Rulhania's avatar Manjeet Rulhania Committed by Android (Google) Code Review
Browse files

Merge "Fix privacy controls redirection" into main

parents c5e04eff 1e2bbb47
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -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.
@@ -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>
+4 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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
+4 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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
+11 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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
     */
@@ -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);
    }

@@ -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) {
+15 −1
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -89,7 +93,8 @@ class CameraToggleTileTest : SysuiTestCase() {
                activityStarter,
                qsLogger,
                privacyController,
                keyguardStateController)
                keyguardStateController,
                safetyCenterManager)
    }

    @After
@@ -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