Throw error on unexpected control message type

This commit is contained in:
Romain Vimont
2025-11-04 19:58:26 +01:00
parent 552cbeb631
commit 6923ee6870

View File

@@ -264,78 +264,80 @@ public class Controller implements AsyncProcessor, VirtualDisplayListener {
return false; return false;
} }
switch (msg.getType()) { int type = msg.getType();
switch (type) {
case ControlMessage.TYPE_INJECT_KEYCODE: case ControlMessage.TYPE_INJECT_KEYCODE:
if (supportsInputEvents) { if (supportsInputEvents) {
injectKeycode(msg.getAction(), msg.getKeycode(), msg.getRepeat(), msg.getMetaState()); injectKeycode(msg.getAction(), msg.getKeycode(), msg.getRepeat(), msg.getMetaState());
} }
break; return true;
case ControlMessage.TYPE_INJECT_TEXT: case ControlMessage.TYPE_INJECT_TEXT:
if (supportsInputEvents) { if (supportsInputEvents) {
injectText(msg.getText()); injectText(msg.getText());
} }
break; return true;
case ControlMessage.TYPE_INJECT_TOUCH_EVENT: case ControlMessage.TYPE_INJECT_TOUCH_EVENT:
if (supportsInputEvents) { if (supportsInputEvents) {
injectTouch(msg.getAction(), msg.getPointerId(), msg.getPosition(), msg.getPressure(), msg.getActionButton(), msg.getButtons()); injectTouch(msg.getAction(), msg.getPointerId(), msg.getPosition(), msg.getPressure(), msg.getActionButton(), msg.getButtons());
} }
break; return true;
case ControlMessage.TYPE_INJECT_SCROLL_EVENT: case ControlMessage.TYPE_INJECT_SCROLL_EVENT:
if (supportsInputEvents) { if (supportsInputEvents) {
injectScroll(msg.getPosition(), msg.getHScroll(), msg.getVScroll(), msg.getButtons()); injectScroll(msg.getPosition(), msg.getHScroll(), msg.getVScroll(), msg.getButtons());
} }
break; return true;
case ControlMessage.TYPE_BACK_OR_SCREEN_ON: case ControlMessage.TYPE_BACK_OR_SCREEN_ON:
if (supportsInputEvents) { if (supportsInputEvents) {
pressBackOrTurnScreenOn(msg.getAction()); pressBackOrTurnScreenOn(msg.getAction());
} }
break; return true;
case ControlMessage.TYPE_EXPAND_NOTIFICATION_PANEL: case ControlMessage.TYPE_EXPAND_NOTIFICATION_PANEL:
Device.expandNotificationPanel(); Device.expandNotificationPanel();
break; return true;
case ControlMessage.TYPE_EXPAND_SETTINGS_PANEL: case ControlMessage.TYPE_EXPAND_SETTINGS_PANEL:
Device.expandSettingsPanel(); Device.expandSettingsPanel();
break; return true;
case ControlMessage.TYPE_COLLAPSE_PANELS: case ControlMessage.TYPE_COLLAPSE_PANELS:
Device.collapsePanels(); Device.collapsePanels();
break; return true;
case ControlMessage.TYPE_GET_CLIPBOARD: case ControlMessage.TYPE_GET_CLIPBOARD:
getClipboard(msg.getCopyKey()); getClipboard(msg.getCopyKey());
break; return true;
case ControlMessage.TYPE_SET_CLIPBOARD: case ControlMessage.TYPE_SET_CLIPBOARD:
setClipboard(msg.getText(), msg.getPaste(), msg.getSequence()); setClipboard(msg.getText(), msg.getPaste(), msg.getSequence());
break; return true;
case ControlMessage.TYPE_SET_DISPLAY_POWER: case ControlMessage.TYPE_SET_DISPLAY_POWER:
if (supportsInputEvents) { if (supportsInputEvents) {
setDisplayPower(msg.getOn()); setDisplayPower(msg.getOn());
} }
break; return true;
case ControlMessage.TYPE_ROTATE_DEVICE: case ControlMessage.TYPE_ROTATE_DEVICE:
Device.rotateDevice(getActionDisplayId()); Device.rotateDevice(getActionDisplayId());
break; return true;
case ControlMessage.TYPE_UHID_CREATE: case ControlMessage.TYPE_UHID_CREATE:
getUhidManager().open(msg.getId(), msg.getVendorId(), msg.getProductId(), msg.getText(), msg.getData()); getUhidManager().open(msg.getId(), msg.getVendorId(), msg.getProductId(), msg.getText(), msg.getData());
break; return true;
case ControlMessage.TYPE_UHID_INPUT: case ControlMessage.TYPE_UHID_INPUT:
getUhidManager().writeInput(msg.getId(), msg.getData()); getUhidManager().writeInput(msg.getId(), msg.getData());
break; return true;
case ControlMessage.TYPE_UHID_DESTROY: case ControlMessage.TYPE_UHID_DESTROY:
getUhidManager().close(msg.getId()); getUhidManager().close(msg.getId());
break; return true;
case ControlMessage.TYPE_OPEN_HARD_KEYBOARD_SETTINGS: case ControlMessage.TYPE_OPEN_HARD_KEYBOARD_SETTINGS:
openHardKeyboardSettings(); openHardKeyboardSettings();
break; return true;
case ControlMessage.TYPE_START_APP: case ControlMessage.TYPE_START_APP:
startAppAsync(msg.getText()); startAppAsync(msg.getText());
break; return true;
case ControlMessage.TYPE_RESET_VIDEO: case ControlMessage.TYPE_RESET_VIDEO:
resetVideo(); resetVideo();
break; return true;
default: default:
// do nothing // fall through
} }
return true; throw new AssertionError("Unexpected message type: " + type);
} }
private boolean injectKeycode(int action, int keycode, int repeat, int metaState) { private boolean injectKeycode(int action, int keycode, int repeat, int metaState) {