Merge "Unregister for posture callback on destroy"
This commit is contained in:
@@ -288,7 +288,7 @@ public class DozeSensors {
|
||||
for (TriggerSensor triggerSensor : mTriggerSensors) {
|
||||
triggerSensor.setListening(false);
|
||||
}
|
||||
mProximitySensor.pause();
|
||||
mProximitySensor.destroy();
|
||||
|
||||
mDevicePostureController.removeCallback(mDevicePostureCallback);
|
||||
mAuthController.removeCallback(mAuthControllerCallback);
|
||||
|
||||
@@ -228,6 +228,7 @@ public class DozeTriggers implements DozeMachine.Part {
|
||||
@Override
|
||||
public void destroy() {
|
||||
mDozeSensors.destroy();
|
||||
mProxCheck.destroy();
|
||||
}
|
||||
|
||||
private void onNotification(Runnable onPulseSuppressedListener) {
|
||||
|
||||
@@ -37,6 +37,8 @@ class PostureDependentProximitySensor extends ProximitySensorImpl {
|
||||
private final ThresholdSensor[] mPostureToPrimaryProxSensorMap;
|
||||
private final ThresholdSensor[] mPostureToSecondaryProxSensorMap;
|
||||
|
||||
private final DevicePostureController mDevicePostureController;
|
||||
|
||||
@Inject
|
||||
PostureDependentProximitySensor(
|
||||
@PrimaryProxSensor ThresholdSensor[] postureToPrimaryProxSensorMap,
|
||||
@@ -53,15 +55,24 @@ class PostureDependentProximitySensor extends ProximitySensorImpl {
|
||||
);
|
||||
mPostureToPrimaryProxSensorMap = postureToPrimaryProxSensorMap;
|
||||
mPostureToSecondaryProxSensorMap = postureToSecondaryProxSensorMap;
|
||||
mDevicePosture = devicePostureController.getDevicePosture();
|
||||
devicePostureController.addCallback(mDevicePostureCallback);
|
||||
mDevicePostureController = devicePostureController;
|
||||
|
||||
mDevicePosture = mDevicePostureController.getDevicePosture();
|
||||
mDevicePostureController.addCallback(mDevicePostureCallback);
|
||||
|
||||
chooseSensors();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
super.destroy();
|
||||
mDevicePostureController.removeCallback(mDevicePostureCallback);
|
||||
}
|
||||
|
||||
private void chooseSensors() {
|
||||
if (mDevicePosture >= mPostureToPrimaryProxSensorMap.length
|
||||
|| mDevicePosture >= mPostureToSecondaryProxSensorMap.length) {
|
||||
Log.e("PostureDependentProxSensor",
|
||||
Log.e("PostureDependProxSensor",
|
||||
"unsupported devicePosture=" + mDevicePosture);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -73,6 +73,13 @@ public class ProximityCheck implements Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleanup after no longer needed.
|
||||
*/
|
||||
public void destroy() {
|
||||
mSensor.destroy();
|
||||
}
|
||||
|
||||
private void unregister() {
|
||||
mSensor.unregister(mListener);
|
||||
mRegistered.set(false);
|
||||
|
||||
@@ -42,4 +42,10 @@ public interface ProximitySensor extends ThresholdSensor {
|
||||
* of what is reported by the primary sensor.
|
||||
*/
|
||||
void setSecondarySafe(boolean safe);
|
||||
|
||||
/**
|
||||
* Called when the proximity sensor is no longer needed. All listeners should
|
||||
* be unregistered and cleaned up.
|
||||
*/
|
||||
void destroy();
|
||||
}
|
||||
|
||||
@@ -251,6 +251,11 @@ class ProximitySensorImpl implements ProximitySensor {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
pause();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return mPrimaryThresholdSensor.getName();
|
||||
|
||||
@@ -175,6 +175,7 @@ public class DozeSensorsTest extends SysuiTestCase {
|
||||
public void testDestroy() {
|
||||
mDozeSensors.destroy();
|
||||
|
||||
verify(mProximitySensor).destroy();
|
||||
verify(mTriggerSensor).setListening(false);
|
||||
}
|
||||
|
||||
|
||||
@@ -299,6 +299,12 @@ public class DozeTriggersTest extends SysuiTestCase {
|
||||
verify(mAuthController).onAodInterrupt(eq(screenX), eq(screenY), eq(major), eq(minor));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDestroy() {
|
||||
mTriggers.destroy();
|
||||
verify(mProximityCheck).destroy();
|
||||
}
|
||||
|
||||
private void waitForSensorManager() {
|
||||
mExecutor.runAllReady();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user