Merge "Fix crash: ArrayIndexOutOfBounds on restoring backlight" into udc-dev am: 78a9212630
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22806556 Change-Id: I26c243fad81921f5531adaba82dcb47bb6e9836a Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -199,8 +199,11 @@ final class KeyboardBacklightController implements
|
|||||||
}
|
}
|
||||||
if (brightness.isPresent()) {
|
if (brightness.isPresent()) {
|
||||||
int brightnessValue = Math.max(0, Math.min(MAX_BRIGHTNESS, brightness.getAsInt()));
|
int brightnessValue = Math.max(0, Math.min(MAX_BRIGHTNESS, brightness.getAsInt()));
|
||||||
int brightnessLevel = Arrays.binarySearch(BRIGHTNESS_VALUE_FOR_LEVEL, brightnessValue);
|
int index = Arrays.binarySearch(BRIGHTNESS_VALUE_FOR_LEVEL, brightnessValue);
|
||||||
updateBacklightState(inputDevice.getId(), keyboardBacklight, brightnessLevel,
|
if (index < 0) {
|
||||||
|
index = Math.min(NUM_BRIGHTNESS_CHANGE_STEPS, -(index + 1));
|
||||||
|
}
|
||||||
|
updateBacklightState(inputDevice.getId(), keyboardBacklight, index,
|
||||||
false /* isTriggeredByKeyPress */);
|
false /* isTriggeredByKeyPress */);
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Slog.d(TAG, "Restoring brightness level " + brightness.getAsInt());
|
Slog.d(TAG, "Restoring brightness level " + brightness.getAsInt());
|
||||||
|
|||||||
@@ -250,20 +250,24 @@ class KeyboardBacklightControllerTests {
|
|||||||
`when`(iInputManager.getInputDevice(DEVICE_ID)).thenReturn(keyboardWithBacklight)
|
`when`(iInputManager.getInputDevice(DEVICE_ID)).thenReturn(keyboardWithBacklight)
|
||||||
`when`(iInputManager.getLights(DEVICE_ID)).thenReturn(listOf(keyboardBacklight))
|
`when`(iInputManager.getLights(DEVICE_ID)).thenReturn(listOf(keyboardBacklight))
|
||||||
|
|
||||||
|
for (level in 1 until BRIGHTNESS_VALUE_FOR_LEVEL.size) {
|
||||||
dataStore.setKeyboardBacklightBrightness(
|
dataStore.setKeyboardBacklightBrightness(
|
||||||
keyboardWithBacklight.descriptor,
|
keyboardWithBacklight.descriptor,
|
||||||
LIGHT_ID,
|
LIGHT_ID,
|
||||||
MAX_BRIGHTNESS
|
BRIGHTNESS_VALUE_FOR_LEVEL[level] - 1
|
||||||
)
|
)
|
||||||
|
|
||||||
keyboardBacklightController.onInputDeviceAdded(DEVICE_ID)
|
keyboardBacklightController.onInputDeviceAdded(DEVICE_ID)
|
||||||
keyboardBacklightController.notifyUserActivity()
|
keyboardBacklightController.notifyUserActivity()
|
||||||
testLooper.dispatchNext()
|
testLooper.dispatchNext()
|
||||||
assertEquals(
|
assertEquals(
|
||||||
"Keyboard backlight level should be restored to the level saved in the data store",
|
"Keyboard backlight level should be restored to the level saved in the data " +
|
||||||
Color.argb(MAX_BRIGHTNESS, 0, 0, 0),
|
"store",
|
||||||
|
Color.argb(BRIGHTNESS_VALUE_FOR_LEVEL[level], 0, 0, 0),
|
||||||
lightColorMap[LIGHT_ID]
|
lightColorMap[LIGHT_ID]
|
||||||
)
|
)
|
||||||
|
keyboardBacklightController.onInputDeviceRemoved(DEVICE_ID)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user