Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4837c05b authored by Vania Januar's avatar Vania Januar
Browse files

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
parent 7f9eba94
Loading
Loading
Loading
Loading
+7 −16
Original line number Diff line number Diff line
@@ -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;
        mLastBatteryState = batteryState;
        mLastDetectedUsiId = deviceId;
        } else {
            mLastUsiSeenTime = -1;
            mLastDetectedUsiId = null;
        }
        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() {
+10 −22
Original line number Diff line number Diff line
@@ -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