Split loading the bitmap from storage and actually setting it in two operations
with one that can run in parallel with onCreateView for HomeFragment and one
that can be used serially on the main thread to actually set the wallpaper.
This seems like the best compromise to ensure that everytime the homescreen is
shown it will have the wallpaper set but does affect the performance - there is
a delay in showing HomeFragment to account for waiting for the wallpaper to be
set.
In testing the new delay seems close to the one from the initial wallpapers
implementation. See more in https://github.com/mozilla-mobile/fenix/pull/26794.
Split versioning of compose compiler.
Enable Xjvm-default to allow inheriting from interfaces with '@JvmDefault' members
like AbstractComposeView, NestedScrollConnection.
Restore using LazyRow's "contentPadding" property to add padding to just the
items while the entire section is allowed to extend to the edges of the screen
and so have enough room to draw items shadows without them being clipped.
- Created a new "sync debug" pref screen to hold the Fxa, Sync, and Push
server override prefs. They were taking a lot of screen space on the
top-level settings menu as individual items
- Added button on that screen to quit FF which is needed to apply the
changes.
- This is definitely not the nicest UI, but hopefully QA can just
override the prefs once save them in an emulator and never have to
go back to this screen.
- I do think this is a nicer UI than before, where FF would quit
after a change to any of the prefs. That forces you to restart FF
3 times if you wanted to override all 3 server URLs.
Using Dispatchers.IO allowed the observer to react faster to wallpaper state
updates but caused issues with updating the wallpaper in fragment layout.
Using Dispatchers.Main.immediate gives us a bit slower reaction time but still
faster than Dispatchers.Main and allows us to still execute before the fragment
is visible.
As part of a preventitive measure for home page regression loading, we
fixed the UpdateFirstFrameDrawn call to happen after the first layout in
the main RecyclerView is completed. In addition, we also make pocket
aware of this flag so that it renders itself after the first layout.
This helps prioritize current & future features that are visible first
to render before those that are off screen.
Co-authored-by: Arturo Mejia <arturomejiamarmol@gmail.com>
By using Store.observeManually in a standalone coroutine we can observe the
store and update the wallpapers even before onStart (in manual tests is right
around onStart, certainly before the other widgets shown on homescreen).
Created a new WallpapersObserver to have the functionality easier to reason
about and be easier to test.
* For #26656 - Use the correct string for onboarding_home_welcome_description
* Update app/src/main/res/values/strings.xml
Co-authored-by: Sarah541 <sarahkhan1107@hotmail.com>
Co-authored-by: Sarah541 <sarahkhan1107@hotmail.com>
If Total Cookie Protection is enabled when first accessing a normal tab
(not a custom tab) a new Contextual Feature Recommendation popup will be shown
informing about the added protection and allowing the user to open a support
page with more data about the new option for privacy protection.
Supported anchorings will now be:
- INDICATOR_CENTERED_IN_ANCHOR - previous functionality - allows to have the
indicator point to exactly the middle of a smaller anchor.
- BODY_TO_ANCHOR_CENTER - new default - allows to align the popup inside a
wider anchor
- BODY_TO_ANCHOR_START - new anchoring - allows to align the popup flushed to
it's anchor's start.