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

Commit 78a92126 authored by Vaibhav Devmurari's avatar Vaibhav Devmurari Committed by Android (Google) Code Review
Browse files

Merge "Fix crash: ArrayIndexOutOfBounds on restoring backlight" into udc-dev

parents 9c6a31ea 867beac9
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -199,8 +199,11 @@ final class KeyboardBacklightController implements
        }
        if (brightness.isPresent()) {
            int brightnessValue = Math.max(0, Math.min(MAX_BRIGHTNESS, brightness.getAsInt()));
            int brightnessLevel = Arrays.binarySearch(BRIGHTNESS_VALUE_FOR_LEVEL, brightnessValue);
            updateBacklightState(inputDevice.getId(), keyboardBacklight, brightnessLevel,
            int index = Arrays.binarySearch(BRIGHTNESS_VALUE_FOR_LEVEL, brightnessValue);
            if (index < 0) {
                index = Math.min(NUM_BRIGHTNESS_CHANGE_STEPS, -(index + 1));
            }
            updateBacklightState(inputDevice.getId(), keyboardBacklight, index,
                    false /* isTriggeredByKeyPress */);
            if (DEBUG) {
                Slog.d(TAG, "Restoring brightness level " + brightness.getAsInt());
+17 −13
Original line number Diff line number Diff line
@@ -250,20 +250,24 @@ class KeyboardBacklightControllerTests {
        `when`(iInputManager.getInputDevice(DEVICE_ID)).thenReturn(keyboardWithBacklight)
        `when`(iInputManager.getLights(DEVICE_ID)).thenReturn(listOf(keyboardBacklight))

        for (level in 1 until BRIGHTNESS_VALUE_FOR_LEVEL.size) {
            dataStore.setKeyboardBacklightBrightness(
                    keyboardWithBacklight.descriptor,
                    LIGHT_ID,
            MAX_BRIGHTNESS
                    BRIGHTNESS_VALUE_FOR_LEVEL[level] - 1
            )

            keyboardBacklightController.onInputDeviceAdded(DEVICE_ID)
            keyboardBacklightController.notifyUserActivity()
            testLooper.dispatchNext()
            assertEquals(
            "Keyboard backlight level should be restored to the level saved in the data store",
            Color.argb(MAX_BRIGHTNESS, 0, 0, 0),
                    "Keyboard backlight level should be restored to the level saved in the data " +
                            "store",
                    Color.argb(BRIGHTNESS_VALUE_FOR_LEVEL[level], 0, 0, 0),
                    lightColorMap[LIGHT_ID]
            )
            keyboardBacklightController.onInputDeviceRemoved(DEVICE_ID)
        }
    }

    @Test