Merge "Detach ViewCaptureRule onDrawListener on the main thread." into udc-dev am: 17164414ca

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/23357371

Change-Id: I8c6ac4297a6774969996f97d2d81a29b721b4b38
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot
2023-05-22 19:48:02 +00:00
committed by Automerger Merge Worker

View File

@@ -21,6 +21,7 @@ import android.media.permission.SafeCloseable
import android.os.Bundle
import androidx.test.core.app.ApplicationProvider
import com.android.app.viewcapture.SimpleViewCapture
import com.android.app.viewcapture.ViewCapture.MAIN_EXECUTOR
import com.android.launcher3.util.ActivityLifecycleCallbacksAdapter
import org.junit.rules.TestRule
import org.junit.runner.Description
@@ -69,7 +70,9 @@ class ViewCaptureRule : TestRule {
// Clean up ViewCapture references here rather than in onActivityDestroyed so
// test code can access view hierarchy capture. onActivityDestroyed would delete
// view capture data before FailureWatcher could output it as a test artifact.
windowListenerCloseables.onEach(SafeCloseable::close)
// This is on the main thread to avoid a race condition where the onDrawListener
// is removed while onDraw is running, resulting in an IllegalStateException.
MAIN_EXECUTOR.execute { windowListenerCloseables.onEach(SafeCloseable::close) }
}
}
}