summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Eric Rahm <erahm@google.com> 2023-05-24 18:32:21 -0700
committer Eric Rahm <erahm@google.com> 2023-05-27 00:14:17 +0000
commit37f58660a199f6e51ce9f71bda43b69dcdeb0735 (patch)
tree1d5faaef530bbdf9dba9dbd292e103bfe198a5ef
parent32f42bf93b53a98dc84de51f1c706ac0cae02375 (diff)
Workaround a robelectric related NPE in SurfaceSyncGroup.addTimer
Robolectric mocks out `HandlerThread` in such a way that in certain instances `HandlerThread.getLooper` returns null. Since adding the null check is small enough, we can opt to make this change to allow robolectric tests to run. Test: atest ClockworkSettingsRobotests Bug: 237804605 Change-Id: Ib28f80413265a770cfac44cf451714f1b66dfbc8
-rw-r--r--core/java/android/window/SurfaceSyncGroup.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/core/java/android/window/SurfaceSyncGroup.java b/core/java/android/window/SurfaceSyncGroup.java
index dfdff9ef97ce..5d14698c82b3 100644
--- a/core/java/android/window/SurfaceSyncGroup.java
+++ b/core/java/android/window/SurfaceSyncGroup.java
@@ -26,6 +26,7 @@ import android.os.Debug;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
+import android.os.Looper;
import android.os.RemoteException;
import android.os.Trace;
import android.util.ArraySet;
@@ -800,22 +801,25 @@ public final class SurfaceSyncGroup {
}
private void addTimeout() {
+ Looper looper = null;
synchronized (sHandlerThreadLock) {
if (sHandlerThread == null) {
sHandlerThread = new HandlerThread("SurfaceSyncGroupTimer");
sHandlerThread.start();
}
+
+ looper = sHandlerThread.getLooper();
}
synchronized (mLock) {
- if (mTimeoutAdded || mTimeoutDisabled) {
+ if (mTimeoutAdded || mTimeoutDisabled || looper == null) {
// We only need one timeout for the entire SurfaceSyncGroup since we just want to
// ensure it doesn't stay stuck forever.
return;
}
if (mHandler == null) {
- mHandler = new Handler(sHandlerThread.getLooper());
+ mHandler = new Handler(looper);
}
mTimeoutAdded = true;