summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--browser/app/profile/firefox.js6
-rw-r--r--browser/base/content/test/general/browser_save_link-perwindowpb.js6
-rw-r--r--browser/base/content/test/general/browser_save_link_when_window_navigates.js2
-rw-r--r--browser/base/content/test/general/browser_save_video.js2
-rw-r--r--browser/base/content/test/general/navigating_window_with_download.html2
-rw-r--r--browser/components/downloads/DownloadsCommon.sys.mjs2
-rw-r--r--browser/components/downloads/DownloadsViewUI.sys.mjs2
-rw-r--r--browser/components/downloads/test/browser/browser_download_overwrite.js2
-rw-r--r--browser/components/originattributes/test/browser/browser_firstPartyIsolation_saveAs.js1
-rw-r--r--browser/components/syncedtabs/sidebar.xhtml5
-rw-r--r--browser/components/urlbar/UrlbarPrefs.sys.mjs7
-rw-r--r--browser/components/urlbar/private/YelpSuggestions.sys.mjs18
-rw-r--r--browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_yelp.js359
-rw-r--r--browser/config/version.txt2
-rw-r--r--browser/config/version_display.txt2
-rw-r--r--browser/locales/en-US/chrome/browser/downloads/downloads.properties4
-rw-r--r--browser/themes/shared/syncedtabs/sidebar.css7
-rw-r--r--config/milestone.txt2
-rw-r--r--dom/canvas/CanvasRenderingContext2D.cpp29
-rw-r--r--dom/canvas/CanvasRenderingContext2D.h22
-rw-r--r--dom/locales/en-US/chrome/security/security.properties2
-rw-r--r--dom/security/nsContentSecurityUtils.cpp48
-rw-r--r--dom/security/test/general/browser.toml10
-rw-r--r--dom/security/test/general/browser_test_http_download.js275
-rw-r--r--dom/security/test/general/http_download_page.html23
-rw-r--r--dom/security/test/general/http_download_server.sjs20
-rw-r--r--dom/security/test/https-only/browser_save_as.js10
-rw-r--r--dom/security/test/mixedcontentblocker/browser_test_mixed_content_download.js2
-rw-r--r--dom/serviceworkers/test/browser_download.js2
-rw-r--r--security/manager/ssl/tests/mochitest/mixedcontent/mochitest.toml1
-rw-r--r--services/settings/dumps/blocklists/addons-bloomfilters.json15
-rw-r--r--services/settings/dumps/main/cookie-banner-rules-list.json255
-rw-r--r--services/settings/dumps/main/search-config-v2.json542
-rw-r--r--services/settings/dumps/main/search-telemetry-v2.json149
-rw-r--r--services/settings/dumps/security-state/intermediates.json236
-rw-r--r--sourcestamp.txt4
-rw-r--r--testing/web-platform/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html.ini (renamed from testing/web-platform/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html.ini)2
-rw-r--r--testing/web-platform/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.html.ini (renamed from testing/web-platform/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.https.html.ini)2
-rw-r--r--testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html (renamed from testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html)0
-rw-r--r--testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.html (renamed from testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.https.html)0
-rw-r--r--toolkit/components/antitracking/test/browser/browser_staticPartition_saveAs.js2
-rw-r--r--toolkit/components/antitracking/test/browser/file_saveAsPageInfo.html4
-rw-r--r--toolkit/components/downloads/test/unit/test_DownloadLegacy.js2
-rw-r--r--toolkit/components/extensions/test/browser/browser_ext_downloads_referrer.js4
-rw-r--r--toolkit/components/nimbus/FeatureManifest.yaml5
-rw-r--r--toolkit/components/pdfjs/test/browser_pdfjs_octet_stream.js2
-rw-r--r--toolkit/components/telemetry/Histograms.json10
-rw-r--r--uriloader/exthandler/tests/mochitest/browser_download_idn_blocklist.js5
48 files changed, 957 insertions, 1157 deletions
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
index 1ef5a05907..32cd57b0ed 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -634,9 +634,9 @@ pref("browser.urlbar.suggest.mdn", true);
// Feature gate pref for Yelp suggestions in the urlbar.
pref("browser.urlbar.yelp.featureGate", false);
-// The minimum prefix length of yelp query the user must type to trigger
-// the suggestion.
-pref("browser.urlbar.yelp.minKeywordLength", 5);
+// The minimum prefix length of a Yelp keyword the user must type to trigger the
+// suggestion. 0 means the min length should be taken from Nimbus.
+pref("browser.urlbar.yelp.minKeywordLength", 0);
// Whether Yelp suggestions should be shown as top picks.
pref("browser.urlbar.yelp.priority", false);
diff --git a/browser/base/content/test/general/browser_save_link-perwindowpb.js b/browser/base/content/test/general/browser_save_link-perwindowpb.js
index 234813ca2c..d5a0eef86c 100644
--- a/browser/base/content/test/general/browser_save_link-perwindowpb.js
+++ b/browser/base/content/test/general/browser_save_link-perwindowpb.js
@@ -14,7 +14,7 @@ function triggerSave(aWindow, aCallback) {
let testBrowser = aWindow.gBrowser.selectedBrowser;
// This page sets a cookie if and only if a cookie does not exist yet
let testURI =
- "https://example.com/browser/browser/base/content/test/general/bug792517-2.html";
+ "http://mochi.test:8888/browser/browser/base/content/test/general/bug792517-2.html";
BrowserTestUtils.startLoadingURIString(testBrowser, testURI);
BrowserTestUtils.browserLoaded(testBrowser, false, testURI).then(() => {
waitForFocus(function () {
@@ -132,7 +132,7 @@ function test() {
info("onExamineResponse with " + channel.URI.spec);
if (
channel.URI.spec !=
- "https://example.com/browser/browser/base/content/test/general/bug792517.sjs"
+ "http://mochi.test:8888/browser/browser/base/content/test/general/bug792517.sjs"
) {
info("returning");
return;
@@ -158,7 +158,7 @@ function test() {
info("onModifyRequest with " + channel.URI.spec);
if (
channel.URI.spec !=
- "https://example.com/browser/browser/base/content/test/general/bug792517.sjs"
+ "http://mochi.test:8888/browser/browser/base/content/test/general/bug792517.sjs"
) {
return;
}
diff --git a/browser/base/content/test/general/browser_save_link_when_window_navigates.js b/browser/base/content/test/general/browser_save_link_when_window_navigates.js
index 65daef5f1b..1c68b91ddf 100644
--- a/browser/base/content/test/general/browser_save_link_when_window_navigates.js
+++ b/browser/base/content/test/general/browser_save_link_when_window_navigates.js
@@ -36,7 +36,7 @@ function triggerSave(aWindow, aCallback) {
var fileName;
let testBrowser = aWindow.gBrowser.selectedBrowser;
let testURI =
- "https://example.com/browser/browser/base/content/test/general/navigating_window_with_download.html";
+ "http://mochi.test:8888/browser/browser/base/content/test/general/navigating_window_with_download.html";
// Only observe the UTC dialog if it's enabled by pref
if (Services.prefs.getBoolPref(ALWAYS_ASK_PREF)) {
diff --git a/browser/base/content/test/general/browser_save_video.js b/browser/base/content/test/general/browser_save_video.js
index e9701d7023..d8dc5c6e2e 100644
--- a/browser/base/content/test/general/browser_save_video.js
+++ b/browser/base/content/test/general/browser_save_video.js
@@ -14,7 +14,7 @@ add_task(async function () {
let loadPromise = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
BrowserTestUtils.startLoadingURIString(
gBrowser,
- "https://example.com/browser/browser/base/content/test/general/web_video.html"
+ "http://mochi.test:8888/browser/browser/base/content/test/general/web_video.html"
);
await loadPromise;
diff --git a/browser/base/content/test/general/navigating_window_with_download.html b/browser/base/content/test/general/navigating_window_with_download.html
index 8649168cf5..6b0918941f 100644
--- a/browser/base/content/test/general/navigating_window_with_download.html
+++ b/browser/base/content/test/general/navigating_window_with_download.html
@@ -2,6 +2,6 @@
<html>
<head><title>This window will navigate while you're downloading something</title></head>
<body>
- <iframe src="https://example.com/browser/browser/base/content/test/general/unknownContentType_file.pif"></iframe>
+ <iframe src="http://mochi.test:8888/browser/browser/base/content/test/general/unknownContentType_file.pif"></iframe>
</body>
</html>
diff --git a/browser/components/downloads/DownloadsCommon.sys.mjs b/browser/components/downloads/DownloadsCommon.sys.mjs
index 776d219ae7..d88b2c4cd0 100644
--- a/browser/components/downloads/DownloadsCommon.sys.mjs
+++ b/browser/components/downloads/DownloadsCommon.sys.mjs
@@ -696,7 +696,7 @@ export var DownloadsCommon = {
message = s.unblockTypePotentiallyUnwanted2;
break;
case lazy.Downloads.Error.BLOCK_VERDICT_INSECURE:
- message = s.unblockInsecure3;
+ message = s.unblockInsecure2;
break;
default:
// Assume Downloads.Error.BLOCK_VERDICT_MALWARE
diff --git a/browser/components/downloads/DownloadsViewUI.sys.mjs b/browser/components/downloads/DownloadsViewUI.sys.mjs
index ffcd3b61fa..9c6bd17d63 100644
--- a/browser/components/downloads/DownloadsViewUI.sys.mjs
+++ b/browser/components/downloads/DownloadsViewUI.sys.mjs
@@ -888,7 +888,7 @@ DownloadsViewUI.DownloadElementShell.prototype = {
case lazy.Downloads.Error.BLOCK_VERDICT_INSECURE:
return [
s.blockedPotentiallyInsecure,
- [s.unblockInsecure3, s.unblockTip2],
+ [s.unblockInsecure2, s.unblockTip2],
];
case lazy.Downloads.Error.BLOCK_VERDICT_POTENTIALLY_UNWANTED:
return [
diff --git a/browser/components/downloads/test/browser/browser_download_overwrite.js b/browser/components/downloads/test/browser/browser_download_overwrite.js
index b1de07b5ed..8246ec9f55 100644
--- a/browser/components/downloads/test/browser/browser_download_overwrite.js
+++ b/browser/components/downloads/test/browser/browser_download_overwrite.js
@@ -5,7 +5,7 @@
const TEST_ROOT = getRootDirectory(gTestPath).replace(
"chrome://mochitests/content",
- "https://example.com"
+ "http://example.com"
);
var MockFilePicker = SpecialPowers.MockFilePicker;
diff --git a/browser/components/originattributes/test/browser/browser_firstPartyIsolation_saveAs.js b/browser/components/originattributes/test/browser/browser_firstPartyIsolation_saveAs.js
index c54bb1aec1..0266765782 100644
--- a/browser/components/originattributes/test/browser/browser_firstPartyIsolation_saveAs.js
+++ b/browser/components/originattributes/test/browser/browser_firstPartyIsolation_saveAs.js
@@ -38,7 +38,6 @@ add_setup(async function () {
set: [
["privacy.firstparty.isolate", true],
["dom.security.https_first", false],
- ["dom.block_download_insecure", false],
],
});
diff --git a/browser/components/syncedtabs/sidebar.xhtml b/browser/components/syncedtabs/sidebar.xhtml
index 8091f61aee..7790620f94 100644
--- a/browser/components/syncedtabs/sidebar.xhtml
+++ b/browser/components/syncedtabs/sidebar.xhtml
@@ -15,7 +15,10 @@
<link
rel="stylesheet"
- media="all"
+ href="chrome://global/skin/design-system/tokens-brand.css"
+ />
+ <link
+ rel="stylesheet"
href="chrome://browser/skin/syncedtabs/sidebar.css"
/>
<link rel="localization" href="browser/syncedTabs.ftl" />
diff --git a/browser/components/urlbar/UrlbarPrefs.sys.mjs b/browser/components/urlbar/UrlbarPrefs.sys.mjs
index c521264fa5..022d0b1c7c 100644
--- a/browser/components/urlbar/UrlbarPrefs.sys.mjs
+++ b/browser/components/urlbar/UrlbarPrefs.sys.mjs
@@ -485,9 +485,9 @@ const PREF_URLBAR_DEFAULTS = new Map([
// Feature gate pref for Yelp suggestions in the urlbar.
["yelp.featureGate", false],
- // The minimum number of characters the user must type to trigger a Yelp
- // suggestion (excluding full keywords that are shorter than this).
- ["yelp.minKeywordLength", 5],
+ // The minimum prefix length of a Yelp keyword the user must type to trigger
+ // the suggestion. 0 means the min length should be taken from Nimbus.
+ ["yelp.minKeywordLength", 0],
// Whether Yelp suggestions should be shown as top picks. This is a fallback
// pref for the `yelpSuggestPriority` Nimbus variable.
@@ -526,6 +526,7 @@ const NIMBUS_DEFAULTS = {
weatherKeywordsMinimumLength: 0,
weatherKeywordsMinimumLengthCap: 0,
weatherSimpleUI: false,
+ yelpMinKeywordLength: 0,
};
// Maps preferences under browser.urlbar.suggest to behavior names, as defined
diff --git a/browser/components/urlbar/private/YelpSuggestions.sys.mjs b/browser/components/urlbar/private/YelpSuggestions.sys.mjs
index a1ac13177b..4cf454c71d 100644
--- a/browser/components/urlbar/private/YelpSuggestions.sys.mjs
+++ b/browser/components/urlbar/private/YelpSuggestions.sys.mjs
@@ -227,19 +227,11 @@ export class YelpSuggestions extends BaseFeature {
}
get #minKeywordLength() {
- // It's unusual to get both a Nimbus variable and its fallback pref at the
- // same time, but we have a good reason. To recap, if a variable doesn't
- // have a value, then the value of its fallback will be returned; otherwise
- // the variable value will be returned. That's usually what we want, but for
- // Yelp, we set the pref each time the user clicks "show less frequently",
- // and we want the variable to act only as an initial min length. In other
- // words, if the pref has a user value (because we set it), use it;
- // otherwise use the initial value defined by the variable.
- return Math.max(
- lazy.UrlbarPrefs.get("yelpMinKeywordLength") || 0,
- lazy.UrlbarPrefs.get("yelp.minKeywordLength") || 0,
- 0
- );
+ let minLength =
+ lazy.UrlbarPrefs.get("yelp.minKeywordLength") ||
+ lazy.UrlbarPrefs.get("yelpMinKeywordLength") ||
+ 0;
+ return Math.max(minLength, 0);
}
async #fetchCity() {
diff --git a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_yelp.js b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_yelp.js
index aa9c700f1c..3c61e9afea 100644
--- a/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_yelp.js
+++ b/browser/components/urlbar/tests/quicksuggest/unit/test_quicksuggest_yelp.js
@@ -26,6 +26,21 @@ const REMOTE_SETTINGS_RECORDS = [
},
];
+const AB_RESULT = {
+ url: "https://www.yelp.com/search?find_desc=ab&find_loc=Yokohama%2C+Kanagawa",
+ originalUrl: "https://www.yelp.com/search?find_desc=ab",
+ displayUrl: "yelp.com/search?find_desc=ab&find_loc=Yokohama,+Kanagawa",
+ title: "ab in Yokohama, Kanagawa",
+};
+
+const ALONGERKEYWORD_RESULT = {
+ url: "https://www.yelp.com/search?find_desc=alongerkeyword&find_loc=Yokohama%2C+Kanagawa",
+ originalUrl: "https://www.yelp.com/search?find_desc=alongerkeyword",
+ displayUrl:
+ "yelp.com/search?find_desc=alongerkeyword&find_loc=Yokohama,+Kanagawa",
+ title: "alongerkeyword in Yokohama, Kanagawa",
+};
+
add_setup(async function () {
Services.prefs.setBoolPref("browser.search.suggest.enabled", false);
@@ -139,12 +154,7 @@ add_task(async function basic() {
{
description: "Subject exact match with length < minKeywordLength",
query: "ab",
- expected: {
- url: "https://www.yelp.com/search?find_desc=ab&find_loc=Yokohama%2C+Kanagawa",
- originalUrl: "https://www.yelp.com/search?find_desc=ab",
- displayUrl: "yelp.com/search?find_desc=ab&find_loc=Yokohama,+Kanagawa",
- title: "ab in Yokohama, Kanagawa",
- },
+ expected: AB_RESULT,
},
{
description:
@@ -174,65 +184,35 @@ add_task(async function basic() {
{
description: "Query length == minKeywordLength, subject not exact match",
query: "along",
- expected: {
- url: "https://www.yelp.com/search?find_desc=alongerkeyword&find_loc=Yokohama%2C+Kanagawa",
- originalUrl: "https://www.yelp.com/search?find_desc=alongerkeyword",
- displayUrl:
- "yelp.com/search?find_desc=alongerkeyword&find_loc=Yokohama,+Kanagawa",
- title: "alongerkeyword in Yokohama, Kanagawa",
- },
+ expected: ALONGERKEYWORD_RESULT,
},
{
description:
"Query length == minKeywordLength, subject not exact match, showLessFrequentlyCount non-zero",
query: "along",
showLessFrequentlyCount: 1,
- expected: {
- url: "https://www.yelp.com/search?find_desc=alongerkeyword&find_loc=Yokohama%2C+Kanagawa",
- originalUrl: "https://www.yelp.com/search?find_desc=alongerkeyword",
- displayUrl:
- "yelp.com/search?find_desc=alongerkeyword&find_loc=Yokohama,+Kanagawa",
- title: "alongerkeyword in Yokohama, Kanagawa",
- },
+ expected: ALONGERKEYWORD_RESULT,
},
{
description:
"Query length == minKeywordLength + showLessFrequentlyCount, subject not exact match",
query: "alonge",
showLessFrequentlyCount: 1,
- expected: {
- url: "https://www.yelp.com/search?find_desc=alongerkeyword&find_loc=Yokohama%2C+Kanagawa",
- originalUrl: "https://www.yelp.com/search?find_desc=alongerkeyword",
- displayUrl:
- "yelp.com/search?find_desc=alongerkeyword&find_loc=Yokohama,+Kanagawa",
- title: "alongerkeyword in Yokohama, Kanagawa",
- },
+ expected: ALONGERKEYWORD_RESULT,
},
{
description:
"Query length < minKeywordLength + showLessFrequentlyCount, subject not exact match",
query: "alonge",
showLessFrequentlyCount: 2,
- expected: {
- url: "https://www.yelp.com/search?find_desc=alongerkeyword&find_loc=Yokohama%2C+Kanagawa",
- originalUrl: "https://www.yelp.com/search?find_desc=alongerkeyword",
- displayUrl:
- "yelp.com/search?find_desc=alongerkeyword&find_loc=Yokohama,+Kanagawa",
- title: "alongerkeyword in Yokohama, Kanagawa",
- },
+ expected: ALONGERKEYWORD_RESULT,
},
{
description:
"Query length == minKeywordLength + showLessFrequentlyCount, subject not exact match",
query: "alonger",
showLessFrequentlyCount: 2,
- expected: {
- url: "https://www.yelp.com/search?find_desc=alongerkeyword&find_loc=Yokohama%2C+Kanagawa",
- originalUrl: "https://www.yelp.com/search?find_desc=alongerkeyword",
- displayUrl:
- "yelp.com/search?find_desc=alongerkeyword&find_loc=Yokohama,+Kanagawa",
- title: "alongerkeyword in Yokohama, Kanagawa",
- },
+ expected: ALONGERKEYWORD_RESULT,
},
];
@@ -632,8 +612,9 @@ add_task(async function notInterested() {
// Tests the "show less frequently" behavior.
add_task(async function showLessFrequently() {
- UrlbarPrefs.set("yelp.showLessFrequentlyCount", 0);
- UrlbarPrefs.set("yelp.minKeywordLength", 0);
+ UrlbarPrefs.clear("yelp.showLessFrequentlyCount");
+ UrlbarPrefs.clear("yelp.minKeywordLength");
+
let cleanUpNimbus = await UrlbarTestUtils.initNimbusFeature({
yelpMinKeywordLength: 0,
yelpShowLessFrequentlyCap: 3,
@@ -790,6 +771,298 @@ add_task(async function rustProviders() {
await QuickSuggestTestUtils.forceSync();
});
+add_task(async function minKeywordLength_noPrefValue() {
+ await doMinKeywordLengthTest({
+ // expected min length: 5 (Nimbus value)
+ prefValue: null,
+ nimbusValue: 5,
+ tests: [
+ {
+ query: "al",
+ expected: null,
+ },
+ {
+ query: "alo",
+ expected: null,
+ },
+ {
+ query: "alon",
+ expected: null,
+ },
+ {
+ query: "along",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "alongerkeyword",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "best a",
+ expected: null,
+ },
+ {
+ query: "best al",
+ expected: {
+ url: "https://www.yelp.com/search?find_desc=best+alongerkeyword&find_loc=Yokohama%2C+Kanagawa",
+ originalUrl:
+ "https://www.yelp.com/search?find_desc=best+alongerkeyword",
+ displayUrl:
+ "yelp.com/search?find_desc=best+alongerkeyword&find_loc=Yokohama,+Kanagawa",
+ title: "best alongerkeyword in Yokohama, Kanagawa",
+ },
+ },
+ {
+ query: "ab",
+ expected: AB_RESULT,
+ },
+ ],
+ });
+});
+
+add_task(async function minKeywordLength_smallerPrefValue() {
+ await doMinKeywordLengthTest({
+ // expected min length: 4 (pref value)
+ prefValue: 4,
+ nimbusValue: 5,
+ tests: [
+ {
+ query: "al",
+ expected: null,
+ },
+ {
+ query: "alo",
+ expected: null,
+ },
+ {
+ query: "alon",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "along",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "alongerkeyword",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "best a",
+ expected: null,
+ },
+ {
+ query: "best al",
+ expected: {
+ url: "https://www.yelp.com/search?find_desc=best+alongerkeyword&find_loc=Yokohama%2C+Kanagawa",
+ originalUrl:
+ "https://www.yelp.com/search?find_desc=best+alongerkeyword",
+ displayUrl:
+ "yelp.com/search?find_desc=best+alongerkeyword&find_loc=Yokohama,+Kanagawa",
+ title: "best alongerkeyword in Yokohama, Kanagawa",
+ },
+ },
+ {
+ query: "ab",
+ expected: AB_RESULT,
+ },
+ ],
+ });
+});
+
+add_task(async function minKeywordLength_largerPrefValue() {
+ await doMinKeywordLengthTest({
+ // expected min length: 6 (pref value)
+ prefValue: 6,
+ nimbusValue: 5,
+ tests: [
+ {
+ query: "al",
+ expected: null,
+ },
+ {
+ query: "alo",
+ expected: null,
+ },
+ {
+ query: "alon",
+ expected: null,
+ },
+ {
+ query: "along",
+ expected: null,
+ },
+ {
+ query: "alonge",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "alongerkeyword",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "best a",
+ expected: null,
+ },
+ {
+ query: "best al",
+ expected: {
+ url: "https://www.yelp.com/search?find_desc=best+alongerkeyword&find_loc=Yokohama%2C+Kanagawa",
+ originalUrl:
+ "https://www.yelp.com/search?find_desc=best+alongerkeyword",
+ displayUrl:
+ "yelp.com/search?find_desc=best+alongerkeyword&find_loc=Yokohama,+Kanagawa",
+ title: "best alongerkeyword in Yokohama, Kanagawa",
+ },
+ },
+ {
+ query: "ab",
+ expected: AB_RESULT,
+ },
+ ],
+ });
+});
+
+add_task(async function minKeywordLength_onlyPrefValue() {
+ await doMinKeywordLengthTest({
+ // expected min length: 5 (pref value)
+ prefValue: 5,
+ nimbusValue: null,
+ tests: [
+ {
+ query: "al",
+ expected: null,
+ },
+ {
+ query: "alo",
+ expected: null,
+ },
+ {
+ query: "alon",
+ expected: null,
+ },
+ {
+ query: "along",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "alongerkeyword",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "best a",
+ expected: null,
+ },
+ {
+ query: "best al",
+ expected: {
+ url: "https://www.yelp.com/search?find_desc=best+alongerkeyword&find_loc=Yokohama%2C+Kanagawa",
+ originalUrl:
+ "https://www.yelp.com/search?find_desc=best+alongerkeyword",
+ displayUrl:
+ "yelp.com/search?find_desc=best+alongerkeyword&find_loc=Yokohama,+Kanagawa",
+ title: "best alongerkeyword in Yokohama, Kanagawa",
+ },
+ },
+ {
+ query: "ab",
+ expected: AB_RESULT,
+ },
+ ],
+ });
+});
+
+// When no min length is defined in Nimbus or the pref, we should fall back to
+// the hardcoded value of 2 in the Rust component.
+add_task(async function minKeywordLength_noNimbusOrPrefValue() {
+ await doMinKeywordLengthTest({
+ // expected min length: 2 (hardcoded)
+ prefValue: null,
+ nimbusValue: null,
+ tests: [
+ {
+ query: "al",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "alo",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "alon",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "along",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "alongerkeyword",
+ expected: ALONGERKEYWORD_RESULT,
+ },
+ {
+ query: "best a",
+ expected: null,
+ },
+ {
+ query: "best al",
+ expected: {
+ url: "https://www.yelp.com/search?find_desc=best+alongerkeyword&find_loc=Yokohama%2C+Kanagawa",
+ originalUrl:
+ "https://www.yelp.com/search?find_desc=best+alongerkeyword",
+ displayUrl:
+ "yelp.com/search?find_desc=best+alongerkeyword&find_loc=Yokohama,+Kanagawa",
+ title: "best alongerkeyword in Yokohama, Kanagawa",
+ },
+ },
+ {
+ query: "ab",
+ expected: AB_RESULT,
+ },
+ ],
+ });
+});
+
+async function doMinKeywordLengthTest({ prefValue, nimbusValue, tests }) {
+ // Set or clear the pref.
+ let originalPrefValue = Services.prefs.prefHasUserValue(
+ "browser.urlbar.yelp.minKeywordLength"
+ )
+ ? UrlbarPrefs.get("yelp.minKeywordLength")
+ : null;
+ if (typeof prefValue == "number") {
+ UrlbarPrefs.set("yelp.minKeywordLength", prefValue);
+ } else {
+ UrlbarPrefs.clear("yelp.minKeywordLength");
+ }
+
+ // Set up Nimbus.
+ let cleanUpNimbus;
+ if (typeof nimbusValue == "number") {
+ cleanUpNimbus = await UrlbarTestUtils.initNimbusFeature({
+ yelpMinKeywordLength: nimbusValue,
+ });
+ }
+
+ for (let { query, expected } of tests) {
+ info("Running min keyword length test with query: " + query);
+ await check_results({
+ context: createContext(query, {
+ providers: [UrlbarProviderQuickSuggest.name],
+ isPrivate: false,
+ }),
+ matches: expected ? [makeExpectedResult(expected)] : [],
+ });
+ }
+
+ await cleanUpNimbus?.();
+
+ if (originalPrefValue === null) {
+ UrlbarPrefs.clear("yelp.minKeywordLength");
+ } else {
+ UrlbarPrefs.set("yelp.minKeywordLength", originalPrefValue);
+ }
+}
+
function makeExpectedResult({
url,
title,
diff --git a/browser/config/version.txt b/browser/config/version.txt
index f88f4e2aa4..d588d3be0c 100644
--- a/browser/config/version.txt
+++ b/browser/config/version.txt
@@ -1 +1 @@
-125.0.1
+125.0.2
diff --git a/browser/config/version_display.txt b/browser/config/version_display.txt
index f88f4e2aa4..d588d3be0c 100644
--- a/browser/config/version_display.txt
+++ b/browser/config/version_display.txt
@@ -1 +1 @@
-125.0.1
+125.0.2
diff --git a/browser/locales/en-US/chrome/browser/downloads/downloads.properties b/browser/locales/en-US/chrome/browser/downloads/downloads.properties
index d93941e90a..308d9f8f0b 100644
--- a/browser/locales/en-US/chrome/browser/downloads/downloads.properties
+++ b/browser/locales/en-US/chrome/browser/downloads/downloads.properties
@@ -47,7 +47,7 @@ fileDeleted=File deleted
# LOCALIZATION NOTE (unblockHeaderUnblock, unblockHeaderOpen,
# unblockTypeMalware, unblockTypePotentiallyUnwanted2,
# unblockTypeUncommon2, unblockTip2, unblockButtonOpen,
-# unblockButtonUnblock, unblockButtonConfirmBlock, unblockInsecure3):
+# unblockButtonUnblock, unblockButtonConfirmBlock, unblockInsecure2):
# These strings are displayed in the dialog shown when the user asks a blocked
# download to be unblocked. The severity of the threat is expressed in
# descending order by the unblockType strings, it is higher for files detected
@@ -57,7 +57,7 @@ unblockHeaderOpen=Are you sure you want to open this file?
unblockTypeMalware=This file contains a virus or other malware that will harm your computer.
unblockTypePotentiallyUnwanted2=This file is disguised as a helpful download, but it can make unexpected changes to your programs and settings.
unblockTypeUncommon2=This file is not commonly downloaded and may not be safe to open. It may contain a virus or make unexpected changes to your programs and settings.
-unblockInsecure3=You are trying to download this file on a connection that’s not secure. If you continue, the file might be changed, used to steal your info or harm your device.
+unblockInsecure2=The download is offered over HTTP even though the current document was delivered over a secure HTTPS connection. If you proceed, the download may be corrupted or tampered with during the download process.
unblockTip2=You can search for an alternate download source or try again later.
unblockButtonOpen=Open
unblockButtonUnblock=Allow download
diff --git a/browser/themes/shared/syncedtabs/sidebar.css b/browser/themes/shared/syncedtabs/sidebar.css
index c07c509077..7cdd1aa5c8 100644
--- a/browser/themes/shared/syncedtabs/sidebar.css
+++ b/browser/themes/shared/syncedtabs/sidebar.css
@@ -237,17 +237,12 @@ body {
.deck .instructions {
text-align: center;
- color: GrayText;
+ color: var(--text-color-deemphasized);
padding: 0 11px;
max-width: 15em;
margin: 0 auto;
}
-:root[lwt-sidebar] .deck .instructions {
- color: inherit;
- opacity: .6;
-}
-
.deck .button {
display: block;
background-color: #0060df;
diff --git a/config/milestone.txt b/config/milestone.txt
index 40b4883e49..86d5c106bb 100644
--- a/config/milestone.txt
+++ b/config/milestone.txt
@@ -10,4 +10,4 @@
# hardcoded milestones in the tree from these two files.
#--------------------------------------------------------
-125.0.1
+125.0.2
diff --git a/dom/canvas/CanvasRenderingContext2D.cpp b/dom/canvas/CanvasRenderingContext2D.cpp
index 529466cc81..62f6e6443d 100644
--- a/dom/canvas/CanvasRenderingContext2D.cpp
+++ b/dom/canvas/CanvasRenderingContext2D.cpp
@@ -3463,7 +3463,9 @@ void CanvasRenderingContext2D::ArcTo(double aX1, double aY1, double aX2,
return aError.ThrowIndexSizeError("Negative radius");
}
- EnsureWritablePath();
+ if (!EnsureWritablePath()) {
+ return;
+ }
// Current point in user space!
Point p0 = mPathBuilder->CurrentPoint();
@@ -3535,7 +3537,9 @@ void CanvasRenderingContext2D::Arc(double aX, double aY, double aR,
return;
}
- EnsureWritablePath();
+ if (!EnsureWritablePath()) {
+ return;
+ }
EnsureActivePath();
@@ -3545,7 +3549,9 @@ void CanvasRenderingContext2D::Arc(double aX, double aY, double aR,
void CanvasRenderingContext2D::Rect(double aX, double aY, double aW,
double aH) {
- EnsureWritablePath();
+ if (!EnsureWritablePath()) {
+ return;
+ }
if (!std::isfinite(aX) || !std::isfinite(aY) || !std::isfinite(aW) ||
!std::isfinite(aH)) {
@@ -3741,7 +3747,9 @@ void CanvasRenderingContext2D::RoundRect(
const UnrestrictedDoubleOrDOMPointInitOrUnrestrictedDoubleOrDOMPointInitSequence&
aRadii,
ErrorResult& aError) {
- EnsureWritablePath();
+ if (!EnsureWritablePath()) {
+ return;
+ }
PathBuilder* builder = mPathBuilder;
Maybe<Matrix> transform = Nothing();
@@ -3759,7 +3767,9 @@ void CanvasRenderingContext2D::Ellipse(double aX, double aY, double aRadiusX,
return aError.ThrowIndexSizeError("Negative radius");
}
- EnsureWritablePath();
+ if (!EnsureWritablePath()) {
+ return;
+ }
ArcToBezier(this, Point(aX, aY), Size(aRadiusX, aRadiusY), aStartAngle,
aEndAngle, aAnticlockwise, aRotation);
@@ -3780,10 +3790,14 @@ void CanvasRenderingContext2D::FlushPathTransform() {
mPathTransformDirty = false;
}
-void CanvasRenderingContext2D::EnsureWritablePath() {
+bool CanvasRenderingContext2D::EnsureWritablePath() {
EnsureTarget();
+
// NOTE: IsTargetValid() may be false here (mTarget == sErrorTarget) but we
// go ahead and create a path anyway since callers depend on that.
+ if (NS_WARN_IF(!mTarget)) {
+ return false;
+ }
FillRule fillRule = CurrentState().fillRule;
@@ -3792,7 +3806,7 @@ void CanvasRenderingContext2D::EnsureWritablePath() {
}
if (mPathBuilder) {
- return;
+ return true;
}
if (!mPath) {
@@ -3800,6 +3814,7 @@ void CanvasRenderingContext2D::EnsureWritablePath() {
} else {
mPathBuilder = mPath->CopyToBuilder(fillRule);
}
+ return true;
}
void CanvasRenderingContext2D::EnsureUserSpacePath(
diff --git a/dom/canvas/CanvasRenderingContext2D.h b/dom/canvas/CanvasRenderingContext2D.h
index 75a57ab14f..bfcbfccec2 100644
--- a/dom/canvas/CanvasRenderingContext2D.h
+++ b/dom/canvas/CanvasRenderingContext2D.h
@@ -364,14 +364,18 @@ class CanvasRenderingContext2D : public nsICanvasRenderingContextInternal,
}
void ClosePath() {
- EnsureWritablePath();
+ if (!EnsureWritablePath()) {
+ return;
+ }
mPathBuilder->Close();
mPathPruned = false;
}
void MoveTo(double aX, double aY) {
- EnsureWritablePath();
+ if (!EnsureWritablePath()) {
+ return;
+ }
mozilla::gfx::Point pos(ToFloat(aX), ToFloat(aY));
if (!pos.IsFinite()) {
@@ -383,13 +387,17 @@ class CanvasRenderingContext2D : public nsICanvasRenderingContextInternal,
}
void LineTo(double aX, double aY) {
- EnsureWritablePath();
+ if (!EnsureWritablePath()) {
+ return;
+ }
LineTo(mozilla::gfx::Point(ToFloat(aX), ToFloat(aY)));
}
void QuadraticCurveTo(double aCpx, double aCpy, double aX, double aY) {
- EnsureWritablePath();
+ if (!EnsureWritablePath()) {
+ return;
+ }
mozilla::gfx::Point cp1(ToFloat(aCpx), ToFloat(aCpy));
mozilla::gfx::Point cp2(ToFloat(aX), ToFloat(aY));
@@ -408,7 +416,9 @@ class CanvasRenderingContext2D : public nsICanvasRenderingContextInternal,
void BezierCurveTo(double aCp1x, double aCp1y, double aCp2x, double aCp2y,
double aX, double aY) {
- EnsureWritablePath();
+ if (!EnsureWritablePath()) {
+ return;
+ }
BezierTo(mozilla::gfx::Point(ToFloat(aCp1x), ToFloat(aCp1y)),
mozilla::gfx::Point(ToFloat(aCp2x), ToFloat(aCp2y)),
@@ -680,7 +690,7 @@ class CanvasRenderingContext2D : public nsICanvasRenderingContextInternal,
/* This function ensures there is a writable pathbuilder available
*/
- void EnsureWritablePath();
+ bool EnsureWritablePath();
// Ensures a path in UserSpace is available.
void EnsureUserSpacePath(
diff --git a/dom/locales/en-US/chrome/security/security.properties b/dom/locales/en-US/chrome/security/security.properties
index fc58fe4f7d..c19fc2d2bf 100644
--- a/dom/locales/en-US/chrome/security/security.properties
+++ b/dom/locales/en-US/chrome/security/security.properties
@@ -44,7 +44,7 @@ LoadingMixedActiveContent2=Loading mixed (insecure) active content “%1$S” on
LoadingMixedDisplayContent2=Loading mixed (insecure) display content “%1$S” on a secure page
LoadingMixedDisplayObjectSubrequestDeprecation=Loading mixed (insecure) content “%1$S” within a plugin on a secure page is discouraged and will be blocked soon.
# LOCALIZATION NOTE: "%S" is the URI of the insecure mixed content download
-BlockedInsecureDownload = We blocked a download that’s not secure: “%S”.
+MixedContentBlockedDownload = Blocked downloading insecure content “%S”.
# LOCALIZATION NOTE: Do not translate "allow-scripts", "allow-same-origin", "sandbox" or "iframe"
BothAllowScriptsAndSameOriginPresent=An iframe which has both allow-scripts and allow-same-origin for its sandbox attribute can remove its sandboxing.
diff --git a/dom/security/nsContentSecurityUtils.cpp b/dom/security/nsContentSecurityUtils.cpp
index 01e9c6d5db..d2c1b257bc 100644
--- a/dom/security/nsContentSecurityUtils.cpp
+++ b/dom/security/nsContentSecurityUtils.cpp
@@ -1670,25 +1670,37 @@ long nsContentSecurityUtils::ClassifyDownload(
nsCOMPtr<nsIURI> contentLocation;
aChannel->GetURI(getter_AddRefs(contentLocation));
- if (StaticPrefs::dom_block_download_insecure()) {
- // If we are not dealing with a potentially trustworthy origin, or a URI
- // that is safe to be loaded like e.g. data:, then we block the load.
- bool isInsecureDownload =
- !nsMixedContentBlocker::IsPotentiallyTrustworthyOrigin(
- contentLocation) &&
- !nsMixedContentBlocker::URISafeToBeLoadedInSecureContext(
- contentLocation);
-
- Telemetry::Accumulate(mozilla::Telemetry::INSECURE_DOWNLOADS,
- isInsecureDownload);
-
- if (isInsecureDownload) {
- nsCOMPtr<nsIHttpChannel> httpChannel = do_QueryInterface(aChannel);
- if (httpChannel) {
- LogMessageToConsole(httpChannel, "BlockedInsecureDownload");
- }
- return nsITransfer::DOWNLOAD_POTENTIALLY_UNSAFE;
+ nsCOMPtr<nsIPrincipal> loadingPrincipal = loadInfo->GetLoadingPrincipal();
+ if (!loadingPrincipal) {
+ loadingPrincipal = loadInfo->TriggeringPrincipal();
+ }
+ // Creating a fake Loadinfo that is just used for the MCB check.
+ nsCOMPtr<nsILoadInfo> secCheckLoadInfo = new mozilla::net::LoadInfo(
+ loadingPrincipal, loadInfo->TriggeringPrincipal(), nullptr,
+ nsILoadInfo::SEC_ONLY_FOR_EXPLICIT_CONTENTSEC_CHECK,
+ nsIContentPolicy::TYPE_FETCH);
+ // Disable HTTPS-Only checks for that loadinfo. This is required because
+ // otherwise nsMixedContentBlocker::ShouldLoad would assume that the request
+ // is safe, because HTTPS-Only is handling it.
+ secCheckLoadInfo->SetHttpsOnlyStatus(nsILoadInfo::HTTPS_ONLY_EXEMPT);
+
+ int16_t decission = nsIContentPolicy::ACCEPT;
+ nsMixedContentBlocker::ShouldLoad(false, // aHadInsecureImageRedirect
+ contentLocation, // aContentLocation,
+ secCheckLoadInfo, // aLoadinfo
+ false, // aReportError
+ &decission // aDecision
+ );
+ Telemetry::Accumulate(mozilla::Telemetry::MIXED_CONTENT_DOWNLOADS,
+ decission != nsIContentPolicy::ACCEPT);
+
+ if (StaticPrefs::dom_block_download_insecure() &&
+ decission != nsIContentPolicy::ACCEPT) {
+ nsCOMPtr<nsIHttpChannel> httpChannel = do_QueryInterface(aChannel);
+ if (httpChannel) {
+ LogMessageToConsole(httpChannel, "MixedContentBlockedDownload");
}
+ return nsITransfer::DOWNLOAD_POTENTIALLY_UNSAFE;
}
if (loadInfo->TriggeringPrincipal()->IsSystemPrincipal()) {
diff --git a/dom/security/test/general/browser.toml b/dom/security/test/general/browser.toml
index c6d6b4bf79..0f4ec5b224 100644
--- a/dom/security/test/general/browser.toml
+++ b/dom/security/test/general/browser.toml
@@ -48,16 +48,6 @@ support-files = [
"file_gpc_server.sjs",
]
-["browser_test_http_download.js"]
-skip-if = [
- "win11_2009", # Bug 1784764
- "os == 'linux' && !debug",
-]
-support-files = [
- "http_download_page.html",
- "http_download_server.sjs"
-]
-
["browser_test_referrer_loadInOtherProcess.js"]
["browser_test_report_blocking.js"]
diff --git a/dom/security/test/general/browser_test_http_download.js b/dom/security/test/general/browser_test_http_download.js
deleted file mode 100644
index 35e3fdfc4b..0000000000
--- a/dom/security/test/general/browser_test_http_download.js
+++ /dev/null
@@ -1,275 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * https://creativecommons.org/publicdomain/zero/1.0/ */
-
-ChromeUtils.defineESModuleGetters(this, {
- Downloads: "resource://gre/modules/Downloads.sys.mjs",
- DownloadsCommon: "resource:///modules/DownloadsCommon.sys.mjs",
-});
-
-const HandlerService = Cc[
- "@mozilla.org/uriloader/handler-service;1"
-].getService(Ci.nsIHandlerService);
-
-const MIMEService = Cc["@mozilla.org/mime;1"].getService(Ci.nsIMIMEService);
-
-// Using insecure HTTP URL for a test cases around HTTP downloads
-let INSECURE_BASE_URL =
- getRootDirectory(gTestPath).replace(
- "chrome://mochitests/content/",
- // eslint-disable-next-line @microsoft/sdl/no-insecure-url
- "http://example.com/"
- ) + "http_download_page.html";
-
-function promiseFocus() {
- return new Promise(resolve => {
- waitForFocus(resolve);
- });
-}
-
-async function task_openPanel() {
- await promiseFocus();
-
- let promise = BrowserTestUtils.waitForPopupEvent(
- DownloadsPanel.panel,
- "shown"
- );
- DownloadsPanel.showPanel();
- await promise;
-}
-
-const downloadMonitoringView = {
- _listeners: [],
- onDownloadAdded(download) {
- for (let listener of this._listeners) {
- listener(download);
- }
- this._listeners = [];
- },
- waitForDownload(listener) {
- this._listeners.push(listener);
- },
-};
-
-/**
- * Waits until a download is triggered.
- * Unless the always_ask_before_handling_new_types pref is true, the download
- * will simply be saved, so resolve when the view is notified of the new
- * download. Otherwise, it waits until a prompt is shown, selects the choosen
- * <action>, then accepts the dialog
- * @param [action] Which action to select, either:
- * "handleInternally", "save" or "open".
- * @returns {Promise} Resolved once done.
- */
-
-function shouldTriggerDownload(action = "save") {
- if (
- Services.prefs.getBoolPref(
- "browser.download.always_ask_before_handling_new_types"
- )
- ) {
- return new Promise((resolve, reject) => {
- Services.wm.addListener({
- onOpenWindow(xulWin) {
- Services.wm.removeListener(this);
- let win = xulWin.docShell.domWindow;
- waitForFocus(() => {
- if (
- win.location ==
- "chrome://mozapps/content/downloads/unknownContentType.xhtml"
- ) {
- let dialog = win.document.getElementById("unknownContentType");
- let button = dialog.getButton("accept");
- let actionRadio = win.document.getElementById(action);
- actionRadio.click();
- button.disabled = false;
- dialog.acceptDialog();
- resolve();
- } else {
- reject();
- }
- }, win);
- },
- });
- });
- }
- return new Promise(res => {
- downloadMonitoringView.waitForDownload(res);
- });
-}
-
-const CONSOLE_ERROR_MESSAGE = "We blocked a download that’s not secure";
-
-function shouldConsoleError() {
- // Waits until CONSOLE_ERROR_MESSAGE was logged
- return new Promise((resolve, reject) => {
- function listener(msgObj) {
- let text = msgObj.message;
- if (text.includes(CONSOLE_ERROR_MESSAGE)) {
- Services.console.unregisterListener(listener);
- resolve();
- }
- }
- Services.console.registerListener(listener);
- });
-}
-
-async function resetDownloads() {
- // Removes all downloads from the download List
- const types = new Set();
- let publicList = await Downloads.getList(Downloads.PUBLIC);
- let downloads = await publicList.getAll();
- for (let download of downloads) {
- if (download.contentType) {
- types.add(download.contentType);
- }
- publicList.remove(download);
- await download.finalize(true);
- }
-
- if (types.size) {
- // reset handlers for the contentTypes of any files previously downloaded
- for (let type of types) {
- const mimeInfo = MIMEService.getFromTypeAndExtension(type, "");
- info("resetting handler for type: " + type);
- HandlerService.remove(mimeInfo);
- }
- }
-}
-
-function shouldNotifyDownloadUI() {
- return new Promise(res => {
- downloadMonitoringView.waitForDownload(async aDownload => {
- let { error } = aDownload;
- if (
- error.becauseBlockedByReputationCheck &&
- error.reputationCheckVerdict == Downloads.Error.BLOCK_VERDICT_INSECURE
- ) {
- // It's an insecure Download, now Check that it has been cleaned up properly
- if ((await IOUtils.stat(aDownload.target.path)).size != 0) {
- throw new Error(`Download target is not empty!`);
- }
- if ((await IOUtils.stat(aDownload.target.path)).size != 0) {
- throw new Error(`Download partFile was not cleaned up properly`);
- }
- // Assert that the Referrer is presnt
- if (!aDownload.source.referrerInfo) {
- throw new Error("The Blocked download is missing the ReferrerInfo");
- }
-
- res(aDownload);
- } else {
- ok(false, "No error for download that was expected to error!");
- }
- });
- });
-}
-
-async function runTest(url, link, checkFunction, description) {
- await SpecialPowers.pushPrefEnv({
- set: [["dom.block_download_insecure", true]],
- });
- await resetDownloads();
-
- let tab = BrowserTestUtils.addTab(gBrowser, url);
- gBrowser.selectedTab = tab;
-
- let browser = gBrowser.getBrowserForTab(tab);
- await BrowserTestUtils.browserLoaded(browser);
-
- info("Checking: " + description);
-
- let checkPromise = checkFunction();
- // Click the Link to trigger the download
- SpecialPowers.spawn(gBrowser.selectedBrowser, [link], contentLink => {
- content.document.getElementById(contentLink).click();
- });
-
- await checkPromise;
-
- ok(true, description);
- BrowserTestUtils.removeTab(tab);
-
- await SpecialPowers.popPrefEnv();
-}
-
-add_setup(async () => {
- let list = await Downloads.getList(Downloads.ALL);
- list.addView(downloadMonitoringView);
- registerCleanupFunction(() => list.removeView(downloadMonitoringView));
-});
-
-// Test Blocking
-add_task(async function test_blocking() {
- for (let prefVal of [true, false]) {
- await SpecialPowers.pushPrefEnv({
- set: [["browser.download.always_ask_before_handling_new_types", prefVal]],
- });
- await runTest(
- INSECURE_BASE_URL,
- "http-link",
- () =>
- Promise.all([
- shouldTriggerDownload(),
- shouldNotifyDownloadUI(),
- shouldConsoleError(),
- ]),
- "Insecure (HTTP) toplevel -> Insecure (HTTP) download should Error"
- );
- await SpecialPowers.popPrefEnv();
- }
-});
-
-// Test Manual Unblocking
-add_task(async function test_manual_unblocking() {
- for (let prefVal of [true, false]) {
- await SpecialPowers.pushPrefEnv({
- set: [["browser.download.always_ask_before_handling_new_types", prefVal]],
- });
- await runTest(
- INSECURE_BASE_URL,
- "http-link",
- async () => {
- let [, download] = await Promise.all([
- shouldTriggerDownload(),
- shouldNotifyDownloadUI(),
- ]);
- await download.unblock();
- Assert.equal(
- download.error,
- null,
- "There should be no error after unblocking"
- );
- },
- "A blocked download should succeed to download after a manual unblock"
- );
- await SpecialPowers.popPrefEnv();
- }
-});
-
-// Test Unblock Download Visible
-add_task(async function test_unblock_download_visible() {
- for (let prefVal of [true, false]) {
- await SpecialPowers.pushPrefEnv({
- set: [["browser.download.always_ask_before_handling_new_types", prefVal]],
- });
- await promiseFocus();
- await runTest(
- INSECURE_BASE_URL,
- "http-link",
- async () => {
- let panelHasOpened = BrowserTestUtils.waitForPopupEvent(
- DownloadsPanel.panel,
- "shown"
- );
- info("awaiting that the download is triggered and added to the list");
- await Promise.all([shouldTriggerDownload(), shouldNotifyDownloadUI()]);
- info("awaiting that the Download list shows itself");
- await panelHasOpened;
- DownloadsPanel.hidePanel();
- ok(true, "The Download Panel should have opened on blocked download");
- },
- "A blocked download should open the download panel"
- );
- await SpecialPowers.popPrefEnv();
- }
-});
diff --git a/dom/security/test/general/http_download_page.html b/dom/security/test/general/http_download_page.html
deleted file mode 100644
index c5461eaed3..0000000000
--- a/dom/security/test/general/http_download_page.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML>
-<html>
- <head>
- <title>Test for the download attribute</title>
- </head>
- <body>
- hi
-
- <script>
- const host = window.location.host;
- const path = location.pathname.replace("http_download_page.html","http_download_server.sjs");
-
- const insecureLink = document.createElement("a");
- // eslint-disable-next-line @microsoft/sdl/no-insecure-url
- insecureLink.href=`http://${host}/${path}`;
- insecureLink.download="true";
- insecureLink.id="http-link";
- insecureLink.textContent="Not secure Link";
-
- document.body.append(insecureLink);
- </script>
- </body>
-</html>
diff --git a/dom/security/test/general/http_download_server.sjs b/dom/security/test/general/http_download_server.sjs
deleted file mode 100644
index e659df2f40..0000000000
--- a/dom/security/test/general/http_download_server.sjs
+++ /dev/null
@@ -1,20 +0,0 @@
-// force the Browser to Show a Download Prompt
-
-function handleRequest(request, response) {
- let type = "image/png";
- let filename = "hello.png";
- request.queryString.split("&").forEach(val => {
- var [key, value] = val.split("=");
- if (key == "type") {
- type = value;
- }
- if (key == "name") {
- filename = value;
- }
- });
-
- response.setHeader("Cache-Control", "no-cache", false);
- response.setHeader("Content-Disposition", `attachment; filename=${filename}`);
- response.setHeader("Content-Type", type);
- response.write("🙈🙊🐵🙊");
-}
diff --git a/dom/security/test/https-only/browser_save_as.js b/dom/security/test/https-only/browser_save_as.js
index fbfdf276a8..28f3df539d 100644
--- a/dom/security/test/https-only/browser_save_as.js
+++ b/dom/security/test/https-only/browser_save_as.js
@@ -155,11 +155,7 @@ async function setHttpsFirstAndOnlyPrefs(httpsFirst, httpsOnly) {
add_task(async function testBaseline() {
// Run with HTTPS-First and HTTPS-Only disabled
await setHttpsFirstAndOnlyPrefs(false, false);
- await runTest(
- "#insecure-link",
- HTTP_LINK,
- "We blocked a download that’s not secure: “http://example.org/”."
- );
+ await runTest("#insecure-link", HTTP_LINK, undefined);
await runTest("#secure-link", HTTPS_LINK, undefined);
});
@@ -173,7 +169,7 @@ add_task(async function testHttpsFirst() {
await runTest(
"#insecure-link",
HTTP_LINK,
- "We blocked a download that’s not secure: “http://example.org/”."
+ "Blocked downloading insecure content “http://example.org/”."
);
await runTest("#secure-link", HTTPS_LINK, undefined);
});
@@ -185,7 +181,7 @@ add_task(async function testHttpsOnly() {
await runTest(
"#insecure-link",
HTTP_LINK,
- "We blocked a download that’s not secure: “http://example.org/”."
+ "Blocked downloading insecure content “http://example.org/”."
);
await runTest("#secure-link", HTTPS_LINK, undefined);
});
diff --git a/dom/security/test/mixedcontentblocker/browser_test_mixed_content_download.js b/dom/security/test/mixedcontentblocker/browser_test_mixed_content_download.js
index b103d83cd7..ee350008aa 100644
--- a/dom/security/test/mixedcontentblocker/browser_test_mixed_content_download.js
+++ b/dom/security/test/mixedcontentblocker/browser_test_mixed_content_download.js
@@ -101,7 +101,7 @@ function shouldTriggerDownload(action = "save") {
});
}
-const CONSOLE_ERROR_MESSAGE = "We blocked a download that’s not secure";
+const CONSOLE_ERROR_MESSAGE = "Blocked downloading insecure content";
function shouldConsoleError() {
// Waits until CONSOLE_ERROR_MESSAGE was logged
diff --git a/dom/serviceworkers/test/browser_download.js b/dom/serviceworkers/test/browser_download.js
index 70622a2349..0c69a48d17 100644
--- a/dom/serviceworkers/test/browser_download.js
+++ b/dom/serviceworkers/test/browser_download.js
@@ -3,7 +3,7 @@
var gTestRoot = getRootDirectory(gTestPath).replace(
"chrome://mochitests/content/",
- "https://example.com/"
+ "http://mochi.test:8888/"
);
function getFile(aFilename) {
diff --git a/security/manager/ssl/tests/mochitest/mixedcontent/mochitest.toml b/security/manager/ssl/tests/mochitest/mixedcontent/mochitest.toml
index 4935021410..1a37ba6f38 100644
--- a/security/manager/ssl/tests/mochitest/mixedcontent/mochitest.toml
+++ b/security/manager/ssl/tests/mochitest/mixedcontent/mochitest.toml
@@ -7,7 +7,6 @@ skip-if = [
prefs = [
"security.mixed_content.upgrade_display_content=false",
"dom.security.https_first=false",
- "dom.block_download_insecure=false",
]
support-files = [
"alloworigin.sjs",
diff --git a/services/settings/dumps/blocklists/addons-bloomfilters.json b/services/settings/dumps/blocklists/addons-bloomfilters.json
index 3e8d6e5524..21c0722a96 100644
--- a/services/settings/dumps/blocklists/addons-bloomfilters.json
+++ b/services/settings/dumps/blocklists/addons-bloomfilters.json
@@ -3,6 +3,19 @@
{
"stash": {
"blocked": [
+ "{329d8f7e-867f-46bb-9cad-9f1e0818a381}:1.5.10.1"
+ ],
+ "unblocked": []
+ },
+ "schema": 1713199745514,
+ "key_format": "{guid}:{version}",
+ "stash_time": 1713357304334,
+ "id": "bfd18f83-1c06-4a82-83d6-ead84cb7684f",
+ "last_modified": 1713357360700
+ },
+ {
+ "stash": {
+ "blocked": [
"{1f7d545d-970e-49e8-acd8-834d4a9aff09}:1.1"
],
"unblocked": []
@@ -524,5 +537,5 @@
"last_modified": 1707395854769
}
],
- "timestamp": 1712860562321
+ "timestamp": 1713357360700
}
diff --git a/services/settings/dumps/main/cookie-banner-rules-list.json b/services/settings/dumps/main/cookie-banner-rules-list.json
index 5d1c71818f..1c513579d9 100644
--- a/services/settings/dumps/main/cookie-banner-rules-list.json
+++ b/services/settings/dumps/main/cookie-banner-rules-list.json
@@ -2,6 +2,148 @@
"data": [
{
"click": {
+ "optIn": "#accept-btn",
+ "optOut": "#decline-btn",
+ "presence": "#privacy-manager-popin"
+ },
+ "schema": 1713199742998,
+ "domains": [
+ "canalplus.com"
+ ],
+ "id": "7b2e3401-697f-440a-b418-8477fcf2cfeb",
+ "last_modified": 1713281881442
+ },
+ {
+ "click": {
+ "optIn": "button#didomi-notice-agree-button",
+ "optOut": "button#didomi-notice-disagree-button",
+ "presence": "div#didomi-host"
+ },
+ "schema": 1713199742998,
+ "cookies": {},
+ "domains": [
+ "doctolib.fr",
+ "pravda.sk",
+ "topky.sk",
+ "zoznam.sk",
+ "tvnoviny.sk",
+ "aukro.cz",
+ "krone.at",
+ "cas.sk",
+ "heureka.sk",
+ "free.fr",
+ "markiza.sk",
+ "willhaben.at",
+ "francetvinfo.fr",
+ "france.tv",
+ "france24.com",
+ "opodo.at",
+ "opodo.ch",
+ "opodo.co.uk",
+ "opodo.de",
+ "opodo.dk",
+ "opodo.fi",
+ "opodo.fr",
+ "opodo.it",
+ "opodo.nl",
+ "opodo.no",
+ "opodo.pl",
+ "opodo.pt",
+ "radiofrance.fr",
+ "rfi.fr",
+ "rtl.fr",
+ "blablacar.fr",
+ "6play.fr",
+ "marianne.net"
+ ],
+ "id": "690aa076-4a8b-48ec-b52c-1443d44ff008",
+ "last_modified": 1713281881438
+ },
+ {
+ "click": {
+ "optIn": "button#onetrust-accept-btn-handler",
+ "optOut": "button.onetrust-close-btn-handler",
+ "presence": "div#onetrust-consent-sdk"
+ },
+ "schema": 1713199742998,
+ "cookies": {},
+ "domains": [
+ "darty.com",
+ "e.leclerc",
+ "fnac.be",
+ "fnac.ch",
+ "fnac.com",
+ "fnac.pt",
+ "leclercdrive.fr",
+ "mondialrelay.fr",
+ "pasteur.fr"
+ ],
+ "id": "2d821158-5945-4134-a078-56c6da4f678d",
+ "last_modified": 1713281881435
+ },
+ {
+ "click": {
+ "optIn": "#popin_tc_privacy_button_3",
+ "optOut": "#popin_tc_privacy_button_2",
+ "presence": "#tc-privacy-wrapper"
+ },
+ "schema": 1713199742998,
+ "domains": [
+ "bouyguestelecom.fr",
+ "enedis.fr",
+ "fortuneo.fr",
+ "lcl.fr",
+ "tf1.fr",
+ "tf1info.fr"
+ ],
+ "id": "98D89E26-F4B6-4C2D-BABF-4295B922E433",
+ "last_modified": 1713281881431
+ },
+ {
+ "click": {
+ "optIn": ".btn-ok",
+ "optOut": ".btn-reject",
+ "presence": "#cookie-policy-info"
+ },
+ "schema": 1713199742998,
+ "cookies": {
+ "optOut": [
+ {
+ "name": "isReadCookiePolicyDNT",
+ "value": "No"
+ },
+ {
+ "name": "isReadCookiePolicyDNTAa",
+ "value": "false"
+ }
+ ]
+ },
+ "domains": [
+ "asus.com"
+ ],
+ "id": "8c949b75-4c7b-4559-8ade-780064af370a",
+ "last_modified": 1713281881428
+ },
+ {
+ "click": {
+ "optOut": ".sp_choice_type_13",
+ "presence": ".message-container > #notice",
+ "runContext": "child"
+ },
+ "schema": 1713199742998,
+ "cookies": {},
+ "domains": [
+ "aktuality.sk",
+ "sky.it",
+ "azet.sk",
+ "bloomberg.com",
+ "formula1.com"
+ ],
+ "id": "ae8f7761-35ff-45b2-92df-7868ca288ad2",
+ "last_modified": 1713281881424
+ },
+ {
+ "click": {
"optIn": "#c-bns #c-p-bn",
"optOut": "#c-bns button.grey",
"presence": "#cm"
@@ -420,70 +562,6 @@
},
{
"click": {
- "optIn": "button#didomi-notice-agree-button",
- "optOut": "button#didomi-notice-disagree-button",
- "presence": "div#didomi-host"
- },
- "schema": 1711039008141,
- "cookies": {},
- "domains": [
- "doctolib.fr",
- "pravda.sk",
- "topky.sk",
- "zoznam.sk",
- "tvnoviny.sk",
- "aukro.cz",
- "krone.at",
- "cas.sk",
- "heureka.sk",
- "free.fr",
- "markiza.sk",
- "willhaben.at",
- "francetvinfo.fr",
- "france.tv",
- "france24.com",
- "opodo.at",
- "opodo.ch",
- "opodo.co.uk",
- "opodo.de",
- "opodo.dk",
- "opodo.fi",
- "opodo.fr",
- "opodo.it",
- "opodo.nl",
- "opodo.no",
- "opodo.pl",
- "opodo.pt",
- "radiofrance.fr",
- "rfi.fr",
- "blablacar.fr",
- "6play.fr"
- ],
- "id": "690aa076-4a8b-48ec-b52c-1443d44ff008",
- "last_modified": 1711550955075
- },
- {
- "click": {
- "optIn": "button#onetrust-accept-btn-handler",
- "optOut": "button.onetrust-close-btn-handler",
- "presence": "div#onetrust-consent-sdk"
- },
- "schema": 1711039008141,
- "cookies": {},
- "domains": [
- "e.leclerc",
- "fnac.be",
- "fnac.ch",
- "fnac.com",
- "fnac.pt",
- "leclercdrive.fr",
- "mondialrelay.fr"
- ],
- "id": "2d821158-5945-4134-a078-56c6da4f678d",
- "last_modified": 1711550955071
- },
- {
- "click": {
"optIn": "#popin_tc_privacy_button",
"optOut": "#popin_tc_privacy_button_3",
"presence": "#tc-privacy-wrapper"
@@ -500,23 +578,6 @@
},
{
"click": {
- "optIn": "#popin_tc_privacy_button_3",
- "optOut": "#popin_tc_privacy_button_2",
- "presence": "#tc-privacy-wrapper"
- },
- "schema": 1711039008141,
- "domains": [
- "bouyguestelecom.fr",
- "enedis.fr",
- "fortuneo.fr",
- "lcl.fr",
- "tf1.fr"
- ],
- "id": "98D89E26-F4B6-4C2D-BABF-4295B922E433",
- "last_modified": 1711550955063
- },
- {
- "click": {
"optIn": ".moove-gdpr-infobar-allow-all",
"optOut": ".moove-gdpr-infobar-reject-btn",
"presence": "#moove_gdpr_cookie_info_bar"
@@ -786,23 +847,6 @@
},
{
"click": {
- "optOut": ".sp_choice_type_13",
- "presence": ".message-container > #notice",
- "runContext": "child"
- },
- "schema": 1710174339269,
- "cookies": {},
- "domains": [
- "aktuality.sk",
- "sky.it",
- "azet.sk",
- "bloomberg.com"
- ],
- "id": "ae8f7761-35ff-45b2-92df-7868ca288ad2",
- "last_modified": 1710331175359
- },
- {
- "click": {
"optIn": "button#didomi-notice-agree-button",
"presence": "div#didomi-host"
},
@@ -1251,19 +1295,6 @@
},
{
"click": {
- "optIn": ".btn-ok",
- "optOut": ".btn-reject",
- "presence": "#cookie-policy-info"
- },
- "schema": 1708699541450,
- "domains": [
- "asus.com"
- ],
- "id": "8c949b75-4c7b-4559-8ade-780064af370a",
- "last_modified": 1708772697161
- },
- {
- "click": {
"optIn": "[data-cookieman-accept-all]",
"optOut": "[data-cookieman-accept-none]",
"presence": "#cookieman-modal"
@@ -9366,5 +9397,5 @@
"last_modified": 1670498155641
}
],
- "timestamp": 1711550955136
+ "timestamp": 1713281881442
}
diff --git a/services/settings/dumps/main/search-config-v2.json b/services/settings/dumps/main/search-config-v2.json
index e360ad9ee3..5a8be8dfeb 100644
--- a/services/settings/dumps/main/search-config-v2.json
+++ b/services/settings/dumps/main/search-config-v2.json
@@ -2,254 +2,68 @@
"data": [
{
"base": {
- "name": "Qwant",
+ "name": "DuckDuckGo",
"urls": {
"search": {
- "base": "https://www.qwant.com/",
+ "base": "https://duckduckgo.com/",
"params": [
{
- "name": "client",
+ "name": "t",
"value": "{partnerCode}"
}
],
"searchTermParamName": "q"
},
"suggestions": {
- "base": "https://api.qwant.com/api/suggest/",
+ "base": "https://ac.duckduckgo.com/ac/",
"params": [
{
- "name": "client",
- "value": "opensearch"
+ "name": "type",
+ "value": "list"
}
],
"searchTermParamName": "q"
}
},
"aliases": [
- "qwant"
+ "duckduckgo",
+ "ddg"
],
- "partnerCode": "brz-moz",
+ "partnerCode": "ffab",
"classification": "general"
},
- "schema": 1710460806956,
+ "schema": 1713282081098,
"variants": [
{
"environment": {
- "locales": [
- "fr"
- ]
- }
- },
- {
- "environment": {
- "regions": [
- "be",
- "ch",
- "es",
- "fr",
- "it",
- "nl"
- ]
- }
- },
- {
- "environment": {
- "distributions": [
- "qwant-001",
- "qwant-002"
- ]
+ "allRegionsAndLocales": true
},
- "partnerCode": "firefoxqwant",
- "telemetrySuffix": "qwant"
- }
- ],
- "identifier": "qwant",
- "recordType": "engine",
- "id": "2e62746e-b90a-42ee-b0f2-9ed0e1e2eaf0",
- "last_modified": 1710766863306
- },
- {
- "orders": [
- {
- "order": [
- "baidu",
- "bing",
- "google",
- "wikipedia*"
- ],
- "environment": {
- "distributions": [
- "MozillaOnline"
- ]
- }
- },
- {
- "order": [
- "qwant",
- "qwantjr"
- ],
- "environment": {
- "distributions": [
- "qwant-001",
- "qwant-002"
- ]
- }
- }
- ],
- "schema": 1707824831520,
- "recordType": "engineOrders",
- "id": "3e1fed64-5ec7-4b1c-bedc-741fe3c59bc3",
- "last_modified": 1707833224345
- },
- {
- "base": {
- "name": "Bing",
- "urls": {
- "search": {
- "base": "https://www.bing.com/search",
- "params": [
- {
- "name": "pc",
- "value": "{partnerCode}"
+ "subVariants": [
+ {
+ "environment": {
+ "channels": [
+ "esr"
+ ]
},
- {
- "name": "form",
- "searchAccessPoint": {
- "newtab": "MOZTSB",
- "homepage": "MOZSPG",
- "searchbar": "MOZSBR",
- "addressbar": "MOZLBR",
- "contextmenu": "MOZCON"
- }
- }
- ],
- "searchTermParamName": "q"
- },
- "trending": {
- "base": "https://www.bing.com/osjson.aspx"
- },
- "suggestions": {
- "base": "https://www.bing.com/osjson.aspx",
- "params": [
- {
- "name": "form",
- "value": "OSDJAS"
- }
- ],
- "searchTermParamName": "query"
- }
- },
- "aliases": [
- "bing"
- ],
- "partnerCode": "MOZI",
- "classification": "general"
- },
- "schema": 1706918405822,
- "variants": [
- {
- "environment": {
- "locales": [
- "ach",
- "af",
- "an",
- "ar",
- "ast",
- "az",
- "bn",
- "bs",
- "ca",
- "ca-valencia",
- "cak",
- "cs",
- "cy",
- "da",
- "de",
- "dsb",
- "el",
- "en-CA",
- "en-GB",
- "en-US",
- "eo",
- "es-CL",
- "es-ES",
- "es-MX",
- "eu",
- "fa",
- "ff",
- "fi",
- "fr",
- "fur",
- "fy-NL",
- "gd",
- "gl",
- "gn",
- "gu-IN",
- "he",
- "hi-IN",
- "hr",
- "hsb",
- "hy-AM",
- "ia",
- "id",
- "is",
- "it",
- "ja",
- "ja-JP-macos",
- "ka",
- "kab",
- "km",
- "kn",
- "lij",
- "lo",
- "lt",
- "meh",
- "mk",
- "ms",
- "my",
- "nb-NO",
- "ne-NP",
- "nl",
- "nn-NO",
- "oc",
- "pa-IN",
- "pt-BR",
- "rm",
- "ro",
- "sc",
- "sco",
- "son",
- "sq",
- "sr",
- "sv-SE",
- "te",
- "th",
- "tl",
- "tr",
- "trs",
- "uk",
- "ur",
- "uz",
- "wo",
- "xh",
- "zh-CN"
- ]
- }
+ "partnerCode": "ftsa",
+ "telemetrySuffix": "esr"
+ }
+ ]
},
{
"environment": {
- "channels": [
- "esr"
+ "distributions": [
+ "mint-001"
]
},
- "partnerCode": "MOZR",
- "telemetrySuffix": "esr"
+ "partnerCode": "lm",
+ "telemetrySuffix": "lm"
}
],
- "identifier": "bing",
+ "identifier": "ddg",
"recordType": "engine",
- "id": "05645095-d26e-4f20-9137-f24a14a23f28",
- "last_modified": 1707833224310
+ "id": "04e99a38-13ee-47d8-8aa4-64482b3dea99",
+ "last_modified": 1713282817053
},
{
"base": {
@@ -305,24 +119,26 @@
"partnerCode": "firefox-b-d",
"classification": "general"
},
- "schema": 1702901739026,
+ "schema": 1713282083062,
"variants": [
{
"environment": {
"allRegionsAndLocales": true
},
+ "subVariants": [
+ {
+ "environment": {
+ "channels": [
+ "esr"
+ ]
+ },
+ "partnerCode": "firefox-b-e",
+ "telemetrySuffix": "b-e"
+ }
+ ],
"telemetrySuffix": "b-d"
},
{
- "environment": {
- "channels": [
- "esr"
- ]
- },
- "partnerCode": "firefox-b-e",
- "telemetrySuffix": "b-e"
- },
- {
"urls": {
"search": {
"params": []
@@ -359,33 +175,21 @@
]
},
"partnerCode": "firefox-b-1-d",
- "telemetrySuffix": "b-1-d"
- },
- {
- "urls": {
- "search": {
- "params": [
- {
- "name": "client",
- "value": "{partnerCode}"
- },
- {
- "name": "channel",
- "experimentConfig": "google_channel_us"
- }
- ]
+ "subVariants": [
+ {
+ "environment": {
+ "regions": [
+ "us"
+ ],
+ "channels": [
+ "esr"
+ ]
+ },
+ "partnerCode": "firefox-b-1-e",
+ "telemetrySuffix": "b-1-e"
}
- },
- "environment": {
- "regions": [
- "us"
- ],
- "channels": [
- "esr"
- ]
- },
- "partnerCode": "firefox-b-1-e",
- "telemetrySuffix": "b-1-e"
+ ],
+ "telemetrySuffix": "b-1-d"
},
{
"urls": {
@@ -459,70 +263,260 @@
"identifier": "google",
"recordType": "engine",
"id": "7ace4aa1-e762-4f4b-87b9-b23b3c3a930b",
- "last_modified": 1702906502757
+ "last_modified": 1713282817051
},
{
"base": {
- "name": "DuckDuckGo",
+ "name": "Bing",
"urls": {
"search": {
- "base": "https://duckduckgo.com/",
+ "base": "https://www.bing.com/search",
"params": [
{
- "name": "t",
+ "name": "pc",
"value": "{partnerCode}"
+ },
+ {
+ "name": "form",
+ "searchAccessPoint": {
+ "newtab": "MOZTSB",
+ "homepage": "MOZSPG",
+ "searchbar": "MOZSBR",
+ "addressbar": "MOZLBR",
+ "contextmenu": "MOZCON"
+ }
}
],
"searchTermParamName": "q"
},
+ "trending": {
+ "base": "https://www.bing.com/osjson.aspx"
+ },
"suggestions": {
- "base": "https://ac.duckduckgo.com/ac/",
+ "base": "https://www.bing.com/osjson.aspx",
"params": [
{
- "name": "type",
- "value": "list"
+ "name": "form",
+ "value": "OSDJAS"
+ }
+ ],
+ "searchTermParamName": "query"
+ }
+ },
+ "aliases": [
+ "bing"
+ ],
+ "partnerCode": "MOZI",
+ "classification": "general"
+ },
+ "schema": 1713199744323,
+ "variants": [
+ {
+ "environment": {
+ "locales": [
+ "ach",
+ "af",
+ "an",
+ "ar",
+ "ast",
+ "az",
+ "bn",
+ "bs",
+ "ca",
+ "ca-valencia",
+ "cak",
+ "cs",
+ "cy",
+ "da",
+ "de",
+ "dsb",
+ "el",
+ "en-CA",
+ "en-GB",
+ "en-US",
+ "eo",
+ "es-CL",
+ "es-ES",
+ "es-MX",
+ "eu",
+ "fa",
+ "ff",
+ "fi",
+ "fr",
+ "fur",
+ "fy-NL",
+ "gd",
+ "gl",
+ "gn",
+ "gu-IN",
+ "he",
+ "hi-IN",
+ "hr",
+ "hsb",
+ "hy-AM",
+ "ia",
+ "id",
+ "is",
+ "it",
+ "ja",
+ "ja-JP-macos",
+ "ka",
+ "kab",
+ "km",
+ "kn",
+ "lij",
+ "lo",
+ "lt",
+ "meh",
+ "mk",
+ "ms",
+ "my",
+ "nb-NO",
+ "ne-NP",
+ "nl",
+ "nn-NO",
+ "oc",
+ "pa-IN",
+ "pt-BR",
+ "rm",
+ "ro",
+ "sc",
+ "sco",
+ "son",
+ "sq",
+ "sr",
+ "sv-SE",
+ "te",
+ "th",
+ "tl",
+ "tr",
+ "trs",
+ "uk",
+ "ur",
+ "uz",
+ "wo",
+ "xh",
+ "zh-CN"
+ ]
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "channels": [
+ "esr"
+ ]
+ },
+ "partnerCode": "MOZR",
+ "telemetrySuffix": "esr"
+ }
+ ]
+ }
+ ],
+ "identifier": "bing",
+ "recordType": "engine",
+ "id": "05645095-d26e-4f20-9137-f24a14a23f28",
+ "last_modified": 1713282817048
+ },
+ {
+ "base": {
+ "name": "Qwant",
+ "urls": {
+ "search": {
+ "base": "https://www.qwant.com/",
+ "params": [
+ {
+ "name": "client",
+ "value": "{partnerCode}"
+ }
+ ],
+ "searchTermParamName": "q"
+ },
+ "suggestions": {
+ "base": "https://api.qwant.com/api/suggest/",
+ "params": [
+ {
+ "name": "client",
+ "value": "opensearch"
}
],
"searchTermParamName": "q"
}
},
"aliases": [
- "duckduckgo",
- "ddg"
+ "qwant"
],
- "partnerCode": "ffab",
+ "partnerCode": "brz-moz",
"classification": "general"
},
- "schema": 1702901739665,
+ "schema": 1710460806956,
"variants": [
{
"environment": {
- "allRegionsAndLocales": true
+ "locales": [
+ "fr"
+ ]
}
},
{
"environment": {
- "channels": [
- "esr"
+ "regions": [
+ "be",
+ "ch",
+ "es",
+ "fr",
+ "it",
+ "nl"
]
- },
- "partnerCode": "ftsa",
- "telemetrySuffix": "esr"
+ }
},
{
"environment": {
"distributions": [
- "mint-001"
+ "qwant-001",
+ "qwant-002"
]
},
- "partnerCode": "lm",
- "telemetrySuffix": "lm"
+ "partnerCode": "firefoxqwant",
+ "telemetrySuffix": "qwant"
}
],
- "identifier": "ddg",
+ "identifier": "qwant",
"recordType": "engine",
- "id": "04e99a38-13ee-47d8-8aa4-64482b3dea99",
- "last_modified": 1702906502754
+ "id": "2e62746e-b90a-42ee-b0f2-9ed0e1e2eaf0",
+ "last_modified": 1710766863306
+ },
+ {
+ "orders": [
+ {
+ "order": [
+ "baidu",
+ "bing",
+ "google",
+ "wikipedia*"
+ ],
+ "environment": {
+ "distributions": [
+ "MozillaOnline"
+ ]
+ }
+ },
+ {
+ "order": [
+ "qwant",
+ "qwantjr"
+ ],
+ "environment": {
+ "distributions": [
+ "qwant-001",
+ "qwant-002"
+ ]
+ }
+ }
+ ],
+ "schema": 1707824831520,
+ "recordType": "engineOrders",
+ "id": "3e1fed64-5ec7-4b1c-bedc-741fe3c59bc3",
+ "last_modified": 1707833224345
},
{
"base": {
@@ -7341,5 +7335,5 @@
"last_modified": 1702906502241
}
],
- "timestamp": 1710766863306
+ "timestamp": 1713282817053
}
diff --git a/services/settings/dumps/main/search-telemetry-v2.json b/services/settings/dumps/main/search-telemetry-v2.json
index 9eb4e5d29c..1a1708529c 100644
--- a/services/settings/dumps/main/search-telemetry-v2.json
+++ b/services/settings/dumps/main/search-telemetry-v2.json
@@ -1,6 +1,80 @@
{
"data": [
{
+ "isSPA": true,
+ "schema": 1712762409532,
+ "components": [
+ {
+ "type": "ad_image_row",
+ "included": {
+ "parent": {
+ "selector": "[data-testid='pam.container']"
+ },
+ "children": [
+ {
+ "selector": "[data-slide-index]",
+ "countChildren": true
+ }
+ ]
+ }
+ },
+ {
+ "type": "ad_link",
+ "included": {
+ "parent": {
+ "selector": "[data-testid='adResult']"
+ }
+ }
+ },
+ {
+ "type": "incontent_searchbox",
+ "topDown": true,
+ "included": {
+ "parent": {
+ "selector": "._1zdrb._1cR1n"
+ },
+ "related": {
+ "selector": "#search-suggestions"
+ },
+ "children": [
+ {
+ "selector": "input[type='search']"
+ }
+ ]
+ }
+ },
+ {
+ "type": "ad_link",
+ "default": true
+ }
+ ],
+ "taggedCodes": [
+ "brz-moz",
+ "firefoxqwant"
+ ],
+ "telemetryId": "qwant",
+ "organicCodes": [],
+ "codeParamName": "client",
+ "queryParamName": "q",
+ "queryParamNames": [
+ "q"
+ ],
+ "searchPageRegexp": "^https://www\\.qwant\\.com/",
+ "filter_expression": "env.version|versionCompare(\"124.0a1\")>=0",
+ "followOnParamNames": [],
+ "defaultPageQueryParam": {
+ "key": "t",
+ "value": "web"
+ },
+ "extraAdServersRegexps": [
+ "^https://www\\.bing\\.com/acli?c?k",
+ "^https://api\\.qwant\\.com/v3/r/",
+ "^https://fdn\\.qwant\\.com/v3/r/"
+ ],
+ "id": "19c434a3-d173-4871-9743-290ac92a3f6b",
+ "last_modified": 1713187389066
+ },
+ {
"schema": 1712582517430,
"components": [
{
@@ -448,79 +522,6 @@
"last_modified": 1712582517281
},
{
- "isSPA": true,
- "schema": 1707523204491,
- "components": [
- {
- "type": "ad_image_row",
- "included": {
- "parent": {
- "selector": "[data-testid='pam.container']"
- },
- "children": [
- {
- "selector": "[data-slide-index]",
- "countChildren": true
- }
- ]
- }
- },
- {
- "type": "ad_link",
- "included": {
- "parent": {
- "selector": "[data-testid='adResult']"
- }
- }
- },
- {
- "type": "incontent_searchbox",
- "topDown": true,
- "included": {
- "parent": {
- "selector": "._1zdrb._1cR1n"
- },
- "related": {
- "selector": "#search-suggestions"
- },
- "children": [
- {
- "selector": "input[type='search']"
- }
- ]
- }
- },
- {
- "type": "ad_link",
- "default": true
- }
- ],
- "taggedCodes": [
- "brz-moz",
- "firefoxqwant"
- ],
- "telemetryId": "qwant",
- "organicCodes": [],
- "codeParamName": "client",
- "queryParamName": "q",
- "queryParamNames": [
- "q"
- ],
- "searchPageRegexp": "^https://www\\.qwant\\.com/",
- "filter_expression": "env.version|versionCompare(\"124.0a1\")>=0",
- "followOnParamNames": [],
- "defaultPageQueryParam": {
- "key": "t",
- "value": "web"
- },
- "extraAdServersRegexps": [
- "^https://www\\.bing\\.com/acli?c?k",
- "^https://api\\.qwant\\.com/v3/r/"
- ],
- "id": "19c434a3-d173-4871-9743-290ac92a3f6b",
- "last_modified": 1707833261849
- },
- {
"schema": 1705363206938,
"components": [
{
@@ -785,5 +786,5 @@
"last_modified": 1698666532324
}
],
- "timestamp": 1712762409389
+ "timestamp": 1713187389066
}
diff --git a/services/settings/dumps/security-state/intermediates.json b/services/settings/dumps/security-state/intermediates.json
index ac343a2494..cb6220a0b2 100644
--- a/services/settings/dumps/security-state/intermediates.json
+++ b/services/settings/dumps/security-state/intermediates.json
@@ -1,6 +1,24 @@
{
"data": [
{
+ "schema": 1713279247562,
+ "derHash": "qHnLAaJmHCVbnCub4LILp07qlUbiGoLFcOF3z1v0rto=",
+ "subject": "CN=KeepTrust DV TLS RSA CA G1,O=Shanghai Huandu Info Tech Co. Ltd.,C=CN",
+ "subjectDN": "MF8xCzAJBgNVBAYTAkNOMSswKQYDVQQKEyJTaGFuZ2hhaSBIdWFuZHUgSW5mbyBUZWNoIENvLiBMdGQuMSMwIQYDVQQDExpLZWVwVHJ1c3QgRFYgVExTIFJTQSBDQSBHMQ==",
+ "whitelist": false,
+ "attachment": {
+ "hash": "93a741fbafcd5340a19168c4bd08054a4848435b3be5fe670b8f11c2375684aa",
+ "size": 2207,
+ "filename": "bOEjmQANKVH0X6KYfPDfKE84GnLDQ9OEma-H2A_9vsM=.pem",
+ "location": "security-state-staging/intermediates/a8577b4a-44b2-44d9-860f-74a05b5f338f.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "bOEjmQANKVH0X6KYfPDfKE84GnLDQ9OEma+H2A/9vsM=",
+ "crlite_enrolled": false,
+ "id": "1a5f9580-38a5-4f0e-821b-2973701c1722",
+ "last_modified": 1713279423465
+ },
+ {
"schema": 1712310550077,
"derHash": "w+vOp+axOsPrOnnwWBnmfWiTxlZC9Q2bXhZHyyZQa44=",
"subject": "CN=Security Communication ECC RootCA1,O=SECOM Trust Systems CO.\\,LTD.,C=JP",
@@ -721,42 +739,6 @@
"last_modified": 1709323057665
},
{
- "schema": 1709322861260,
- "derHash": "wKHKNkddM7Rx5OWOVXTdkpTTVMRXKVlU21VbJOrSqks=",
- "subject": "CN=COMODO/PKWARE Secure Email CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB",
- "subjectDN": "MIGAMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDEmMCQGA1UEAxMdQ09NT0RPL1BLV0FSRSBTZWN1cmUgRW1haWwgQ0E=",
- "whitelist": false,
- "attachment": {
- "hash": "536d387994d2fcf3c04c848acb66841104d87c9b0b1ed73ccec9768bd275d362",
- "size": 1979,
- "filename": "javoiDXitAWxKnEeWWJB_XeluETyAl8SAu8OHaB7Q0c=.pem",
- "location": "security-state-staging/intermediates/a14785fd-f6c9-4f29-9d06-df68da0a3959.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "javoiDXitAWxKnEeWWJB/XeluETyAl8SAu8OHaB7Q0c=",
- "crlite_enrolled": false,
- "id": "da5c02a2-8457-4e22-87c0-9f6e49221efe",
- "last_modified": 1709323057662
- },
- {
- "schema": 1709322860874,
- "derHash": "YmFumxG9Djo1g2DIO3jbxb7qV1yQuX5oJEgz+zBDfGs=",
- "subject": "CN=TERENA Personal CA,O=TERENA,C=NL",
- "subjectDN": "MDsxCzAJBgNVBAYTAk5MMQ8wDQYDVQQKEwZURVJFTkExGzAZBgNVBAMTElRFUkVOQSBQZXJzb25hbCBDQQ==",
- "whitelist": false,
- "attachment": {
- "hash": "b540a4b8690142678f25aaa6f34207fd3c4298612d40cac2034f5049aa748c3b",
- "size": 1711,
- "filename": "GrQOOcgaiD1vs9vGDvRaVMQKNDQm2_Nj7lPXTk4s2F0=.pem",
- "location": "security-state-staging/intermediates/4742da83-41bb-4761-b382-7a48eb3f8886.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "GrQOOcgaiD1vs9vGDvRaVMQKNDQm2/Nj7lPXTk4s2F0=",
- "crlite_enrolled": false,
- "id": "d447cf4a-07e2-4ccf-b3c9-898267f291fe",
- "last_modified": 1709323057659
- },
- {
"schema": 1709322860517,
"derHash": "mm/Eq02x6m9mY1B+3B0Ajwka6I+rbzrlaoSkCQUp71g=",
"subject": "CN=Telekom Security EV RSA CA 23,O=Deutsche Telekom Security GmbH,C=DE",
@@ -775,24 +757,6 @@
"last_modified": 1709323057656
},
{
- "schema": 1709322859788,
- "derHash": "/QKa3j96gKmNb//JQpBGWF7x2MuBk6F/YhQxfQZS18M=",
- "subject": "CN=COMODO/HP Secure Email CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB",
- "subjectDN": "MHwxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSIwIAYDVQQDExlDT01PRE8vSFAgU2VjdXJlIEVtYWlsIENB",
- "whitelist": false,
- "attachment": {
- "hash": "adb2966a8c1fc1a877edbb79b2d43109f804829872e34bd8667f85ba432153e5",
- "size": 1975,
- "filename": "VQkNSqdqPoVan53-i1N5YrjNCMnJRtvNFB7icXr9un8=.pem",
- "location": "security-state-staging/intermediates/dde31d19-c833-41ae-a61a-48529e89c711.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "VQkNSqdqPoVan53+i1N5YrjNCMnJRtvNFB7icXr9un8=",
- "crlite_enrolled": false,
- "id": "a53b33af-6b45-402a-abac-9e6140dc28ec",
- "last_modified": 1709323057653
- },
- {
"schema": 1709322862713,
"derHash": "oCHY53TGozxza9tcF2klrd9EbJlnm83NguW9LqX+RE0=",
"subject": "CN=TrustSign BR RSA EV SSL CA 3,O=TrustSign Certificadora Dig. & Solucoes Seguranca da Inf. Ltda.,C=BR",
@@ -847,24 +811,6 @@
"last_modified": 1709323057644
},
{
- "schema": 1709322856729,
- "derHash": "j3JA8WCTbx/UBr8CizW11gm2SzvQ4x4TzG3Zq3yhLm8=",
- "subject": "CN=GLOBE SSL SECURE EMAIL CA,O=GLOBE HOSTING CERTIFICATION AUTHORITY,C=RO",
- "subjectDN": "MGExCzAJBgNVBAYTAlJPMS4wLAYDVQQKEyVHTE9CRSBIT1NUSU5HIENFUlRJRklDQVRJT04gQVVUSE9SSVRZMSIwIAYDVQQDExlHTE9CRSBTU0wgU0VDVVJFIEVNQUlMIENB",
- "whitelist": false,
- "attachment": {
- "hash": "1cf3286ce0babb75314968445c3959acec4c2fb01d7342d74be3d80efd77125a",
- "size": 1764,
- "filename": "_eRFHz8wxXnTOa1eOct617RUUVoCS6wHVpWc2LKjvVg=.pem",
- "location": "security-state-staging/intermediates/4c03d7f3-2876-42e2-8e63-1770d52bb8dd.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "/eRFHz8wxXnTOa1eOct617RUUVoCS6wHVpWc2LKjvVg=",
- "crlite_enrolled": false,
- "id": "22c0373b-2dd6-46fd-a8f5-948c6627d4ea",
- "last_modified": 1709323057641
- },
- {
"schema": 1709322858961,
"derHash": "6bmYDIo/WT9Nnn2j9Jev+Ptm4kLGy6DXMOIGVZUT+l0=",
"subject": "CN=CloudSecure RSA Extended Validation Secure Server CA 2,O=CloudSecure Corporation,C=JP",
@@ -901,60 +847,6 @@
"last_modified": 1709323057634
},
{
- "schema": 1709322857466,
- "derHash": "6QSgV9g5vL5jEJK0IV3YzE+ISbqHtRqvJyi3HmSs51E=",
- "subject": "CN=DREAMHOST SECURE EMAIL CA,O=DREAMHOST CERTIFICATION AUTHORITY,C=US",
- "subjectDN": "MF0xCzAJBgNVBAYTAlVTMSowKAYDVQQKEyFEUkVBTUhPU1QgQ0VSVElGSUNBVElPTiBBVVRIT1JJVFkxIjAgBgNVBAMTGURSRUFNSE9TVCBTRUNVUkUgRU1BSUwgQ0E=",
- "whitelist": false,
- "attachment": {
- "hash": "bd46e6b3068ecccbabe7da0273be8a3d35a413fdfcca05bc18847e7402db16fa",
- "size": 1756,
- "filename": "63NWnCfq1JadpotgYBS_ORAIQ4nhhoHBm9FjkLxi1nA=.pem",
- "location": "security-state-staging/intermediates/6ba6c581-5ba3-48f8-8ccc-e38734c2de49.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "63NWnCfq1JadpotgYBS/ORAIQ4nhhoHBm9FjkLxi1nA=",
- "crlite_enrolled": false,
- "id": "ad597bfa-50d0-4288-95d2-d15db698ffba",
- "last_modified": 1709323057631
- },
- {
- "schema": 1709322858187,
- "derHash": "Xwo1uk+Epl9osW1KM/ZRfAl3CDk+qv0oVvuak0GHGfQ=",
- "subject": "CN=SGTRUST EMAIL AND CLIENT CA,O=SGssl,C=KR",
- "subjectDN": "MEMxCzAJBgNVBAYTAktSMQ4wDAYDVQQKEwVTR3NzbDEkMCIGA1UEAxMbU0dUUlVTVCBFTUFJTCBBTkQgQ0xJRU5UIENB",
- "whitelist": false,
- "attachment": {
- "hash": "17a9b911f686f237aa390ea2ff06319ae420ccb51198aeed267a5518db5715c4",
- "size": 1723,
- "filename": "gQN5MDXBIRQe70cFfEaNKKTh3AELpmBrtzu-04X41Po=.pem",
- "location": "security-state-staging/intermediates/460d3cb1-d178-47f3-b286-99a9adab7c6a.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "gQN5MDXBIRQe70cFfEaNKKTh3AELpmBrtzu+04X41Po=",
- "crlite_enrolled": false,
- "id": "5a347462-e209-4a4f-bba5-902bb7cdd29b",
- "last_modified": 1709323057628
- },
- {
- "schema": 1709322860157,
- "derHash": "JhjEFcFGupil8K1+pJiqWHgLpV+o47By0TwzDUEBBxc=",
- "subject": "CN=EuropeanSSL Client CA,O=EUNETIC GmbH,C=DE",
- "subjectDN": "MEQxCzAJBgNVBAYTAkRFMRUwEwYDVQQKEwxFVU5FVElDIEdtYkgxHjAcBgNVBAMTFUV1cm9wZWFuU1NMIENsaWVudCBDQQ==",
- "whitelist": false,
- "attachment": {
- "hash": "939382e857302d9c045c2918ffbab03973b2a29f5c566cfdd7e53388636562f6",
- "size": 1723,
- "filename": "6rE_4fpPwsenurNcVvOyU8xh7Vp9kamSGTFA4_9ffGI=.pem",
- "location": "security-state-staging/intermediates/a5c74b09-42b9-4fbe-ab76-8aac990547e8.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "6rE/4fpPwsenurNcVvOyU8xh7Vp9kamSGTFA4/9ffGI=",
- "crlite_enrolled": false,
- "id": "21c33409-b6a8-429b-bddf-96d8eb9b5e6d",
- "last_modified": 1709323057625
- },
- {
"schema": 1709322856380,
"derHash": "sF4Fz8v4GBPsMPo/dJIKoj/tNn4UfMgeESH2RphEnQ8=",
"subject": "CN=WISeKey CertifyID SSL GC CA 1,O=WISeKey,C=CH",
@@ -973,24 +865,6 @@
"last_modified": 1709323057622
},
{
- "schema": 1709322855255,
- "derHash": "9AUHfHF0cDuXgceVRKe+mUJjhU0VFz5hqNGaKM96SrE=",
- "subject": "CN=TERENA eScience Personal CA,O=TERENA,C=NL",
- "subjectDN": "MEQxCzAJBgNVBAYTAk5MMQ8wDQYDVQQKEwZURVJFTkExJDAiBgNVBAMTG1RFUkVOQSBlU2NpZW5jZSBQZXJzb25hbCBDQQ==",
- "whitelist": false,
- "attachment": {
- "hash": "0ff25cb8ace98409f31247ecb59b650b17e31d145ec2485517081e2ac1dfa4fb",
- "size": 1743,
- "filename": "rfAIoQEXwIYxHVXIaa2COA8XlDmE8FsumvzEWCU7MfU=.pem",
- "location": "security-state-staging/intermediates/572cc780-7a7f-4edb-bb11-5177e420e4ee.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "rfAIoQEXwIYxHVXIaa2COA8XlDmE8FsumvzEWCU7MfU=",
- "crlite_enrolled": false,
- "id": "df33d49d-be3f-4bfc-9291-d978b63c2fb5",
- "last_modified": 1709323057619
- },
- {
"schema": 1709322855622,
"derHash": "Jk2YC0i7HaMvuxR7gQQ0RaxMhWOVlLoVrZoriDai2sA=",
"subject": "CN=TrustSign BR RSA DV SSL CA 3,O=TrustSign Certificadora Dig. & Solucoes Seguranca da Inf. Ltda.,C=BR",
@@ -1009,24 +883,6 @@
"last_modified": 1709323057615
},
{
- "schema": 1709322854820,
- "derHash": "TywMFwG94Btr7tptF8M2BCQhr3MRcGM0f36Xt2rYl/U=",
- "subject": "CN=GlobalSSL Secure E-Mail and Client Authentication CA,O=GlobalSSL,C=DE",
- "subjectDN": "MGAxCzAJBgNVBAYTAkRFMRIwEAYDVQQKEwlHbG9iYWxTU0wxPTA7BgNVBAMTNEdsb2JhbFNTTCBTZWN1cmUgRS1NYWlsIGFuZCBDbGllbnQgQXV0aGVudGljYXRpb24gQ0E=",
- "whitelist": false,
- "attachment": {
- "hash": "b2019acf4321d57d1f4034c278f7761779e2fc130bbf2ca87aabbe5a7047c614",
- "size": 1760,
- "filename": "rvxRPOOErynHJj6lYghacyWHWiAPuUDhnQ7bzVQe7nA=.pem",
- "location": "security-state-staging/intermediates/cacd7664-e756-4647-96f8-682e65e01ae0.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "rvxRPOOErynHJj6lYghacyWHWiAPuUDhnQ7bzVQe7nA=",
- "crlite_enrolled": false,
- "id": "9d2ed0cf-a2d4-430d-ae23-724baec635e4",
- "last_modified": 1709323057612
- },
- {
"schema": 1709322857831,
"derHash": "16iplHwxgGwbRiX4L8vMp8wgkOWNshW45NiLqcYNMWY=",
"subject": "CN=Telekom Security EV ECC CA 21,O=Deutsche Telekom Security GmbH,C=DE",
@@ -1063,42 +919,6 @@
"last_modified": 1709323057606
},
{
- "schema": 1709322857090,
- "derHash": "8BflEJGLd9pn5NAg4rdqQkYYdugi9iDFVzvLw7uzdAY=",
- "subject": "CN=Gandi Secure Email CA,O=GANDI SAS,C=FR",
- "subjectDN": "MEExCzAJBgNVBAYTAkZSMRIwEAYDVQQKEwlHQU5ESSBTQVMxHjAcBgNVBAMTFUdhbmRpIFNlY3VyZSBFbWFpbCBDQQ==",
- "whitelist": false,
- "attachment": {
- "hash": "7374bb117a04dbe56b2af679a65a85a2c734afce7e88acb81917ecd528ba648e",
- "size": 1719,
- "filename": "iFIEeQ06wWLDY4tmZC6npViJr_VFbFCHUdRkqmIc7OY=.pem",
- "location": "security-state-staging/intermediates/80641d57-3847-4459-9d66-f653dd7bfadc.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "iFIEeQ06wWLDY4tmZC6npViJr/VFbFCHUdRkqmIc7OY=",
- "crlite_enrolled": false,
- "id": "61df2979-bddb-4586-94f1-15e23fe3c076",
- "last_modified": 1709323057603
- },
- {
- "schema": 1709322855985,
- "derHash": "9ooj65c3qMdE7mcRLy/AJKrcUDu7sE8lze1PJXbJNIU=",
- "subject": "CN=The Code Project Secure Email (S/mime) CA,O=The Code Project,C=CA",
- "subjectDN": "MFwxCzAJBgNVBAYTAkNBMRkwFwYDVQQKExBUaGUgQ29kZSBQcm9qZWN0MTIwMAYDVQQDEylUaGUgQ29kZSBQcm9qZWN0IFNlY3VyZSBFbWFpbCAoUy9taW1lKSBDQQ==",
- "whitelist": false,
- "attachment": {
- "hash": "e34a2353b9ea221ccf98cccc3d39c3562f1daceb776f42298bbc37afdd4fc54a",
- "size": 1752,
- "filename": "xtYGt02m4umLJCyy0kfaczCboF12WILjsGOb1umDfX0=.pem",
- "location": "security-state-staging/intermediates/53d673f8-b2c7-4c5c-9730-8965f2ec1dcb.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "xtYGt02m4umLJCyy0kfaczCboF12WILjsGOb1umDfX0=",
- "crlite_enrolled": false,
- "id": "81d6dcac-df61-4042-bd32-3070f7a85340",
- "last_modified": 1709323057600
- },
- {
"schema": 1705981670999,
"derHash": "edV7Fd+mXChw6v4Rtjd2WQnP6Te0nBXOfxlAMMqzla0=",
"subject": "CN=DigiCert Global Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US",
@@ -21745,24 +21565,6 @@
"last_modified": 1663786625894
},
{
- "schema": 1663786313489,
- "derHash": "VlyCcCtexjICdU1PS3bMO64ypMkUbtO+zXOkBP+tTN4=",
- "subject": "CN=UTN-USERFirst-Client Authentication and Email,OU=http://www.usertrust.com,O=The USERTRUST Network,L=Salt Lake City,ST=UT,C=US",
- "subjectDN": "MIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJzdC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWls",
- "whitelist": false,
- "attachment": {
- "hash": "ea4a8d488e32504fd104cbe43ae869fa05d6c9a40760f4ad44d6138279f5a48c",
- "size": 1674,
- "filename": "Laj56jRU0hFGRko_nQKNxMf7tXscUsc8KwVyovWZotM=.pem",
- "location": "security-state-staging/intermediates/ff1f6147-d1b8-4857-90c1-1c69f32d66f2.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "Laj56jRU0hFGRko/nQKNxMf7tXscUsc8KwVyovWZotM=",
- "crlite_enrolled": false,
- "id": "f9921d3b-2c14-4cd8-ba89-946e88ff8a45",
- "last_modified": 1663786625873
- },
- {
"schema": 1663786305752,
"derHash": "dnvCnbma9MKmJkkADRcvxswtCdQIxMq2qNmaHdXc99s=",
"subject": "CN=CertCenter Enterprise ECC DV CA,O=CertCenter AG,L=Giessen,ST=Hessen,C=DE",
@@ -30601,5 +30403,5 @@
"last_modified": 1559865884636
}
],
- "timestamp": 1712674623155
+ "timestamp": 1713391023368
}
diff --git a/sourcestamp.txt b/sourcestamp.txt
index 43cd678299..be20e28e6f 100644
--- a/sourcestamp.txt
+++ b/sourcestamp.txt
@@ -1,2 +1,2 @@
-20240416043247
-https://hg.mozilla.org/releases/mozilla-release/rev/624e9a169b06012fbb06583c8f172cfe34f8b3d7
+20240419144423
+https://hg.mozilla.org/releases/mozilla-release/rev/c5ee44e4135571bec3220340242f9189c59ca5ba
diff --git a/testing/web-platform/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html.ini b/testing/web-platform/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html.ini
index b4dbc800df..b0d48fef3b 100644
--- a/testing/web-platform/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html.ini
+++ b/testing/web-platform/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html.ini
@@ -1,4 +1,4 @@
-[iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html]
+[iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html]
expected:
if (os == "linux") and not fission: [OK, TIMEOUT]
if (os == "android") and fission: [TIMEOUT, OK]
diff --git a/testing/web-platform/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.https.html.ini b/testing/web-platform/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.html.ini
index 773edf42b7..2483b6391c 100644
--- a/testing/web-platform/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.https.html.ini
+++ b/testing/web-platform/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.html.ini
@@ -1,3 +1,3 @@
-[iframe_sandbox_window_open_download_allow_downloads.tentative.https.html]
+[iframe_sandbox_window_open_download_allow_downloads.tentative.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html
index 6b3b3104ef..6b3b3104ef 100644
--- a/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html
+++ b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html
diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.https.html b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.html
index 158fc4f947..158fc4f947 100644
--- a/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.https.html
+++ b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.html
diff --git a/toolkit/components/antitracking/test/browser/browser_staticPartition_saveAs.js b/toolkit/components/antitracking/test/browser/browser_staticPartition_saveAs.js
index daf3234858..b9984829eb 100644
--- a/toolkit/components/antitracking/test/browser/browser_staticPartition_saveAs.js
+++ b/toolkit/components/antitracking/test/browser/browser_staticPartition_saveAs.js
@@ -102,7 +102,6 @@ add_task(async function testContextMenuSaveImage() {
set: [
["privacy.partition.network_state", networkIsolation],
["privacy.dynamic_firstparty.use_site", partitionPerSite],
- ["dom.block_download_insecure", false],
],
});
@@ -198,7 +197,6 @@ add_task(async function testContextMenuSaveVideo() {
set: [
["privacy.partition.network_state", networkIsolation],
["privacy.dynamic_firstparty.use_site", partitionPerSite],
- ["dom.block_download_insecure", false],
],
});
diff --git a/toolkit/components/antitracking/test/browser/file_saveAsPageInfo.html b/toolkit/components/antitracking/test/browser/file_saveAsPageInfo.html
index 8f22e911e7..aa3de2a555 100644
--- a/toolkit/components/antitracking/test/browser/file_saveAsPageInfo.html
+++ b/toolkit/components/antitracking/test/browser/file_saveAsPageInfo.html
@@ -1,6 +1,6 @@
<html>
<body>
- <img src="https://example.net/browser/toolkit/components/antitracking/test/browser/raptor.jpg" id="image1">
- <video src="https://example.net/browser/toolkit/components/antitracking/test/browser/file_video.ogv" id="video1"> </video>
+ <img src="http://example.net/browser/toolkit/components/antitracking/test/browser/raptor.jpg" id="image1">
+ <video src="http://example.net/browser/toolkit/components/antitracking/test/browser/file_video.ogv" id="video1"> </video>
</body>
</html>
diff --git a/toolkit/components/downloads/test/unit/test_DownloadLegacy.js b/toolkit/components/downloads/test/unit/test_DownloadLegacy.js
index 839611ec22..972820f29e 100644
--- a/toolkit/components/downloads/test/unit/test_DownloadLegacy.js
+++ b/toolkit/components/downloads/test/unit/test_DownloadLegacy.js
@@ -11,8 +11,6 @@
// Execution of common tests
-Services.prefs.setBoolPref("dom.block_download_insecure", false);
-
// This is used in common_test_Download.js
// eslint-disable-next-line no-unused-vars
var gUseLegacySaver = true;
diff --git a/toolkit/components/extensions/test/browser/browser_ext_downloads_referrer.js b/toolkit/components/extensions/test/browser/browser_ext_downloads_referrer.js
index 24d52dd8e0..c9e965c1e1 100644
--- a/toolkit/components/extensions/test/browser/browser_ext_downloads_referrer.js
+++ b/toolkit/components/extensions/test/browser/browser_ext_downloads_referrer.js
@@ -4,8 +4,8 @@
"use strict";
const URL_PATH = "browser/toolkit/components/extensions/test/browser/data";
-const TEST_URL = `https://example.com/${URL_PATH}/test_downloads_referrer.html`;
-const DOWNLOAD_URL = `https://example.com/${URL_PATH}/test-download.txt`;
+const TEST_URL = `http://example.com/${URL_PATH}/test_downloads_referrer.html`;
+const DOWNLOAD_URL = `http://example.com/${URL_PATH}/test-download.txt`;
async function triggerSaveAs({ selector }) {
const contextMenu = window.document.getElementById("contentAreaContextMenu");
diff --git a/toolkit/components/nimbus/FeatureManifest.yaml b/toolkit/components/nimbus/FeatureManifest.yaml
index 190e29d6db..7612ef2dc2 100644
--- a/toolkit/components/nimbus/FeatureManifest.yaml
+++ b/toolkit/components/nimbus/FeatureManifest.yaml
@@ -429,10 +429,9 @@ urlbar:
* Remove the forcast text from the summary text.
yelpMinKeywordLength:
type: int
- fallbackPref: browser.urlbar.yelp.minKeywordLength
description: >-
- If the length of user's query is less than this value plus
- "yelp.showLessFrequentlyCount", Yelp suggestion never be shown.
+ The minimum prefix length of a Yelp keyword the user must type to
+ trigger the suggestion.
yelpFeatureGate:
type: boolean
fallbackPref: browser.urlbar.yelp.featureGate
diff --git a/toolkit/components/pdfjs/test/browser_pdfjs_octet_stream.js b/toolkit/components/pdfjs/test/browser_pdfjs_octet_stream.js
index da630f726c..d2b4fe310f 100644
--- a/toolkit/components/pdfjs/test/browser_pdfjs_octet_stream.js
+++ b/toolkit/components/pdfjs/test/browser_pdfjs_octet_stream.js
@@ -5,7 +5,7 @@
const TESTROOT = getRootDirectory(gTestPath).replace(
"chrome://mochitests/content/",
- "https://example.com/"
+ "http://mochi.test:8888/"
);
// Get a ref to the pdf we want to open.
diff --git a/toolkit/components/telemetry/Histograms.json b/toolkit/components/telemetry/Histograms.json
index 223b96f082..3be0da3295 100644
--- a/toolkit/components/telemetry/Histograms.json
+++ b/toolkit/components/telemetry/Histograms.json
@@ -12347,14 +12347,14 @@
"n_values": 10,
"description": "How often would blocked mixed content be allowed if HSTS upgrades were allowed? 0=display/no-HSTS, 1=display/HSTS, 2=active/no-HSTS, 3=active/HSTS"
},
- "INSECURE_DOWNLOADS": {
+ "MIXED_CONTENT_DOWNLOADS": {
"record_in_processes": ["main", "content"],
"products": ["firefox"],
- "alert_emails": ["seceng-telemetry@mozilla.com", "ckerschb@mozilla.com"],
- "bug_numbers": [1877195],
- "expires_in_version": "130",
+ "alert_emails": ["seceng-telemetry@mozilla.com", "sstreich@mozilla.com"],
+ "bug_numbers": [1646768],
+ "expires_in_version": "90",
"kind": "boolean",
- "description": "Accumulates how many downloads are insecure (True = The download is insecure, False= The download is secure)"
+ "description": "Accumulates how many downloads are mixed-content (True = The download is MixedContent, False= is not MixedContent)"
},
"MIXED_CONTENT_IMAGES": {
"record_in_processes": ["main", "content"],
diff --git a/uriloader/exthandler/tests/mochitest/browser_download_idn_blocklist.js b/uriloader/exthandler/tests/mochitest/browser_download_idn_blocklist.js
index a5de2870af..0d49a898a0 100644
--- a/uriloader/exthandler/tests/mochitest/browser_download_idn_blocklist.js
+++ b/uriloader/exthandler/tests/mochitest/browser_download_idn_blocklist.js
@@ -24,10 +24,7 @@ server.registerFile(`/${encodeURIComponent(TEST_FILE)}`, file);
*/
add_task(async function test_idn_blocklisted_char_not_escaped() {
await SpecialPowers.pushPrefEnv({
- set: [
- ["browser.download.always_ask_before_handling_new_types", false],
- ["dom.block_download_insecure", false],
- ],
+ set: [["browser.download.always_ask_before_handling_new_types", false]],
});
info("Testing with " + TEST_URL);