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

Commit 1892798a authored by Evan Severson's avatar Evan Severson Committed by Android (Google) Code Review
Browse files

Merge "Make some small fixes to sensor privacy ui" into sc-dev

parents 32b5e4cf 2757d3e3
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
import com.android.systemui.statusbar.policy.KeyguardStateController;

import javax.inject.Inject;

@@ -49,9 +50,10 @@ public class CameraToggleTile extends SensorPrivacyToggleTile {
            StatusBarStateController statusBarStateController,
            ActivityStarter activityStarter,
            QSLogger qsLogger,
            IndividualSensorPrivacyController sensorPrivacyController) {
            IndividualSensorPrivacyController sensorPrivacyController,
            KeyguardStateController keyguardStateController) {
        super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController,
                activityStarter, qsLogger, sensorPrivacyController);
                activityStarter, qsLogger, sensorPrivacyController, keyguardStateController);
    }

    @Override
+4 −2
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
import com.android.systemui.statusbar.policy.KeyguardStateController;

import javax.inject.Inject;

@@ -49,9 +50,10 @@ public class MicrophoneToggleTile extends SensorPrivacyToggleTile {
            StatusBarStateController statusBarStateController,
            ActivityStarter activityStarter,
            QSLogger qsLogger,
            IndividualSensorPrivacyController sensorPrivacyController) {
            IndividualSensorPrivacyController sensorPrivacyController,
            KeyguardStateController keyguardStateController) {
        super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController,
                activityStarter, qsLogger, sensorPrivacyController);
                activityStarter, qsLogger, sensorPrivacyController, keyguardStateController);
    }

    @Override
+12 −1
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
import com.android.systemui.statusbar.policy.KeyguardStateController;

/**
 * Superclass to toggle individual sensor privacy via quick settings tiles
@@ -42,6 +43,7 @@ import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanState> implements
        IndividualSensorPrivacyController.Callback {

    private final KeyguardStateController mKeyguard;
    private IndividualSensorPrivacyController mSensorPrivacyController;

    /**
@@ -61,10 +63,12 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS
            StatusBarStateController statusBarStateController,
            ActivityStarter activityStarter,
            QSLogger qsLogger,
            IndividualSensorPrivacyController sensorPrivacyController) {
            IndividualSensorPrivacyController sensorPrivacyController,
            KeyguardStateController keyguardStateController) {
        super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController,
                activityStarter, qsLogger);
        mSensorPrivacyController = sensorPrivacyController;
        mKeyguard = keyguardStateController;
        mSensorPrivacyController.observe(getLifecycle(), this);
    }

@@ -75,6 +79,13 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS

    @Override
    protected void handleClick() {
        if (mKeyguard.isMethodSecure() && mKeyguard.isShowing()) {
            mActivityStarter.postQSRunnableDismissingKeyguard(() -> {
                mSensorPrivacyController.setSensorBlocked(getSensorId(),
                        !mSensorPrivacyController.isSensorBlocked(getSensorId()));
            });
            return;
        }
        mSensorPrivacyController.setSensorBlocked(getSensorId(),
                !mSensorPrivacyController.isSensorBlocked(getSensorId()));
    }
+38 −3
Original line number Diff line number Diff line
@@ -17,14 +17,19 @@
package com.android.systemui.sensorprivacy

import android.app.AppOpsManager
import android.app.KeyguardManager
import android.app.KeyguardManager.KeyguardDismissCallback
import android.content.DialogInterface
import android.content.Intent.EXTRA_PACKAGE_NAME
import android.content.pm.PackageManager
import android.content.res.Resources
import android.hardware.SensorPrivacyManager
import android.hardware.SensorPrivacyManager.*
import android.hardware.SensorPrivacyManager.EXTRA_SENSOR
import android.hardware.SensorPrivacyManager.INDIVIDUAL_SENSOR_CAMERA
import android.hardware.SensorPrivacyManager.INDIVIDUAL_SENSOR_MICROPHONE
import android.os.Bundle
import android.text.Html
import android.util.Log
import com.android.internal.app.AlertActivity
import com.android.systemui.R

@@ -35,18 +40,29 @@ import com.android.systemui.R
 * <p>The dialog is started for the user the app is running for which might be a secondary users.
 */
class SensorUseStartedActivity : AlertActivity(), DialogInterface.OnClickListener {

    companion object {
        private val LOG_TAG = SensorUseStartedActivity::class.java.simpleName
    }

    private var sensor = -1
    private lateinit var sensorUsePackageName: String

    private lateinit var sensorPrivacyManager: SensorPrivacyManager
    private lateinit var appOpsManager: AppOpsManager
    private lateinit var keyguardManager: KeyguardManager

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setShowWhenLocked(true)

        setFinishOnTouchOutside(false)

        setResult(RESULT_CANCELED)
        sensorPrivacyManager = getSystemService(SensorPrivacyManager::class.java)!!
        appOpsManager = getSystemService(AppOpsManager::class.java)!!
        keyguardManager = getSystemService(KeyguardManager::class.java)!!

        sensorUsePackageName = intent.getStringExtra(EXTRA_PACKAGE_NAME) ?: return
        sensor = intent.getIntExtra(EXTRA_SENSOR, -1).also {
@@ -107,10 +123,25 @@ class SensorUseStartedActivity : AlertActivity(), DialogInterface.OnClickListene
    override fun onClick(dialog: DialogInterface?, which: Int) {
        when (which) {
            BUTTON_POSITIVE -> {
                if (keyguardManager.isDeviceLocked) {
                    keyguardManager
                            .requestDismissKeyguard(this, object : KeyguardDismissCallback() {
                        override fun onDismissError() {
                            Log.e(LOG_TAG, "Cannot dismiss keyguard")
                        }

                        override fun onDismissSucceeded() {
                            sensorPrivacyManager
                                    .setIndividualSensorPrivacyForProfileGroup(sensor, false)
                            setResult(RESULT_OK)
                        }
                    })
                } else {
                    sensorPrivacyManager.setIndividualSensorPrivacyForProfileGroup(sensor, false)
                    setResult(RESULT_OK)
                }
            }
        }

        dismiss()
    }
@@ -120,4 +151,8 @@ class SensorUseStartedActivity : AlertActivity(), DialogInterface.OnClickListene

        sensorPrivacyManager.suppressIndividualSensorPrivacyReminders(sensorUsePackageName, false)
    }

    override fun onBackPressed() {
        // do not allow backing out
    }
}
 No newline at end of file