Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7c507c3 authored by Stefan Andonian's avatar Stefan Andonian
Browse files

Detach ViewCaptureRule onDrawListener on the main thread.

This should avoid an IllegalStateException in instrumented tests.

Bug: 283313972
Test: Post-submit test succeeded.
Change-Id: I5302cfc089d91b044baaac75b5d7c69e763a1847
parent b9f04842
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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) }
                }
            }
        }