* Sometimes would cause an unending stream of accessibility events (particularly if starting off-screen). This would break TalkBack and anything that depends on UiAutomator (although the system itself took it like a champ).
* Sometimes would not load images (because the ViewTreeObserver would never fire onGlobalLayout after being added because measured width was 0, even though a new width was calculated later).
* Would not recalculate the number of icons that fit if the width changes after the first layout.
Combining ViewHolders with waiting for measuring and/or ViewTreeObservers was always a wonky approach, even though it should've worked in theory. This should be more robust.
Also fixes the unwanted animation on mode screen load related to the absence of the header name being applied a tad too late.
Fixes: 359948417
Fixes: 360072876
Fixes: 360328804
Test: atest SettingsRoboTests + manual + adb shell uiautomator events
Flag: android.app.modes_ui
Change-Id: I7e5dfbdab220d1ebc1c68e5e87ce544ee86b6a65
Switching from Priority Apps to None would still show the icons of the priority apps. There were several minor things wrong:
* We were keeping the AppSession when a mode switches from "priority apps" to "none", and because onResume always fires the callback, we were loading the icons.
* Even when deactivating the session, its own onResume lifecycle listener was still firing one extra time, before we had a chance to deactivate it.
Also two minor improvements to CircularIconsPreference:
* Update mLoadedIcons when we early exit due to mIconSet having no items. Mostly for testing, since the icons wouldn't be visible anyway.
* Use notifyChanged() when we get a measured view, instead of holding a reference to the view. Technically the previous code violated the "shouldn't keep references to views outside of onBindViewHolder" (although I didn't see this having an effect in practice).
Fixes: 360077747
Test: atest ZenModeAppsLinkPreferenceControllerTest
Flag: android.app.modes_ui
Change-Id: I6d4b7a344542da46f5ebfcd0774f1af27ed113ac
The description of the segment is already "App 1, App 2, and x more can interrupt", from its text. If the icons don't fit, there's a "+N" at the end. Accessibility services reading this is confusing, especially because the icons that don't fit are not the same as the names that don't fit, so you could get something like "App 1, App 2, and 9 more can interrupt, plus 4".
The whole circular-icons section is irrelevant for a11y so we just mark the container as "noHideDescendants" to save Talkback some work.
Fixes: 359837977
Test: Manual with Talkback
Flag: android.app.modes_ui
Change-Id: I346abcc94e25ef60c5e91f77b8e13f38ade39c71
- Use getAllowedChannels API instead of getUsableChannels API to avoid corner cases
Bug: 352267181
Flag: EXEMPT bugfix
Test: Manual testing
atest -c WifiHotspotRepositoryTest
Change-Id: I5ae4a4d429924ac2b8676bbbb27016a93ccd9a1b
This change removes the custom rounding of corners, as the provided images already have rounded corners.
Bug: 332730534
Test: manual (light & dark mode, various font/display sizes)
Flag: android.app.modes_ui
Change-Id: I71d0707554e5bc638add6a2907874e18e833da08
Also, don't apply the layout params, etc on each call to updateState - once per displayPreference is enough.
Fixes: 356399449
Bug: 357861830
Test: manual
Flag: android.app.modes_ui
Change-Id: I6967ea1745377d0f514ca0f68101043f017a8fd7
1. For biometric settings, request biometric prompt only after
successful credential verification and no auth request after
enrollment
2. Differentiate between mandatory biometrics ineffective error and
other biometric errors
Flag: android.hardware.biometrics.flags.mandatory_biometrics
Bug: 358176202
Bug: 358179610
Test: atest UtilsTest DevelopmentSettingsDashboardFragmentTest MainClearTest BuildNumberPreferenceControllerTest CombinedBiometricProfileSettingsTest
Change-Id: I778dd5403dd5ab64d8cc39bd88b22c4d39182e94