Status Update
Comments
gr...@google.com <gr...@google.com> #2
Branch: androidx-master-dev
commit b90079595f33f58fece04026a97faa0d243acdb1
Author: Yuichi Araki <yaraki@google.com>
Date: Wed Sep 18 16:55:49 2019
Change the way to detect mismatch between POJO and query
This fixes cursor mismatch warnings with expandProjection.
Bug: 140759491
Test: QueryMethodProcessorTest
Change-Id: I7659002e5e0d1ef60fc1af2a625c0c36da0664d8
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
M room/compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/testing/TestProcessor.kt
gr...@google.com <gr...@google.com> #3
gr...@google.com <gr...@google.com> #4
Branch: androidx-master-dev
commit bdde5a1a970ddc9007b28de4aa29d60ffa588f08
Author: Yigit Boyar <yboyar@google.com>
Date: Thu Apr 16 16:47:05 2020
Re-factor how errors are dismissed when query is re-written
This CL changes how we handle errors/warnings if query is
re-written.
There was a bug in expandProjection where we would report warnings
for things that Room already fixes automatically (
The solution to that problem (I7659002e5e0d1ef60fc1af2a625c0c36da0664d8)
solved it by deferring validating of columns until after re-write
decision is made. Unfortunately, this required changing PojoRowAdapter
to have a dummy mapping until it is validating, make it hard to use
as it does have a non-null mapping which is not useful.
This CL partially reverts that change and instead rely on the log
deferring logic we have in Context. This way, we don't need to break
the stability of PojoRowAdapter while still having the ability to
drop warnings that room fixes. This will also play nicer when we
have different query re-writing options that can use more information
about the query results.
Bug: 153387066
Bug: 140759491
Test: existing tests pass
Change-Id: I2ec967c763d33d7a3ff02c1a13c6953b460d1e5f
M room/compiler/src/main/kotlin/androidx/room/log/RLog.kt
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
gr...@google.com <gr...@google.com> #5
While 256k is the max constraint size, Infinity is also allowed as an exception. Perhaps we could propagate the infinity to the measure in cases like this.
ja...@gmail.com <ja...@gmail.com> #6
It makes sense that there's a limit, but it's remarkable that it's (apparently) much lower than in the old XML system. I'm working on splitting the user's content into multiple items (not easy, trying to split it nicely on paragraphs et cetera). Maybe the error can be improved here? Cannot represent a size of 330071 in Constraints
doesn't say much. Are those pixels? Is that an internal issue or a user error? I thought it was the first.
Perhaps something like Composable is too large: 330071 pixels. Limit is 256k pixels.
would be a lot clearer.
gr...@google.com <gr...@google.com> #7
Reproducible in Compose Foundation
1.5.4
, but not in 1.4.3
. This case started crashing in 1.5.0-alpha02
(verified not crashing in 1.5.0-alpha01
), which is when TextWithModifier
became the default BasicText
.
Specific code used to reproduce:
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.BasicText
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.sp
@Composable
fun Content() {
var showText by remember { mutableStateOf(false) }
var numberOfLines by remember { mutableStateOf(5_000) }
val string = buildString { repeat(numberOfLines) { appendLine("Line $it") } }
val scrollState = rememberScrollState()
Column(modifier = Modifier.verticalScroll(scrollState)) {
BasicText("Number of lines")
BasicTextField(
value = numberOfLines.toString(),
onValueChange = { numberOfLines = it.toIntOrNull() ?: 0 },
readOnly = showText,
)
BasicText("(= ${string.length} characters)")
BasicText(
text = "Toggle Text (Click text)",
modifier = Modifier.clickable { showText = !showText },
)
if (showText) {
BasicText(
text = string,
style = TextStyle(fontSize = 23.sp),
)
}
}
}
gr...@google.com <gr...@google.com> #8
Also note, this is not Lazy Layout specific, we just need text to be measured with a constraint of infinity, which is why the above repro uses Column
with verticalScroll
.
se...@google.com <se...@google.com> #9
Thanks for the bug report this is excellent!
se...@google.com <se...@google.com> #10
This is visible now because previously it would only trigger when inlineContent was present. Now we measure 1 child in all passes
ap...@google.com <ap...@google.com> #11
Branch: androidx-main
commit 76a2a7b35ef1398119cc0a5d7d0f553ce37eeef4
Author: Sean McQuillan <seanmcq@google.com>
Date: Mon Dec 04 13:40:44 2023
Text doesn't crash when text is very very tall
Previously: Constraints would run out of bits of text was too large
Now: Inner measures are constrained first by width, then by height
Fixes:
Test: ./gradlew :com:found:found:cAT
Relnote: Fix crash that impacted very large text measured with infinite constraints.
Change-Id: I1a7df0f35e5506b4ca05c4e2091142012a07908f
M compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text/modifiers/LayoutUtilsKtTest.kt
M compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text/modifiers/TextAnnotatedStringNodeTest.kt
M compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text/modifiers/TextStringSimpleNodeTest.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/modifiers/LayoutUtils.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/modifiers/TextAnnotatedStringNode.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/modifiers/TextStringSimpleNode.kt
ap...@google.com <ap...@google.com> #12
Branch: androidx-main
commit 3a0cbbb01cb74bcbfc72797c5eb5bac5ad9e4cce
Author: Sean McQuillan <seanmcq@google.com>
Date: Tue Dec 05 10:39:42 2023
Add docs and more tests for fixCoercedHeightAndWidthForBits
Bug:
Test: ./gradlew :com:found:found:cAT
Change-Id: I7faf92e19d24550e4ceaf11c64afe6f67bd274cf
M compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text/modifiers/LayoutUtilsKtTest.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/modifiers/LayoutUtils.kt
na...@google.com <na...@google.com> #13
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.compose.foundation:foundation:1.6.0-beta03
androidx.compose.foundation:foundation-android:1.6.0-beta03
androidx.compose.foundation:foundation-desktop:1.6.0-beta03
Description
Reproduction
Text
LazyColumn
(same length text inColumn
does not crash)See attached sample project. I use a larger font size there to speed up the reproduction (rendering 5k times 24sp is a lot faster than 50k times 14sp).
Stack trace