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.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.SystemClock;
import android.util.Log; import android.util.Log;
import android.view.InputDevice; import android.view.InputDevice;
@@ -57,11 +56,11 @@ public class StylusDeviceUpdater implements InputManager.InputDeviceListener,
private final InputManager mInputManager; private final InputManager mInputManager;
private final MetricsFeatureProvider mMetricsFeatureProvider; private final MetricsFeatureProvider mMetricsFeatureProvider;
private long mLastUsiSeenTime = 0;
private Context mContext; private Context mContext;
@VisibleForTesting @VisibleForTesting
Integer mLastDetectedUsiId; Integer mLastDetectedUsiId;
BatteryState mLastBatteryState;
@VisibleForTesting @VisibleForTesting
Preference mUsiPreference; Preference mUsiPreference;
@@ -75,7 +74,6 @@ public class StylusDeviceUpdater implements InputManager.InputDeviceListener,
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
mContext = context; mContext = context;
mInputManager = context.getSystemService(InputManager.class); mInputManager = context.getSystemService(InputManager.class);
} }
/** /**
@@ -132,13 +130,8 @@ public class StylusDeviceUpdater implements InputManager.InputDeviceListener,
@Override @Override
public void onBatteryStateChanged(int deviceId, long eventTimeMillis, public void onBatteryStateChanged(int deviceId, long eventTimeMillis,
@NonNull BatteryState batteryState) { @NonNull BatteryState batteryState) {
if (batteryState.isPresent()) { mLastBatteryState = batteryState;
mLastUsiSeenTime = eventTimeMillis;
mLastDetectedUsiId = deviceId; mLastDetectedUsiId = deviceId;
} else {
mLastUsiSeenTime = -1;
mLastDetectedUsiId = null;
}
forceUpdate(); forceUpdate();
} }
@@ -184,7 +177,7 @@ public class StylusDeviceUpdater implements InputManager.InputDeviceListener,
} }
private boolean shouldShowUsiPreference() { private boolean shouldShowUsiPreference() {
return isUsiConnectionValid() && !hasConnectedBluetoothStylusDevice(); return isUsiBatteryValid() && !hasConnectedBluetoothStylusDevice();
} }
@VisibleForTesting @VisibleForTesting
@@ -206,11 +199,9 @@ public class StylusDeviceUpdater implements InputManager.InputDeviceListener,
} }
@VisibleForTesting @VisibleForTesting
boolean isUsiConnectionValid() { boolean isUsiBatteryValid() {
// battery listener uses uptimeMillis as its eventTime return mLastBatteryState != null
long currentTime = SystemClock.uptimeMillis(); && mLastBatteryState.isPresent() && mLastBatteryState.getCapacity() > 0f;
long usiValidityDuration = 60 * 60 * 1000; // 1 hour
return mLastUsiSeenTime > 0 && currentTime - usiValidityDuration <= mLastUsiSeenTime;
} }
private void launchDeviceDetails() { private void launchDeviceDetails() {

View File

@@ -127,7 +127,7 @@ public class StylusDeviceUpdaterTest {
@Test @Test
public void click_usiPreference_launchUsiDetailsPage() { public void click_usiPreference_launchUsiDetailsPage() {
doReturn(mSettingsActivity).when(mDashboardFragment).getContext(); doReturn(mSettingsActivity).when(mDashboardFragment).getContext();
doReturn(true).when(mStylusDeviceUpdater).isUsiConnectionValid(); doReturn(true).when(mStylusDeviceUpdater).isUsiBatteryValid();
doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice(); doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
mStylusDeviceUpdater.forceUpdate(); mStylusDeviceUpdater.forceUpdate();
mStylusDeviceUpdater.mLastDetectedUsiId = 1; mStylusDeviceUpdater.mLastDetectedUsiId = 1;
@@ -144,7 +144,7 @@ public class StylusDeviceUpdaterTest {
@Test @Test
public void forceUpdate_addsUsiPreference_validUsiDevice() { public void forceUpdate_addsUsiPreference_validUsiDevice() {
doReturn(true).when(mStylusDeviceUpdater).isUsiConnectionValid(); doReturn(true).when(mStylusDeviceUpdater).isUsiBatteryValid();
doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice(); doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
mStylusDeviceUpdater.forceUpdate(); mStylusDeviceUpdater.forceUpdate();
@@ -154,7 +154,7 @@ public class StylusDeviceUpdaterTest {
@Test @Test
public void forceUpdate_doesNotAddPreference_invalidUsiDevice() { public void forceUpdate_doesNotAddPreference_invalidUsiDevice() {
doReturn(false).when(mStylusDeviceUpdater).isUsiConnectionValid(); doReturn(false).when(mStylusDeviceUpdater).isUsiBatteryValid();
doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice(); doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
mStylusDeviceUpdater.forceUpdate(); mStylusDeviceUpdater.forceUpdate();
@@ -164,12 +164,12 @@ public class StylusDeviceUpdaterTest {
@Test @Test
public void forceUpdate_removesUsiPreference_existingPreference_invalidUsiDevice() { public void forceUpdate_removesUsiPreference_existingPreference_invalidUsiDevice() {
doReturn(true).when(mStylusDeviceUpdater).isUsiConnectionValid(); doReturn(true).when(mStylusDeviceUpdater).isUsiBatteryValid();
doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice(); doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
mStylusDeviceUpdater.forceUpdate(); mStylusDeviceUpdater.forceUpdate();
doReturn(false).when(mStylusDeviceUpdater).isUsiConnectionValid(); doReturn(false).when(mStylusDeviceUpdater).isUsiBatteryValid();
mStylusDeviceUpdater.forceUpdate(); mStylusDeviceUpdater.forceUpdate();
assertThat(mStylusDeviceUpdater.mUsiPreference).isNull(); assertThat(mStylusDeviceUpdater.mUsiPreference).isNull();
@@ -177,7 +177,7 @@ public class StylusDeviceUpdaterTest {
@Test @Test
public void forceUpdate_doesNotAddUsiPreference_bluetoothStylusConnected() { public void forceUpdate_doesNotAddUsiPreference_bluetoothStylusConnected() {
doReturn(true).when(mStylusDeviceUpdater).isUsiConnectionValid(); doReturn(true).when(mStylusDeviceUpdater).isUsiBatteryValid();
doReturn(true).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice(); doReturn(true).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
mStylusDeviceUpdater.forceUpdate(); mStylusDeviceUpdater.forceUpdate();
@@ -187,7 +187,7 @@ public class StylusDeviceUpdaterTest {
@Test @Test
public void forceUpdate_addsUsiPreference_bluetoothStylusDisconnected() { public void forceUpdate_addsUsiPreference_bluetoothStylusDisconnected() {
doReturn(true).when(mStylusDeviceUpdater).isUsiConnectionValid(); doReturn(true).when(mStylusDeviceUpdater).isUsiBatteryValid();
doReturn(true).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice(); doReturn(true).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
mStylusDeviceUpdater.forceUpdate(); mStylusDeviceUpdater.forceUpdate();
@@ -199,7 +199,7 @@ public class StylusDeviceUpdaterTest {
@Test @Test
public void forceUpdate_removesUsiPreference_existingPreference_bluetoothStylusConnected() { public void forceUpdate_removesUsiPreference_existingPreference_bluetoothStylusConnected() {
doReturn(true).when(mStylusDeviceUpdater).isUsiConnectionValid(); doReturn(true).when(mStylusDeviceUpdater).isUsiBatteryValid();
doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice(); doReturn(false).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
mStylusDeviceUpdater.forceUpdate(); mStylusDeviceUpdater.forceUpdate();
doReturn(true).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice(); doReturn(true).when(mStylusDeviceUpdater).hasConnectedBluetoothStylusDevice();
@@ -218,7 +218,7 @@ public class StylusDeviceUpdaterTest {
mStylusDeviceUpdater.onBatteryStateChanged(1, SystemClock.uptimeMillis(), mStylusDeviceUpdater.onBatteryStateChanged(1, SystemClock.uptimeMillis(),
batteryState); batteryState);
assertThat(mStylusDeviceUpdater.isUsiConnectionValid()).isTrue(); assertThat(mStylusDeviceUpdater.isUsiBatteryValid()).isTrue();
} }
@Test @Test
@@ -230,19 +230,7 @@ public class StylusDeviceUpdaterTest {
mStylusDeviceUpdater.onBatteryStateChanged(1, SystemClock.uptimeMillis(), mStylusDeviceUpdater.onBatteryStateChanged(1, SystemClock.uptimeMillis(),
batteryState); batteryState);
assertThat(mStylusDeviceUpdater.isUsiConnectionValid()).isFalse(); assertThat(mStylusDeviceUpdater.isUsiBatteryValid()).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();
} }
@Test @Test