Fixed
Status Update
Comments
an...@google.com <an...@google.com> #2
Project: platform/frameworks/support
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
https://android-review.googlesource.com/1123258
https://goto.google.com/android-sha1/b90079595f33f58fece04026a97faa0d243acdb1
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
sh...@google.com <sh...@google.com>
sh...@google.com <sh...@google.com> #3
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
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 ( b/140759491 ).
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
https://android-review.googlesource.com/1288456
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
ap...@google.com <ap...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 59345217ef602060cd33f383381e84e97a3c1449
Author: Shep Shapard <shepshapard@google.com>
Date: Wed Jun 03 15:52:22 2020
Handle removing PointerInputFilters synchronously
Note: This change was landed previously by
aosp/1324303 but then reverted via aosp/1327417.
This is simply a small rebase and relanding.
Subcomposition can happen during the dispatch of
pointer input events. When this occurred, it
used to crash. Now it doesn't.
Relnote: "Fixed issue where pointer input
dispatch would cause a crash if
PointerInputFilters were removed via
subcomposition during disptach. This is now fixed."
Fixes: 157998762
Test: ./gradlew ui:ui-core:testDebugUnitTest --tests=androidx.ui.core.pointerinput.HitPathTrackerTest
Change-Id: I1f48bdee2fcb59eb0984c31ef4ce95d75417dcf4
M ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/CoreDemos.kt
A ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PointerInputDuringSubCompDemo.kt
M ui/ui-core/src/main/java/androidx/ui/core/pointerinput/HitPathTracker.kt
M ui/ui-core/src/test/java/androidx/ui/core/pointerinput/HitPathTrackerTest.kt
https://android-review.googlesource.com/1329256
Branch: androidx-master-dev
commit 59345217ef602060cd33f383381e84e97a3c1449
Author: Shep Shapard <shepshapard@google.com>
Date: Wed Jun 03 15:52:22 2020
Handle removing PointerInputFilters synchronously
Note: This change was landed previously by
aosp/1324303 but then reverted via aosp/1327417.
This is simply a small rebase and relanding.
Subcomposition can happen during the dispatch of
pointer input events. When this occurred, it
used to crash. Now it doesn't.
Relnote: "Fixed issue where pointer input
dispatch would cause a crash if
PointerInputFilters were removed via
subcomposition during disptach. This is now fixed."
Fixes: 157998762
Test: ./gradlew ui:ui-core:testDebugUnitTest --tests=androidx.ui.core.pointerinput.HitPathTrackerTest
Change-Id: I1f48bdee2fcb59eb0984c31ef4ce95d75417dcf4
M ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/CoreDemos.kt
A ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PointerInputDuringSubCompDemo.kt
M ui/ui-core/src/main/java/androidx/ui/core/pointerinput/HitPathTracker.kt
M ui/ui-core/src/test/java/androidx/ui/core/pointerinput/HitPathTrackerTest.kt
Description
Basically what happens is when you have some postponed loading like asynchronously loading the image inside an item of AdapterList and you scroll sometimes it crashes and you there is no workaround.
It is not stable reproducible but I come up with a simple repro app(and you can see the logs here as well):
What happens as I understand:
In PointerInputEventProcessor you first collect all PointerInputFilters which were hit(for example in our case is and AdapterList itself and the clickable item inside it)
Then inside AdapterList onDrag callback we synchronously subcompose which means that the AdapterList's item could recompose and apply a new modifier(for example update the background color).
And then we execute dispatchChanges on a modifier which was already detached.
We just discussed it during the sync, but seems like the simplest workaround is to add inside Node.dispatchChanges() something like
if (!pointerInputFilter.isAttached) {
return false
}