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

Commit a1af0493 authored by Vania Januar's avatar Vania Januar
Browse files

Guard against null input device in StylusDeviceUpdater

Bug: 279170207
Test: StylusDeviceUpdaterTest
Change-Id: Ib4a3f12eaceb87370c800a9dc7eda819c706cd3b
parent 85e51741
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -100,6 +100,8 @@ public class StylusDeviceUpdater implements InputManager.InputDeviceListener,
    @Override
    public void onInputDeviceAdded(int deviceId) {
        InputDevice inputDevice = mInputManager.getInputDevice(deviceId);
        if (inputDevice == null) return;

        if (inputDevice.supportsSource(InputDevice.SOURCE_STYLUS)
                && !inputDevice.isExternal()) {
            try {
@@ -121,7 +123,10 @@ public class StylusDeviceUpdater implements InputManager.InputDeviceListener,

    @Override
    public void onInputDeviceChanged(int deviceId) {
        if (mInputManager.getInputDevice(deviceId).supportsSource(InputDevice.SOURCE_STYLUS)) {
        InputDevice inputDevice = mInputManager.getInputDevice(deviceId);
        if (inputDevice == null) return;

        if (inputDevice.supportsSource(InputDevice.SOURCE_STYLUS)) {
            forceUpdate();
        }
    }
@@ -189,6 +194,8 @@ public class StylusDeviceUpdater implements InputManager.InputDeviceListener,
    boolean hasConnectedBluetoothStylusDevice() {
        for (int deviceId : mInputManager.getInputDeviceIds()) {
            InputDevice device = mInputManager.getInputDevice(deviceId);
            if (device == null) continue;

            if (device.supportsSource(InputDevice.SOURCE_STYLUS)
                    && mInputManager.getInputDeviceBluetoothAddress(deviceId) != null) {
                return true;
+19 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;

import android.content.Context;
import android.content.Intent;
@@ -108,6 +109,15 @@ public class StylusDeviceUpdaterTest {
                any());
    }

    @Test
    public void onInputDeviceAdded_null_doesNothing() {
        doReturn(null).when(mInputManager).getInputDevice(0);
        mStylusDeviceUpdater.onInputDeviceAdded(0);

        verify(mInputManager).getInputDevice(0);
        verifyNoMoreInteractions(mInputManager);
    }

    @Test
    public void onInputDeviceAdded_internalStylus_registersBatteryListener() {
        mStylusDeviceUpdater.onInputDeviceAdded(1);
@@ -124,6 +134,15 @@ public class StylusDeviceUpdaterTest {
                any());
    }

    @Test
    public void onInputDeviceChanged_null_doesNothing() {
        doReturn(null).when(mInputManager).getInputDevice(0);
        mStylusDeviceUpdater.onInputDeviceChanged(0);

        verify(mInputManager).getInputDevice(0);
        verifyNoMoreInteractions(mInputManager);
    }

    @Test
    public void click_usiPreference_launchUsiDetailsPage() {
        doReturn(mSettingsActivity).when(mDashboardFragment).getContext();