Status Update
Comments
al...@google.com <al...@google.com>
gs...@gmail.com <gs...@gmail.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
gs...@gmail.com <gs...@gmail.com> #3
[Deleted User] <[Deleted User]> #4
(author of
Per the setAppearanceLightStatusBars
If false, reverts to the default appearance.
So if the theme has windowLightStatusBar=true
, then the default behavior is light status bars, meaning there's no way to unset it back to dark status bars. I agree that this is pretty confusing, and also not super helpful.
For a workaround, right now I am just using the systemUiVisibility
flags solution
ca...@google.com <ca...@google.com> #5
I checked the behavior and what happens is:
- API 30:
setAppearancLightStatusBars
conflicts withSYSTEM_UI_FLAG_LIGHT_STATUS_BAR
. The workaround is to unset SYSTEM_UI_FLAG_LIGHT_STATUS_BAR, or setwindowLightStatusBar=false
. This is a platform bug, a workaround will be implemented incore
. - on API < 30: there is indeed a documentation issue that will be fixed, but the behavior is correct.
ca...@google.com <ca...@google.com> #6
Since an easy workaround is possible, this doesn't need to block the release.
[Deleted User] <[Deleted User]> #7
Small addition to #5: It seems like the platform behaviour has changed in Android 12 Beta. So with the WindowInsetsControllerCompat it now seems like:
- API > 30: can toggle back and forth
- API == 30: cannot toggle|
- API < 30: can toggle
ap...@google.com <ap...@google.com> #8
Branch: androidx-main
commit 4b9ea4a8a3e548875e5a5a13f8a7a61ceea58746
Author: Ioana Moraru <ioanamoraru@google.com>
Date: Fri Jul 30 22:17:56 2021
Partially fix setAppearanceLightStatusBars in API 30
WindowInsetsControllerCompat.setAppearanceLightStatusBars not working with windowLightStatusBar=true in API 30. This commit fixes it for the WindowInsetsControllerCompat(window, compatController).
Bug: 180881870
Test: Set windowLightStatusBar=true and trigger setAppearanceLightStatusBar
Test:WindowInsetsControllerCompatActivityTest#systemBar_light_theme
Change-Id: I8961fc92b973ce0357d4d5f0c8919a3b8fe8a460
M core/core/src/androidTest/java/androidx/core/view/WindowInsetsControllerCompatActivityTest.kt
M core/core/src/main/java/androidx/core/view/WindowInsetsControllerCompat.java
ca...@google.com <ca...@google.com>
[Deleted User] <[Deleted User]> #9
Which release will include this fix?
ca...@google.com <ca...@google.com> #10
This should be in 1.7.0-beta02.
ap...@google.com <ap...@google.com> #11
Branch: androidx-main
commit 81f994d8759b8a374d8fb2db1032306c614749dc
Author: Alex Vanyo <vanyo@google.com>
Date: Thu Jan 27 01:28:23 2022
Set system bar appearance flags on API 30 anyway
android:windowLightStatusBar=true and the only interaction was calling
WindowInsetsControllerCompat.isAppearanceLightStatusBars=false
Additionally, the navigation bars scrim wasn't updating properly on API
30, even though the icons were changing.
As an update for both of these, on API 30 we set the corresponding
systemUiVisibility flags anyway, in addition to calling through to the
platform WindowInsetsController.
Fixes: 215832843,180881870
Test: manual + flag test updates
Change-Id: I654496f7701f342eec8fd0e18e4bd353dd4fb2bc
M core/core/src/androidTest/java/androidx/core/view/WindowInsetsControllerCompatActivityTest.kt
M core/core/src/main/java/androidx/core/view/WindowInsetsControllerCompat.java
sa...@gmail.com <sa...@gmail.com> #12
va...@google.com <va...@google.com> #13
The fix in #11 was first released in 1.8.0-alpha04
, and will be in future releases as well.
sa...@gmail.com <sa...@gmail.com> #14
```
Caused by java.lang.NullPointerException: Attempt to read from field 'int android.view.WindowManager$LayoutParams.flags' on a null object reference
at androidx.core.view.WindowInsetsControllerCompat$Impl20.unsetWindowFlag(WindowInsetsControllerCompat.java:511)
at androidx.core.view.WindowInsetsControllerCompat$Impl26.setAppearanceLightNavigationBars(WindowInsetsControllerCompat.java:597)
at androidx.core.view.WindowInsetsControllerCompat.setAppearanceLightNavigationBars(WindowInsetsControllerCompat.java:226)
```
On androids 10,9,8
Might it by any chance be already fixed in `1.8.0-alpha06`?
va...@google.com <va...@google.com> #15
Correct, based on the stacktrace that crash should no longer occur on 1.8.0-alpha06
. Have you had a chance to try out 1.8.0-alpha06
and see if it still occurs?
sa...@gmail.com <sa...@gmail.com> #16
va...@google.com <va...@google.com> #17
Glad to hear it!
Description
Component used: androidx.appcompat:appcompat
Version used: 1.3.0-beta01
Devices/Android versions reproduced on: Pixel 5 API 30, Emulator Pixel 4 API 30
If this is a bug in the library, we would appreciate if you could attach:
windowLightStatusBar=false
without issues, and a demo withwindowLightStatusBar=true
showing the issue.The code in the sample project: