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

Commit d60e0cc4 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Provide IndividualSensorPrivacyController instead of bind it

Test: Toggled toggles
Bug: 162549680
Change-Id: I7353c36577c1d78bb7111e16a235fce84d53f888
parent eca12d24
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -63,6 +63,8 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl;
import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyControllerImpl;
import com.android.systemui.statusbar.policy.SensorPrivacyController;
import com.android.systemui.statusbar.policy.SensorPrivacyController;
import com.android.systemui.statusbar.policy.SensorPrivacyControllerImpl;
import com.android.systemui.statusbar.policy.SensorPrivacyControllerImpl;


@@ -128,6 +130,16 @@ public abstract class SystemUIDefaultModule {
        return spC;
        return spC;
    }
    }


    @Provides
    @SysUISingleton
    static IndividualSensorPrivacyController provideIndividualSensorPrivacyController(
            SensorPrivacyManager sensorPrivacyManager) {
        IndividualSensorPrivacyController spC = new IndividualSensorPrivacyControllerImpl(
                sensorPrivacyManager);
        spC.init();
        return spC;
    }

    @Binds
    @Binds
    @SysUISingleton
    @SysUISingleton
    public abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);
    public abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);
+1 −0
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@ import android.hardware.SensorPrivacyManager.IndividualSensor;


public interface IndividualSensorPrivacyController extends
public interface IndividualSensorPrivacyController extends
        CallbackController<IndividualSensorPrivacyController.Callback> {
        CallbackController<IndividualSensorPrivacyController.Callback> {
    void init();


    boolean isSensorBlocked(@IndividualSensor int sensor);
    boolean isSensorBlocked(@IndividualSensor int sensor);


+6 −8
Original line number Original line Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.systemui.statusbar.policy;
import static android.service.SensorPrivacyIndividualEnabledSensorProto.CAMERA;
import static android.service.SensorPrivacyIndividualEnabledSensorProto.CAMERA;
import static android.service.SensorPrivacyIndividualEnabledSensorProto.MICROPHONE;
import static android.service.SensorPrivacyIndividualEnabledSensorProto.MICROPHONE;


import android.content.Context;
import android.hardware.SensorPrivacyManager;
import android.hardware.SensorPrivacyManager;
import android.hardware.SensorPrivacyManager.IndividualSensor;
import android.hardware.SensorPrivacyManager.IndividualSensor;
import android.util.ArraySet;
import android.util.ArraySet;
@@ -29,22 +28,21 @@ import androidx.annotation.NonNull;


import java.util.Set;
import java.util.Set;


import javax.inject.Inject;

public class IndividualSensorPrivacyControllerImpl implements IndividualSensorPrivacyController {
public class IndividualSensorPrivacyControllerImpl implements IndividualSensorPrivacyController {


    private static final int[] SENSORS = new int[] {CAMERA, MICROPHONE};
    private static final int[] SENSORS = new int[] {CAMERA, MICROPHONE};


    private final @NonNull Context mContext;
    private final @NonNull SensorPrivacyManager mSensorPrivacyManager;
    private final @NonNull SensorPrivacyManager mSensorPrivacyManager;
    private final SparseBooleanArray mState = new SparseBooleanArray();
    private final SparseBooleanArray mState = new SparseBooleanArray();
    private final Set<Callback> mCallbacks = new ArraySet<>();
    private final Set<Callback> mCallbacks = new ArraySet<>();


    @Inject
    public IndividualSensorPrivacyControllerImpl(
    public IndividualSensorPrivacyControllerImpl(@NonNull Context context) {
            @NonNull SensorPrivacyManager sensorPrivacyManager) {
        mContext = context;
        mSensorPrivacyManager = sensorPrivacyManager;
        mSensorPrivacyManager = context.getSystemService(SensorPrivacyManager.class);
    }


    @Override
    public void init() {
        for (int sensor : SENSORS) {
        for (int sensor : SENSORS) {
            mSensorPrivacyManager.addSensorPrivacyListener(sensor,
            mSensorPrivacyManager.addSensorPrivacyListener(sensor,
                    (enabled) -> onSensorPrivacyChanged(sensor, enabled));
                    (enabled) -> onSensorPrivacyChanged(sensor, enabled));
+0 −7
Original line number Original line Diff line number Diff line
@@ -32,8 +32,6 @@ import com.android.systemui.statusbar.policy.FlashlightController;
import com.android.systemui.statusbar.policy.FlashlightControllerImpl;
import com.android.systemui.statusbar.policy.FlashlightControllerImpl;
import com.android.systemui.statusbar.policy.HotspotController;
import com.android.systemui.statusbar.policy.HotspotController;
import com.android.systemui.statusbar.policy.HotspotControllerImpl;
import com.android.systemui.statusbar.policy.HotspotControllerImpl;
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyControllerImpl;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardStateControllerImpl;
import com.android.systemui.statusbar.policy.KeyguardStateControllerImpl;
import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.statusbar.policy.LocationController;
@@ -120,11 +118,6 @@ public interface StatusBarPolicyModule {
    NetworkController.AccessPointController provideAccessPointController(
    NetworkController.AccessPointController provideAccessPointController(
            AccessPointControllerImpl accessPointControllerImpl);
            AccessPointControllerImpl accessPointControllerImpl);


    /** */
    @Binds
    IndividualSensorPrivacyController provideIndividualSensorPrivacyController(
            IndividualSensorPrivacyControllerImpl controllerImpl);

    /** */
    /** */
    @SysUISingleton
    @SysUISingleton
    @Provides
    @Provides
+12 −0
Original line number Original line Diff line number Diff line
@@ -64,6 +64,8 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl;
import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyControllerImpl;
import com.android.systemui.statusbar.policy.SensorPrivacyController;
import com.android.systemui.statusbar.policy.SensorPrivacyController;
import com.android.systemui.statusbar.policy.SensorPrivacyControllerImpl;
import com.android.systemui.statusbar.policy.SensorPrivacyControllerImpl;
import com.android.systemui.statusbar.tv.notifications.TvNotificationHandler;
import com.android.systemui.statusbar.tv.notifications.TvNotificationHandler;
@@ -121,6 +123,16 @@ public abstract class TvSystemUIModule {
        return spC;
        return spC;
    }
    }


    @Provides
    @SysUISingleton
    static IndividualSensorPrivacyController provideIndividualSensorPrivacyController(
            SensorPrivacyManager sensorPrivacyManager) {
        IndividualSensorPrivacyController spC = new IndividualSensorPrivacyControllerImpl(
                sensorPrivacyManager);
        spC.init();
        return spC;
    }

    @Binds
    @Binds
    @SysUISingleton
    @SysUISingleton
    abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);
    abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);