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:
Vania Januar
2023-03-06 14:30:58 +00:00
parent 7f9eba9481
commit 4837c05b3f
2 changed files with 17 additions and 38 deletions

View File

@@ -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() {

View File

@@ -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