diff --git a/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java b/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java index e649ce1de4..aa3710b6d9 100644 --- a/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java +++ b/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java @@ -164,6 +164,12 @@ public class DebugTestInformationHandler extends TestInformationHandler { } case TestProtocol.REQUEST_GET_TEST_EVENTS: { + if (sEvents == null) { + // sEvents can be null if Launcher died and restarted after + // REQUEST_START_EVENT_LOGGING. + return response; + } + synchronized (sEvents) { response.putStringArrayList( TestProtocol.TEST_INFO_RESPONSE_FIELD, new ArrayList<>(sEvents)); diff --git a/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java b/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java index 4440b82976..2edfc53f75 100644 --- a/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java +++ b/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java @@ -57,6 +57,8 @@ public class LogEventChecker { while (true) { rawEvents = mLauncher.getTestInfo(TestProtocol.REQUEST_GET_TEST_EVENTS) .getStringArrayList(TestProtocol.TEST_INFO_RESPONSE_FIELD); + if (rawEvents == null) return null; + final int expectedCount = mExpectedEvents.entrySet() .stream().mapToInt(e -> e.getValue().size()).sum(); if (rawEvents.size() >= expectedCount @@ -83,6 +85,7 @@ public class LogEventChecker { String verify(long waitForExpectedCountMs, boolean successfulGesture) { final ListMap actualEvents = finishSync(waitForExpectedCountMs); + if (actualEvents == null) return "null event sequences because launcher likely died"; final StringBuilder sb = new StringBuilder(); boolean hasMismatches = false;