Prevent NPE for onKeyDown and onKeyUp

We expected `onKeyDown` and `onKeyUp` should be used for the key event
delivery from input, but some apps may misuse it and pass a null
key event, that would cause app itself crash if it didn't override
onKeyDown and onKeyUp properly.

To prevent this, we swap the conditions that first check the confirm
key code then access the other states of the key event.

Bug: 219708835
Test: manual
Change-Id: I612ca560d768134bdcaa688c83217738b5254b5a
This commit is contained in:
Arthur Hung
2022-03-09 13:51:58 +08:00
parent ef439b26ee
commit 758393a388

View File

@@ -15617,7 +15617,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* @param event the KeyEvent object that defines the button action
*/
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.hasNoModifiers() && KeyEvent.isConfirmKey(keyCode)) {
if (KeyEvent.isConfirmKey(keyCode) && event.hasNoModifiers()) {
if ((mViewFlags & ENABLED_MASK) == DISABLED) {
return true;
}
@@ -15674,7 +15674,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* @param event The KeyEvent object that defines the button action.
*/
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (event.hasNoModifiers() && KeyEvent.isConfirmKey(keyCode)) {
if (KeyEvent.isConfirmKey(keyCode) && event.hasNoModifiers()) {
if ((mViewFlags & ENABLED_MASK) == DISABLED) {
return true;
}