* Closes#2782: Hide send tab when no devices available
* For #2752: Enabled send tab for debug and nightly builds
* For #2753: Add Send Tab functionality to UI
* Updates Fenix taskcluster tasks to support beta release
* Throw error if -PversionName isn't set for release builds
* Uses beta secrets for beta
* Improves nightly and beta treeherder symbols
This fetches the Google Advertising ID, salts it and
then applies hashing before sending a ping with it,
at startup. Hashing and salting are used in order
to prevent ourselves to correlate advertising IDs
from the same user running different products we
own off a single device. We will never send the
client_id and the Google Advertising ID in the same
ping.
Our main dependency - android-components - is tightly integrated
against a certain version of appservices. Having a direct dependency
at the Fenix level is a foot-gun: it allows Fenix to consume an API-incompatible
version of appservices, breaking parts of android-components. Due to
how gradle dependency resolution works, this breakage is "silent": there are
no compile time warnings. A recent example of this is broken history sync,
and buggy FxA experience in Fenix.
This patch removes a direct dependency, letting android-components dictate
which appservices version should be used Fenix builds.
This patch integrates the new a-c BackgroundSyncManager, which is the
main entry point for interacting with Sync. Behind the scenes, it uses
WorkManager in order to sync configured syncable stores.
Current behaviour:
- sync runs on start, with a slight delay
- sync runs on a schedule few times a day, to lessen the startup sync burden
Also included is a basic UI integration in order to allow user to synchronize
on demand, and monitor sync state.
This patch integrates relevant a-c components, and updates the current Preferences
UI to allow signing-in and displaying basic account information (email, displayName).
Currently there's no Accounts UI, and so singing out or otherwise interacting with the
account isn't possible.