Merge pull request #1559 from android/av/dcowi-update

Update DeviceConfigurationOverride.WindowInsets to match upstream implementation
pull/1517/merge
Don Turner 4 months ago committed by GitHub
commit 371e181b79
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -17,18 +17,17 @@
package com.google.samples.apps.nowinandroid.ui package com.google.samples.apps.nowinandroid.ui
import android.view.WindowInsets import android.view.WindowInsets
import android.widget.FrameLayout import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.AbstractComposeView
import androidx.compose.ui.test.DeviceConfigurationOverride import androidx.compose.ui.test.DeviceConfigurationOverride
import androidx.compose.ui.viewinterop.AndroidView import androidx.compose.ui.viewinterop.AndroidView
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.core.view.children import androidx.core.view.children
/** /**
* A [DeviceConfigurationOverride] that allows overriding the [windowInsets] available * A [DeviceConfigurationOverride] that overrides the window insets for the contained content.
* to the content under test.
*/ */
@Suppress("ktlint:standard:function-naming") @Suppress("ktlint:standard:function-naming")
fun DeviceConfigurationOverride.Companion.WindowInsets( fun DeviceConfigurationOverride.Companion.WindowInsets(
@ -38,10 +37,17 @@ fun DeviceConfigurationOverride.Companion.WindowInsets(
val currentWindowInsets by rememberUpdatedState(windowInsets) val currentWindowInsets by rememberUpdatedState(windowInsets)
AndroidView( AndroidView(
factory = { context -> factory = { context ->
object : FrameLayout(context) { object : AbstractComposeView(context) {
@Composable
override fun Content() {
currentContentUnderTest()
}
override fun dispatchApplyWindowInsets(insets: WindowInsets): WindowInsets { override fun dispatchApplyWindowInsets(insets: WindowInsets): WindowInsets {
children.forEach { children.forEach {
it.dispatchApplyWindowInsets(currentWindowInsets.toWindowInsets()) it.dispatchApplyWindowInsets(
WindowInsets(currentWindowInsets.toWindowInsets()),
)
} }
return WindowInsetsCompat.CONSUMED.toWindowInsets()!! return WindowInsetsCompat.CONSUMED.toWindowInsets()!!
} }
@ -52,17 +58,10 @@ fun DeviceConfigurationOverride.Companion.WindowInsets(
*/ */
@Deprecated("Deprecated in Java") @Deprecated("Deprecated in Java")
override fun requestFitSystemWindows() { override fun requestFitSystemWindows() {
dispatchApplyWindowInsets(currentWindowInsets.toWindowInsets()!!) dispatchApplyWindowInsets(WindowInsets(currentWindowInsets.toWindowInsets()!!))
} }
}.apply {
addView(
ComposeView(context).apply {
setContent {
currentContentUnderTest()
}
},
)
} }
}, },
update = { with(currentWindowInsets) { it.requestApplyInsets() } },
) )
} }

Loading…
Cancel
Save