Status Update
Comments
li...@google.com <li...@google.com> #2
Branch: androidx-master-dev
commit c60f33e229e31ab328ef6b59dab63b264954831c
Author: Alexandre Elias <aelias@google.com>
Date: Fri Jul 10 16:23:09 2020
Semantics no-op cleanups
Partly in response to lmr's broad code review, I did a pass of
superficial API/implementation cleanup. The main changes are:
- I changed each Boolean SemanticsProperty where false is equivalent to
not being present to take "Unit" instead. This is conceptually
clearer: it avoids questions like "can I cancel out a semantics from a
merged child by setting it to false?" Because "property = Unit" looks
weird, I also changed the style of these to "property()".
- I moved the Semantics id generator closer to where it's used, in
SemanticsModifierCore. I made it internal and an AtomicInt.
(Note that integer ids are heavily used in the Android
AccessibilityNodeInfo APIs so I can't simply remove them entirely.)
- I deleted dead code. Some examples include SemanticsHintOverrides,
a public API not connected to anything, and SemanticsPropertyKey
merge() open method which is never called. (In both cases I have
a different plan in mind for accessibility.)
Fixes: 145951226
Fixes: 145955412
Test: existing tests
Relnote: "Single-value semantics properties now use a calling style.
For example, 'semantics { hidden = true }' is now written as:
'semantics { hidden() }'."
Change-Id: Ic1afd12ea22c926babc9662f1804d80b33aa0cfc
M ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/LayoutNodeModifierBenchmark.kt
M ui/ui-core/api/0.1.0-dev15.txt
M ui/ui-core/api/current.txt
M ui/ui-core/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-core/api/public_plus_experimental_current.txt
M ui/ui-core/api/restricted_0.1.0-dev15.txt
M ui/ui-core/api/restricted_current.txt
M ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/graphics/vector/VectorTest.kt
M ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/semantics/SemanticsTests.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidActuals.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeView.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeViewAccessibilityDelegateCompat.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidPopup.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/Expect.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsConfiguration.kt
D ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsHintOverrides.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsModifier.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsNode.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsOwner.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsWrapper.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/semantics/SemanticsProperties.kt
M ui/ui-foundation/api/0.1.0-dev15.txt
M ui/ui-foundation/api/current.txt
M ui/ui-foundation/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-foundation/api/public_plus_experimental_current.txt
M ui/ui-foundation/api/restricted_0.1.0-dev15.txt
M ui/ui-foundation/api/restricted_current.txt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Clickable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Dialog.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Scroller.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/Selectable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/Toggleable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/semantics/FoundationSemanticsProperties.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/CardTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxScreenshotTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonScreenshotTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ScaffoldTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/SnackbarTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/SurfaceTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ripple/RippleIndicationTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/TextFieldScreenshotTest.kt
M ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
M ui/ui-material/src/main/java/androidx/ui/material/TextFieldImpl.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/AssertsTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/CallSemanticsActionTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/ErrorMessagesTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/FindersTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/PrintToStringTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/ScrollToTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/TextActionsTest.kt
M ui/ui-test/src/main/java/androidx/ui/test/Actions.kt
M ui/ui-test/src/main/java/androidx/ui/test/Filters.kt
M ui/ui-text/api/0.1.0-dev15.txt
M ui/ui-text/api/current.txt
M ui/ui-text/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-text/api/public_plus_experimental_current.txt
M ui/ui-text/api/restricted_0.1.0-dev15.txt
M ui/ui-text/api/restricted_current.txt
M ui/ui-text/src/commonMain/kotlin/androidx/ui/text/CoreTextField.kt
M ui/ui-text/src/commonMain/kotlin/androidx/ui/text/TextSemanticsProperties.kt
li...@google.com <li...@google.com> #3
This does seem to be during teardown, where Android Auto is tearing down it's process. Can you reproduce this issue reliably? Was it a one off? Or does this happen consistently?
Thanks for filing the bug once again
kr...@tomtom.com <kr...@tomtom.com> #4
This happens soon after android auto service is destroyed. Sometimes we see android.intent.action.ACTION_POWER_DISCONNECTED
event being received between service destruction and crash - I recon that user has detached phone from head unit when the app was running.
kr...@tomtom.com <kr...@tomtom.com> #5
Another related case is that we sometimes do get this onSurfaceDestroyed
but the service was already destroyed. This causes a bit of mayhem and requires to use additional guards against this case.
li...@google.com <li...@google.com> #6
I am looking into mitigating these shutdown race conditions in a future release.
li...@google.com <li...@google.com>
kr...@tomtom.com <kr...@tomtom.com> #7
Still happens with new androidx car app library
at androidx.car.app.utils.RemoteUtils$SurfaceCallbackStub.lambda$onSurfaceDestroyed$3(RemoteUtils:209)
at androidx.car.app.utils.RemoteUtils$SurfaceCallbackStub.lambda$onSurfaceDestroyed$3$RemoteUtils$SurfaceCallbackStub(RemoteUtils:3)
at i0.d.a.k0.c.a(Unknown:4)
at androidx.car.app.utils.RemoteUtils.lambda$dispatchHostCall$0(RemoteUtils:115)
at androidx.car.app.utils.-$$Lambda$RemoteUtils$hqdRHUgQFt6LDam0B8zarqtlYt0.run(-:1)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99
li...@google.com <li...@google.com> #8
We have fixed the issue now and it will be available in a following release
ap...@google.com <ap...@google.com> #9
Branch: androidx-main
commit 076857f2f01e8e30f8186cad44ce22192438073a
Author: Rafael Lima <therafael@google.com>
Date: Thu Feb 25 23:28:48 2021
Improvements to shutdown scenarios
1. Do not send calls to app level callbacks if the app is not at least
in created state
2. Do not crash the app if the host is dead while trying to send an IPC
Follow up review will stop dispatching calls from template related
callbacks (i.e. onClick, etc)
Relnote: "Improvements to not dispatch calls to app if its lifecycle is
not at least in a created state"
Test: Unit tests
Bug:180530156
Bug:179800224
Bug:177921120
Bug:178516889
Change-Id: I8696503d1a9859411c4a52fa73d2852c8b3383d9
M car/app/app-testing/src/main/java/androidx/car/app/testing/TestAppManager.java
M car/app/app-testing/src/main/java/androidx/car/app/testing/TestCarContext.java
M car/app/app-testing/src/main/java/androidx/car/app/testing/navigation/TestNavigationManager.java
M car/app/app/src/main/java/androidx/car/app/AppManager.java
M car/app/app/src/main/java/androidx/car/app/CarAppService.java
M car/app/app/src/main/java/androidx/car/app/CarContext.java
M car/app/app/src/main/java/androidx/car/app/HostDispatcher.java
M car/app/app/src/main/java/androidx/car/app/ScreenManager.java
M car/app/app/src/main/java/androidx/car/app/model/OnCheckedChangeDelegateImpl.java
M car/app/app/src/main/java/androidx/car/app/model/OnClickDelegateImpl.java
M car/app/app/src/main/java/androidx/car/app/model/OnItemVisibilityChangedDelegateImpl.java
M car/app/app/src/main/java/androidx/car/app/model/OnSelectedDelegateImpl.java
M car/app/app/src/main/java/androidx/car/app/model/SearchCallbackDelegateImpl.java
M car/app/app/src/main/java/androidx/car/app/navigation/NavigationManager.java
M car/app/app/src/main/java/androidx/car/app/utils/LogTags.java
M car/app/app/src/main/java/androidx/car/app/utils/RemoteUtils.java
M car/app/app/src/test/java/androidx/car/app/AppManagerTest.java
M car/app/app/src/test/java/androidx/car/app/CarAppServiceTest.java
M car/app/app/src/test/java/androidx/car/app/CarContextTest.java
M car/app/app/src/test/java/androidx/car/app/HostDispatcherTest.java
M car/app/app/src/test/java/androidx/car/app/navigation/NavigationManagerTest.java
Description
Library version used: 1.0.0-beta.1
Devices/Android versions reproduced on: Galaxy S10e (SM-G9700) / Galaxy M51 (SM-M515F) / Galaxy S9+ (SM-G965F)
Android Auto version reproduced on: 6.0.615334-release
Sample project to trigger the issue.
The issue reported by end users and we see in crashlytics breadcrumbs that it occurs on AndroidAuto Service shutdown.
The issue could be related tohttps://issuetracker.google.com/u/1/issues/178107274 where
CarSurfaceListener
could not be set to null during the shutdown.A bug report.