diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -320,8 +320,71 @@ e571552c235724fbce9b1ceaedf4bff73093eaa7 FIREFOX_BETA_136_BASE 8502d5cd5759d33e1c180121ddf0c12be23ccae3 FIREFOX_NIGHTLY_136_END 55ed172f026357b4adecadea071cb51085f15c77 FIREFOX_BETA_137_BASE 01a30eea5505e9ed21e2d5b8608a0146d6f6013a FIREFOX_NIGHTLY_137_END f27925f3d6f792efb037cdb55bb98b972c11c1c6 FIREFOX_BETA_138_BASE +dbb513f75f1319fedf0299e772657a6baed54bf0 FIREFOX_BETA_137_END +b8d898dd79394647a98f4f2fb4df8cd8fb1a1c87 FIREFOX_138_0b1_BUILD1 +b8d898dd79394647a98f4f2fb4df8cd8fb1a1c87 DEVEDITION_138_0b1_BUILD1 +b8d898dd79394647a98f4f2fb4df8cd8fb1a1c87 FIREFOX-ANDROID_138_0b1_BUILD1 +b8d898dd79394647a98f4f2fb4df8cd8fb1a1c87 FIREFOX-ANDROID_138_0b1_RELEASE +b8d898dd79394647a98f4f2fb4df8cd8fb1a1c87 FIREFOX_138_0b1_RELEASE +b8d898dd79394647a98f4f2fb4df8cd8fb1a1c87 DEVEDITION_138_0b1_RELEASE +f3665b1241b4fbe0b99edc6c6053d5dd0fa87a09 FIREFOX-ANDROID_138_0b2_BUILD1 +f3665b1241b4fbe0b99edc6c6053d5dd0fa87a09 FIREFOX_138_0b2_BUILD1 +f3665b1241b4fbe0b99edc6c6053d5dd0fa87a09 DEVEDITION_138_0b2_BUILD1 +f3665b1241b4fbe0b99edc6c6053d5dd0fa87a09 FIREFOX_138_0b2_RELEASE +f3665b1241b4fbe0b99edc6c6053d5dd0fa87a09 FIREFOX-ANDROID_138_0b2_RELEASE +f3665b1241b4fbe0b99edc6c6053d5dd0fa87a09 DEVEDITION_138_0b2_RELEASE +901cf77298fcbbe79b2764087ffccb02613cb460 FIREFOX-ANDROID_138_0b3_BUILD1 +901cf77298fcbbe79b2764087ffccb02613cb460 FIREFOX_138_0b3_BUILD1 +901cf77298fcbbe79b2764087ffccb02613cb460 DEVEDITION_138_0b3_BUILD1 +901cf77298fcbbe79b2764087ffccb02613cb460 FIREFOX-ANDROID_138_0b3_RELEASE +901cf77298fcbbe79b2764087ffccb02613cb460 FIREFOX_138_0b3_RELEASE +901cf77298fcbbe79b2764087ffccb02613cb460 DEVEDITION_138_0b3_RELEASE +e2090d24f8235f0dba16f77633467e4dbc1c0411 FIREFOX-ANDROID_138_0b4_BUILD1 +e2090d24f8235f0dba16f77633467e4dbc1c0411 FIREFOX_138_0b4_BUILD1 +e2090d24f8235f0dba16f77633467e4dbc1c0411 DEVEDITION_138_0b4_BUILD1 +e2090d24f8235f0dba16f77633467e4dbc1c0411 FIREFOX-ANDROID_138_0b4_RELEASE +e2090d24f8235f0dba16f77633467e4dbc1c0411 DEVEDITION_138_0b4_RELEASE +e2090d24f8235f0dba16f77633467e4dbc1c0411 FIREFOX_138_0b4_RELEASE +7aedb899c00f58e81305c51945c3155b337593f3 FIREFOX-ANDROID_138_0b5_BUILD1 +7aedb899c00f58e81305c51945c3155b337593f3 FIREFOX_138_0b5_BUILD1 +7aedb899c00f58e81305c51945c3155b337593f3 DEVEDITION_138_0b5_BUILD1 +7aedb899c00f58e81305c51945c3155b337593f3 FIREFOX-ANDROID_138_0b5_RELEASE +7aedb899c00f58e81305c51945c3155b337593f3 DEVEDITION_138_0b5_RELEASE +7aedb899c00f58e81305c51945c3155b337593f3 FIREFOX_138_0b5_RELEASE +d2681c1bd70571ae27a645a7568eba08ff73e36f FIREFOX-ANDROID_138_0b6_BUILD1 +d2681c1bd70571ae27a645a7568eba08ff73e36f FIREFOX_138_0b6_BUILD1 +d2681c1bd70571ae27a645a7568eba08ff73e36f DEVEDITION_138_0b6_BUILD1 +d2681c1bd70571ae27a645a7568eba08ff73e36f FIREFOX-ANDROID_138_0b6_RELEASE +d2681c1bd70571ae27a645a7568eba08ff73e36f FIREFOX_138_0b6_RELEASE +d2681c1bd70571ae27a645a7568eba08ff73e36f DEVEDITION_138_0b6_RELEASE +c8f9e5fa48e3c57e07f40843a3099e6d4430fdac FIREFOX-ANDROID_138_0b7_BUILD1 +c8f9e5fa48e3c57e07f40843a3099e6d4430fdac DEVEDITION_138_0b7_BUILD1 +c8f9e5fa48e3c57e07f40843a3099e6d4430fdac FIREFOX_138_0b7_BUILD1 +c8f9e5fa48e3c57e07f40843a3099e6d4430fdac FIREFOX-ANDROID_138_0b7_RELEASE +c8f9e5fa48e3c57e07f40843a3099e6d4430fdac FIREFOX_138_0b7_RELEASE +c8f9e5fa48e3c57e07f40843a3099e6d4430fdac DEVEDITION_138_0b7_RELEASE +93357b07080aaf7634cad8746adf36c6fa161066 FIREFOX-ANDROID_138_0b8_BUILD1 +93357b07080aaf7634cad8746adf36c6fa161066 DEVEDITION_138_0b8_BUILD1 +93357b07080aaf7634cad8746adf36c6fa161066 FIREFOX_138_0b8_BUILD1 +93357b07080aaf7634cad8746adf36c6fa161066 FIREFOX-ANDROID_138_0b8_RELEASE +93357b07080aaf7634cad8746adf36c6fa161066 FIREFOX_138_0b8_RELEASE +93357b07080aaf7634cad8746adf36c6fa161066 DEVEDITION_138_0b8_RELEASE +f16f5243929bbe24243335d1d222b6a70df67dfc FIREFOX-ANDROID_138_0b9_BUILD1 +f16f5243929bbe24243335d1d222b6a70df67dfc FIREFOX_138_0b9_BUILD1 +f16f5243929bbe24243335d1d222b6a70df67dfc DEVEDITION_138_0b9_BUILD1 +f16f5243929bbe24243335d1d222b6a70df67dfc FIREFOX-ANDROID_138_0b9_RELEASE +f16f5243929bbe24243335d1d222b6a70df67dfc DEVEDITION_138_0b9_RELEASE +f16f5243929bbe24243335d1d222b6a70df67dfc FIREFOX_138_0b9_RELEASE +3f855852fb812157d70c7ce1435adefea5849cfd FIREFOX_RELEASE_138_BASE +9f12a9fab080f2d363d7424e25b9ffe85ebc3414 FIREFOX_AURORA_28_BASE dce1a8cec5da4af61753f9db5fbe60a85299f1d9 FIREFOX_NIGHTLY_138_END 2149fbb1f153564d301921fd6d536ba93cbdbb65 FIREFOX_BETA_139_BASE -6ca7d74193b51df2c011b66b4bc1fe3eb233c90d FIREFOX_NIGHTLY_139_END +e7de009256a686f4268cc5e6f64568330cbc97a8 FIREFOX_BETA_138_END +d6c6d7b562866069cda9b152a73ddc3581dc85c3 FIREFOX-ANDROID_139_0b1_BUILD1 +d6c6d7b562866069cda9b152a73ddc3581dc85c3 FIREFOX_139_0b1_BUILD1 +d6c6d7b562866069cda9b152a73ddc3581dc85c3 DEVEDITION_139_0b1_BUILD1 +d6c6d7b562866069cda9b152a73ddc3581dc85c3 FIREFOX-ANDROID_139_0b1_RELEASE +d6c6d7b562866069cda9b152a73ddc3581dc85c3 FIREFOX_139_0b1_RELEASE +d6c6d7b562866069cda9b152a73ddc3581dc85c3 DEVEDITION_139_0b1_RELEASE diff --git a/.arcconfig b/.arcconfig --- a/.arcconfig +++ b/.arcconfig @@ -1,5 +1,5 @@ { - "phabricator.uri" : "https://phabricator.services.mozilla.com/", - "repository.callsign": "MOZILLACENTRAL", + "phabricator.uri" : "https://phabricator-dev.allizom.org/", + "repository.callsign": "FIREFOXBETA", "history.immutable": false } diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -1786,15 +1786,10 @@ pref("browser.partnerlink.campaign.topsites", "amzn_2020_a1"); // Activates preloading of the new tab url. pref("browser.newtab.preload", true); -// If an on-train limited rollout of the preonboarding modal is enabled, the -// percentage of the Mac, Linux, and MSIX population to enroll. Default to 25% of -// population (2500 / 10000). -pref("browser.preonboarding.onTrainRolloutPopulation", 2500); - // Show "Download Firefox for mobile" QR code modal on newtab pref("browser.newtabpage.activity-stream.mobileDownloadModal.enabled", false); pref("browser.newtabpage.activity-stream.mobileDownloadModal.variant-a", false); pref("browser.newtabpage.activity-stream.mobileDownloadModal.variant-b", false); pref("browser.newtabpage.activity-stream.mobileDownloadModal.variant-c", false); diff --git a/browser/base/content/test/general/browser_datachoices_notification.js b/browser/base/content/test/general/browser_datachoices_notification.js --- a/browser/base/content/test/general/browser_datachoices_notification.js +++ b/browser/base/content/test/general/browser_datachoices_notification.js @@ -20,12 +20,11 @@ PREF_BRANCH + "dataSubmissionPolicyAcceptedVersion"; const PREF_ACCEPTED_POLICY_DATE = PREF_BRANCH + "dataSubmissionPolicyNotifiedTime"; const PREF_TOS_ROLLOUT_POPULATION = "browser.preonboarding.onTrainRolloutPopulation"; -const PREF_TOS_ROLLOUT_ENROLLED = - "browser.preonboarding.enrolledInOnTrainRollout"; +const PREF_TOS_ENABLED = "browser.preonboarding.enabled"; const PREF_TELEMETRY_LOG_LEVEL = "toolkit.telemetry.log.level"; const TEST_POLICY_VERSION = 37; @@ -122,33 +121,31 @@ add_setup(async function () { const isFirstRun = Preferences.get(PREF_FIRST_RUN, true); const bypassNotification = Preferences.get(PREF_BYPASS_NOTIFICATION, true); const currentPolicyVersion = Preferences.get(PREF_CURRENT_POLICY_VERSION, 1); + const TOSEnabled = Preferences.get(PREF_TOS_ENABLED, false); // Register a cleanup function to reset our preferences. registerCleanupFunction(() => { Preferences.set(PREF_FIRST_RUN, isFirstRun); Preferences.set(PREF_BYPASS_NOTIFICATION, bypassNotification); Preferences.set(PREF_CURRENT_POLICY_VERSION, currentPolicyVersion); Preferences.reset(PREF_TELEMETRY_LOG_LEVEL); - Preferences.reset(PREF_TOS_ROLLOUT_ENROLLED); - Preferences.reset(PREF_TOS_ROLLOUT_POPULATION); - + Preferences.set(PREF_TOS_ENABLED, TOSEnabled); return closeAllNotifications(); }); // Don't skip the infobar visualisation. Preferences.set(PREF_BYPASS_NOTIFICATION, false); // Set the current policy version. Preferences.set(PREF_CURRENT_POLICY_VERSION, TEST_POLICY_VERSION); // Ensure this isn't the first run, because then we open the first run page. Preferences.set(PREF_FIRST_RUN, false); TelemetryReportingPolicy.testUpdateFirstRun(); - // Do not trigger ToS modal for Linux, Mac, and MSIX builds - Preferences.set(PREF_TOS_ROLLOUT_ENROLLED, false); - Preferences.set(PREF_TOS_ROLLOUT_POPULATION, 0); + // Do not enable the TOS modal + Preferences.set(PREF_TOS_ENABLED, false); }); function clearAcceptedPolicy() { // Reset the accepted policy. Preferences.reset(PREF_ACCEPTED_POLICY_VERSION); diff --git a/browser/components/asrouter/modules/FeatureCallout.sys.mjs b/browser/components/asrouter/modules/FeatureCallout.sys.mjs --- a/browser/components/asrouter/modules/FeatureCallout.sys.mjs +++ b/browser/components/asrouter/modules/FeatureCallout.sys.mjs @@ -2372,34 +2372,53 @@ background: "Menu linear-gradient(var(--arrowpanel-background), var(--arrowpanel-background))", color: "var(--arrowpanel-color)", border: "var(--arrowpanel-border-color)", "accent-color": "var(--focus-outline-color)", + // Button Background "button-background": "var(--button-background-color)", - "button-color": "var(--button-text-color)", - "button-border": "transparent", "button-background-hover": "var(--button-background-color-hover)", - "button-color-hover": "var(--button-text-color)", - "button-border-hover": "transparent", "button-background-active": "var(--button-background-color-active)", - "button-color-active": "var(--button-text-color)", - "button-border-active": "transparent", - "primary-button-background": "var(--color-accent-primary)", + "button-background-disabled": "var(--button-background-color-disabled)", + // Button Text + "button-color": "var(--button-text-color)", + "button-color-hover": "var(--button-text-color-hover)", + "button-color-active": "var(--button-text-color-active)", + // Button Border + "button-border": "var(--button-border-color)", + "button-border-color": "var(--button-border-color)", + "button-border-hover": "var(--button-border-color-hover)", + "button-border-active": "var(--button-border-color-active)", + "button-border-disabled": "var(--button-border-color-disabled)", + // Primary Button Background + "primary-button-background": "var(--button-background-color-primary)", + "primary-button-background-hover": + "var(--button-background-color-primary-hover)", + "primary-button-background-active": + "var(--button-background-color-primary-active)", + "primary-button-background-disabled": + "var(--button-background-color-primary-disabled)", + // Primary Button Color "primary-button-color": "var(--button-text-color-primary)", - "primary-button-border": "transparent", - "primary-button-background-hover": "var(--color-accent-primary-hover)", "primary-button-color-hover": "var(--button-text-color-primary)", - "primary-button-border-hover": "transparent", - "primary-button-background-active": - "var(--color-accent-primary-active)", "primary-button-color-active": "var(--button-text-color-primary)", - "primary-button-border-active": "transparent", + "primary-button-color-disabled": "var(--button-text-color-primary)", + // Primary Button Border + "primary-button-border": "var(--button-border-color-primary)", + "primary-button-border-hover": + "var(--button-border-color-primary-hover)", + "primary-button-border-active": + "var(--button-border-color-primary-active)", + "primary-button-border-disabled": + "var(--button-border-color-primary-disabled)", + // Links "link-color": "LinkText", "link-color-hover": "LinkText", "link-color-active": "ActiveText", "link-color-visited": "VisitedText", "icon-success-color": "var(--attention-dot-color)", + // Dismiss Button "dismiss-button-bg": "Menu linear-gradient(var(--arrowpanel-background), var(--arrowpanel-background))", "dismiss-button-bg-hover": "Menu linear-gradient(color-mix(in srgb, currentColor 14%, var(--arrowpanel-background)))", "dismiss-button-bg-active": diff --git a/browser/components/asrouter/modules/OnboardingMessageProvider.sys.mjs b/browser/components/asrouter/modules/OnboardingMessageProvider.sys.mjs --- a/browser/components/asrouter/modules/OnboardingMessageProvider.sys.mjs +++ b/browser/components/asrouter/modules/OnboardingMessageProvider.sys.mjs @@ -1406,11 +1406,11 @@ }, ]; const PREONBOARDING_MESSAGES = () => [ { - id: "ON_TRAIN_ROLLOUT", + id: "NEW_USER_TOU_ONBOARDING", enabled: true, requireAction: true, currentPolicyVersion: 3, minimumPolicyVersion: 3, firstRunURL: "https://www.mozilla.org/privacy/firefox/", diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js --- a/browser/components/preferences/preferences.js +++ b/browser/components/preferences/preferences.js @@ -199,12 +199,14 @@ if (Services.prefs.getBoolPref("browser.translations.newSettingsUI.enable")) { register_module("paneTranslations", gTranslationsPane); } if (Services.prefs.getBoolPref("browser.preferences.experimental")) { - // Set hidden based on previous load's hidden value. + // Set hidden based on previous load's hidden value or if Nimbus is + // disabled. document.getElementById("category-experimental").hidden = + !ExperimentAPI._manager.studiesEnabled || Services.prefs.getBoolPref( "browser.preferences.experimental.hidden", false ); register_module("paneExperimental", gExperimentalPane); diff --git a/browser/components/tests/browser/browser_browserGlue_showModal_trigger.js b/browser/components/tests/browser/browser_browserGlue_showModal_trigger.js --- a/browser/components/tests/browser/browser_browserGlue_showModal_trigger.js +++ b/browser/components/tests/browser/browser_browserGlue_showModal_trigger.js @@ -53,15 +53,15 @@ ["browser.preonboarding.minimumPolicyVersion", 900], ["browser.preonboarding.currentPolicyVersion", 900], ["browser.startup.homepage_override.mstone", ""], ["startup.homepage_welcome_url", "about:welcome"], ["toolkit.telemetry.log.level", "trace"], + [TelemetryUtils.Preferences.BypassNotification, false], ]; const PREFS_TO_CLEAR = [ [TelemetryUtils.Preferences.AcceptedPolicyDate], [TelemetryUtils.Preferences.AcceptedPolicyVersion], - [TelemetryUtils.Preferences.BypassNotification], ]; await SpecialPowers.pushPrefEnv({ set: PREFS_TO_SET, clear: PREFS_TO_CLEAR, }); diff --git a/browser/components/urlbar/ActionsProviderTabGroups.sys.mjs b/browser/components/urlbar/ActionsProviderTabGroups.sys.mjs --- a/browser/components/urlbar/ActionsProviderTabGroups.sys.mjs +++ b/browser/components/urlbar/ActionsProviderTabGroups.sys.mjs @@ -47,11 +47,11 @@ let input = queryContext.trimmedLowerCaseSearchString; let results = []; let i = 0; for (let group of window.gBrowser.getAllTabGroups()) { - if (group.label.toLowerCase().startsWith(input)) { + if (this.#matches(group.label, input)) { results.push( this.#makeResult({ key: `tabgroup-${i++}`, l10nId: "urlbar-result-action-switch-to-tabgroup", l10nArgs: { group: group.label }, @@ -63,11 +63,11 @@ ); } } for (let savedGroup of lazy.SessionStore.getSavedTabGroups()) { - if (savedGroup.name.toLowerCase().startsWith(input)) { + if (this.#matches(savedGroup.name, input)) { results.push( this.#makeResult({ key: `tabgroup-${i++}`, l10nId: "urlbar-result-action-open-saved-tabgroup", l10nArgs: { group: savedGroup.name }, @@ -88,10 +88,18 @@ } return results; } + #matches(groupName, trimmedLowerCaseSearchString) { + groupName = groupName.toLowerCase(); + if (trimmedLowerCaseSearchString.length == 1) { + return groupName.startsWith(trimmedLowerCaseSearchString); + } + return groupName.includes(trimmedLowerCaseSearchString); + } + #makeResult({ key, l10nId, l10nArgs, onPick, color }) { return new ActionsResult({ key, l10nId, l10nArgs, diff --git a/browser/components/urlbar/tests/browser/browser_action_tabgroups.js b/browser/components/urlbar/tests/browser/browser_action_tabgroups.js --- a/browser/components/urlbar/tests/browser/browser_action_tabgroups.js +++ b/browser/components/urlbar/tests/browser/browser_action_tabgroups.js @@ -18,11 +18,11 @@ const win = await BrowserTestUtils.openNewBrowserWindow(); let aboutRobotsTab = BrowserTestUtils.addTab(win.gBrowser, "about:robots"); let aboutMozillaTab = BrowserTestUtils.addTab(win.gBrowser, "about:mozilla"); let tabGroup = win.gBrowser.addTabGroup([aboutRobotsTab, aboutMozillaTab], { color: "blue", - label: "about pages", + label: "my about pages", }); tabGroup.collapsed = true; await UrlbarTestUtils.promiseAutocompleteResultPopup({ window: win, diff --git a/browser/config/version.txt b/browser/config/version.txt --- a/browser/config/version.txt +++ b/browser/config/version.txt @@ -1 +1 @@ -140.0a1 +139.0 diff --git a/browser/config/version_display.txt b/browser/config/version_display.txt --- a/browser/config/version_display.txt +++ b/browser/config/version_display.txt @@ -1 +1 @@ -140.0a1 +139.0b4 diff --git a/browser/locales/l10n-changesets.json b/browser/locales/l10n-changesets.json --- a/browser/locales/l10n-changesets.json +++ b/browser/locales/l10n-changesets.json @@ -15,11 +15,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "af": { "pin": false, "platforms": [ "linux", @@ -35,11 +35,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "an": { "pin": false, "platforms": [ "linux", @@ -55,11 +55,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ar": { "pin": false, "platforms": [ "linux", @@ -75,11 +75,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ast": { "pin": false, "platforms": [ "linux", @@ -95,11 +95,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "az": { "pin": false, "platforms": [ "linux", @@ -115,11 +115,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "be": { "pin": false, "platforms": [ "linux", @@ -135,11 +135,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "bg": { "pin": false, "platforms": [ "linux", @@ -155,11 +155,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "bn": { "pin": false, "platforms": [ "linux", @@ -175,11 +175,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "br": { "pin": false, "platforms": [ "linux", @@ -195,11 +195,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "bs": { "pin": false, "platforms": [ "linux", @@ -215,11 +215,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ca": { "pin": false, "platforms": [ "linux", @@ -235,11 +235,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ca-valencia": { "pin": false, "platforms": [ "linux", @@ -255,11 +255,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "cak": { "pin": false, "platforms": [ "linux", @@ -275,11 +275,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "cs": { "pin": false, "platforms": [ "linux", @@ -295,11 +295,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "cy": { "pin": false, "platforms": [ "linux", @@ -315,11 +315,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "da": { "pin": false, "platforms": [ "linux", @@ -335,11 +335,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "de": { "pin": false, "platforms": [ "linux", @@ -355,11 +355,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "dsb": { "pin": false, "platforms": [ "linux", @@ -375,11 +375,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "el": { "pin": false, "platforms": [ "linux", @@ -395,11 +395,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "en-CA": { "pin": false, "platforms": [ "linux", @@ -415,11 +415,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "en-GB": { "pin": false, "platforms": [ "linux", @@ -435,11 +435,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "eo": { "pin": false, "platforms": [ "linux", @@ -455,11 +455,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "es-AR": { "pin": false, "platforms": [ "linux", @@ -475,11 +475,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "es-CL": { "pin": false, "platforms": [ "linux", @@ -495,11 +495,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "es-ES": { "pin": false, "platforms": [ "linux", @@ -515,11 +515,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "es-MX": { "pin": false, "platforms": [ "linux", @@ -535,11 +535,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "et": { "pin": false, "platforms": [ "linux", @@ -555,11 +555,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "eu": { "pin": false, "platforms": [ "linux", @@ -575,11 +575,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "fa": { "pin": false, "platforms": [ "linux", @@ -595,11 +595,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ff": { "pin": false, "platforms": [ "linux", @@ -615,11 +615,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "fi": { "pin": false, "platforms": [ "linux", @@ -635,11 +635,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "fr": { "pin": false, "platforms": [ "linux", @@ -655,11 +655,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "fur": { "pin": false, "platforms": [ "linux", @@ -675,11 +675,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "fy-NL": { "pin": false, "platforms": [ "linux", @@ -695,11 +695,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ga-IE": { "pin": false, "platforms": [ "linux", @@ -715,11 +715,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "gd": { "pin": false, "platforms": [ "linux", @@ -735,11 +735,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "gl": { "pin": false, "platforms": [ "linux", @@ -755,11 +755,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "gn": { "pin": false, "platforms": [ "linux", @@ -775,11 +775,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "gu-IN": { "pin": false, "platforms": [ "linux", @@ -795,11 +795,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "he": { "pin": false, "platforms": [ "linux", @@ -815,11 +815,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "hi-IN": { "pin": false, "platforms": [ "linux", @@ -835,11 +835,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "hr": { "pin": false, "platforms": [ "linux", @@ -855,11 +855,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "hsb": { "pin": false, "platforms": [ "linux", @@ -875,11 +875,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "hu": { "pin": false, "platforms": [ "linux", @@ -895,11 +895,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "hy-AM": { "pin": false, "platforms": [ "linux", @@ -915,11 +915,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ia": { "pin": false, "platforms": [ "linux", @@ -935,11 +935,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "id": { "pin": false, "platforms": [ "linux", @@ -955,11 +955,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "is": { "pin": false, "platforms": [ "linux", @@ -975,11 +975,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "it": { "pin": false, "platforms": [ "linux", @@ -995,11 +995,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ja": { "pin": false, "platforms": [ "linux", @@ -1013,19 +1013,19 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ja-JP-mac": { "pin": false, "platforms": [ "macosx64", "macosx64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ka": { "pin": false, "platforms": [ "linux", @@ -1041,11 +1041,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "kab": { "pin": false, "platforms": [ "linux", @@ -1061,11 +1061,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "kk": { "pin": false, "platforms": [ "linux", @@ -1081,11 +1081,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "km": { "pin": false, "platforms": [ "linux", @@ -1101,11 +1101,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "kn": { "pin": false, "platforms": [ "linux", @@ -1121,11 +1121,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ko": { "pin": false, "platforms": [ "linux", @@ -1141,11 +1141,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "lij": { "pin": false, "platforms": [ "linux", @@ -1161,11 +1161,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "lt": { "pin": false, "platforms": [ "linux", @@ -1181,11 +1181,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "lv": { "pin": false, "platforms": [ "linux", @@ -1201,11 +1201,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "mk": { "pin": false, "platforms": [ "linux", @@ -1221,11 +1221,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "mr": { "pin": false, "platforms": [ "linux", @@ -1241,11 +1241,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ms": { "pin": false, "platforms": [ "linux", @@ -1261,11 +1261,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "my": { "pin": false, "platforms": [ "linux", @@ -1281,11 +1281,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "nb-NO": { "pin": false, "platforms": [ "linux", @@ -1301,11 +1301,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ne-NP": { "pin": false, "platforms": [ "linux", @@ -1321,11 +1321,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "nl": { "pin": false, "platforms": [ "linux", @@ -1341,11 +1341,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "nn-NO": { "pin": false, "platforms": [ "linux", @@ -1361,11 +1361,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "oc": { "pin": false, "platforms": [ "linux", @@ -1381,11 +1381,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "pa-IN": { "pin": false, "platforms": [ "linux", @@ -1401,11 +1401,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "pl": { "pin": false, "platforms": [ "linux", @@ -1421,11 +1421,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "pt-BR": { "pin": false, "platforms": [ "linux", @@ -1441,11 +1441,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "pt-PT": { "pin": false, "platforms": [ "linux", @@ -1461,11 +1461,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "rm": { "pin": false, "platforms": [ "linux", @@ -1481,11 +1481,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ro": { "pin": false, "platforms": [ "linux", @@ -1501,11 +1501,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ru": { "pin": false, "platforms": [ "linux", @@ -1521,11 +1521,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "sat": { "pin": false, "platforms": [ "linux", @@ -1541,11 +1541,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "sc": { "pin": false, "platforms": [ "linux", @@ -1561,11 +1561,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "sco": { "pin": false, "platforms": [ "linux", @@ -1581,11 +1581,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "si": { "pin": false, "platforms": [ "linux", @@ -1601,11 +1601,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "sk": { "pin": false, "platforms": [ "linux", @@ -1621,11 +1621,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "skr": { "pin": false, "platforms": [ "linux", @@ -1641,11 +1641,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "sl": { "pin": false, "platforms": [ "linux", @@ -1661,11 +1661,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "son": { "pin": false, "platforms": [ "linux", @@ -1681,11 +1681,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "sq": { "pin": false, "platforms": [ "linux", @@ -1701,11 +1701,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "sr": { "pin": false, "platforms": [ "linux", @@ -1721,11 +1721,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "sv-SE": { "pin": false, "platforms": [ "linux", @@ -1741,11 +1741,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "szl": { "pin": false, "platforms": [ "linux", @@ -1761,11 +1761,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ta": { "pin": false, "platforms": [ "linux", @@ -1781,11 +1781,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "te": { "pin": false, "platforms": [ "linux", @@ -1801,11 +1801,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "tg": { "pin": false, "platforms": [ "linux", @@ -1821,11 +1821,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "th": { "pin": false, "platforms": [ "linux", @@ -1841,11 +1841,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "tl": { "pin": false, "platforms": [ "linux", @@ -1861,11 +1861,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "tr": { "pin": false, "platforms": [ "linux", @@ -1881,11 +1881,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "trs": { "pin": false, "platforms": [ "linux", @@ -1901,11 +1901,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "uk": { "pin": false, "platforms": [ "linux", @@ -1921,11 +1921,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ur": { "pin": false, "platforms": [ "linux", @@ -1941,11 +1941,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "uz": { "pin": false, "platforms": [ "linux", @@ -1961,11 +1961,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "vi": { "pin": false, "platforms": [ "linux", @@ -1981,11 +1981,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "xh": { "pin": false, "platforms": [ "linux", @@ -2001,11 +2001,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "zh-CN": { "pin": false, "platforms": [ "linux", @@ -2021,11 +2021,11 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "zh-TW": { "pin": false, "platforms": [ "linux", @@ -2041,8 +2041,8 @@ "win64", "win64-aarch64", "win64-aarch64-devedition", "win64-devedition" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" } } \ No newline at end of file diff --git a/browser/themes/shared/places/sidebar.css b/browser/themes/shared/places/sidebar.css --- a/browser/themes/shared/places/sidebar.css +++ b/browser/themes/shared/places/sidebar.css @@ -1,12 +1,16 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +@import url("chrome://browser/skin/browser-colors.css"); + .sidebar-panel { appearance: none; + /* Background color comes from the embedder */ background-color: transparent; + color: var(--sidebar-text-color); } #sidebar-panel-header { justify-content: space-between; padding-inline: var(--space-large); diff --git a/config/milestone.txt b/config/milestone.txt --- a/config/milestone.txt +++ b/config/milestone.txt @@ -8,6 +8,6 @@ # Referenced by build/moz.configure/init.configure. # Hopefully I'll be able to automate replacement of *all* # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -140.0a1 +139.0 diff --git a/dom/media/webrtc/libwebrtcglue/VideoStreamFactory.cpp b/dom/media/webrtc/libwebrtcglue/VideoStreamFactory.cpp --- a/dom/media/webrtc/libwebrtcglue/VideoStreamFactory.cpp +++ b/dom/media/webrtc/libwebrtcglue/VideoStreamFactory.cpp @@ -234,15 +234,15 @@ video_stream.bitrate_priority = aConfig.bitrate_priority; video_stream.max_qp = kQpMax; if (streamCount > 1) { + video_stream.num_temporal_layers = 2; if (mCodecConfig.mName == "H264") { #ifdef ANDROID video_stream.num_temporal_layers = 1; #else - video_stream.num_temporal_layers = 2; if (!HaveGMPFor("encode-video"_ns, {"moz-h264-temporal-svc"_ns})) { video_stream.num_temporal_layers = 1; } #endif } diff --git a/mobile/android/android-components/components/feature/downloads/src/main/java/mozilla/components/feature/downloads/AbstractFetchDownloadService.kt b/mobile/android/android-components/components/feature/downloads/src/main/java/mozilla/components/feature/downloads/AbstractFetchDownloadService.kt --- a/mobile/android/android-components/components/feature/downloads/src/main/java/mozilla/components/feature/downloads/AbstractFetchDownloadService.kt +++ b/mobile/android/android-components/components/feature/downloads/src/main/java/mozilla/components/feature/downloads/AbstractFetchDownloadService.kt @@ -729,15 +729,10 @@ } } @Suppress("ComplexCondition", "ComplexMethod") internal fun performDownload(currentDownloadJobState: DownloadJobState, useHttpClient: Boolean = false) { - if (currentDownloadJobState.currentBytesCopied == currentDownloadJobState.state.contentLength) { - verifyDownload(currentDownloadJobState) - return - } - val download = currentDownloadJobState.state val isResumingDownload = currentDownloadJobState.currentBytesCopied > 0L val headers = MutableHeaders() if (isResumingDownload) { diff --git a/mobile/android/android-components/components/feature/downloads/src/test/java/mozilla/components/feature/downloads/AbstractFetchDownloadServiceTest.kt b/mobile/android/android-components/components/feature/downloads/src/test/java/mozilla/components/feature/downloads/AbstractFetchDownloadServiceTest.kt --- a/mobile/android/android-components/components/feature/downloads/src/test/java/mozilla/components/feature/downloads/AbstractFetchDownloadServiceTest.kt +++ b/mobile/android/android-components/components/feature/downloads/src/test/java/mozilla/components/feature/downloads/AbstractFetchDownloadServiceTest.kt @@ -1402,21 +1402,10 @@ verify(responseFromClient, atLeastOnce()).status verifyNoInteractions(responseFromDownloadState) } - @Test - fun `performDownload - don't make a client request when download is completed`() { - val responseFromDownloadState = mock() - val download = spy(DownloadState("https://example.com/file.txt", "file.txt", response = responseFromDownloadState, contentLength = 1000)) - val downloadJob = DownloadJobState(currentBytesCopied = 1000, state = download, status = DOWNLOADING) - - service.performDownload(downloadJob) - - verify(service).verifyDownload(downloadJob) - } - @Test @Config(sdk = [28]) fun `onDestroy cancels all running jobs when using legacy file stream`() = runBlocking { val download = DownloadState("https://example.com/file.txt", "file.txt") val response = Response( diff --git a/mobile/android/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt b/mobile/android/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt --- a/mobile/android/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt +++ b/mobile/android/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt @@ -1,12 +1,12 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ // These lines are generated by android-components/automation/application-services-nightly-bump.py -val VERSION = "140.20250428152438" -val CHANNEL = ApplicationServicesChannel.NIGHTLY +val VERSION = "139.0" +val CHANNEL = ApplicationServicesChannel.RELEASE object ApplicationServicesConfig { val version = VERSION val channel = CHANNEL val groupId = when (channel) { diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/setup/ui/SetupChecklistViewHolder.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/setup/ui/SetupChecklistViewHolder.kt --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/setup/ui/SetupChecklistViewHolder.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/setup/ui/SetupChecklistViewHolder.kt @@ -10,10 +10,11 @@ import androidx.lifecycle.LifecycleOwner import mozilla.components.lib.state.ext.observeAsComposableState import org.mozilla.fenix.components.components import org.mozilla.fenix.compose.ComposeViewHolder import org.mozilla.fenix.home.sessioncontrol.SetupChecklistInteractor +import org.mozilla.fenix.utils.isLargeScreenSize /** * View holder for the Setup Checklist feature. * * @param composeView [ComposeView] which will be populated with Jetpack Compose UI content. @@ -30,11 +31,11 @@ override fun Content() { val appStore = components.appStore val setupChecklistState = appStore.observeAsComposableState { state -> state.setupChecklistState }.value - if (setupChecklistState != null && setupChecklistState.isVisible) { + if (!composeView.context.isLargeScreenSize() && setupChecklistState != null && setupChecklistState.isVisible) { SetupChecklist( setupChecklistState = setupChecklistState, interactor = interactor, ) } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/Homepage.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/Homepage.kt --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/Homepage.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/Homepage.kt @@ -23,10 +23,11 @@ import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.unit.Dp @@ -35,10 +36,11 @@ import mozilla.telemetry.glean.private.NoExtras import org.mozilla.fenix.GleanMetrics.History import org.mozilla.fenix.GleanMetrics.HomeBookmarks import org.mozilla.fenix.GleanMetrics.RecentlyVisitedHomepage import org.mozilla.fenix.R +import org.mozilla.fenix.components.appstate.setup.checklist.SetupChecklistState import org.mozilla.fenix.compose.MessageCard import org.mozilla.fenix.compose.home.HomeSectionHeader import org.mozilla.fenix.home.bookmarks.Bookmark import org.mozilla.fenix.home.bookmarks.interactor.BookmarksInteractor import org.mozilla.fenix.home.bookmarks.view.Bookmarks @@ -69,10 +71,11 @@ import org.mozilla.fenix.home.store.NimbusMessageState import org.mozilla.fenix.home.topsites.TopSiteColors import org.mozilla.fenix.home.topsites.TopSites import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.utils.isLargeScreenSize import org.mozilla.fenix.wallpapers.WallpaperState private const val MIDDLE_SEARCH_SCROLL_THRESHOLD_PX = 10 /** @@ -154,16 +157,11 @@ ) { SearchBar(onClick = interactor::onNavigateSearch) } } - if (setupChecklistState != null && setupChecklistState.isVisible) { - SetupChecklist( - setupChecklistState = setupChecklistState, - interactor = interactor, - ) - } + MaybeAddSetupChecklist(setupChecklistState, interactor) if (showRecentTabs) { RecentTabsSection( interactor = interactor, cardBackgroundColor = cardBackgroundColor, @@ -232,10 +230,24 @@ } } } } +@Composable +private fun MaybeAddSetupChecklist( + setupChecklistState: SetupChecklistState?, + interactor: HomepageInteractor, +) { + val isTabletDevice = LocalContext.current.isLargeScreenSize() + if (!isTabletDevice && setupChecklistState != null && setupChecklistState.isVisible) { + SetupChecklist( + setupChecklistState = setupChecklistState, + interactor = interactor, + ) + } +} + @Composable private fun NimbusMessageCardSection( nimbusMessage: NimbusMessageState, interactor: MessageCardInteractor, ) { diff --git a/mobile/android/fenix/app/src/main/res/values-et/strings.xml b/mobile/android/fenix/app/src/main/res/values-et/strings.xml --- a/mobile/android/fenix/app/src/main/res/values-et/strings.xml +++ b/mobile/android/fenix/app/src/main/res/values-et/strings.xml @@ -822,12 +822,10 @@ Jaga URL-i Jaga faili Kustuta - - Loobu Viimased 7 päeva Viimased 30 päeva @@ -842,50 +840,10 @@ Pildid Dokumendid Muud - - Katkisest saidist teavitamine - - Aita muuta %1$s kõigi jaoks paremaks. Mozilla töötajad kasutavad sinu saadetud teavet veebisaidi probleemide lahendamiseks. - - URL - - Palun sisesta korrektne URL - - Mis on katki? - - Vali põhjus - - Palun vali põhjus - - Kirjelda probleemi (valikuline) - - Saada lisateavet - - Loobu - - Saada - - Raport on saadetud - - Sulge - - Sait on aeglane või ei tööta - - Pildid või videod - - Nupud, lingid ja muu sisu diff --git a/mobile/android/fenix/app/src/main/res/values-sq/strings.xml b/mobile/android/fenix/app/src/main/res/values-sq/strings.xml --- a/mobile/android/fenix/app/src/main/res/values-sq/strings.xml +++ b/mobile/android/fenix/app/src/main/res/values-sq/strings.xml @@ -1526,12 +1526,10 @@ Shkarkimi dështoi Kërko te shkarkimet S’u gjetën përfundime - - Përzgjidhe krejt diff --git a/mobile/android/version.txt b/mobile/android/version.txt --- a/mobile/android/version.txt +++ b/mobile/android/version.txt @@ -1 +1 @@ -140.0a1 +139.0b4 diff --git a/mobile/locales/l10n-changesets.json b/mobile/locales/l10n-changesets.json --- a/mobile/locales/l10n-changesets.json +++ b/mobile/locales/l10n-changesets.json @@ -4,881 +4,881 @@ "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "an": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ar": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ast": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "az": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "be": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "bg": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "bn": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "br": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "bs": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ca": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "cak": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "cs": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "cy": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "da": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "de": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "dsb": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "el": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "en-CA": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "en-GB": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "eo": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "es-AR": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "es-CL": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "es-ES": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "es-MX": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "et": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "eu": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "fa": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ff": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "fi": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "fr": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "fy-NL": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ga-IE": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "gd": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "gl": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "gn": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "gu-IN": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "he": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "hi-IN": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "hr": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "hsb": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "hu": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "hy-AM": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ia": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "id": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "is": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "it": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ja": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ka": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "kab": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "kk": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "km": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "kn": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ko": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "lij": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "lo": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "lt": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ltg": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "lv": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "meh": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "mix": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ml": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "mr": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ms": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "my": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "nb-NO": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ne-NP": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "nl": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "nn-NO": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "oc": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "pa-IN": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "pl": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "pt-BR": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "pt-PT": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "rm": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ro": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ru": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "sk": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "sl": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "son": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "sq": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "sr": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "sv-SE": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ta": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "te": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "th": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "tl": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "tr": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "trs": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "uk": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "ur": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "uz": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "vi": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "wo": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "xh": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "zam": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "zh-CN": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" }, "zh-TW": { "pin": false, "platforms": [ "android", "android-arm", "android-multilocale" ], - "revision": "45008f6e14773d249097b9551fb431ba39d10f05" + "revision": "76dee154a6243ffb650688eb2b3227cc3967699c" } } \ No newline at end of file diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -3750,15 +3750,19 @@ #ifdef MOZ_DATA_REPORTING pref("datareporting.policy.dataSubmissionEnabled", true); pref("datareporting.policy.dataSubmissionPolicyNotifiedTime", "0"); pref("datareporting.policy.dataSubmissionPolicyAcceptedVersion", 0); - pref("datareporting.policy.dataSubmissionPolicyBypassNotification", false); pref("datareporting.policy.currentPolicyVersion", 2); pref("datareporting.policy.minimumPolicyVersion", 1); pref("datareporting.policy.minimumPolicyVersion.channel-beta", 2); pref("datareporting.policy.firstRunURL", "https://www.mozilla.org/privacy/firefox/"); + #ifdef MOZILLA_OFFICIAL + pref("datareporting.policy.dataSubmissionPolicyBypassNotification", false); + #else + pref("datareporting.policy.dataSubmissionPolicyBypassNotification", true); + #endif #endif #ifdef MOZ_SERVICES_HEALTHREPORT #if !defined(ANDROID) pref("datareporting.healthreport.infoURL", "https://www.mozilla.org/legal/privacy/firefox.html#health-report"); diff --git a/security/nss/lib/nss/nss.h b/security/nss/lib/nss/nss.h --- a/security/nss/lib/nss/nss.h +++ b/security/nss/lib/nss/nss.h @@ -20,16 +20,16 @@ * this is a beta release. * * The format of the version string should be * ".[.[.]][ ][ ]" */ -#define NSS_VERSION "3.111" _NSS_CUSTOMIZED " Beta" +#define NSS_VERSION "3.111" _NSS_CUSTOMIZED #define NSS_VMAJOR 3 #define NSS_VMINOR 111 #define NSS_VPATCH 0 #define NSS_VBUILD 0 -#define NSS_BETA PR_TRUE +#define NSS_BETA PR_FALSE #ifndef RC_INVOKED #include "seccomon.h" diff --git a/security/nss/lib/softoken/softkver.h b/security/nss/lib/softoken/softkver.h --- a/security/nss/lib/softoken/softkver.h +++ b/security/nss/lib/softoken/softkver.h @@ -15,13 +15,13 @@ * and whether this is a beta release. * * The format of the version string should be * ".[.[.]][ ][ ]" */ -#define SOFTOKEN_VERSION "3.111" SOFTOKEN_ECC_STRING " Beta" +#define SOFTOKEN_VERSION "3.111" SOFTOKEN_ECC_STRING #define SOFTOKEN_VMAJOR 3 #define SOFTOKEN_VMINOR 111 #define SOFTOKEN_VPATCH 0 #define SOFTOKEN_VBUILD 0 -#define SOFTOKEN_BETA PR_TRUE +#define SOFTOKEN_BETA PR_FALSE #endif /* _SOFTKVER_H_ */ diff --git a/security/nss/lib/util/nssutil.h b/security/nss/lib/util/nssutil.h --- a/security/nss/lib/util/nssutil.h +++ b/security/nss/lib/util/nssutil.h @@ -17,16 +17,16 @@ * and whether this is a beta release. * * The format of the version string should be * ".[.[.]][ ]" */ -#define NSSUTIL_VERSION "3.111 Beta" +#define NSSUTIL_VERSION "3.111" #define NSSUTIL_VMAJOR 3 #define NSSUTIL_VMINOR 111 #define NSSUTIL_VPATCH 0 #define NSSUTIL_VBUILD 0 -#define NSSUTIL_BETA PR_TRUE +#define NSSUTIL_BETA PR_FALSE SEC_BEGIN_PROTOS /* * Returns a const string of the UTIL library version. diff --git a/taskcluster/config.yml b/taskcluster/config.yml --- a/taskcluster/config.yml +++ b/taskcluster/config.yml @@ -809,10 +809,29 @@ tree-dev: provisioner: scriptworker-k8s implementation: treescript os: linux worker-type: '{trust-domain}-1-tree-dev' + lando: + provisioner: scriptworker-k8s + implementation: landoscript + os: linux + worker-type: + by-project: + # Autoland is treated specially here because any landoscript + # tasks that run on it must be done on level 3 workers + # (so they can actually push changes). On other projects + # `release-level` would handle this just fine, but + # `autoland` is considered a "staging" release level for + # historical reasons. + # https://bugzilla.mozilla.org/show_bug.cgi?id=1960918 + # seeks to improve this situation. + autoland: '{trust-domain}-3-lando' + default: + by-release-level: + production: '{trust-domain}-3-lando' + staging: '{trust-domain}-1-lando' t-bitbar-gw.*: provisioner: proj-autophone implementation: generic-worker os: linux-bitbar worker-type: 'gecko-{alias}' diff --git a/taskcluster/gecko_taskgraph/transforms/release_version_bump.py b/taskcluster/gecko_taskgraph/transforms/resolve_landoscript_keyed_by.py rename from taskcluster/gecko_taskgraph/transforms/release_version_bump.py rename to taskcluster/gecko_taskgraph/transforms/resolve_landoscript_keyed_by.py --- a/taskcluster/gecko_taskgraph/transforms/release_version_bump.py +++ b/taskcluster/gecko_taskgraph/transforms/resolve_landoscript_keyed_by.py @@ -13,19 +13,22 @@ @transforms.add def handle_keyed_by(config, tasks): """Resolve fields that can be keyed by platform, etc.""" default_fields = [ + "scopes", "worker.push", "worker.bump-files", "worker-type", ] for task in tasks: fields = default_fields[:] for additional_field in ( "l10n-bump-info", "source-repo", + "lando-repo", + "hg-repo-url", "dontbuild", "ignore-closed-tree", ): if additional_field in task["worker"]: fields.append(f"worker.{additional_field}") diff --git a/taskcluster/gecko_taskgraph/transforms/task.py b/taskcluster/gecko_taskgraph/transforms/task.py --- a/taskcluster/gecko_taskgraph/transforms/task.py +++ b/taskcluster/gecko_taskgraph/transforms/task.py @@ -1526,10 +1526,148 @@ if worker.get("ssh-user"): task_def["payload"]["ssh_user"] = worker["ssh-user"] +@payload_builder( + "landoscript", + schema={ + Required("lando-repo"): str, + Optional("hg-repo-url"): str, + Optional("ignore-closed-tree"): bool, + Optional("dontbuild"): bool, + Optional("tags"): [Any("buildN", "release", None)], + Optional("android-l10n-import-info"): { + Required("from-repo-url"): str, + Required("toml-info"): [ + { + Required("toml-path"): str, + Required("dest-path"): str, + } + ], + }, + Optional("android-l10n-sync-info"): { + Required("from-branch"): str, + Required("toml-info"): [ + { + Required("toml-path"): str, + } + ], + }, + Optional("l10n-bump-info"): [ + { + Required("name"): str, + Required("path"): str, + Optional("l10n-repo-url"): str, + Optional("l10n-repo-target-branch"): str, + Optional("ignore-config"): object, + Required("platform-configs"): [ + { + Required("platforms"): [str], + Required("path"): str, + Optional("format"): str, + } + ], + } + ], + Optional("bump-files"): [str], + }, +) +def build_landoscript_payload(config, task, task_def): + worker = task["worker"] + release_config = get_release_config(config) + task_def["payload"] = {"actions": [], "lando_repo": worker["lando-repo"]} + actions = task_def["payload"]["actions"] + + if worker.get("ignore-closed-tree") is not None: + task_def["payload"]["ignore_closed_tree"] = worker["ignore-closed-tree"] + + if worker.get("dontbuild"): + task_def["payload"]["dontbuild"] = True + + if worker.get("android-l10n-import-info"): + android_l10n_import_info = {} + for k, v in worker["android-l10n-import-info"].items(): + android_l10n_import_info[k.replace("-", "_")] = worker[ + "android-l10n-import-info" + ][k] + android_l10n_import_info["toml_info"] = [ + { + param_name.replace("-", "_"): param_value + for param_name, param_value in entry.items() + } + for entry in worker["android-l10n-import-info"]["toml-info"] + ] + task_def["payload"]["android_l10n_import_info"] = android_l10n_import_info + actions.append("android_l10n_import") + + if worker.get("android-l10n-sync-info"): + android_l10n_sync_info = {} + for k, v in worker["android-l10n-sync-info"].items(): + android_l10n_sync_info[k.replace("-", "_")] = worker[ + "android-l10n-sync-info" + ][k] + android_l10n_sync_info["toml_info"] = [ + { + param_name.replace("-", "_"): param_value + for param_name, param_value in entry.items() + } + for entry in worker["android-l10n-sync-info"]["toml-info"] + ] + task_def["payload"]["android_l10n_sync_info"] = android_l10n_sync_info + actions.append("android_l10n_sync") + + if worker.get("l10n-bump-info"): + l10n_bump_info = [] + l10n_repo_urls = set() + for lbi in worker["l10n-bump-info"]: + new_lbi = {} + if "l10n-repo-url" in lbi: + l10n_repo_urls.add(lbi["l10n-repo-url"]) + for k, v in lbi.items(): + new_lbi[k.replace("-", "_")] = lbi[k] + l10n_bump_info.append(new_lbi) + + task_def["payload"]["l10n_bump_info"] = l10n_bump_info + if len(l10n_repo_urls) > 1: + raise Exception( + "Must use the same l10n-repo-url for all files in the same task!" + ) + elif len(l10n_repo_urls) == 1: + actions.append("l10n_bump") + + if worker.get("tags"): + tag_names = [] + product = task["shipping-product"].upper() + version = release_config["version"].replace(".", "_") + buildnum = release_config["build_number"] + if "buildN" in worker["tags"]: + tag_names.extend( + [ + f"{product}_{version}_BUILD{buildnum}", + ] + ) + if "release" in worker["tags"]: + tag_names.extend([f"{product}_{version}_RELEASE"]) + tag_info = { + "tags": tag_names, + "hg_repo_url": worker["hg-repo-url"], + "revision": config.params[ + "{}head_rev".format(worker.get("repo-param-prefix", "")) + ], + } + task_def["payload"]["tag_info"] = tag_info + actions.append("tag") + + if worker.get("bump-files"): + bump_info = {} + bump_info["next_version"] = release_config["next_version"] + bump_info["files"] = worker["bump-files"] + task_def["payload"]["version_bump_info"] = bump_info + actions.append("version_bump") + + @payload_builder( "invalid", schema={ # an invalid task is one which should never actually be created; this is used in # release automation on branches where the task just doesn't make sense diff --git a/taskcluster/kinds/android-l10n/kind.yml b/taskcluster/kinds/android-l10n/kind.yml --- a/taskcluster/kinds/android-l10n/kind.yml +++ b/taskcluster/kinds/android-l10n/kind.yml @@ -3,35 +3,42 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. --- loader: taskgraph.loader.transform:loader transforms: + - gecko_taskgraph.transforms.resolve_landoscript_keyed_by:transforms - gecko_taskgraph.transforms.task:transforms task-defaults: run-on-projects: [] treeherder: kind: build platform: fenix-android-all/opt tier: 1 - worker-type: tree + worker-type: lando worker: - implementation: treescript - tags: [] - bump: false - dontbuild: false - push: true + implementation: landoscript tasks: import: name: android_l10n_import description: Import strings from android-l10n repo treeherder: symbol: android-l10n(I) + scopes: + by-project: + try: + - project:releng:lando:repo:ff-test-dev + - project:releng:lando:action:android_l10n_import + default: + - project:releng:lando:repo:firefox-autoland + - project:releng:lando:action:android_l10n_import worker: - ignore-closed-tree: true - source-repo: https://hg.mozilla.org/integration/autoland + lando-repo: + by-project: + try: ff-test-dev + default: firefox-autoland android-l10n-import-info: from-repo-url: https://github.com/mozilla-l10n/android-l10n toml-info: - toml-path: mozilla-mobile/fenix/l10n.toml dest-path: mobile/android/fenix @@ -40,17 +47,28 @@ - toml-path: mozilla-mobile/android-components/l10n.toml dest-path: mobile/android/android-components sync: name: android_l10n_sync - description: Sync android-l10n strings from central to beta + description: Sync android-l10n strings from main to beta treeherder: symbol: android-l10n(S) + scopes: + by-project: + try: + - project:releng:lando:repo:ff-test-dev + - project:releng:lando:action:android_l10n_sync + default: + - project:releng:lando:repo:firefox-beta + - project:releng:lando:action:android_l10n_sync worker: - ignore-closed-tree: false - source-repo: https://hg.mozilla.org/releases/mozilla-beta + lando-repo: + by-project: + try: ff-test-dev + default: firefox-beta + ignore-closed-tree: true android-l10n-sync-info: - from-repo-url: https://hg.mozilla.org/mozilla-central + from-branch: main toml-info: - toml-path: mobile/android/fenix/l10n.toml - toml-path: mobile/android/focus-android/l10n.toml - toml-path: mobile/android/android-components/l10n.toml diff --git a/taskcluster/kinds/l10n-bump/kind.yml b/taskcluster/kinds/l10n-bump/kind.yml --- a/taskcluster/kinds/l10n-bump/kind.yml +++ b/taskcluster/kinds/l10n-bump/kind.yml @@ -3,45 +3,66 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. --- loader: taskgraph.loader.transform:loader transforms: - - gecko_taskgraph.transforms.release_version_bump:transforms + - gecko_taskgraph.transforms.resolve_landoscript_keyed_by:transforms - gecko_taskgraph.transforms.task:transforms task-defaults: - worker-type: tree + worker-type: lando + scopes: + by-project: + mozilla-beta: + - project:releng:lando:repo:firefox-beta + - project:releng:lando:action:l10n_bump + mozilla-central: + - project:releng:lando:repo:firefox-main + - project:releng:lando:action:l10n_bump + autoland: + - project:releng:lando:repo:firefox-autoland + - project:releng:lando:action:l10n_bump + mozilla-release: + - project:releng:lando:repo:firefox-release + - project:releng:lando:action:l10n_bump + mozilla-esr128: + - project:releng:lando:repo:firefox-esr128 + - project:releng:lando:action:l10n_bump + try: + - project:releng:lando:repo:ff-test-dev + - project:releng:lando:action:l10n_bump + # set a default to avoid failing tgdiff tests on other branches + # even though this doesn't run there + default: [] worker: - implementation: treescript - tags: [] - bump: false + implementation: landoscript dontbuild: by-project: mozilla-beta: false default: true ignore-closed-tree: by-project: - autoland: true - default: false - push: + mozilla-beta: false + default: true + lando-repo: by-project: - mozilla-(central|beta): true - autoland: true - default: false - source-repo: - by-release-type: - beta: https://hg.mozilla.org/releases/mozilla-beta - nightly: https://hg.mozilla.org/mozilla-central - default: https://hg.mozilla.org/integration/autoland + mozilla-central: main + mozilla-beta: firefox-beta + mozilla-release: firefox-release + mozilla-esr128: firefox-esr128 + autoland: firefox-autoland + try: ff-test-dev + # set a default to avoid failing tgdiff tests on other branches + # even though this doesn't run there + default: '' l10n-bump-info: by-release-type: # XXX whenever the `beta` config changes, make sure to make # the corresponding change in merge-automation/kind.yml beta: - name: Firefox l10n changesets path: browser/locales/l10n-changesets.json - version-path: browser/config/version.txt l10n-repo-url: https://github.com/mozilla-l10n/firefox-l10n l10n-repo-target-branch: main ignore-config: ja: - macosx64 @@ -84,11 +105,10 @@ ] - name: Mobile l10n changesets path: mobile/locales/l10n-changesets.json l10n-repo-url: https://github.com/mozilla-l10n/firefox-l10n l10n-repo-target-branch: main - version-path: mobile/android/version.txt platform-configs: [ { "platforms": [ @@ -102,11 +122,10 @@ default: - name: Firefox l10n changesets path: browser/locales/l10n-changesets.json l10n-repo-url: https://github.com/mozilla-l10n/firefox-l10n l10n-repo-target-branch: main - version-path: browser/config/version.txt ignore-config: ja: - macosx64 - macosx64-devedition ja-JP-mac: @@ -147,11 +166,10 @@ ] - name: Mobile l10n changesets path: mobile/locales/l10n-changesets.json l10n-repo-url: https://github.com/mozilla-l10n/firefox-l10n l10n-repo-target-branch: main - version-path: mobile/android/version.txt platform-configs: [ { "platforms": [ diff --git a/taskcluster/kinds/release-early-tagging/kind.yml b/taskcluster/kinds/release-early-tagging/kind.yml --- a/taskcluster/kinds/release-early-tagging/kind.yml +++ b/taskcluster/kinds/release-early-tagging/kind.yml @@ -1,32 +1,57 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. --- loader: taskgraph.loader.transform:loader transforms: - gecko_taskgraph.transforms.release_deps:transforms - - gecko_taskgraph.transforms.release_version_bump:transforms + - gecko_taskgraph.transforms.resolve_landoscript_keyed_by:transforms - gecko_taskgraph.transforms.task:transforms task-defaults: description: Release Promotion version tag for buildN run-on-projects: [] shipping-phase: promote - worker-type: tree + worker-type: lando + scopes: + by-project: + mozilla-beta: + - project:releng:lando:repo:firefox-beta + - project:releng:lando:action:tag + mozilla-release: + - project:releng:lando:repo:firefox-release + - project:releng:lando:action:tag + mozilla-esr115: + - project:releng:lando:repo:firefox-esr115 + - project:releng:lando:action:tag + mozilla-esr128: + - project:releng:lando:repo:firefox-esr128 + - project:releng:lando:action:tag + try: + - project:releng:lando:repo:ff-test-dev + - project:releng:lando:action:tag + default: [] worker: - implementation: treescript + implementation: landoscript tags: ['buildN'] - bump: false - dontbuild: true - push: + lando-repo: by-project: - mozilla-(beta|release|esr.*): true - maple: true - default: false - + mozilla-beta: firefox-beta + mozilla-release: firefox-release + mozilla-esr115: firefox-esr115 + mozilla-esr128: firefox-esr128 + try: ff-test-dev + default: "" + # used to map hg revisions to the git revisions that landoscript needs + hg-repo-url: + by-project: + mozilla-beta: https://hg.mozilla.org/releases/mozilla-beta + mozilla-release: https://hg.mozilla.org/releases/mozilla-release + mozilla-esr115: https://hg.mozilla.org/releases/mozilla-esr115 + mozilla-esr128: https://hg.mozilla.org/releases/mozilla-esr128 + try: https://hg.mozilla.org/try + default: "" tasks: firefox: name: firefox-tag-buildN shipping-product: firefox diff --git a/taskcluster/kinds/release-version-bump/kind.yml b/taskcluster/kinds/release-version-bump/kind.yml --- a/taskcluster/kinds/release-version-bump/kind.yml +++ b/taskcluster/kinds/release-version-bump/kind.yml @@ -4,11 +4,11 @@ --- loader: taskgraph.loader.transform:loader transforms: - gecko_taskgraph.transforms.release_deps:transforms - - gecko_taskgraph.transforms.release_version_bump:transforms + - gecko_taskgraph.transforms.resolve_landoscript_keyed_by:transforms - gecko_taskgraph.transforms.task:transforms kind-dependencies: - release-beetmover-push-to-release - post-beetmover-components-dummy @@ -16,16 +16,54 @@ task-defaults: description: Release Promotion version bump/tag run-on-projects: [] shipping-phase: ship - worker-type: tree + worker-type: lando + scopes: + by-project: + mozilla-beta: + - project:releng:lando:repo:firefox-beta + - project:releng:lando:action:tag + - project:releng:lando:action:version_bump + mozilla-release: + - project:releng:lando:repo:firefox-release + - project:releng:lando:action:tag + - project:releng:lando:action:version_bump + mozilla-esr115: + - project:releng:lando:repo:firefox-esr115 + - project:releng:lando:action:tag + - project:releng:lando:action:version_bump + mozilla-esr128: + - project:releng:lando:repo:firefox-esr128 + - project:releng:lando:action:tag + - project:releng:lando:action:version_bump + try: + - project:releng:lando:repo:ff-test-dev + - project:releng:lando:action:tag + - project:releng:lando:action:version_bump + default: [] worker: - implementation: treescript - dontbuild: true + implementation: landoscript tags: ['release'] - bump: true + lando-repo: + by-project: + mozilla-beta: firefox-beta + mozilla-release: firefox-release + mozilla-esr115: firefox-esr115 + mozilla-esr128: firefox-esr128 + try: ff-test-dev + default: "" + # used to map hg revisions to the git revisions that landoscript needs + hg-repo-url: + by-project: + mozilla-beta: https://hg.mozilla.org/releases/mozilla-beta + mozilla-release: https://hg.mozilla.org/releases/mozilla-release + mozilla-esr115: https://hg.mozilla.org/releases/mozilla-esr115 + mozilla-esr128: https://hg.mozilla.org/releases/mozilla-esr128 + try: https://hg.mozilla.org/try + default: "" # We're bumping both desktop and mobile version regardless of which product is getting # released, to avoid confusion from them getting out of sync. bump-files: by-release-type: default: @@ -38,15 +76,10 @@ - "mobile/android/version.txt" esr.*: - "browser/config/version.txt" - "browser/config/version_display.txt" - "config/milestone.txt" - push: - by-project: - mozilla-(beta|release|esr.*): true - maple: true - default: false tasks: firefox: name: firefox-version-bump shipping-product: firefox diff --git a/toolkit/components/extensions/test/browser/browser_ext_themes_sidebars.js b/toolkit/components/extensions/test/browser/browser_ext_themes_sidebars.js --- a/toolkit/components/extensions/test/browser/browser_ext_themes_sidebars.js +++ b/toolkit/components/extensions/test/browser/browser_ext_themes_sidebars.js @@ -124,18 +124,17 @@ is( sidebarBoxCS.color, actualColor, "Sidebar box text color should be set." ); + is( + rootCS.backgroundColor, + actualBackground, + "Sidebar background should be set." + ); + is(rootCS.color, actualColor, "Sidebar text color should be set."); } - - is( - rootCS.backgroundColor, - actualBackground, - "Sidebar background should be set." - ); - is(rootCS.color, actualColor, "Sidebar text color should be set."); is( highlightCS.backgroundColor, actualHighlightBackground, "Sidebar highlight background color should be set." ); diff --git a/toolkit/components/nimbus/FeatureManifest.yaml b/toolkit/components/nimbus/FeatureManifest.yaml --- a/toolkit/components/nimbus/FeatureManifest.yaml +++ b/toolkit/components/nimbus/FeatureManifest.yaml @@ -767,16 +767,10 @@ firstRunURL: type: string fallbackPref: datareporting.policy.firstRunURL description: >- URL of browser tab to be opened on first run instead of infobar. - onTrainRolloutPopulation: - type: int - fallbackPref: browser.preonboarding.onTrainRolloutPopulation - description: >- - If an on-train limited rollout is enabled, the percentage of the population to enroll - moreFromMozilla: description: "New page on about:preferences to suggest more Mozilla products" owner: omc@mozilla.com hasExposure: true diff --git a/toolkit/components/pdfjs/content/build/pdf.mjs b/toolkit/components/pdfjs/content/build/pdf.mjs --- a/toolkit/components/pdfjs/content/build/pdf.mjs +++ b/toolkit/components/pdfjs/content/build/pdf.mjs @@ -10084,11 +10084,11 @@ worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams); task._worker = worker; } const docParams = { docId, - apiVersion: "5.2.135", + apiVersion: "5.2.96", data, password, disableAutoFetch, rangeChunkSize, length, @@ -11719,12 +11719,12 @@ this.callback(); } } } } -const version = "5.2.135"; -const build = "b47b248e1"; +const version = "5.2.96"; +const build = "d8d3e0abf"; ;// ./src/shared/scripting_utils.js function makeColorComp(n) { return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0"); } @@ -21100,12 +21100,12 @@ -const pdfjsVersion = "5.2.135"; -const pdfjsBuild = "b47b248e1"; +const pdfjsVersion = "5.2.96"; +const pdfjsBuild = "d8d3e0abf"; globalThis.pdfjsLib = { AbortException: AbortException, AnnotationEditorLayer: AnnotationEditorLayer, AnnotationEditorParamsType: AnnotationEditorParamsType, AnnotationEditorType: AnnotationEditorType, diff --git a/toolkit/components/pdfjs/content/build/pdf.scripting.mjs b/toolkit/components/pdfjs/content/build/pdf.scripting.mjs --- a/toolkit/components/pdfjs/content/build/pdf.scripting.mjs +++ b/toolkit/components/pdfjs/content/build/pdf.scripting.mjs @@ -4041,10 +4041,10 @@ }; } ;// ./src/pdf.scripting.js -const pdfjsVersion = "5.2.135"; -const pdfjsBuild = "b47b248e1"; +const pdfjsVersion = "5.2.96"; +const pdfjsBuild = "d8d3e0abf"; globalThis.pdfjsScripting = { initSandbox: initSandbox }; diff --git a/toolkit/components/pdfjs/content/build/pdf.worker.mjs b/toolkit/components/pdfjs/content/build/pdf.worker.mjs --- a/toolkit/components/pdfjs/content/build/pdf.worker.mjs +++ b/toolkit/components/pdfjs/content/build/pdf.worker.mjs @@ -57146,11 +57146,11 @@ const verbosity = getVerbosityLevel(); const { docId, apiVersion } = docParams; - const workerVersion = "5.2.135"; + const workerVersion = "5.2.96"; if (apiVersion !== workerVersion) { throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`); } const workerHandlerName = docId + "_worker"; let handler = new MessageHandler(workerHandlerName, docId, port); @@ -57671,12 +57671,12 @@ } } ;// ./src/pdf.worker.js -const pdfjsVersion = "5.2.135"; -const pdfjsBuild = "b47b248e1"; +const pdfjsVersion = "5.2.96"; +const pdfjsBuild = "d8d3e0abf"; globalThis.pdfjsWorker = { WorkerMessageHandler: WorkerMessageHandler }; export { WorkerMessageHandler }; diff --git a/toolkit/components/pdfjs/content/web/viewer-geckoview.mjs b/toolkit/components/pdfjs/content/web/viewer-geckoview.mjs --- a/toolkit/components/pdfjs/content/web/viewer-geckoview.mjs +++ b/toolkit/components/pdfjs/content/web/viewer-geckoview.mjs @@ -7002,11 +7002,11 @@ #scaleTimeoutId = null; #signatureManager = null; #supportsPinchToZoom = true; #textLayerMode = TextLayerMode.ENABLE; constructor(options) { - const viewerVersion = "5.2.135"; + const viewerVersion = "5.2.96"; if (version !== viewerVersion) { throw new Error(`The API version "${version}" does not match the Viewer version "${viewerVersion}".`); } this.container = options.container; this.viewer = options.viewer || options.container.firstElementChild; @@ -10546,12 +10546,12 @@ ;// ./web/viewer-geckoview.js -const pdfjsVersion = "5.2.135"; -const pdfjsBuild = "b47b248e1"; +const pdfjsVersion = "5.2.96"; +const pdfjsBuild = "d8d3e0abf"; const AppConstants = null; window.PDFViewerApplication = PDFViewerApplication; window.PDFViewerApplicationConstants = AppConstants; window.PDFViewerApplicationOptions = AppOptions; function getViewerConfiguration() { diff --git a/toolkit/components/pdfjs/content/web/viewer.mjs b/toolkit/components/pdfjs/content/web/viewer.mjs --- a/toolkit/components/pdfjs/content/web/viewer.mjs +++ b/toolkit/components/pdfjs/content/web/viewer.mjs @@ -10190,11 +10190,11 @@ #scaleTimeoutId = null; #signatureManager = null; #supportsPinchToZoom = true; #textLayerMode = TextLayerMode.ENABLE; constructor(options) { - const viewerVersion = "5.2.135"; + const viewerVersion = "5.2.96"; if (version !== viewerVersion) { throw new Error(`The API version "${version}" does not match the Viewer version "${viewerVersion}".`); } this.container = options.container; this.viewer = options.viewer || options.container.firstElementChild; @@ -15186,12 +15186,12 @@ ;// ./web/viewer.js -const pdfjsVersion = "5.2.135"; -const pdfjsBuild = "b47b248e1"; +const pdfjsVersion = "5.2.96"; +const pdfjsBuild = "d8d3e0abf"; const AppConstants = null; window.PDFViewerApplication = PDFViewerApplication; window.PDFViewerApplicationConstants = AppConstants; window.PDFViewerApplicationOptions = AppOptions; function getViewerConfiguration() { diff --git a/toolkit/components/places/nsFaviconService.cpp b/toolkit/components/places/nsFaviconService.cpp --- a/toolkit/components/places/nsFaviconService.cpp +++ b/toolkit/components/places/nsFaviconService.cpp @@ -470,10 +470,11 @@ RefPtr runnable = new AsyncGetFaviconForPageRunnable(pageURI, aPreferredWidth, promise); RefPtr DB = Database::GetDatabase(); if (MOZ_UNLIKELY(!DB)) { promise->Reject(NS_ERROR_UNEXPECTED, __func__); + return promise; } nsresult rv = DB->DispatchToAsyncThread(runnable); if (NS_FAILED(rv)) { promise->Reject(rv, __func__); diff --git a/toolkit/components/telemetry/app/TelemetryReportingPolicy.sys.mjs b/toolkit/components/telemetry/app/TelemetryReportingPolicy.sys.mjs --- a/toolkit/components/telemetry/app/TelemetryReportingPolicy.sys.mjs +++ b/toolkit/components/telemetry/app/TelemetryReportingPolicy.sys.mjs @@ -11,11 +11,10 @@ const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { BrowserUtils: "resource://gre/modules/BrowserUtils.sys.mjs", - ExperimentManager: "resource://nimbus/lib/ExperimentManager.sys.mjs", TelemetrySend: "resource://gre/modules/TelemetrySend.sys.mjs", NimbusFeatures: "resource://nimbus/ExperimentAPI.sys.mjs", OnboardingMessageProvider: "resource:///modules/asrouter/OnboardingMessageProvider.sys.mjs", WinTaskbarJumpList: "resource:///modules/WindowsJumpLists.sys.mjs", @@ -719,77 +718,35 @@ // Glean can now init on shutdown if necessary. Services.prefs.setBoolPref("telemetry.fog.init_on_shutdown", true); }); }, - async _configureFromOnTrainRollout() { - const ENROLLMENT_PREF = "browser.preonboarding.enrolledInOnTrainRollout"; - - const platformSupported = - AppConstants.platform == "linux" || - AppConstants.platform == "macosx" || - (AppConstants.platform === "win" && - Services.sysinfo.getProperty("hasWinPackageId", false)); - if (!platformSupported) { - return; - } - - let enrolled; - // Only enroll new users - if (this.isFirstRun()) { - const count = this._nimbusVariables.onTrainRolloutPopulation; - if (!count) { - this._log.trace( - `_configureFromOnTrainRollout: User not enrolled in on-train rollout - population is 0, not setting preferences` - ); - return; - } - const bucketConfig = { - count, - namespace: "firefox-desktop-preonboarding-on-train-rollout-1", - randomizationUnit: "normandy_id", - start: 0, - total: 10000, - }; - - enrolled = - await lazy.ExperimentManager.isInBucketAllocation(bucketConfig); - - if (enrolled) { - Services.prefs.setBoolPref(ENROLLMENT_PREF, enrolled); - } - } else { - enrolled = Services.prefs.getBoolPref(ENROLLMENT_PREF, false); - } - - if (enrolled) { - const preonboardingMessage = - lazy.OnboardingMessageProvider.getPreonboardingMessages().find( - m => m.id === "ON_TRAIN_ROLLOUT" - ); - - this._nimbusVariables = preonboardingMessage; - - this._log.trace( - `_configureFromOnTrainRollout: User enrolled in on-train rollout, will set preferences` - ); - } else { - this._log.trace( - `_configureFromOnTrainRollout: User not enrolled in on-train rollout, not setting preferences` - ); - } - }, - /** * Capture Nimbus configuration: record feature variables for future use and * set Gecko preferences based on values. */ async _configureFromNimbus() { this._nimbusVariables = lazy.NimbusFeatures.preonboarding.getAllVariables(); if (this._nimbusVariables.enabled === null) { - await this._configureFromOnTrainRollout(); + const preonboardingMessage = + lazy.OnboardingMessageProvider.getPreonboardingMessages().find( + m => m.id === "NEW_USER_TOU_ONBOARDING" + ); + // Use default message variables, overriding with values from any set + // fallback prefs. + this._nimbusVariables = { + ...preonboardingMessage, + ...Object.fromEntries( + Object.entries(this._nimbusVariables).filter( + ([_, value]) => value !== null + ) + ), + }; + this._log.trace( + `_configureFromNimbus: using default preonboarding message` + ); } if (this._nimbusVariables.enabled) { if ("currentPolicyVersion" in this._nimbusVariables) { this._log.trace( diff --git a/toolkit/components/telemetry/tests/unit/test_TelemetryReportingPolicy.js b/toolkit/components/telemetry/tests/unit/test_TelemetryReportingPolicy.js --- a/toolkit/components/telemetry/tests/unit/test_TelemetryReportingPolicy.js +++ b/toolkit/components/telemetry/tests/unit/test_TelemetryReportingPolicy.js @@ -6,11 +6,10 @@ "use strict"; ChromeUtils.defineESModuleGetters(this, { AppConstants: "resource://gre/modules/AppConstants.sys.mjs", - ClientEnvironment: "resource://normandy/lib/ClientEnvironment.sys.mjs", ExperimentAPI: "resource://nimbus/ExperimentAPI.sys.mjs", ExperimentFakes: "resource://testing-common/NimbusTestUtils.sys.mjs", ExperimentManager: "resource://nimbus/lib/ExperimentManager.sys.mjs", NimbusFeatures: "resource://nimbus/ExperimentAPI.sys.mjs", UpdateUtils: "resource://gre/modules/UpdateUtils.sys.mjs", @@ -31,34 +30,10 @@ const TEST_CHANNEL = "TestChannelABC"; const PREF_MINIMUM_CHANNEL_POLICY_VERSION = TelemetryUtils.Preferences.MinimumPolicyVersion + ".channel-" + TEST_CHANNEL; -const ON_TRAIN_ROLLOUT_SUPPORTED_PLATFORM = - AppConstants.platform == "linux" || - AppConstants.platform == "macosx" || - (AppConstants.platform === "win" && - Services.sysinfo.getProperty("hasWinPackageId", false)); - -const ON_TRAIN_ROLLOUT_POPULATION_PREF = - "browser.preonboarding.onTrainRolloutPopulation"; - -const ON_TRAIN_ROLLOUT_ENROLLMENT_PREF = - "browser.preonboarding.enrolledInOnTrainRollout"; - -const ON_TRAIN_TEST_RECIPE = { - slug: "new-onboarding-experience-on-train-rollout-phase-1", - bucketConfig: { - count: 100, - namespace: "firefox-desktop-preonboarding-on-train-rollout-1", - randomizationUnit: "normandy_id", - start: 0, - total: 10000, - }, - branches: [{ slug: "treatment", ratio: 100 }], -}; - function fakeShowPolicyTimeout(set, clear) { Policy.setShowInfobarTimeout = set; Policy.clearShowInfobarTimeout = clear; } @@ -167,10 +142,14 @@ const FIRST_RUN_TIMEOUT_MSEC = 60 * 1000; // 60s const OTHER_RUNS_TIMEOUT_MSEC = 10 * 1000; // 10s Services.prefs.clearUserPref(TelemetryUtils.Preferences.FirstRun); + // The new user TOS modal is now enabled by default, so the infobar will only + // show if preonboarding is explicitly turned off via nimbus variable or its + // fallback pref. + Services.prefs.setBoolPref("browser.preonboarding.enabled", false); let promiseTimeout = () => new Promise(resolve => { fakeShowPolicyTimeout( (_callback, timeout) => resolve(timeout), @@ -197,10 +176,12 @@ Assert.equal( startupTimeout, OTHER_RUNS_TIMEOUT_MSEC, "The infobar display timeout should be 10s on other runs." ); + + Services.prefs.clearUserPref("browser.preonboarding.enabled"); }); add_task(async function test_prefs() { TelemetryReportingPolicy.reset(); @@ -707,93 +688,30 @@ "After, the user has accepted the experiment/rollout version." ); } ); -const getOnTrainRolloutModalStub = async ({ - shouldEnroll, - isFirstRun, - isEnrolled, -}) => { - Services.prefs.setIntPref( - ON_TRAIN_ROLLOUT_POPULATION_PREF, - ON_TRAIN_TEST_RECIPE.bucketConfig.count - ); - Services.prefs.setBoolPref(ON_TRAIN_ROLLOUT_ENROLLMENT_PREF, isEnrolled); - Services.prefs.setBoolPref(TelemetryUtils.Preferences.FirstRun, isFirstRun); - - const testIDs = await ExperimentManager.generateTestIds(ON_TRAIN_TEST_RECIPE); - let experimentId = shouldEnroll ? testIDs.treatment : testIDs.notInExperiment; - sinon.stub(ClientEnvironment, "userId").get(() => experimentId); - let modalStub = sinon.stub(Policy, "showModal").returns(true); - - fakeResetAcceptedPolicy(); - TelemetryReportingPolicy.reset(); - let p = Policy.delayedSetup(); - Policy.fakeSessionRestoreNotification(); - fakeInteractWithModal(); - await p; - - const doCleanup = () => { - sinon.restore(); - fakeResetAcceptedPolicy(); - Services.prefs.clearUserPref(ON_TRAIN_ROLLOUT_POPULATION_PREF); - Services.prefs.clearUserPref(ON_TRAIN_ROLLOUT_ENROLLMENT_PREF); - }; - - return { modalStub, doCleanup }; -}; - add_task( skipIfNotBrowser(), - async function test_onTrainRollout_configuration_supportedOS_should_enroll() { - if (!ON_TRAIN_ROLLOUT_SUPPORTED_PLATFORM) { - info( - "Skipping supported OS test because current platform is not Linux, Mac, or Win MSIX" - ); - return; - } + async function test_default_modal_shows_when_not_enrolled_in_experiment() { + let modalStub = sinon.stub(Policy, "showModal").returns(true); - const { modalStub, doCleanup } = await getOnTrainRolloutModalStub({ - shouldEnroll: true, - isFirstRun: true, - isEnrolled: false, - }); + fakeResetAcceptedPolicy(); + TelemetryReportingPolicy.reset(); + let p = Policy.delayedSetup(); + Policy.fakeSessionRestoreNotification(); + fakeInteractWithModal(); + await p; Assert.equal( modalStub.callCount, 1, - "showModal is invoked once if enrolled in rollout" + "showModal is invoked once when not enrolled in an experiemnt" ); - doCleanup(); - } -); - -add_task( - skipIfNotBrowser(), - async function test_onTrainRollout_configuration_supportedOS_should_not_enroll() { - if (!ON_TRAIN_ROLLOUT_SUPPORTED_PLATFORM) { - info( - "Skipping supported OS test because current platform is not Linux, Mac, or Win MSIX" - ); - return; - } - - const { modalStub, doCleanup } = await getOnTrainRolloutModalStub({ - shouldEnroll: false, - isFirstRun: true, - isEnrolled: false, - }); - - Assert.equal( - modalStub.callCount, - 0, - "showModal is not invoked if not enrolled in rollout" - ); - - doCleanup(); + sinon.restore(); + fakeResetAcceptedPolicy(); } ); add_task( skipIfNotBrowser(), @@ -825,92 +743,14 @@ fakeInteractWithModal(); await p; Assert.ok( - unblockSpy.calledOnce, + unblockSpy.callCount >= blockSpy.callCount, "Jump list should be unblocked after user interacts with modal" ); doCleanup(); sinon.restore(); } ); - -add_task( - skipIfNotBrowser(), - async function test_onTrainRollout_configuration_unsupportedOS() { - if (ON_TRAIN_ROLLOUT_SUPPORTED_PLATFORM) { - info( - "Skipping unsupported OS test because current platform is supported" - ); - return; - } - - const { modalStub, doCleanup } = await getOnTrainRolloutModalStub({ - shouldEnroll: true, - isFirstRun: true, - isEnrolled: false, - }); - - Assert.equal( - modalStub.callCount, - 0, - "showModal is not invoked on unsupported OS even if on-train rollouts are enabled and user would otherwise be enrolled" - ); - - doCleanup(); - } -); - -add_task( - skipIfNotBrowser(), - async function test_onTrainRollout_subsequent_startup_after_enrolled() { - if (!ON_TRAIN_ROLLOUT_SUPPORTED_PLATFORM) { - info( - "Skipping supported OS test because current platform is not Linux, Mac, or Win MSIX" - ); - return; - } - - const { modalStub, doCleanup } = await getOnTrainRolloutModalStub({ - shouldEnroll: true, - isFirstRun: false, - isEnrolled: true, - }); - - Assert.equal( - modalStub.callCount, - 1, - "showModal is invoked on subsequent startup if user was enrolled on first startup but did not interact with modal" - ); - - doCleanup(); - } -); - -add_task( - skipIfNotBrowser(), - async function test_onTrainRollout_subsequent_startup_not_enrolled() { - if (!ON_TRAIN_ROLLOUT_SUPPORTED_PLATFORM) { - info( - "Skipping supported OS test because current platform is not Linux, Mac, or Win MSIX" - ); - return; - } - - const { modalStub, doCleanup } = await getOnTrainRolloutModalStub({ - shouldEnroll: true, - isFirstRun: false, - isEnrolled: false, - }); - - Assert.equal( - modalStub.callCount, - 0, - "showModal is not invoked on subsequent startup if user was not enrolled on first startup" - ); - - doCleanup(); - } -); diff --git a/toolkit/library/libxul.symbols b/toolkit/library/libxul.symbols --- a/toolkit/library/libxul.symbols +++ b/toolkit/library/libxul.symbols @@ -5,6 +5,7 @@ ChildProcessInit GeckoViewOpenWindow #endif #ifdef ANDROID *ffi* +FT* #endif diff --git a/toolkit/themes/shared/global-shared.css b/toolkit/themes/shared/global-shared.css --- a/toolkit/themes/shared/global-shared.css +++ b/toolkit/themes/shared/global-shared.css @@ -389,24 +389,26 @@ &:not([disabled]) { &:hover { color: var(--button-text-color-hover); background-color: var(--button-background-color-hover); } - &:hover:active { + &:hover:active, + &[open] { color: var(--button-text-color-active); background-color: var(--button-background-color-active); } &[default], &.primary { color: var(--button-text-color-primary); background-color: var(--color-accent-primary); - &:hover { color: var(--button-text-color-primary-hover); background-color: var(--color-accent-primary-hover); } - &:hover:active { + &:hover:active, + &[open] { + color: var(--button-text-color-primary-active); background-color: var(--color-accent-primary-active); } } }