Merge "Don't unregister doze sensors that have been requested" into sc-qpr1-dev am: 1f1ec17fdc am: 1378749f63
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15627249 Change-Id: I0329d97e9735d08d502e35e27ac694a2d218ede6
This commit is contained in:
committed by
Automerger Merge Worker
commit
c42f776d00
@@ -456,13 +456,24 @@ public class DozeSensors {
|
|||||||
|
|
||||||
public void updateListening() {
|
public void updateListening() {
|
||||||
if (!mConfigured || mSensor == null) return;
|
if (!mConfigured || mSensor == null) return;
|
||||||
if (mRequested && !mDisabled && (enabledBySetting() || mIgnoresSetting)
|
if (mRequested && !mDisabled && (enabledBySetting() || mIgnoresSetting)) {
|
||||||
&& !mRegistered) {
|
if (!mRegistered) {
|
||||||
mRegistered = mSensorManager.requestTriggerSensor(this, mSensor);
|
mRegistered = mSensorManager.requestTriggerSensor(this, mSensor);
|
||||||
if (DEBUG) Log.d(TAG, "requestTriggerSensor " + mRegistered);
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "requestTriggerSensor[" + mSensor
|
||||||
|
+ "] " + mRegistered);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "requestTriggerSensor[" + mSensor
|
||||||
|
+ "] already registered");
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (mRegistered) {
|
} else if (mRegistered) {
|
||||||
final boolean rt = mSensorManager.cancelTriggerSensor(this, mSensor);
|
final boolean rt = mSensorManager.cancelTriggerSensor(this, mSensor);
|
||||||
if (DEBUG) Log.d(TAG, "cancelTriggerSensor " + rt);
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "cancelTriggerSensor[" + mSensor + "] " + rt);
|
||||||
|
}
|
||||||
mRegistered = false;
|
mRegistered = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ public class DozeSensorsTest extends SysuiTestCase {
|
|||||||
private FakeSettings mFakeSettings = new FakeSettings();
|
private FakeSettings mFakeSettings = new FakeSettings();
|
||||||
private SensorManagerPlugin.SensorEventListener mWakeLockScreenListener;
|
private SensorManagerPlugin.SensorEventListener mWakeLockScreenListener;
|
||||||
private TestableLooper mTestableLooper;
|
private TestableLooper mTestableLooper;
|
||||||
private DozeSensors mDozeSensors;
|
private TestableDozeSensors mDozeSensors;
|
||||||
private TriggerSensor mSensorTap;
|
private TriggerSensor mSensorTap;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -170,6 +170,94 @@ public class DozeSensorsTest extends SysuiTestCase {
|
|||||||
assertTrue(mSensorTap.mRequested);
|
assertTrue(mSensorTap.mRequested);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDozeSensorSetListening() {
|
||||||
|
// GIVEN doze sensors enabled
|
||||||
|
when(mAmbientDisplayConfiguration.enabled(anyInt())).thenReturn(true);
|
||||||
|
|
||||||
|
// GIVEN a trigger sensor
|
||||||
|
Sensor mockSensor = mock(Sensor.class);
|
||||||
|
TriggerSensor triggerSensor = mDozeSensors.createDozeSensor(
|
||||||
|
mockSensor,
|
||||||
|
/* settingEnabled */ true,
|
||||||
|
/* requiresTouchScreen */ true);
|
||||||
|
when(mSensorManager.requestTriggerSensor(eq(triggerSensor), eq(mockSensor)))
|
||||||
|
.thenReturn(true);
|
||||||
|
|
||||||
|
// WHEN we want to listen for the trigger sensor
|
||||||
|
triggerSensor.setListening(true);
|
||||||
|
|
||||||
|
// THEN the sensor is registered
|
||||||
|
assertTrue(triggerSensor.mRegistered);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDozeSensorSettingDisabled() {
|
||||||
|
// GIVEN doze sensors enabled
|
||||||
|
when(mAmbientDisplayConfiguration.enabled(anyInt())).thenReturn(true);
|
||||||
|
|
||||||
|
// GIVEN a trigger sensor
|
||||||
|
Sensor mockSensor = mock(Sensor.class);
|
||||||
|
TriggerSensor triggerSensor = mDozeSensors.createDozeSensor(
|
||||||
|
mockSensor,
|
||||||
|
/* settingEnabled*/ false,
|
||||||
|
/* requiresTouchScreen */ true);
|
||||||
|
when(mSensorManager.requestTriggerSensor(eq(triggerSensor), eq(mockSensor)))
|
||||||
|
.thenReturn(true);
|
||||||
|
|
||||||
|
// WHEN setListening is called
|
||||||
|
triggerSensor.setListening(true);
|
||||||
|
|
||||||
|
// THEN the sensor is not registered
|
||||||
|
assertFalse(triggerSensor.mRegistered);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDozeSensorIgnoreSetting() {
|
||||||
|
// GIVEN doze sensors enabled
|
||||||
|
when(mAmbientDisplayConfiguration.enabled(anyInt())).thenReturn(true);
|
||||||
|
|
||||||
|
// GIVEN a trigger sensor that's
|
||||||
|
Sensor mockSensor = mock(Sensor.class);
|
||||||
|
TriggerSensor triggerSensor = mDozeSensors.createDozeSensor(
|
||||||
|
mockSensor,
|
||||||
|
/* settingEnabled*/ false,
|
||||||
|
/* requiresTouchScreen */ true);
|
||||||
|
when(mSensorManager.requestTriggerSensor(eq(triggerSensor), eq(mockSensor)))
|
||||||
|
.thenReturn(true);
|
||||||
|
|
||||||
|
// GIVEN sensor is listening
|
||||||
|
triggerSensor.setListening(true);
|
||||||
|
|
||||||
|
// WHEN ignoreSetting is called
|
||||||
|
triggerSensor.ignoreSetting(true);
|
||||||
|
|
||||||
|
// THEN the sensor is registered
|
||||||
|
assertTrue(triggerSensor.mRegistered);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateListeningAfterAlreadyRegistered() {
|
||||||
|
// GIVEN doze sensors enabled
|
||||||
|
when(mAmbientDisplayConfiguration.enabled(anyInt())).thenReturn(true);
|
||||||
|
|
||||||
|
// GIVEN a trigger sensor
|
||||||
|
Sensor mockSensor = mock(Sensor.class);
|
||||||
|
TriggerSensor triggerSensor = mDozeSensors.createDozeSensor(
|
||||||
|
mockSensor,
|
||||||
|
/* settingEnabled*/ true,
|
||||||
|
/* requiresTouchScreen */ true);
|
||||||
|
when(mSensorManager.requestTriggerSensor(eq(triggerSensor), eq(mockSensor)))
|
||||||
|
.thenReturn(true);
|
||||||
|
|
||||||
|
// WHEN setListening is called AND updateListening is called
|
||||||
|
triggerSensor.setListening(true);
|
||||||
|
triggerSensor.updateListening();
|
||||||
|
|
||||||
|
// THEN the sensor is still registered
|
||||||
|
assertTrue(triggerSensor.mRegistered);
|
||||||
|
}
|
||||||
|
|
||||||
private class TestableDozeSensors extends DozeSensors {
|
private class TestableDozeSensors extends DozeSensors {
|
||||||
|
|
||||||
TestableDozeSensors() {
|
TestableDozeSensors() {
|
||||||
@@ -187,5 +275,17 @@ public class DozeSensorsTest extends SysuiTestCase {
|
|||||||
}
|
}
|
||||||
mSensors = new TriggerSensor[] {mTriggerSensor, mSensorTap};
|
mSensors = new TriggerSensor[] {mTriggerSensor, mSensorTap};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TriggerSensor createDozeSensor(Sensor sensor, boolean settingEnabled,
|
||||||
|
boolean requiresTouchScreen) {
|
||||||
|
return new TriggerSensor(/* sensor */ sensor,
|
||||||
|
/* setting name */ "test_setting",
|
||||||
|
/* settingDefault */ settingEnabled,
|
||||||
|
/* configured */ true,
|
||||||
|
/* pulseReason*/ 0,
|
||||||
|
/* reportsTouchCoordinate*/ false,
|
||||||
|
requiresTouchScreen,
|
||||||
|
mDozeLog);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user