Skip to content

Commit 146a6be

Browse files
committed
Fix flakiness of v2 window test of window does not flash background when closed
1 parent 6a67f7d commit 146a6be

1 file changed

Lines changed: 14 additions & 11 deletions

File tree

  • compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/v2

compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/v2/WindowTestV2.kt

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import androidx.compose.ui.window.window.toSize
4646
import androidx.compose.ui.window.v2.Window
4747
import androidx.compose.ui.window.v2.WindowBoundsProvider
4848
import androidx.compose.ui.window.v2.WindowIntrinsicSize
49+
import androidx.compose.ui.window.v2.WindowPositionProvider
4950
import androidx.compose.ui.window.v2.WindowSizeProvider
5051
import androidx.compose.ui.window.v2.rememberWindowStateWithBounds
5152
import androidx.compose.ui.window.v2.WindowState
@@ -65,6 +66,7 @@ import kotlin.test.assertNotNull
6566
import kotlin.test.assertNull
6667
import kotlin.test.assertTrue
6768
import kotlin.time.Duration
69+
import kotlin.time.Duration.Companion.milliseconds
6870
import kotlin.time.Duration.Companion.seconds
6971
import kotlinx.coroutines.*
7072
import org.junit.Assume.assumeFalse
@@ -664,20 +666,21 @@ class WindowTestV2 {
664666
lateinit var innerWindow: Window
665667
var showInnerWindow by mutableStateOf(false)
666668
val windowSize = DpSize(800.dp, 800.dp)
667-
launchTestWindowV2Application(
668-
state = WindowState(
669-
initialBoundsProvider = WindowBoundsProvider(WindowSizeProvider.Fixed(windowSize))
670-
),
671-
) {
669+
val outerWindowState = WindowState(
670+
initialBoundsProvider = WindowBoundsProvider(WindowSizeProvider.Fixed(windowSize))
671+
)
672+
launchTestWindowV2Application(outerWindowState) {
672673
outerWindow = this.window
673674
Box(Modifier.fillMaxSize().background(Color.Black))
674675

675676
if (showInnerWindow) {
676677
Window(
677678
onCloseRequest = {},
678679
state = rememberWindowState(
679-
initialBoundsProvider = WindowBoundsProvider(WindowSizeProvider.Fixed(windowSize))
680-
),
680+
initialBoundsProvider = WindowBoundsProvider.Absolute(
681+
outerWindowState.bounds
682+
)
683+
)
681684
) {
682685
innerWindow = this.window
683686
Box(Modifier.fillMaxSize().background(Color.Black))
@@ -691,7 +694,6 @@ class WindowTestV2 {
691694

692695
showInnerWindow = true
693696
awaitIdle()
694-
delay(1000)
695697

696698
var nonBlackPixelDetected: java.awt.Color? = null
697699
val testLocation = innerWindow.bounds.let {
@@ -709,9 +711,10 @@ class WindowTestV2 {
709711
}
710712
}
711713

712-
innerWindow.dispose()
713-
awaitIdle()
714-
delay(1000)
714+
delay(500.milliseconds)
715+
showInnerWindow = false
716+
delay(500.milliseconds)
717+
assertFalse(innerWindow.isVisible)
715718

716719
stopThread.getAndSet(true)
717720
t.join()

0 commit comments

Comments
 (0)