Provide IndividualSensorPrivacyController instead of bind it

Test: Toggled toggles
Bug: 162549680
Change-Id: I7353c36577c1d78bb7111e16a235fce84d53f888
This commit is contained in:
Philip P. Moltmann
2021-01-14 13:45:24 -08:00
parent eca12d241c
commit d60e0cc4e1
5 changed files with 31 additions and 15 deletions

View File

@@ -63,6 +63,8 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl;
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.SensorPrivacyControllerImpl;
@@ -128,6 +130,16 @@ public abstract class SystemUIDefaultModule {
return spC;
}
@Provides
@SysUISingleton
static IndividualSensorPrivacyController provideIndividualSensorPrivacyController(
SensorPrivacyManager sensorPrivacyManager) {
IndividualSensorPrivacyController spC = new IndividualSensorPrivacyControllerImpl(
sensorPrivacyManager);
spC.init();
return spC;
}
@Binds
@SysUISingleton
public abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);

View File

@@ -20,6 +20,7 @@ import android.hardware.SensorPrivacyManager.IndividualSensor;
public interface IndividualSensorPrivacyController extends
CallbackController<IndividualSensorPrivacyController.Callback> {
void init();
boolean isSensorBlocked(@IndividualSensor int sensor);

View File

@@ -19,7 +19,6 @@ package com.android.systemui.statusbar.policy;
import static android.service.SensorPrivacyIndividualEnabledSensorProto.CAMERA;
import static android.service.SensorPrivacyIndividualEnabledSensorProto.MICROPHONE;
import android.content.Context;
import android.hardware.SensorPrivacyManager;
import android.hardware.SensorPrivacyManager.IndividualSensor;
import android.util.ArraySet;
@@ -29,22 +28,21 @@ import androidx.annotation.NonNull;
import java.util.Set;
import javax.inject.Inject;
public class IndividualSensorPrivacyControllerImpl implements IndividualSensorPrivacyController {
private static final int[] SENSORS = new int[] {CAMERA, MICROPHONE};
private final @NonNull Context mContext;
private final @NonNull SensorPrivacyManager mSensorPrivacyManager;
private final SparseBooleanArray mState = new SparseBooleanArray();
private final Set<Callback> mCallbacks = new ArraySet<>();
@Inject
public IndividualSensorPrivacyControllerImpl(@NonNull Context context) {
mContext = context;
mSensorPrivacyManager = context.getSystemService(SensorPrivacyManager.class);
public IndividualSensorPrivacyControllerImpl(
@NonNull SensorPrivacyManager sensorPrivacyManager) {
mSensorPrivacyManager = sensorPrivacyManager;
}
@Override
public void init() {
for (int sensor : SENSORS) {
mSensorPrivacyManager.addSensorPrivacyListener(sensor,
(enabled) -> onSensorPrivacyChanged(sensor, enabled));

View File

@@ -32,8 +32,6 @@ import com.android.systemui.statusbar.policy.FlashlightController;
import com.android.systemui.statusbar.policy.FlashlightControllerImpl;
import com.android.systemui.statusbar.policy.HotspotController;
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.KeyguardStateControllerImpl;
import com.android.systemui.statusbar.policy.LocationController;
@@ -120,11 +118,6 @@ public interface StatusBarPolicyModule {
NetworkController.AccessPointController provideAccessPointController(
AccessPointControllerImpl accessPointControllerImpl);
/** */
@Binds
IndividualSensorPrivacyController provideIndividualSensorPrivacyController(
IndividualSensorPrivacyControllerImpl controllerImpl);
/** */
@SysUISingleton
@Provides

View File

@@ -64,6 +64,8 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl;
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.SensorPrivacyControllerImpl;
import com.android.systemui.statusbar.tv.notifications.TvNotificationHandler;
@@ -121,6 +123,16 @@ public abstract class TvSystemUIModule {
return spC;
}
@Provides
@SysUISingleton
static IndividualSensorPrivacyController provideIndividualSensorPrivacyController(
SensorPrivacyManager sensorPrivacyManager) {
IndividualSensorPrivacyController spC = new IndividualSensorPrivacyControllerImpl(
sensorPrivacyManager);
spC.init();
return spC;
}
@Binds
@SysUISingleton
abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);