In order to avoid duplication use the content property, which needs a
trivial change to frame construction to allow to use it for menu icons.
Differential Revision: https://phabricator.services.mozilla.com/D249245
- Refactored the code for `about:settings#home` page to rely more on the page template and less on dynamic node injection.
- Added the mission message between settings blocks for Top stories and Recent activity.
- Removed code that switched to/from an obsolete row number preference for Top stories.
- Updated tests.
Differential Revision: https://phabricator.services.mozilla.com/D243042
- Refactored the code for `about:settings#home` page to rely more on the page template and less on dynamic node injection.
- Added the mission message between settings blocks for Top stories and Recent activity.
- Removed code that switched to/from an obsolete row number preference for Top stories.
- Updated tests.
Differential Revision: https://phabricator.services.mozilla.com/D243042
Also separates out _setIcon to allow re-using the resize functionality, and simplifies the edit engine dialog to use UserSearchEngine directly.
Differential Revision: https://phabricator.services.mozilla.com/D247571
As part of this bug, the global ExperimentManager will no longer be
exported from ExperimentManager.sys.mjs and will only be available as a
property on the ExperimentAPI.
Differential Revision: https://phabricator.services.mozilla.com/D248316
This reverts commit 0a65c6f1cb.
Revert "Bug 1661664 - Part 3: Add tests for UserSearchEngine favicons. r=search-reviewers,Standard8,settings-reviewers,mossop"
This reverts commit f093133692.
Revert "Bug 1661664 - Part 2: Include favicon when adding custom search engine. r=Standard8"
This reverts commit 8a4a96e8b8.
Revert "Bug 1661664 - Part 1: Add changeIcon method to UserSearchEngine. r=Standard8,settings-reviewers,mossop"
This reverts commit 15a19beb80.
Also separates out _setIcon to allow re-using the resize functionality, and simplifies the edit engine dialog to use UserSearchEngine directly.
Differential Revision: https://phabricator.services.mozilla.com/D247571
This reverts commit 69c71c02b7.
Revert "Bug 1661664 - Part 3: Add tests for UserSearchEngine favicons. r=search-reviewers,Standard8,settings-reviewers,mossop"
This reverts commit ae924c0d7f.
Revert "Bug 1661664 - Part 2: Include favicon when adding custom search engine. r=Standard8"
This reverts commit 9ba1a99736.
Revert "Bug 1661664 - Part 1: Add changeIcon method to UserSearchEngine. r=Standard8,settings-reviewers,mossop"
This reverts commit 0077af7276.
Also separates out _setIcon to allow re-using the resize functionality, and simplifies the edit engine dialog to use UserSearchEngine directly.
Differential Revision: https://phabricator.services.mozilla.com/D247571
Previously the observers for the `app.shield.optoutstudies.enabled` and
`datareporting.healthreport.uploadEnabled` prefs lived on the global
`ExperimentManager`, which complicated our unit tests because (a)
importing `ExperimentManager.sys.mjs` has side effects of initializing
the global ExperimentManager with those listeners and (b) we have the
global and per-test ExperimentManagers in our unit tests, which causes
notifications to fire twice. We've worked around this in the past by
manually removing the pref listeners in some cases, but its simpler to
have them live on the ExperimentAPI itself. That way it can be
controlled by `ExperimentAPI.init()` (and
`ExperimentAPI._resetForTests()` in tests).
Differential Revision: https://phabricator.services.mozilla.com/D248068
Previously the observers for the `app.shield.optoutstudies.enabled` and
`datareporting.healthreport.uploadEnabled` prefs lived on the global
`ExperimentManager`, which complicated our unit tests because (a)
importing `ExperimentManager.sys.mjs` has side effects of initializing
the global ExperimentManager with those listeners and (b) we have the
global and per-test ExperimentManagers in our unit tests, which causes
notifications to fire twice. We've worked around this in the past by
manually removing the pref listeners in some cases, but its simpler to
have them live on the ExperimentAPI itself. That way it can be
controlled by `ExperimentAPI.init()` (and
`ExperimentAPI._resetForTests()` in tests).
Differential Revision: https://phabricator.services.mozilla.com/D248068
Previously if we opened about:preferences for the first time after
disabling studies or telemetry, the "Firefox Labs" entry would appear
briefly and disappear. Now we don't show the element initially if we
would have to hide it soon after because studies or telemetry are
disabled.
Differential Revision: https://phabricator.services.mozilla.com/D246999
This hooks up desktop to the dismissal API in the Rust component [1] and removes
`BlockedSuggestions`.
The Rust dismissal API has two ways to dismiss a suggestion: by `Suggestion`
object and by dismissal key. We use the first one for Rust suggestions and the
second one for other suggestions, like Merino. A dismissal key is just an
arbitrary opaque string token stored in the dismissed-suggestions table in the
Rust component. It's up to consumers (like desktop) to use appropriate dismissal
keys for their non-Rust suggestions.
In order to retain the user's blocked digests that desktop has always recorded
in the `quicksuggest.blockedDigests` pref, I took advantage of dismissal keys by
migrating each digest to a dismissal key in the Rust component.
[1] See bug 1961412 and https://github.com/mozilla/application-services/pull/6714
Differential Revision: https://phabricator.services.mozilla.com/D246369
Nimbus now supports co-enrollment! Co-enrolling features cannot use most
of the traditional APIs, like
`ExperimentAPI.get{Experiment,Rollout,Enrollment}MetaData` or
`ExperimentFeature.getAllVariables` / `ExperimentFeature.getVariable`.
Instead, these features must use new co-enrollment aware APIs:
- `ExperimentAPI.getAllEnrollmentMetadata`, which returns the metadata
for all active enrollments for a given feature;
- `ExperimentAPI.getAllEnrollments`, which returns the same metadata, as
well as the feature values for all active enrollments for a given
feature;
`ExperimentFeature.recordExposurEvent` will work for co-enrolling
features, but callers must always provide a slug when calling so that we
know what enrollment caused the exposure.
In that vein, `ExperimentAPI.get{Experiment,Rollout,Enrollment}MetaData`
can still be called with the slug for a feature for a co-enrolling
experiment.
Differential Revision: https://phabricator.services.mozilla.com/D245986