Make sure adb shell input keyevent --longpress KEYCODE_DPAD_CENTER triggers View#performLongClick(...)

KeyEvent#ACTION_UP removes the CheckForLongPress callback
that triggers View#performLongClick(...) after the longpress
timeout. By adding a delay in case of a long press, the
View#CheckForLongPress callback runs as expected and the
long press is triggered.

Bug: 194799728
Test: manual; build ohm_gtv-userdebug and flash it; navigate to movie / app on main view of LauncherX; adb shell input keyevent --longpress KEYCODE_DPAD_CENTER; verify that longpress menu opens; adb shell input keyevent KEYCODE_DPAD_CENTER; verify that entity page opens
Change-Id: Iae08a6c3b2c52888eae63c91a609f4aff06d2297
This commit is contained in:
Philip Junker
2021-08-05 18:01:06 +02:00
parent 764792b6cb
commit 2dd95b3f41
2 changed files with 8 additions and 1 deletions

View File

@@ -600,6 +600,8 @@ public class ViewConfiguration {
}
/**
* Used for both key and motion events.
*
* @return the duration in milliseconds before a press turns into
* a long press
*/

View File

@@ -313,8 +313,13 @@ public class InputShellCommand extends ShellCommand {
injectKeyEvent(event);
if (longpress) {
try {
Thread.sleep(ViewConfiguration.getLongPressTimeout());
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// Some long press behavior would check the event time, we set a new event time here.
final long nextEventTime = now + ViewConfiguration.getGlobalActionKeyTimeout();
final long nextEventTime = now + ViewConfiguration.getLongPressTimeout();
injectKeyEvent(KeyEvent.changeTimeRepeat(event, nextEventTime, 1 /* repeatCount */,
KeyEvent.FLAG_LONG_PRESS));
}