Remove battery event time detection from StylusUpdater.
StylusManager battery listener now triggers whenever the stylus battery becomes stale, so we no longer need to track event time from the updater. Bug: 270422546 Test: StylusDeviceUpdaterTest Change-Id: I36f5dc132a95f7d4649cec2bda1d457edc1f64bd
This commit is contained in:
@@ -22,7 +22,6 @@ import android.hardware.input.InputManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.SystemClock;
|
||||
import android.util.Log;
|
||||
import android.view.InputDevice;
|
||||
|
||||
@@ -57,11 +56,11 @@ public class StylusDeviceUpdater implements InputManager.InputDeviceListener,
|
||||
private final InputManager mInputManager;
|
||||
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
|
||||
private long mLastUsiSeenTime = 0;
|
||||
private Context mContext;
|
||||
|
||||
@VisibleForTesting
|
||||
Integer mLastDetectedUsiId;
|
||||
BatteryState mLastBatteryState;
|
||||
|
||||
@VisibleForTesting
|
||||
Preference mUsiPreference;
|
||||
@@ -75,7 +74,6 @@ public class StylusDeviceUpdater implements InputManager.InputDeviceListener,
|
||||
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
||||
mContext = context;
|
||||
mInputManager = context.getSystemService(InputManager.class);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -132,13 +130,8 @@ public class StylusDeviceUpdater implements InputManager.InputDeviceListener,
|
||||
@Override
|
||||
public void onBatteryStateChanged(int deviceId, long eventTimeMillis,
|
||||
@NonNull BatteryState batteryState) {
|
||||
if (batteryState.isPresent()) {
|
||||
mLastUsiSeenTime = eventTimeMillis;
|
||||
mLastDetectedUsiId = deviceId;
|
||||
} else {
|
||||
mLastUsiSeenTime = -1;
|
||||
mLastDetectedUsiId = null;
|
||||
}
|
||||
mLastBatteryState = batteryState;
|
||||
mLastDetectedUsiId = deviceId;
|
||||
forceUpdate();
|
||||
}
|
||||
|
||||
@@ -184,7 +177,7 @@ public class StylusDeviceUpdater implements InputManager.InputDeviceListener,
|
||||
}
|
||||
|
||||
private boolean shouldShowUsiPreference() {
|
||||
return isUsiConnectionValid() && !hasConnectedBluetoothStylusDevice();
|
||||
return isUsiBatteryValid() && !hasConnectedBluetoothStylusDevice();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -206,11 +199,9 @@ public class StylusDeviceUpdater implements InputManager.InputDeviceListener,
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
boolean isUsiConnectionValid() {
|
||||
// battery listener uses uptimeMillis as its eventTime
|
||||
long currentTime = SystemClock.uptimeMillis();
|
||||
long usiValidityDuration = 60 * 60 * 1000; // 1 hour
|
||||
return mLastUsiSeenTime > 0 && currentTime - usiValidityDuration <= mLastUsiSeenTime;
|
||||
boolean isUsiBatteryValid() {
|
||||
return mLastBatteryState != null
|
||||
&& mLastBatteryState.isPresent() && mLastBatteryState.getCapacity() > 0f;
|
||||
}
|
||||
|
||||
private void launchDeviceDetails() {
|
||||
|
@@ -127,7 +127,7 @@ public class StylusDeviceUpdaterTest {
|
||||
@Test
|
||||
public void click_usiPreference_launchUsiDetailsPage() {
|
||||
doReturn(mSettingsActivity).when(mDashboardFragment).getContext();
|
||||
doReturn(true).when(mStylusDeviceUpdater).isUsiConnectionValid();
|
||||
doReturn(true).when(mStylusDeviceUpdater).isUsiBatteryValid();
|
||||
doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
|
||||
mStylusDeviceUpdater.forceUpdate();
|
||||
mStylusDeviceUpdater.mLastDetectedUsiId = 1;
|
||||
@@ -144,7 +144,7 @@ public class StylusDeviceUpdaterTest {
|
||||
|
||||
@Test
|
||||
public void forceUpdate_addsUsiPreference_validUsiDevice() {
|
||||
doReturn(true).when(mStylusDeviceUpdater).isUsiConnectionValid();
|
||||
doReturn(true).when(mStylusDeviceUpdater).isUsiBatteryValid();
|
||||
doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
|
||||
|
||||
mStylusDeviceUpdater.forceUpdate();
|
||||
@@ -154,7 +154,7 @@ public class StylusDeviceUpdaterTest {
|
||||
|
||||
@Test
|
||||
public void forceUpdate_doesNotAddPreference_invalidUsiDevice() {
|
||||
doReturn(false).when(mStylusDeviceUpdater).isUsiConnectionValid();
|
||||
doReturn(false).when(mStylusDeviceUpdater).isUsiBatteryValid();
|
||||
doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
|
||||
|
||||
mStylusDeviceUpdater.forceUpdate();
|
||||
@@ -164,12 +164,12 @@ public class StylusDeviceUpdaterTest {
|
||||
|
||||
@Test
|
||||
public void forceUpdate_removesUsiPreference_existingPreference_invalidUsiDevice() {
|
||||
doReturn(true).when(mStylusDeviceUpdater).isUsiConnectionValid();
|
||||
doReturn(true).when(mStylusDeviceUpdater).isUsiBatteryValid();
|
||||
doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
|
||||
|
||||
mStylusDeviceUpdater.forceUpdate();
|
||||
|
||||
doReturn(false).when(mStylusDeviceUpdater).isUsiConnectionValid();
|
||||
doReturn(false).when(mStylusDeviceUpdater).isUsiBatteryValid();
|
||||
mStylusDeviceUpdater.forceUpdate();
|
||||
|
||||
assertThat(mStylusDeviceUpdater.mUsiPreference).isNull();
|
||||
@@ -177,7 +177,7 @@ public class StylusDeviceUpdaterTest {
|
||||
|
||||
@Test
|
||||
public void forceUpdate_doesNotAddUsiPreference_bluetoothStylusConnected() {
|
||||
doReturn(true).when(mStylusDeviceUpdater).isUsiConnectionValid();
|
||||
doReturn(true).when(mStylusDeviceUpdater).isUsiBatteryValid();
|
||||
doReturn(true).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
|
||||
|
||||
mStylusDeviceUpdater.forceUpdate();
|
||||
@@ -187,7 +187,7 @@ public class StylusDeviceUpdaterTest {
|
||||
|
||||
@Test
|
||||
public void forceUpdate_addsUsiPreference_bluetoothStylusDisconnected() {
|
||||
doReturn(true).when(mStylusDeviceUpdater).isUsiConnectionValid();
|
||||
doReturn(true).when(mStylusDeviceUpdater).isUsiBatteryValid();
|
||||
doReturn(true).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
|
||||
mStylusDeviceUpdater.forceUpdate();
|
||||
|
||||
@@ -199,7 +199,7 @@ public class StylusDeviceUpdaterTest {
|
||||
|
||||
@Test
|
||||
public void forceUpdate_removesUsiPreference_existingPreference_bluetoothStylusConnected() {
|
||||
doReturn(true).when(mStylusDeviceUpdater).isUsiConnectionValid();
|
||||
doReturn(true).when(mStylusDeviceUpdater).isUsiBatteryValid();
|
||||
doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
|
||||
mStylusDeviceUpdater.forceUpdate();
|
||||
doReturn(true).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
|
||||
@@ -218,7 +218,7 @@ public class StylusDeviceUpdaterTest {
|
||||
mStylusDeviceUpdater.onBatteryStateChanged(1, SystemClock.uptimeMillis(),
|
||||
batteryState);
|
||||
|
||||
assertThat(mStylusDeviceUpdater.isUsiConnectionValid()).isTrue();
|
||||
assertThat(mStylusDeviceUpdater.isUsiBatteryValid()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -230,19 +230,7 @@ public class StylusDeviceUpdaterTest {
|
||||
mStylusDeviceUpdater.onBatteryStateChanged(1, SystemClock.uptimeMillis(),
|
||||
batteryState);
|
||||
|
||||
assertThat(mStylusDeviceUpdater.isUsiConnectionValid()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBatteryStateChanged_ddetectsInvalidUsi_staleBatteryEventTime() {
|
||||
doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
|
||||
BatteryState batteryState = mock(BatteryState.class);
|
||||
doReturn(true).when(batteryState).isPresent();
|
||||
doReturn(0.5f).when(batteryState).getCapacity();
|
||||
|
||||
mStylusDeviceUpdater.onBatteryStateChanged(1, 0, batteryState);
|
||||
|
||||
assertThat(mStylusDeviceUpdater.isUsiConnectionValid()).isFalse();
|
||||
assertThat(mStylusDeviceUpdater.isUsiBatteryValid()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user