* For 11657: add LP attribute for tracking protection
* For #11704: added tracking_protection_enabled attribute
* Added docs for the new attributes, linking to data-review to the mma.md
* Rename null to none when no ETP is enabled
Stricter synchronization by always using the same "loadedSearchEngines"
variable.
With "loadedSearchEngines" calling "refreshAsync()" we also get the fallback
engines to contain reddit and youtube (which are programatically added) and
also now we properly remember and display the engines added by user.
We have two search engine types:
- one based on MLS reported region,
- one based only on Locale.
There are multiple steps involved in returning the default search engine for
example and though at each step we could verify if a certain operation is
completed we are still exposed to concurrency issues.
Simplest and most effective way to make sure the MLS engines do not mix with
Locale based engines is to use the same type of engines for the entire duration
of the app. At the next cold start we'll verify again which engines to use.
Using the Locale based engines (fallbacks) is expected to only happen once, at
the first run of the application after being installed.
New API (installBuiltIn/ensureBuiltin) requires
- Gecko IDs and new permissions
- Extension will only be re-installed if it has a new version
This includes a gradle task to automatically generate a
new version in manifest.json for every build so we don't
forget to update the version and end up with changes that
are never applied.
Also I changed the adding tabs to collection confirmation string from
tabtray to take into account the number of tabs.
Example: 1 tab-"Tab saved!"; multiple tabs-"Tabs saved!"