From 4837c05b3f209dd97c6bb0123fc1e6691188a6e5 Mon Sep 17 00:00:00 2001 From: Vania Januar Date: Mon, 6 Mar 2023 14:30:58 +0000 Subject: [PATCH] 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 --- .../stylus/StylusDeviceUpdater.java | 23 ++++--------- .../stylus/StylusDeviceUpdaterTest.java | 32 ++++++------------- 2 files changed, 17 insertions(+), 38 deletions(-) diff --git a/src/com/android/settings/connecteddevice/stylus/StylusDeviceUpdater.java b/src/com/android/settings/connecteddevice/stylus/StylusDeviceUpdater.java index 46ef3fbbc80..da6e1789b0c 100644 --- a/src/com/android/settings/connecteddevice/stylus/StylusDeviceUpdater.java +++ b/src/com/android/settings/connecteddevice/stylus/StylusDeviceUpdater.java @@ -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() { diff --git a/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDeviceUpdaterTest.java index 10f37275712..7fb17e2eb2c 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDeviceUpdaterTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDeviceUpdaterTest.java @@ -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