summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--browser/app/profile/firefox.js4
-rw-r--r--browser/components/BrowserContentHandler.sys.mjs8
-rw-r--r--browser/components/BrowserGlue.sys.mjs4
-rw-r--r--browser/config/version.txt2
-rw-r--r--browser/config/version_display.txt2
-rw-r--r--browser/extensions/webcompat/data/injections.js14
-rw-r--r--browser/extensions/webcompat/injections/css/bug1882040-disable-pull-to-refresh.css14
-rw-r--r--browser/extensions/webcompat/manifest.json2
-rw-r--r--browser/extensions/webcompat/moz.build1
-rwxr-xr-xbrowser/installer/windows/nsis/shared.nsh7
-rw-r--r--build/unix/elfhack/elfhack.cpp12
-rw-r--r--config/milestone.txt2
-rw-r--r--debian/changelog115
-rw-r--r--debian/patches/debian-hacks/Don-t-auto-disable-extensions-in-system-directories.patch2
-rwxr-xr-xdebian/repack.py79
-rw-r--r--debian/upstream.mk11
-rw-r--r--dom/media/mediasource/TrackBuffersManager.cpp42
-rw-r--r--dom/media/mediasource/TrackBuffersManager.h2
-rw-r--r--dom/media/webm/NesteggPacketHolder.h20
-rw-r--r--dom/media/webm/WebMDemuxer.cpp27
-rw-r--r--dom/media/webm/WebMDemuxer.h6
-rw-r--r--mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/data/injections.js14
-rw-r--r--mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/injections/css/bug1882040-disable-pull-to-refresh.css14
-rw-r--r--mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/manifest.json2
-rw-r--r--mobile/android/fenix/app/metrics.yaml14
-rw-r--r--mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/FirstSessionPing.kt39
-rw-r--r--mobile/android/fenix/app/src/test/java/org/mozilla/fenix/components/metrics/FirstSessionPingTest.kt126
-rw-r--r--mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/LollipopAsyncCodec.java14
-rw-r--r--mobile/android/version.txt2
-rw-r--r--services/settings/dumps/blocklists/addons-bloomfilters.json341
-rw-r--r--services/settings/dumps/main/devtools-compatibility-browsers.json65
-rw-r--r--services/settings/dumps/main/search-config-v2.json882
-rw-r--r--services/settings/dumps/security-state/intermediates.json434
-rw-r--r--sourcestamp.txt4
-rw-r--r--toolkit/components/search/schema/search-config-icons-schema.json2
-rw-r--r--widget/windows/nsWindow.cpp3
36 files changed, 2026 insertions, 306 deletions
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
index 27c2d13fbd..21bbb6c8a9 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -822,6 +822,10 @@ pref("browser.dataFeatureRecommendations.enabled", false);
// sets darkTheme data.
pref("browser.theme.dark-private-windows", true);
+// Pref to control whether or not Private Browsing windows show up
+// as separate icons in the Windows taskbar.
+pref("browser.privateWindowSeparation.enabled", true);
+
// Controls visibility of the privacy segmentation preferences section.
pref("browser.privacySegmentation.preferences.show", false);
diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs
index 6c156d1700..1ac7a09d2d 100644
--- a/browser/components/BrowserContentHandler.sys.mjs
+++ b/browser/components/BrowserContentHandler.sys.mjs
@@ -322,7 +322,13 @@ function openBrowserWindow(
Ci.nsILoadContext
).usePrivateBrowsing = true;
- if (AppConstants.platform == "win") {
+ if (
+ AppConstants.platform == "win" &&
+ Services.prefs.getBoolPref(
+ "browser.privateWindowSeparation.enabled",
+ true
+ )
+ ) {
lazy.WinTaskbar.setGroupIdForWindow(
win,
lazy.WinTaskbar.defaultPrivateGroupId
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
index 81889db040..2f2aa0ac49 100644
--- a/browser/components/BrowserGlue.sys.mjs
+++ b/browser/components/BrowserGlue.sys.mjs
@@ -2743,6 +2743,10 @@ BrowserGlue.prototype = {
name: "ensurePrivateBrowsingShortcutExists",
condition:
AppConstants.platform == "win" &&
+ Services.prefs.getBoolPref(
+ "browser.privateWindowSeparation.enabled",
+ true
+ ) &&
// We don't want a shortcut if it's been disabled, eg: by enterprise policy.
lazy.PrivateBrowsingUtils.enabled &&
// Private Browsing shortcuts for packaged builds come with the package,
diff --git a/browser/config/version.txt b/browser/config/version.txt
index 29810a755b..6f1605c380 100644
--- a/browser/config/version.txt
+++ b/browser/config/version.txt
@@ -1 +1 @@
-127.0.1
+127.0.2
diff --git a/browser/config/version_display.txt b/browser/config/version_display.txt
index 29810a755b..6f1605c380 100644
--- a/browser/config/version_display.txt
+++ b/browser/config/version_display.txt
@@ -1 +1 @@
-127.0.1
+127.0.2
diff --git a/browser/extensions/webcompat/data/injections.js b/browser/extensions/webcompat/data/injections.js
index 87b1da747b..a188a40f8d 100644
--- a/browser/extensions/webcompat/data/injections.js
+++ b/browser/extensions/webcompat/data/injections.js
@@ -1056,6 +1056,20 @@ const AVAILABLE_INJECTIONS = [
],
},
},
+ {
+ id: "1882040",
+ platform: "android",
+ domain: "YouTube Shorts",
+ bug: "1882040",
+ contentScripts: {
+ matches: ["*://m.youtube.com/shorts/*"],
+ css: [
+ {
+ file: "injections/css/bug1882040-disable-pull-to-refresh.css",
+ },
+ ],
+ },
+ },
];
module.exports = AVAILABLE_INJECTIONS;
diff --git a/browser/extensions/webcompat/injections/css/bug1882040-disable-pull-to-refresh.css b/browser/extensions/webcompat/injections/css/bug1882040-disable-pull-to-refresh.css
new file mode 100644
index 0000000000..b075f96212
--- /dev/null
+++ b/browser/extensions/webcompat/injections/css/bug1882040-disable-pull-to-refresh.css
@@ -0,0 +1,14 @@
+/* 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/. */
+
+/**
+ * m.youtube.com/shorts - pull-to-refresh breaks scrolling
+ * Bug #1882040 - https://bugzilla.mozilla.org/show_bug.cgi?id=1882040
+ *
+ * Pull-to-refresh is breaking scrolling on the YouTube Shorts mobile page.
+ * The easiest work-around is to inject this CSS to disable it for now.
+ */
+html {
+ overscroll-behavior: contain;
+}
diff --git a/browser/extensions/webcompat/manifest.json b/browser/extensions/webcompat/manifest.json
index 683ea6c1ae..a0af51cd32 100644
--- a/browser/extensions/webcompat/manifest.json
+++ b/browser/extensions/webcompat/manifest.json
@@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "Web Compatibility Interventions",
"description": "Urgent post-release fixes for web compatibility.",
- "version": "125.1.0",
+ "version": "125.2.0",
"browser_specific_settings": {
"gecko": {
"id": "webcompat@mozilla.org",
diff --git a/browser/extensions/webcompat/moz.build b/browser/extensions/webcompat/moz.build
index a40641f33b..a42e7cb0eb 100644
--- a/browser/extensions/webcompat/moz.build
+++ b/browser/extensions/webcompat/moz.build
@@ -76,6 +76,7 @@ FINAL_TARGET_FILES.features["webcompat@mozilla.org"]["injections"]["css"] += [
"injections/css/bug1849388-kucharkaprodceru.cz-scroll-fix.css",
"injections/css/bug1868345-tvmovie.de-scroll-fix.css",
"injections/css/bug1877346-offerup.com-infinite-scroll-fix.css",
+ "injections/css/bug1882040-disable-pull-to-refresh.css",
"injections/css/bug1884842-foodora.cz-height-fix.css",
]
diff --git a/browser/installer/windows/nsis/shared.nsh b/browser/installer/windows/nsis/shared.nsh
index f9f50a5afa..f9cd1feac1 100755
--- a/browser/installer/windows/nsis/shared.nsh
+++ b/browser/installer/windows/nsis/shared.nsh
@@ -175,6 +175,9 @@
; updated, but only if we're not the instance of PostUpdate that was started
; by the service, because this needs to run as the actual user. Also, don't do
; that if the installer was told not to register the agent task at all.
+; XXXbytesized - This also needs to un-register any scheduled tasks for the WDBA
+; that were registered using elevation, but currently it does
+; not. See Bugs 1638509 and 1902719.
!ifdef MOZ_DEFAULT_BROWSER_AGENT
${If} $TmpVal == "HKCU"
ClearErrors
@@ -184,10 +187,6 @@ ${If} $TmpVal == "HKCU"
${OrIf} ${Errors}
ExecWait '"$INSTDIR\default-browser-agent.exe" register-task $AppUserModelID'
${EndIf}
-${ElseIf} $TmpVal == "HKLM"
- ; If we're the privileged PostUpdate, make sure that the unprivileged one
- ; will have permission to create a task by clearing out the old one first.
- ExecWait '"$INSTDIR\default-browser-agent.exe" unregister-task $AppUserModelID'
${EndIf}
!endif
diff --git a/build/unix/elfhack/elfhack.cpp b/build/unix/elfhack/elfhack.cpp
index 719d4ac8f5..baedadedf0 100644
--- a/build/unix/elfhack/elfhack.cpp
+++ b/build/unix/elfhack/elfhack.cpp
@@ -1116,7 +1116,7 @@ int do_relocation_section(Elf* elf, unsigned int rel_type,
// can actually use it)
if (elf->getSegmentByType(PT_GNU_RELRO)) {
ElfSection* gnu_versym = dyn->getSectionForType(DT_VERSYM);
- auto lookup = [&symtab, &gnu_versym](const char* symbol) {
+ auto ensure_symbol = [&symtab, &gnu_versym](const char* symbol) {
Elf_SymValue* sym_value = symtab->lookup(symbol, STT(FUNC));
if (!sym_value) {
symtab->syms.emplace_back();
@@ -1138,11 +1138,13 @@ int do_relocation_section(Elf* elf, unsigned int rel_type,
gnu_versym->grow(gnu_versym->getSize() + gnu_versym->getEntSize());
}
}
- return sym_value;
};
-
- Elf_SymValue* mprotect = lookup("mprotect");
- Elf_SymValue* sysconf = lookup("sysconf");
+ // ensure_symbol may trigger a symbol table vector resize, so only lookup
+ // the symbols after we're done touching the symbol table.
+ ensure_symbol("mprotect");
+ ensure_symbol("sysconf");
+ Elf_SymValue* mprotect = symtab->lookup("mprotect", STT(FUNC));
+ Elf_SymValue* sysconf = symtab->lookup("sysconf", STT(FUNC));
// Add relocations for the mprotect and sysconf symbols.
auto add_relocation_to = [&new_rels, &symtab, rel_type2](
diff --git a/config/milestone.txt b/config/milestone.txt
index fccd17fbc2..5cd787dc83 100644
--- a/config/milestone.txt
+++ b/config/milestone.txt
@@ -10,4 +10,4 @@
# hardcoded milestones in the tree from these two files.
#--------------------------------------------------------
-127.0.1
+127.0.2
diff --git a/debian/changelog b/debian/changelog
index a02b822d0c..59f95a79a6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,118 @@
+firefox (127.0.2-1~progress7.99u1) graograman-backports; urgency=medium
+
+ * Uploading to graograman-backports, remaining changes:
+ - Updating maintainer field.
+ - Updating uploaders field.
+ - Updating bugs field.
+ - Updating vcs fields.
+ - Adding keyword bookmarks.
+ - Moving unified extensions button to the right in navbar.
+ - Including javascript configuration files for Progress Linux.
+ - Building with gcc-13 to fix FTBFS.
+ - Adding arkenfox user.js version 126.1.
+ - user.js: Setting startup to restore previous session.
+ - user.js: Disabling safe browsing.
+ - user.js: Disabling DNS-over-HTTPs to use local DNS resolver only.
+ - user.js: Disabling urlbar engine suggestions.
+ - user.js: Reverting to default disk cache behaviour.
+ - user.js: Reverting to default cross-origin policy.
+ - user.js: Reverting to default WebRTC preferences.
+ - user.js: Enabling to use download directory by default.
+ - user.js: Enabling system extensions.
+ - user.js: Disabling to clear items on shutdown.
+ - user.js: Enabling to clear cookies by default on manual clear.
+ - user.js: Enabling to clear site settings by default on manual clear.
+ - user.js: Setting default timespan to 'last hour' for manual clear.
+ - user.js: Disabling resist fingerprinting.
+ - user.js: Enabling limiting events that can cause a pop-up.
+ - user.js: Disabling page thumbnail collection.
+ - user.js: Disabling location bar using search.
+ - user.js: Disabling firefox-view tab.
+ - user.js: Enabling to warn on close.
+ - user.js: Disabling to show bookmarks toolbar by default.
+ - user.js: Disabling automatic translation pop-up.
+ - user.js: Disabling promo ads.
+ - user.js: Disabling pocket extension.
+ - user.js: Disabling fullscreen warnings.
+ - user.js: Disabling fullscreen transition.
+ - user.js: Disabling smooth scrolling.
+ - user.js: Disabling spellcheck.
+ - user.js: Disabling autoplay of HTML5 media.
+ - user.js: Setting increased network connection limits.
+ - user.js: Enabling do-not-track header.
+ - user.js: Enabling password import option.
+ - user.js: Trimming comments.
+ - user.js: Trimming syntax checks.
+ - user.js: Trimming other OS prefs.
+ - user.js: Trimming unused prefs.
+ - Regenerating debian files.
+ * Merging upstream version 127.0.2.
+ * Merging debian version 127.0.2-1.
+
+ -- Daniel Baumann <daniel.baumann@progress-linux.org> Wed, 26 Jun 2024 08:20:27 +0200
+
+firefox (127.0.2-1) unstable; urgency=medium
+
+ * New upstream release.
+
+ * debian/repack.py, debian/upstream.mk: Handle the upstream l10n migration
+ to github.
+
+ -- Mike Hommey <glandium@debian.org> Wed, 26 Jun 2024 05:19:57 +0900
+
+firefox (127.0.1-1~progress7.99u1) graograman-backports; urgency=medium
+
+ * Uploading to graograman-backports, remaining changes:
+ - Updating maintainer field.
+ - Updating uploaders field.
+ - Updating bugs field.
+ - Updating vcs fields.
+ - Adding keyword bookmarks.
+ - Moving unified extensions button to the right in navbar.
+ - Including javascript configuration files for Progress Linux.
+ - Building with gcc-13 to fix FTBFS.
+ - Adding arkenfox user.js version 126.1.
+ - user.js: Setting startup to restore previous session.
+ - user.js: Disabling safe browsing.
+ - user.js: Disabling DNS-over-HTTPs to use local DNS resolver only.
+ - user.js: Disabling urlbar engine suggestions.
+ - user.js: Reverting to default disk cache behaviour.
+ - user.js: Reverting to default cross-origin policy.
+ - user.js: Reverting to default WebRTC preferences.
+ - user.js: Enabling to use download directory by default.
+ - user.js: Enabling system extensions.
+ - user.js: Disabling to clear items on shutdown.
+ - user.js: Enabling to clear cookies by default on manual clear.
+ - user.js: Enabling to clear site settings by default on manual clear.
+ - user.js: Setting default timespan to 'last hour' for manual clear.
+ - user.js: Disabling resist fingerprinting.
+ - user.js: Enabling limiting events that can cause a pop-up.
+ - user.js: Disabling page thumbnail collection.
+ - user.js: Disabling location bar using search.
+ - user.js: Disabling firefox-view tab.
+ - user.js: Enabling to warn on close.
+ - user.js: Disabling to show bookmarks toolbar by default.
+ - user.js: Disabling automatic translation pop-up.
+ - user.js: Disabling promo ads.
+ - user.js: Disabling pocket extension.
+ - user.js: Disabling fullscreen warnings.
+ - user.js: Disabling fullscreen transition.
+ - user.js: Disabling smooth scrolling.
+ - user.js: Disabling spellcheck.
+ - user.js: Disabling autoplay of HTML5 media.
+ - user.js: Setting increased network connection limits.
+ - user.js: Enabling do-not-track header.
+ - user.js: Enabling password import option.
+ - user.js: Trimming comments.
+ - user.js: Trimming syntax checks.
+ - user.js: Trimming other OS prefs.
+ - user.js: Trimming unused prefs.
+ - Regenerating debian files.
+ * Merging upstream version 127.0.1.
+ * Merging debian version 127.0.1-1.
+
+ -- Daniel Baumann <daniel.baumann@progress-linux.org> Thu, 20 Jun 2024 06:04:13 +0200
+
firefox (127.0.1-1) unstable; urgency=medium
* New upstream release.
diff --git a/debian/patches/debian-hacks/Don-t-auto-disable-extensions-in-system-directories.patch b/debian/patches/debian-hacks/Don-t-auto-disable-extensions-in-system-directories.patch
index 19982a7ff3..fe1a16a22b 100644
--- a/debian/patches/debian-hacks/Don-t-auto-disable-extensions-in-system-directories.patch
+++ b/debian/patches/debian-hacks/Don-t-auto-disable-extensions-in-system-directories.patch
@@ -7,7 +7,7 @@ Subject: Don't auto-disable extensions in system directories
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
-index 27c2d13..f569582 100644
+index 21bbb6c..8ba8920 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -56,7 +56,7 @@ pref("extensions.systemAddon.update.enabled", true);
diff --git a/debian/repack.py b/debian/repack.py
index 84d6ca6ae3..9d23054ce8 100755
--- a/debian/repack.py
+++ b/debian/repack.py
@@ -147,7 +147,7 @@ class ZipAsTar(object):
yield tar_info
-def filter_archive(orig, new, filt, topdir = None):
+def filter_archive(orig, new, filt, topdir=None, strip=0, split_off=None):
filt = TarFilterList(filt)
is_url = urlparse(orig).scheme
if orig.endswith(".zip"):
@@ -166,13 +166,38 @@ def filter_archive(orig, new, filt, topdir = None):
tar = tarfile.open(orig, "r:" + file_extension(orig), fileobj)
format = tar.format
- new_tar = tarfile.open(new + ".new", "w:" + file_extension(new), format=format)
+ new_tars = {}
+
+ def apply_filter(info, namefilt):
+ info.name = namefilt(info.name)
+ if "path" in info.pax_headers:
+ info.pax_headers["path"] = namefilt(info.pax_headers["path"])
+
+ this_new = new
+ this_topdir = topdir
+
for info in tar:
- if topdir:
- namefilt = lambda n: "/".join([topdir] + n.split("/")[1:])
- info.name = namefilt(info.name)
- if "path" in info.pax_headers:
- info.pax_headers["path"] = namefilt(info.pax_headers["path"])
+ if strip:
+ apply_filter(info, lambda n: "/".join(n.split("/")[strip:]))
+
+ if split_off:
+ first = info.name.partition("/")[0]
+ if first not in split_off:
+ continue
+ this_new = new.replace("%", first)
+ if topdir:
+ this_topdir = topdir.replace("%", first)
+
+ new_tar = new_tars.get(this_new)
+ if not new_tar:
+ if split_off:
+ print(this_new)
+ new_tar = new_tars[this_new] = tarfile.open(
+ this_new + ".new", "w:" + file_extension(this_new), format=format
+ )
+
+ if this_topdir:
+ apply_filter(info, lambda n: "/".join([this_topdir] + n.split("/")[1:]))
do_filt = filt.match(info.name)
if do_filt == None:
@@ -205,8 +230,18 @@ def filter_archive(orig, new, filt, topdir = None):
new_tar.addfile(info)
tar.close()
- new_tar.close()
- os.rename(new_tar.name, new)
+ if split_off:
+ expected_new = set(new.replace("%", s) for s in split_off)
+ got_new = set(new_tars)
+ missing = expected_new - got_new
+ for m in sorted(missing):
+ print(f"Missing {m}")
+ if missing:
+ sys.exit(1)
+
+ for new, new_tar in new_tars.items():
+ new_tar.close()
+ os.rename(new_tar.name, new)
unused = filt.unused()
if unused:
print('Unused filters:')
@@ -225,6 +260,10 @@ def main():
help="use the given filter list", metavar="FILE")
parser.add_option("-p", "--package", dest="package",
help="use the given package name", metavar="NAME")
+ parser.add_option("--strip", dest="strip", type=int, default=0,
+ help="Strip n first elements of the path")
+ parser.add_option("--split-off", dest="split_off",
+ help="Comma-separated list of top-level directories to split in different output tarballs")
parser.add_option("-o", "--output", dest="new_file",
help="save the filtered tarball as the given file name", metavar="FILE")
parser.add_option("-t", "--topdir", dest="topdir",
@@ -249,6 +288,17 @@ def main():
if options.new_file:
new_file = options.new_file
+ elif options.split_off:
+ parser.error("When using --split-off, --output must be given")
+
+ if options.split_off:
+ split_off = options.split_off.split(",")
+ if options.topdir and "%" not in options.topdir:
+ parser.error("When using --split-off, --topdir must contain a % character")
+ if "%" not in options.new_file:
+ parser.error("When using --split-off, --output must contain a % character")
+ else:
+ split_off = None
if os.path.islink(args[0]):
orig = os.path.realpath(args[0])
@@ -260,8 +310,17 @@ def main():
if not new_file:
new_file = options.package + "_" + options.upstream_version + ".orig.tar." + compression
new_file = os.path.realpath(os.path.join(dirname(orig), new_file))
+
print(orig, new_file)
- filter_archive(orig, new_file, options.filter, options.topdir)
+ filter_archive(
+ orig,
+ new_file,
+ options.filter,
+ topdir=options.topdir,
+ strip=options.strip,
+ split_off=split_off,
+ )
+
if __name__ == '__main__':
main()
diff --git a/debian/upstream.mk b/debian/upstream.mk
index 0b5c66a2e3..c8c2dffb43 100644
--- a/debian/upstream.mk
+++ b/debian/upstream.mk
@@ -148,9 +148,12 @@ endif
L10N_REV = $(subst $1:,,$(filter $1:%,$(L10N_CHANGESETS)))
L10N_LANGS = $(foreach lang,$(L10N_CHANGESETS),$(firstword $(subst :, ,$(lang))))
+L10N_REVS = $(sort $(foreach lang,$(L10N_LANGS),$(call L10N_REV,$(lang))))
+THE_L10N_REV = $(if $(filter 1,$(words $(L10N_REVS))),$(L10N_REVS),$(error multiple l10n revisions))
ifneq (,$(filter dump dump-% import download,$(MAKECMDGOALS)))
-L10N_TARBALLS = $(foreach lang,$(L10N_LANGS),$(SOURCE_TARBALL_LOCATION)/$(SOURCE_TARBALL:%.orig.tar.$(SOURCE_TARBALL_EXT)=%.orig-l10n-$(lang).tar.bz2))
+L10N_TARBALL = $(SOURCE_TARBALL_LOCATION)/$(SOURCE_TARBALL:%.orig.tar.$(SOURCE_TARBALL_EXT)=%.orig-l10n-$1.tar.bz2)
+L10N_TARBALLS = $(foreach lang,$(L10N_LANGS),$(call L10N_TARBALL,$(lang)))
ALL_TARBALLS = $(SOURCE_TARBALL_LOCATION)/$(SOURCE_TARBALL) $(L10N_TARBALLS)
@@ -163,7 +166,13 @@ $(SOURCE_TARBALL_LOCATION)/$(SOURCE_TARBALL): debian/source.filter
$(if $(filter-out $(VERSION),$(SOURCE_BUILD_VERSION)),$(error Downloaded version ($(SOURCE_BUILD_VERSION)) does not match requested version ($(VERSION))))
debian/repack.py -o $@ $(SOURCE_URL)
+ifneq (1,$(words $(L10N_REVS)))
$(L10N_TARBALLS): $(SOURCE_TARBALL_LOCATION)/$(SOURCE_TARBALL:%.orig.tar.$(SOURCE_TARBALL_EXT)=%.orig-l10n-%.tar.bz2): debian/l10n.filter
debian/repack.py -o $@ -t $* -f debian/l10n.filter $(L10N_REPO)/$*/archive/$(call L10N_REV,$*).zip
+else
+COMMA=,
+$(subst -l10n-,%,$(L10N_TARBALLS)): debian/l10n.filter
+ debian/repack.py -o $(call L10N_TARBALL,%) --strip 1 --split-off $(subst $(NULL) $(NULL),$(COMMA),$(L10N_LANGS)) -t l10n-% -f debian/l10n.filter https://github.com/mozilla-l10n/firefox-l10n/archive/$(THE_L10N_REV).tar.gz
+endif
endif
.PHONY: download
diff --git a/dom/media/mediasource/TrackBuffersManager.cpp b/dom/media/mediasource/TrackBuffersManager.cpp
index c87fa239f1..58ba7c250b 100644
--- a/dom/media/mediasource/TrackBuffersManager.cpp
+++ b/dom/media/mediasource/TrackBuffersManager.cpp
@@ -922,7 +922,11 @@ void TrackBuffersManager::SegmentParserLoop() {
if (mNewMediaSegmentStarted) {
if (NS_SUCCEEDED(newData) && mLastParsedEndTime.isSome() &&
start < mLastParsedEndTime.ref()) {
- MSE_DEBUG("Re-creating demuxer");
+ MSE_DEBUG("Re-creating demuxer, new start (%" PRId64
+ ") is smaller than last parsed end time (%" PRId64 ")",
+ start.ToMicroseconds(),
+ mLastParsedEndTime->ToMicroseconds());
+ mFrameEndTimeBeforeRecreateDemuxer = Some(end);
ResetDemuxingState();
return;
}
@@ -1038,8 +1042,15 @@ void TrackBuffersManager::CreateDemuxerforMIMEType() {
if (mType.Type() == MEDIAMIMETYPE(VIDEO_WEBM) ||
mType.Type() == MEDIAMIMETYPE(AUDIO_WEBM)) {
- mInputDemuxer =
- new WebMDemuxer(mCurrentInputBuffer, true /* IsMediaSource*/);
+ if (mFrameEndTimeBeforeRecreateDemuxer) {
+ MSE_DEBUG(
+ "CreateDemuxerFromMimeType: "
+ "mFrameEndTimeBeforeRecreateDemuxer=%" PRId64,
+ mFrameEndTimeBeforeRecreateDemuxer->ToMicroseconds());
+ }
+ mInputDemuxer = new WebMDemuxer(mCurrentInputBuffer, true,
+ mFrameEndTimeBeforeRecreateDemuxer);
+ mFrameEndTimeBeforeRecreateDemuxer.reset();
DDLINKCHILD("demuxer", mInputDemuxer.get());
return;
}
@@ -1047,6 +1058,7 @@ void TrackBuffersManager::CreateDemuxerforMIMEType() {
if (mType.Type() == MEDIAMIMETYPE(VIDEO_MP4) ||
mType.Type() == MEDIAMIMETYPE(AUDIO_MP4)) {
mInputDemuxer = new MP4Demuxer(mCurrentInputBuffer);
+ mFrameEndTimeBeforeRecreateDemuxer.reset();
DDLINKCHILD("demuxer", mInputDemuxer.get());
return;
}
@@ -1625,9 +1637,11 @@ void TrackBuffersManager::MaybeDispatchEncryptedEvent(
void TrackBuffersManager::OnVideoDemuxCompleted(
const RefPtr<MediaTrackDemuxer::SamplesHolder>& aSamples) {
mTaskQueueCapability->AssertOnCurrentThread();
- MSE_DEBUG("%zu video samples demuxed", aSamples->GetSamples().Length());
mVideoTracks.mDemuxRequest.Complete();
mVideoTracks.mQueuedSamples.AppendElements(aSamples->GetSamples());
+ MSE_DEBUG("%zu video samples demuxed, queued-sz=%zu",
+ aSamples->GetSamples().Length(),
+ mVideoTracks.mQueuedSamples.Length());
MaybeDispatchEncryptedEvent(aSamples->GetSamples());
DoDemuxAudio();
@@ -1892,6 +1906,9 @@ void TrackBuffersManager::ProcessFrames(TrackBuffer& aSamples,
// coded frame.
if (!sample->mKeyframe) {
previouslyDroppedSample = nullptr;
+ SAMPLE_DEBUGV("skipping sample [%" PRId64 ",%" PRId64 "]",
+ sample->mTime.ToMicroseconds(),
+ sample->GetEndTime().ToMicroseconds());
continue;
}
// 2. Set the need random access point flag on track buffer to false.
@@ -1971,6 +1988,7 @@ void TrackBuffersManager::ProcessFrames(TrackBuffer& aSamples,
// 4. Unset the highest end timestamp on all track buffers.
// 5. Set the need random access point flag on all track buffers to
// true.
+ MSE_DEBUG("Resetting append state");
track->ResetAppendState();
}
// 6. Jump to the Loop Top step above to restart processing of the current
@@ -2553,10 +2571,12 @@ void TrackBuffersManager::RecreateParser(bool aReuseInitData) {
mParser = ContainerParser::CreateForMIMEType(mType);
DDLINKCHILD("parser", mParser.get());
if (aReuseInitData && mInitData) {
+ MSE_DEBUG("Using existing init data to reset parser");
TimeUnit start, end;
mParser->ParseStartAndEndTimestamps(MediaSpan(mInitData), start, end);
mProcessedInput = mInitData->Length();
} else {
+ MSE_DEBUG("Resetting parser, not reusing init data");
mProcessedInput = 0;
}
}
@@ -2843,12 +2863,20 @@ const MediaRawData* TrackBuffersManager::GetSample(TrackInfo::TrackType aTrack,
const TrackBuffer& track = GetTrackBuffer(aTrack);
if (aIndex >= track.Length()) {
+ MSE_DEBUGV(
+ "Can't get sample due to reaching to the end, index=%u, "
+ "length=%zu",
+ aIndex, track.Length());
// reached the end.
return nullptr;
}
if (!(aExpectedDts + aFuzz).IsValid() || !(aExpectedPts + aFuzz).IsValid()) {
// Time overflow, it seems like we also reached the end.
+ MSE_DEBUGV("Can't get sample due to time overflow, expectedPts=%" PRId64
+ ", aExpectedDts=%" PRId64 ", fuzz=%" PRId64,
+ aExpectedPts.ToMicroseconds(), aExpectedPts.ToMicroseconds(),
+ aFuzz.ToMicroseconds());
return nullptr;
}
@@ -2859,6 +2887,12 @@ const MediaRawData* TrackBuffersManager::GetSample(TrackInfo::TrackType aTrack,
return sample;
}
+ MSE_DEBUGV("Can't get sample due to big gap, sample=%" PRId64
+ ", expectedPts=%" PRId64 ", aExpectedDts=%" PRId64
+ ", fuzz=%" PRId64,
+ sample->mTime.ToMicroseconds(), aExpectedPts.ToMicroseconds(),
+ aExpectedPts.ToMicroseconds(), aFuzz.ToMicroseconds());
+
// Gap is too big. End of Stream or Waiting for Data.
// TODO, check that we have continuous data based on the sanitized buffered
// range instead.
diff --git a/dom/media/mediasource/TrackBuffersManager.h b/dom/media/mediasource/TrackBuffersManager.h
index c72f2f5453..0e9c857586 100644
--- a/dom/media/mediasource/TrackBuffersManager.h
+++ b/dom/media/mediasource/TrackBuffersManager.h
@@ -568,6 +568,8 @@ class TrackBuffersManager final
// mTaskQueue. However, there's special locking around mTaskQueue, so we keep
// both for now.
Maybe<EventTargetCapability<TaskQueue>> mTaskQueueCapability;
+
+ Maybe<media::TimeUnit> mFrameEndTimeBeforeRecreateDemuxer;
};
} // namespace mozilla
diff --git a/dom/media/webm/NesteggPacketHolder.h b/dom/media/webm/NesteggPacketHolder.h
index 7c74f752d3..e1e7822106 100644
--- a/dom/media/webm/NesteggPacketHolder.h
+++ b/dom/media/webm/NesteggPacketHolder.h
@@ -25,11 +25,12 @@ class NesteggPacketHolder {
mOffset(-1),
mTimestamp(-1),
mDuration(-1),
+ mDefaultDuration(-1),
mTrack(0),
mIsKeyframe(false) {}
- bool Init(nestegg_packet* aPacket, int64_t aOffset, unsigned aTrack,
- bool aIsKeyframe) {
+ bool Init(nestegg_packet* aPacket, nestegg* aContext, int64_t aOffset,
+ unsigned aTrack, bool aIsKeyframe) {
uint64_t timestamp_ns;
if (nestegg_packet_tstamp(aPacket, &timestamp_ns) == -1) {
return false;
@@ -47,6 +48,10 @@ class NesteggPacketHolder {
if (!nestegg_packet_duration(aPacket, &duration_ns)) {
mDuration = duration_ns / 1000;
}
+ if (!nestegg_track_default_duration(aContext, mTrack, &duration_ns)) {
+ mDefaultDuration = duration_ns / 1000;
+ }
+
return true;
}
@@ -66,6 +71,10 @@ class NesteggPacketHolder {
MOZ_ASSERT(IsInitialized());
return mDuration;
}
+ int64_t DefaultDuration() const {
+ MOZ_ASSERT(IsInitialized());
+ return mDefaultDuration;
+ }
unsigned Track() {
MOZ_ASSERT(IsInitialized());
return mTrack;
@@ -78,7 +87,7 @@ class NesteggPacketHolder {
private:
~NesteggPacketHolder() { nestegg_free_packet(mPacket); }
- bool IsInitialized() { return mOffset >= 0; }
+ bool IsInitialized() const { return mOffset >= 0; }
nestegg_packet* mPacket;
@@ -90,8 +99,13 @@ class NesteggPacketHolder {
int64_t mTimestamp;
// Packet duration in microseconds; -1 if unknown or retrieval failed.
+ // https://www.webmproject.org/docs/container/#BlockDuration
int64_t mDuration;
+ // Default durtaion in microseconds; -1 if unknown or retrieval failed.
+ // https://www.webmproject.org/docs/container/#Duration
+ int64_t mDefaultDuration;
+
// Track ID.
unsigned mTrack;
diff --git a/dom/media/webm/WebMDemuxer.cpp b/dom/media/webm/WebMDemuxer.cpp
index da14118205..48d3d57ed9 100644
--- a/dom/media/webm/WebMDemuxer.cpp
+++ b/dom/media/webm/WebMDemuxer.cpp
@@ -15,6 +15,7 @@
#include "gfx2DGlue.h"
#include "gfxUtils.h"
#include "mozilla/EndianUtils.h"
+#include "mozilla/Maybe.h"
#include "mozilla/SharedThreadPool.h"
#include "MediaDataDemuxer.h"
#include "nsAutoRef.h"
@@ -150,7 +151,9 @@ int WebMDemuxer::NestEggContext::Init() {
WebMDemuxer::WebMDemuxer(MediaResource* aResource)
: WebMDemuxer(aResource, false) {}
-WebMDemuxer::WebMDemuxer(MediaResource* aResource, bool aIsMediaSource)
+WebMDemuxer::WebMDemuxer(
+ MediaResource* aResource, bool aIsMediaSource,
+ Maybe<media::TimeUnit> aFrameEndTimeBeforeRecreateDemuxer)
: mVideoContext(this, aResource),
mAudioContext(this, aResource),
mBufferedState(nullptr),
@@ -169,6 +172,14 @@ WebMDemuxer::WebMDemuxer(MediaResource* aResource, bool aIsMediaSource)
// Audio/video contexts hold a MediaResourceIndex.
DDLINKCHILD("video context", mVideoContext.GetResource());
DDLINKCHILD("audio context", mAudioContext.GetResource());
+
+ MOZ_ASSERT_IF(!aIsMediaSource,
+ aFrameEndTimeBeforeRecreateDemuxer.isNothing());
+ if (aIsMediaSource && aFrameEndTimeBeforeRecreateDemuxer) {
+ mVideoFrameEndTimeBeforeReset = aFrameEndTimeBeforeRecreateDemuxer;
+ WEBM_DEBUG("Set mVideoFrameEndTimeBeforeReset=%" PRId64,
+ mVideoFrameEndTimeBeforeReset->ToMicroseconds());
+ }
}
WebMDemuxer::~WebMDemuxer() {
@@ -588,6 +599,12 @@ nsresult WebMDemuxer::GetNextPacket(TrackInfo::TrackType aType,
}
int64_t tstamp = holder->Timestamp();
int64_t duration = holder->Duration();
+ int64_t defaultDuration = holder->DefaultDuration();
+ if (aType == TrackInfo::TrackType::kVideoTrack) {
+ WEBM_DEBUG("GetNextPacket(video): tstamp=%" PRId64 ", duration=%" PRId64
+ ", defaultDuration=%" PRId64,
+ tstamp, duration, defaultDuration);
+ }
// The end time of this frame is the start time of the next frame. Fetch
// the timestamp of the next packet for this track. If we've reached the
@@ -610,6 +627,12 @@ nsresult WebMDemuxer::GetNextPacket(TrackInfo::TrackType aType,
next_tstamp = tstamp + duration;
} else if (lastFrameTime.isSome()) {
next_tstamp = tstamp + (tstamp - lastFrameTime.ref());
+ } else if (defaultDuration >= 0) {
+ next_tstamp = tstamp + defaultDuration;
+ } else if (mVideoFrameEndTimeBeforeReset) {
+ WEBM_DEBUG("Setting next timestamp to be %" PRId64 " us",
+ mVideoFrameEndTimeBeforeReset->ToMicroseconds());
+ next_tstamp = mVideoFrameEndTimeBeforeReset->ToMicroseconds();
} else if (mIsMediaSource) {
(this->*pushPacket)(holder);
} else {
@@ -930,7 +953,7 @@ nsresult WebMDemuxer::DemuxPacket(TrackInfo::TrackType aType,
int64_t offset = Resource(aType).Tell();
RefPtr<NesteggPacketHolder> holder = new NesteggPacketHolder();
- if (!holder->Init(packet, offset, track, false)) {
+ if (!holder->Init(packet, Context(aType), offset, track, false)) {
WEBM_DEBUG("NesteggPacketHolder::Init: error");
return NS_ERROR_DOM_MEDIA_DEMUXER_ERR;
}
diff --git a/dom/media/webm/WebMDemuxer.h b/dom/media/webm/WebMDemuxer.h
index 3b3bdc21e2..28407908a9 100644
--- a/dom/media/webm/WebMDemuxer.h
+++ b/dom/media/webm/WebMDemuxer.h
@@ -94,7 +94,9 @@ class WebMDemuxer : public MediaDataDemuxer,
explicit WebMDemuxer(MediaResource* aResource);
// Indicate if the WebMDemuxer is to be used with MediaSource. In which
// case the demuxer will stop reads to the last known complete block.
- WebMDemuxer(MediaResource* aResource, bool aIsMediaSource);
+ WebMDemuxer(
+ MediaResource* aResource, bool aIsMediaSource,
+ Maybe<media::TimeUnit> aFrameEndTimeBeforeRecreateDemuxer = Nothing());
RefPtr<InitPromise> Init() override;
@@ -223,6 +225,8 @@ class WebMDemuxer : public MediaDataDemuxer,
Maybe<int64_t> mLastAudioFrameTime;
Maybe<int64_t> mLastVideoFrameTime;
+ Maybe<media::TimeUnit> mVideoFrameEndTimeBeforeReset;
+
// Codec ID of audio track
int mAudioCodec;
// Codec ID of video track
diff --git a/mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/data/injections.js b/mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/data/injections.js
index 87b1da747b..a188a40f8d 100644
--- a/mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/data/injections.js
+++ b/mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/data/injections.js
@@ -1056,6 +1056,20 @@ const AVAILABLE_INJECTIONS = [
],
},
},
+ {
+ id: "1882040",
+ platform: "android",
+ domain: "YouTube Shorts",
+ bug: "1882040",
+ contentScripts: {
+ matches: ["*://m.youtube.com/shorts/*"],
+ css: [
+ {
+ file: "injections/css/bug1882040-disable-pull-to-refresh.css",
+ },
+ ],
+ },
+ },
];
module.exports = AVAILABLE_INJECTIONS;
diff --git a/mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/injections/css/bug1882040-disable-pull-to-refresh.css b/mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/injections/css/bug1882040-disable-pull-to-refresh.css
new file mode 100644
index 0000000000..b075f96212
--- /dev/null
+++ b/mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/injections/css/bug1882040-disable-pull-to-refresh.css
@@ -0,0 +1,14 @@
+/* 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/. */
+
+/**
+ * m.youtube.com/shorts - pull-to-refresh breaks scrolling
+ * Bug #1882040 - https://bugzilla.mozilla.org/show_bug.cgi?id=1882040
+ *
+ * Pull-to-refresh is breaking scrolling on the YouTube Shorts mobile page.
+ * The easiest work-around is to inject this CSS to disable it for now.
+ */
+html {
+ overscroll-behavior: contain;
+}
diff --git a/mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/manifest.json b/mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/manifest.json
index 6f6d519d7c..8353eee2f4 100644
--- a/mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/manifest.json
+++ b/mobile/android/android-components/components/feature/webcompat/src/main/assets/extensions/webcompat/manifest.json
@@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "Mozilla Android Components - Web Compatibility Interventions",
"description": "Urgent post-release fixes for web compatibility.",
- "version": "125.0.0",
+ "version": "125.2.0",
"browser_specific_settings": {
"gecko": {
"id": "webcompat@mozilla.org",
diff --git a/mobile/android/fenix/app/metrics.yaml b/mobile/android/fenix/app/metrics.yaml
index a620eb4d39..2b94cb5cd4 100644
--- a/mobile/android/fenix/app/metrics.yaml
+++ b/mobile/android/fenix/app/metrics.yaml
@@ -7731,6 +7731,20 @@ first_session:
tags:
- Performance
- Attribution
+ install_source:
+ type: string
+ lifetime: application
+ description: |
+ Used to identify the source the app was installed from.
+ bugs:
+ - https://bugzilla.mozilla.org/show_bug.cgi?id=1898363
+ data_reviews:
+ - https://phabricator.services.mozilla.com/D212913
+ data_sensitivity:
+ - technical
+ notification_emails:
+ - android-probes@mozilla.com
+ expires: never
play_store_attribution:
install_referrer_response:
type: text
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/FirstSessionPing.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/FirstSessionPing.kt
index 0666ab06e7..d281f03c06 100644
--- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/FirstSessionPing.kt
+++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/FirstSessionPing.kt
@@ -4,8 +4,13 @@
package org.mozilla.fenix.components.metrics
+import android.annotation.SuppressLint
import android.content.Context
import android.content.SharedPreferences
+import android.content.pm.PackageManager
+import android.os.Build
+import android.os.Build.VERSION.SDK_INT
+import androidx.annotation.RequiresApi
import androidx.annotation.VisibleForTesting
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -16,6 +21,7 @@ import org.mozilla.fenix.Config
import org.mozilla.fenix.GleanMetrics.Events
import org.mozilla.fenix.GleanMetrics.FirstSession
import org.mozilla.fenix.GleanMetrics.Pings
+import org.mozilla.fenix.ext.application
import org.mozilla.fenix.ext.settings
class FirstSessionPing(private val context: Context) {
@@ -70,6 +76,7 @@ class FirstSessionPing(private val context: Context) {
},
)
FirstSession.timestamp.set()
+ FirstSession.installSource.set(installSourcePackage())
}
CoroutineScope(Dispatchers.IO).launch {
@@ -81,6 +88,38 @@ class FirstSessionPing(private val context: Context) {
}
}
+ @SuppressLint("NewApi") // Lint cannot resolve 'sdk' as 'SDK_INT' as it's not referenced directly.
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ internal fun installSourcePackage(sdk: Int = SDK_INT) = with(context.application) {
+ if (sdk >= Build.VERSION_CODES.R) {
+ installSourcePackageForBuildMinR(packageManager, packageName)
+ } else {
+ installSourcePackageForBuildMaxQ(packageManager, packageName)
+ }
+ }
+
+ @RequiresApi(Build.VERSION_CODES.R)
+ private fun installSourcePackageForBuildMinR(
+ packageManager: PackageManager,
+ packageName: String,
+ ) = try {
+ packageManager.getInstallSourceInfo(packageName).installingPackageName
+ } catch (e: PackageManager.NameNotFoundException) {
+ Logger.debug("$packageName is not available to the caller")
+ null
+ }.orEmpty()
+
+ private fun installSourcePackageForBuildMaxQ(
+ packageManager: PackageManager,
+ packageName: String,
+ ) = try {
+ @Suppress("DEPRECATION")
+ packageManager.getInstallerPackageName(packageName)
+ } catch (e: IllegalArgumentException) {
+ Logger.debug("$packageName is not installed")
+ null
+ }.orEmpty()
+
/**
* Check that at least one of the metrics values is set before sending the ping.
* Note: it is normal for many of these values to not be set as campaigns do not always
diff --git a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/components/metrics/FirstSessionPingTest.kt b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/components/metrics/FirstSessionPingTest.kt
index c3e920f2ca..10d3a20aa3 100644
--- a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/components/metrics/FirstSessionPingTest.kt
+++ b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/components/metrics/FirstSessionPingTest.kt
@@ -5,6 +5,9 @@
package org.mozilla.fenix.components.metrics
import android.content.Context
+import android.content.pm.PackageManager
+import android.os.Build
+import android.os.Build.VERSION.SDK_INT
import io.mockk.Runs
import io.mockk.every
import io.mockk.just
@@ -12,7 +15,9 @@ import io.mockk.mockk
import io.mockk.mockkStatic
import io.mockk.spyk
import io.mockk.verify
+import org.junit.Assert.assertEquals
import org.junit.Test
+import org.mozilla.fenix.FenixApplication
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.utils.Settings
@@ -20,10 +25,19 @@ internal class FirstSessionPingTest {
@Test
fun `checkAndSend() triggers the ping if it wasn't marked as triggered`() {
+ val mockedPackageManager: PackageManager = mockk(relaxed = true)
+ mockedPackageManager.configureMockInstallSourcePackage()
+
+ val mockedApplication: FenixApplication = mockk(relaxed = true)
+ every { mockedApplication.packageManager } returns mockedPackageManager
+
val mockedContext: Context = mockk(relaxed = true)
+ every { mockedContext.applicationContext } returns mockedApplication
+
val mockedSettings: Settings = mockk(relaxed = true)
mockkStatic("org.mozilla.fenix.ext.ContextKt")
every { mockedContext.settings() } returns mockedSettings
+
val mockAp = spyk(FirstSessionPing(mockedContext), recordPrivateCalls = true)
every { mockAp.checkMetricsNotEmpty() } returns true
every { mockAp.wasAlreadyTriggered() } returns false
@@ -46,4 +60,116 @@ internal class FirstSessionPingTest {
verify(exactly = 0) { mockAp.triggerPing() }
}
+
+ @Test
+ fun `WHEN build version is R installSourcePackage RETURNS the set package name`() {
+ val mockedPackageManager: PackageManager = mockk(relaxed = true)
+ val testPackageName = "test R"
+ mockedPackageManager.mockInstallSourcePackageForBuildMinR(testPackageName)
+
+ val mockedApplication: FenixApplication = mockk(relaxed = true)
+ every { mockedApplication.packageManager } returns mockedPackageManager
+
+ val mockedContext: Context = mockk(relaxed = true)
+ every { mockedContext.applicationContext } returns mockedApplication
+
+ val result = FirstSessionPing(mockedContext).installSourcePackage(Build.VERSION_CODES.R)
+ assertEquals(testPackageName, result)
+ }
+
+ @Test
+ fun `GIVEN packageManager throws an exception WHEN Build version is R installSourcePackage RETURNS an empty string`() {
+ val mockedPackageManager: PackageManager = mockk(relaxed = true)
+ every { mockedPackageManager.getInstallSourceInfo(any()).installingPackageName } throws PackageManager.NameNotFoundException()
+
+ val mockedApplication: FenixApplication = mockk(relaxed = true)
+ every { mockedApplication.packageManager } returns mockedPackageManager
+
+ val mockedContext: Context = mockk(relaxed = true)
+ every { mockedContext.applicationContext } returns mockedApplication
+
+ val result = FirstSessionPing(mockedContext).installSourcePackage(Build.VERSION_CODES.R)
+ assertEquals("", result)
+ }
+
+ @Test
+ fun `WHEN build version is more than R installSourcePackage RETURNS the set package name`() {
+ val mockedPackageManager: PackageManager = mockk(relaxed = true)
+ val testPackageName = "test > R"
+ mockedPackageManager.mockInstallSourcePackageForBuildMinR(testPackageName)
+
+ val mockedApplication: FenixApplication = mockk(relaxed = true)
+ every { mockedApplication.packageManager } returns mockedPackageManager
+
+ val mockedContext: Context = mockk(relaxed = true)
+ every { mockedContext.applicationContext } returns mockedApplication
+
+ val result =
+ FirstSessionPing(mockedContext).installSourcePackage(Build.VERSION_CODES.R.plus(1))
+ assertEquals(testPackageName, result)
+ }
+
+ @Test
+ fun `GIVEN packageManager throws an exception WHEN Build version is more than R installSourcePackage RETURNS an empty string`() {
+ val mockedPackageManager: PackageManager = mockk(relaxed = true)
+ every { mockedPackageManager.getInstallSourceInfo(any()).installingPackageName } throws PackageManager.NameNotFoundException()
+
+ val mockedApplication: FenixApplication = mockk(relaxed = true)
+ every { mockedApplication.packageManager } returns mockedPackageManager
+
+ val mockedContext: Context = mockk(relaxed = true)
+ every { mockedContext.applicationContext } returns mockedApplication
+
+ val result =
+ FirstSessionPing(mockedContext).installSourcePackage(Build.VERSION_CODES.R.plus(1))
+ assertEquals("", result)
+ }
+
+ @Test
+ fun `WHEN build version is less than R installSourcePackage RETURNS the set package name`() {
+ val mockedPackageManager: PackageManager = mockk(relaxed = true)
+ val testPackageName = "test < R"
+ mockedPackageManager.mockInstallSourcePackageForBuildMaxQ(testPackageName)
+
+ val mockedApplication: FenixApplication = mockk(relaxed = true)
+ every { mockedApplication.packageManager } returns mockedPackageManager
+
+ val mockedContext: Context = mockk(relaxed = true)
+ every { mockedContext.applicationContext } returns mockedApplication
+
+ val result =
+ FirstSessionPing(mockedContext).installSourcePackage(Build.VERSION_CODES.R.minus(1))
+ assertEquals(testPackageName, result)
+ }
+
+ @Test
+ fun `GIVEN packageManager throws an exception WHEN Build version is less than R installSourcePackage RETURNS an empty string`() {
+ val mockedPackageManager: PackageManager = mockk(relaxed = true)
+ @Suppress("DEPRECATION")
+ every { mockedPackageManager.getInstallerPackageName(any()) } throws IllegalArgumentException()
+
+ val mockedApplication: FenixApplication = mockk(relaxed = true)
+ every { mockedApplication.packageManager } returns mockedPackageManager
+
+ val mockedContext: Context = mockk(relaxed = true)
+ every { mockedContext.applicationContext } returns mockedApplication
+
+ val result =
+ FirstSessionPing(mockedContext).installSourcePackage(Build.VERSION_CODES.R.minus(1))
+ assertEquals("", result)
+ }
}
+
+private fun PackageManager.configureMockInstallSourcePackage() =
+ if (SDK_INT >= Build.VERSION_CODES.R) {
+ mockInstallSourcePackageForBuildMinR()
+ } else {
+ mockInstallSourcePackageForBuildMaxQ()
+ }
+
+private fun PackageManager.mockInstallSourcePackageForBuildMinR(packageName: String = "") =
+ every { getInstallSourceInfo(any()).installingPackageName } returns packageName
+
+@Suppress("DEPRECATION")
+private fun PackageManager.mockInstallSourcePackageForBuildMaxQ(packageName: String = "") =
+ every { getInstallerPackageName(any()) } returns packageName
diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/LollipopAsyncCodec.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/LollipopAsyncCodec.java
index aaf8810bbb..444ee633b6 100644
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/LollipopAsyncCodec.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/LollipopAsyncCodec.java
@@ -8,6 +8,7 @@ import android.media.MediaCodec;
import android.media.MediaCodecInfo.CodecCapabilities;
import android.media.MediaCrypto;
import android.media.MediaFormat;
+import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@@ -134,7 +135,18 @@ import org.mozilla.gecko.util.HardwareCodecCapabilityUtils;
}
/* package */ LollipopAsyncCodec(final String name) throws IOException {
- mCodec = MediaCodec.createByCodecName(name);
+ // Create the codec.
+ // We wrap the call to MediaCodec.createByCodecName in a pair of
+ // clearCallingIdentity / restoreCallingIdentity, so that the resource
+ // gets attributed to this process and not to whichever process was calling us.
+ // This works around a battery usage attribution bug in Android 14+,
+ // see bug 1902077.
+ final long token = Binder.clearCallingIdentity();
+ try {
+ mCodec = MediaCodec.createByCodecName(name);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
}
@Override
diff --git a/mobile/android/version.txt b/mobile/android/version.txt
index 29810a755b..6f1605c380 100644
--- a/mobile/android/version.txt
+++ b/mobile/android/version.txt
@@ -1 +1 @@
-127.0.1
+127.0.2
diff --git a/services/settings/dumps/blocklists/addons-bloomfilters.json b/services/settings/dumps/blocklists/addons-bloomfilters.json
index aed250d702..74ea78929d 100644
--- a/services/settings/dumps/blocklists/addons-bloomfilters.json
+++ b/services/settings/dumps/blocklists/addons-bloomfilters.json
@@ -3,6 +3,345 @@
{
"stash": {
"blocked": [
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.8.0",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:18.9.1289",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.6.6",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.11.3",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.15.4",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:12.0.328",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.14",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:21.2.1669",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.3.1",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.20.0",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:12.0.918",
+ "avg@toolbar:4.3.9.6",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.23",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:12.0.717",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.22.2",
+ "addonY261@easyshare.app:1.24.125",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.2.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.6.4",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.0",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:22.0.1673",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.13",
+ "imguard-ff3@mark.nicodemus:3.5.31.10",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.18.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.17.2",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.6.1",
+ "softphone.service@five9.com:11.5.1",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.0.12",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.15.5",
+ "{a9967d75-7a61-4aee-ae11-869571bab731}:4.3.31",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.8",
+ "avg@toolbar:4.3.9.2",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:19.5.1559",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.6.3",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.20",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:22.2.1686",
+ "assetview.m@hammock.co.jp:1.0.0.1010",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.9",
+ "dmpgopmhgecgfpbiphgfobeaeaodaidj@577f46ac-44d3-4c0e-8d56-fce12b71f5a0.com:0.542.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.11.1",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.13.2",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.20.1",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.11.2",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.16.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.9.2",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.7.4",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.17",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.11.0",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:20.4.1659",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.0.13",
+ "dmpgopmhgecgfpbiphgfobeaeaodaidj@577f46ac-44d3-4c0e-8d56-fce12b71f5a0.com:0.647.0",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:18.7.1071",
+ "dmpgopmhgecgfpbiphgfobeaeaodaidj@9c8387ec-edad-4985-82c0-25a0b84fffb4.com:0.716.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.17.1",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.22.3",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.21.1",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.7.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.18.1",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:12.0.385",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.10.1",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.4.5",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.5.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.5",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:20.0.1581",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.13.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.7.1",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.3.0",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:12.0.800",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.10.2",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.0.9",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:19.1.1344",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.7.3",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.4.3",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.6.0",
+ "avg@toolbar:4.3.9.7",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.19.1",
+ "avg@toolbar:12.0.343",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.6",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:20.1.1611",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.16.1",
+ "{f4625e44-461e-47b3-af62-bbc713d48c69}:0.0.28",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:18.7.1072",
+ "avg@toolbar:4.3.9.1",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:20.2.1637",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.22",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.6.8",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:12.0.141",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.14.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.4.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.22.1",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.7.2",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.15",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.12.0",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:22.1.1678",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.1",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.21.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.20.2",
+ "dmpgopmhgecgfpbiphgfobeaeaodaidj@577f46ac-44d3-4c0e-8d56-fce12b71f5a0.com:0.657.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.16",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.18",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:12.0.405",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:12.0.520",
+ "softphone.service@five9.com:11.5.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.6.2",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.9.0",
+ "{caa5fe90-dc92-4633-b17d-df6bc6fc70e7}:4.3.31",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.9.1",
+ "avg@toolbar:4.3.9.4",
+ "dmpgopmhgecgfpbiphgfobeaeaodaidj@9c8387ec-edad-4985-82c0-25a0b84fffb4.com:0.696.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.2",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.15.2",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:12.0.580",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.6.9",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.15.3",
+ "addonY261@easyshare.app:1.24.122",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:19.2.1454",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.12",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.4.1",
+ "blabla@blub:3.999.999",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:12.0.330",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.0.10",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:12.0.755",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.13.1",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.15.1",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.15.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.17.0",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.7",
+ "dmpgopmhgecgfpbiphgfobeaeaodaidj@577f46ac-44d3-4c0e-8d56-fce12b71f5a0.com:0.751.0",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:18.8.1222",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:19.3.1492",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.0.11",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.20.3",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.21",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.15.6",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.4.4",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.11",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:19.4.1512",
+ "{886a6486-37b3-4bcd-891b-fd0e325e7b1a}:19.3.1501",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.6.5",
+ "{ca613ee6-4211-4ae2-aa3c-d29608461d11}:3.1.10",
+ "dmpgopmhgecgfpbiphgfobeaeaodaidj@9c8387ec-edad-4985-82c0-25a0b84fffb4.com:0.707.0"
+ ],
+ "unblocked": []
+ },
+ "schema": 1718956118911,
+ "key_format": "{guid}:{version}",
+ "stash_time": 1718973306269,
+ "id": "b3ce3f72-c80d-405b-ab93-9663bcc5bc46",
+ "last_modified": 1718973362963
+ },
+ {
+ "stash": {
+ "blocked": [
+ "time-tracker-on-site@everhour.com:1.6.39",
+ "time-tracker-on-site@everhour.com:1.6.68",
+ "time-tracker-on-site@everhour.com:1.6.157",
+ "time-tracker-on-site@everhour.com:1.6.92",
+ "time-tracker-on-site@everhour.com:1.6.100",
+ "time-tracker-on-site@everhour.com:1.6.101",
+ "time-tracker-on-site@everhour.com:1.6.66",
+ "browser-extension@jazznetworks.com:3.1.22",
+ "time-tracker-on-site@everhour.com:1.6.90",
+ "time-tracker-on-site@everhour.com:1.6.107",
+ "time-tracker-on-site@everhour.com:1.6.69",
+ "time-tracker-on-site@everhour.com:1.6.210",
+ "time-tracker-on-site@everhour.com:1.6.207",
+ "time-tracker-on-site@everhour.com:1.6.119",
+ "time-tracker-on-site@everhour.com:1.6.131",
+ "{8245b70d-c74d-48ed-95d4-c42af09378a6}:0.3.0",
+ "time-tracker-on-site@everhour.com:1.6.199",
+ "time-tracker-on-site@everhour.com:1.6.173",
+ "time-tracker-on-site@everhour.com:1.6.178",
+ "time-tracker-on-site@everhour.com:1.6.139",
+ "time-tracker-on-site@everhour.com:1.6.156",
+ "time-tracker-on-site@everhour.com:1.6.49",
+ "time-tracker-on-site@everhour.com:1.6.194",
+ "time-tracker-on-site@everhour.com:1.6.81",
+ "time-tracker-on-site@everhour.com:1.6.109",
+ "time-tracker-on-site@everhour.com:1.6.177",
+ "time-tracker-on-site@everhour.com:1.6.65",
+ "time-tracker-on-site@everhour.com:1.6.105",
+ "time-tracker-on-site@everhour.com:1.6.175",
+ "time-tracker-on-site@everhour.com:1.6.88",
+ "time-tracker-on-site@everhour.com:1.6.198",
+ "time-tracker-on-site@everhour.com:1.6.136",
+ "time-tracker-on-site@everhour.com:1.6.36",
+ "time-tracker-on-site@everhour.com:1.6.45",
+ "time-tracker-on-site@everhour.com:1.6.64",
+ "time-tracker-on-site@everhour.com:1.6.91",
+ "time-tracker-on-site@everhour.com:1.6.174",
+ "time-tracker-on-site@everhour.com:1.6.113",
+ "time-tracker-on-site@everhour.com:1.6.138",
+ "time-tracker-on-site@everhour.com:1.6.182",
+ "time-tracker-on-site@everhour.com:1.6.84",
+ "time-tracker-on-site@everhour.com:1.6.166",
+ "time-tracker-on-site@everhour.com:1.6.163",
+ "time-tracker-on-site@everhour.com:1.6.193",
+ "time-tracker-on-site@everhour.com:1.6.75",
+ "time-tracker-on-site@everhour.com:1.6.146",
+ "time-tracker-on-site@everhour.com:1.6.70",
+ "time-tracker-on-site@everhour.com:1.6.145",
+ "time-tracker-on-site@everhour.com:1.6.154",
+ "time-tracker-on-site@everhour.com:1.6.155",
+ "time-tracker-on-site@everhour.com:1.6.191",
+ "time-tracker-on-site@everhour.com:1.6.94",
+ "time-tracker-on-site@everhour.com:1.6.46",
+ "time-tracker-on-site@everhour.com:1.6.117",
+ "time-tracker-on-site@everhour.com:1.6.48",
+ "time-tracker-on-site@everhour.com:1.6.58",
+ "time-tracker-on-site@everhour.com:1.6.47",
+ "time-tracker-on-site@everhour.com:1.6.183",
+ "time-tracker-on-site@everhour.com:1.6.72",
+ "time-tracker-on-site@everhour.com:1.6.200",
+ "time-tracker-on-site@everhour.com:1.6.202",
+ "time-tracker-on-site@everhour.com:1.6.184",
+ "time-tracker-on-site@everhour.com:1.6.104",
+ "time-tracker-on-site@everhour.com:1.6.195",
+ "time-tracker-on-site@everhour.com:1.6.86",
+ "time-tracker-on-site@everhour.com:1.6.55",
+ "time-tracker-on-site@everhour.com:1.6.205",
+ "time-tracker-on-site@everhour.com:1.6.82",
+ "time-tracker-on-site@everhour.com:1.6.151",
+ "time-tracker-on-site@everhour.com:1.6.206",
+ "time-tracker-on-site@everhour.com:1.6.51",
+ "time-tracker-on-site@everhour.com:1.6.188",
+ "time-tracker-on-site@everhour.com:1.6.59",
+ "time-tracker-on-site@everhour.com:1.6.127",
+ "time-tracker-on-site@everhour.com:1.6.57",
+ "time-tracker-on-site@everhour.com:1.6.50",
+ "time-tracker-on-site@everhour.com:1.6.201",
+ "time-tracker-on-site@everhour.com:1.6.152",
+ "time-tracker-on-site@everhour.com:1.6.169",
+ "time-tracker-on-site@everhour.com:1.6.52",
+ "time-tracker-on-site@everhour.com:1.6.170",
+ "time-tracker-on-site@everhour.com:1.6.122",
+ "time-tracker-on-site@everhour.com:1.6.168",
+ "time-tracker-on-site@everhour.com:1.6.63",
+ "time-tracker-on-site@everhour.com:1.6.73",
+ "time-tracker-on-site@everhour.com:1.6.97",
+ "time-tracker-on-site@everhour.com:1.6.103",
+ "time-tracker-on-site@everhour.com:1.6.95",
+ "time-tracker-on-site@everhour.com:1.6.203",
+ "time-tracker-on-site@everhour.com:1.6.62",
+ "time-tracker-on-site@everhour.com:1.6.118",
+ "time-tracker-on-site@everhour.com:1.6.130",
+ "time-tracker-on-site@everhour.com:1.6.172",
+ "time-tracker-on-site@everhour.com:1.6.171",
+ "time-tracker-on-site@everhour.com:1.6.108",
+ "time-tracker-on-site@everhour.com:1.6.78",
+ "time-tracker-on-site@everhour.com:1.6.144",
+ "time-tracker-on-site@everhour.com:1.6.167",
+ "time-tracker-on-site@everhour.com:1.6.67",
+ "time-tracker-on-site@everhour.com:1.6.129",
+ "time-tracker-on-site@everhour.com:1.6.187",
+ "time-tracker-on-site@everhour.com:1.6.176",
+ "time-tracker-on-site@everhour.com:1.6.137",
+ "time-tracker-on-site@everhour.com:1.6.96",
+ "time-tracker-on-site@everhour.com:1.6.162",
+ "time-tracker-on-site@everhour.com:1.6.132",
+ "time-tracker-on-site@everhour.com:1.6.159",
+ "time-tracker-on-site@everhour.com:1.6.60",
+ "time-tracker-on-site@everhour.com:1.6.44",
+ "browser-extension@jazznetworks.com:3.1.19",
+ "time-tracker-on-site@everhour.com:1.6.134",
+ "time-tracker-on-site@everhour.com:1.6.121",
+ "time-tracker-on-site@everhour.com:1.6.123",
+ "time-tracker-on-site@everhour.com:1.6.125",
+ "time-tracker-on-site@everhour.com:1.6.80",
+ "time-tracker-on-site@everhour.com:1.6.56",
+ "time-tracker-on-site@everhour.com:1.6.133",
+ "time-tracker-on-site@everhour.com:1.6.197",
+ "time-tracker-on-site@everhour.com:1.6.110",
+ "time-tracker-on-site@everhour.com:1.6.93",
+ "time-tracker-on-site@everhour.com:1.6.161",
+ "{8245b70d-c74d-48ed-95d4-c42af09378a6}:0.1.5",
+ "time-tracker-on-site@everhour.com:1.6.186",
+ "time-tracker-on-site@everhour.com:1.6.143",
+ "time-tracker-on-site@everhour.com:1.6.190",
+ "time-tracker-on-site@everhour.com:1.6.85",
+ "time-tracker-on-site@everhour.com:1.6.196",
+ "time-tracker-on-site@everhour.com:1.6.204",
+ "time-tracker-on-site@everhour.com:1.6.147",
+ "time-tracker-on-site@everhour.com:1.6.38",
+ "time-tracker-on-site@everhour.com:1.6.135",
+ "time-tracker-on-site@everhour.com:1.6.208",
+ "time-tracker-on-site@everhour.com:1.6.185",
+ "time-tracker-on-site@everhour.com:1.6.87",
+ "time-tracker-on-site@everhour.com:1.6.150",
+ "time-tracker-on-site@everhour.com:1.6.141",
+ "time-tracker-on-site@everhour.com:1.6.54",
+ "time-tracker-on-site@everhour.com:1.6.61",
+ "time-tracker-on-site@everhour.com:1.6.165",
+ "time-tracker-on-site@everhour.com:1.6.189",
+ "time-tracker-on-site@everhour.com:1.6.35",
+ "time-tracker-on-site@everhour.com:1.6.79",
+ "time-tracker-on-site@everhour.com:1.6.180",
+ "time-tracker-on-site@everhour.com:1.6.74",
+ "time-tracker-on-site@everhour.com:1.6.160",
+ "time-tracker-on-site@everhour.com:1.6.111",
+ "time-tracker-on-site@everhour.com:1.6.102",
+ "time-tracker-on-site@everhour.com:1.6.71",
+ "time-tracker-on-site@everhour.com:1.6.149",
+ "time-tracker-on-site@everhour.com:1.6.114",
+ "time-tracker-on-site@everhour.com:1.6.77",
+ "time-tracker-on-site@everhour.com:1.6.158",
+ "time-tracker-on-site@everhour.com:1.6.89",
+ "time-tracker-on-site@everhour.com:1.6.83",
+ "time-tracker-on-site@everhour.com:1.6.98",
+ "time-tracker-on-site@everhour.com:1.6.116",
+ "time-tracker-on-site@everhour.com:1.6.126",
+ "time-tracker-on-site@everhour.com:1.6.106",
+ "time-tracker-on-site@everhour.com:1.6.76",
+ "time-tracker-on-site@everhour.com:1.6.140",
+ "time-tracker-on-site@everhour.com:1.6.153",
+ "time-tracker-on-site@everhour.com:1.6.209",
+ "time-tracker-on-site@everhour.com:1.6.120",
+ "time-tracker-on-site@everhour.com:1.6.37",
+ "time-tracker-on-site@everhour.com:1.6.164",
+ "time-tracker-on-site@everhour.com:1.6.53",
+ "time-tracker-on-site@everhour.com:1.6.41",
+ "time-tracker-on-site@everhour.com:1.6.124",
+ "time-tracker-on-site@everhour.com:1.6.192",
+ "time-tracker-on-site@everhour.com:1.6.181",
+ "time-tracker-on-site@everhour.com:1.6.112",
+ "time-tracker-on-site@everhour.com:1.6.40",
+ "time-tracker-on-site@everhour.com:1.6.148",
+ "time-tracker-on-site@everhour.com:1.6.142",
+ "time-tracker-on-site@everhour.com:1.6.179"
+ ],
+ "unblocked": []
+ },
+ "schema": 1718875718819,
+ "key_format": "{guid}:{version}",
+ "stash_time": 1718908505730,
+ "id": "0aa5526f-fa05-4866-8ead-6a8eeb748e38",
+ "last_modified": 1718908563116
+ },
+ {
+ "stash": {
+ "blocked": [
"{80f72148-c2c1-4690-b9bb-eb49b7e35aad}:1.2"
],
"unblocked": []
@@ -720,5 +1059,5 @@
"last_modified": 1707395854769
}
],
- "timestamp": 1718109362020
+ "timestamp": 1718973362963
}
diff --git a/services/settings/dumps/main/devtools-compatibility-browsers.json b/services/settings/dumps/main/devtools-compatibility-browsers.json
index ccb7f43884..4022eaaf41 100644
--- a/services/settings/dumps/main/devtools-compatibility-browsers.json
+++ b/services/settings/dumps/main/devtools-compatibility-browsers.json
@@ -1,6 +1,33 @@
{
"data": [
{
+ "name": "Safari",
+ "schema": 1718755502911,
+ "status": "current",
+ "version": "17.6",
+ "browserid": "safari",
+ "id": "4dc72290-4d4e-472d-9348-51def293d286",
+ "last_modified": 1718777113320
+ },
+ {
+ "name": "Safari on iOS",
+ "schema": 1718755503054,
+ "status": "current",
+ "version": "17.6",
+ "browserid": "safari_ios",
+ "id": "f5260c7c-37e9-4a80-b775-6fcb7d3134db",
+ "last_modified": 1718777113317
+ },
+ {
+ "name": "Edge",
+ "schema": 1718755502762,
+ "status": "current",
+ "version": "126",
+ "browserid": "edge",
+ "id": "c8bf4918-03b7-4be2-bf75-4d6139dbd7c9",
+ "last_modified": 1718777113307
+ },
+ {
"name": "Chrome Android",
"schema": 1718237106974,
"status": "beta",
@@ -173,15 +200,6 @@
},
{
"name": "Edge",
- "schema": 1717286706151,
- "status": "beta",
- "version": "126",
- "browserid": "edge",
- "id": "c8bf4918-03b7-4be2-bf75-4d6139dbd7c9",
- "last_modified": 1718005312974
- },
- {
- "name": "Edge",
"schema": 1717286706227,
"status": "nightly",
"version": "127",
@@ -190,33 +208,6 @@
"last_modified": 1718005312971
},
{
- "name": "Edge",
- "schema": 1716941107417,
- "status": "current",
- "version": "125",
- "browserid": "edge",
- "id": "f1147d5f-d690-43d0-879d-117c6ca24a16",
- "last_modified": 1716966331501
- },
- {
- "name": "Safari on iOS",
- "schema": 1715731507984,
- "status": "current",
- "version": "17.5",
- "browserid": "safari_ios",
- "id": "4375a82d-f2f1-4883-8da7-0aedfb05b8f9",
- "last_modified": 1715839095923
- },
- {
- "name": "Safari",
- "schema": 1715731507854,
- "status": "current",
- "version": "17.5",
- "browserid": "safari",
- "id": "24e30aff-fbf8-4a96-a036-84f970447d4b",
- "last_modified": 1715839095920
- },
- {
"name": "Node.js",
"schema": 1715126727137,
"status": "current",
@@ -307,5 +298,5 @@
"last_modified": 1665656484764
}
],
- "timestamp": 1718606078088
+ "timestamp": 1718777113320
}
diff --git a/services/settings/dumps/main/search-config-v2.json b/services/settings/dumps/main/search-config-v2.json
index 3848d688ae..7024860d45 100644
--- a/services/settings/dumps/main/search-config-v2.json
+++ b/services/settings/dumps/main/search-config-v2.json
@@ -179,6 +179,7 @@
],
"classification": "unknown",
"name": "Amazon.co.jp",
+ "partnerCode": "mozillajapan-fx-22",
"urls": {
"search": {
"base": "https://www.amazon.co.jp/exec/obidos/external-search/",
@@ -189,7 +190,7 @@
},
{
"name": "tag",
- "value": "mozillajapan-fx-22"
+ "value": "{partnerCode}"
},
{
"name": "sourceid",
@@ -202,16 +203,29 @@
},
"id": "9d089e46-dc94-4d4f-8f17-cc07b59aa9e4",
"identifier": "amazon-jp",
- "last_modified": 1702906502401,
+ "last_modified": 1718719100309,
"recordType": "engine",
- "schema": 1702901805111,
+ "schema": 1718637175117,
"variants": [
{
"environment": {
"regions": [
"jp"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android",
+ "firefox-ios",
+ "focus-ios"
+ ]
+ },
+ "partnerCode": "moz-jp-mbl-22"
+ }
+ ]
}
]
},
@@ -231,13 +245,16 @@
},
"id": "788a2ded-6872-4742-8115-c14dde7a18f9",
"identifier": "amazondotcom-us",
- "last_modified": 1702906502412,
+ "last_modified": 1718719100307,
"notes": "Amazon.com (us only)",
"recordType": "engine",
- "schema": 1702901802672,
+ "schema": 1718698346192,
"variants": [
{
"environment": {
+ "applications": [
+ "firefox"
+ ],
"regions": [
"us"
]
@@ -308,16 +325,35 @@
},
"id": "ad58537f-f397-46ec-a1a8-935e12f0aab6",
"identifier": "baidu",
- "last_modified": 1702906502749,
+ "last_modified": 1718719100295,
"recordType": "engine",
- "schema": 1702901740286,
+ "schema": 1718698349444,
"variants": [
{
"environment": {
"locales": [
"zh-CN"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android",
+ "firefox-ios",
+ "focus-ios"
+ ]
+ },
+ "urls": {
+ "search": {
+ "base": "https://m.baidu.com/s",
+ "params": [],
+ "searchTermParamName": "word"
+ }
+ }
+ }
+ ]
}
]
},
@@ -339,13 +375,7 @@
},
{
"name": "form",
- "searchAccessPoint": {
- "addressbar": "MOZLBR",
- "contextmenu": "MOZCON",
- "homepage": "MOZSPG",
- "newtab": "MOZTSB",
- "searchbar": "MOZSBR"
- }
+ "value": "MOZLBR"
}
],
"searchTermParamName": "q"
@@ -367,96 +397,17 @@
},
"id": "05645095-d26e-4f20-9137-f24a14a23f28",
"identifier": "bing",
- "last_modified": 1713282817048,
+ "last_modified": 1718719100291,
"recordType": "engine",
- "schema": 1713199744323,
+ "schema": 1718698353718,
"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"
+ "allRegionsAndLocales": true,
+ "applications": [
+ "firefox",
+ "firefox-android",
+ "firefox-ios"
]
},
"subVariants": [
@@ -468,6 +419,52 @@
},
"partnerCode": "MOZR",
"telemetrySuffix": "esr"
+ },
+ {
+ "environment": {
+ "applications": [
+ "firefox-android"
+ ]
+ },
+ "partnerCode": "MOZB",
+ "urls": {
+ "search": {
+ "params": [
+ {
+ "name": "pc",
+ "value": "{partnerCode}"
+ },
+ {
+ "name": "form",
+ "value": "MOZMBA"
+ }
+ ],
+ "searchTermParamName": "q"
+ }
+ }
+ },
+ {
+ "environment": {
+ "applications": [
+ "firefox-ios"
+ ]
+ },
+ "partnerCode": "MOZW",
+ "urls": {
+ "search": {
+ "params": [
+ {
+ "name": "pc",
+ "value": "{partnerCode}"
+ },
+ {
+ "name": "form",
+ "value": "MOZWSB"
+ }
+ ],
+ "searchTermParamName": "q"
+ }
+ }
}
]
}
@@ -542,6 +539,7 @@
"base": {
"classification": "unknown",
"name": "Cốc Cốc",
+ "partnerCode": "firefox",
"urls": {
"search": {
"base": "https://coccoc.com/search",
@@ -552,7 +550,7 @@
},
{
"name": "utm_source",
- "value": "firefox"
+ "value": "{partnerCode}"
}
],
"searchTermParamName": "query"
@@ -575,16 +573,29 @@
},
"id": "20104daa-cb8a-40b9-a8c5-2433f4476c3e",
"identifier": "coccoc",
- "last_modified": 1702906502314,
+ "last_modified": 1718719100314,
"recordType": "engine",
- "schema": 1702901821664,
+ "schema": 1718698356483,
"variants": [
{
"environment": {
"locales": [
"vi"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android",
+ "firefox-ios",
+ "focus-ios"
+ ]
+ },
+ "partnerCode": "ffmobile"
+ }
+ ]
}
]
},
@@ -621,16 +632,31 @@
},
"id": "3330e927-6733-4239-9738-b41c5c460b11",
"identifier": "daum-kr",
- "last_modified": 1702906502311,
+ "last_modified": 1718719100316,
"recordType": "engine",
- "schema": 1702901822275,
+ "schema": 1718698358587,
"variants": [
{
"environment": {
"locales": [
"ko"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "urls": {
+ "search": {
+ "base": "https://m.search.daum.net/search"
+ }
+ }
+ }
+ ]
}
]
},
@@ -668,9 +694,9 @@
},
"id": "04e99a38-13ee-47d8-8aa4-64482b3dea99",
"identifier": "ddg",
- "last_modified": 1713282817053,
+ "last_modified": 1718719100285,
"recordType": "engine",
- "schema": 1713282081098,
+ "schema": 1718698362015,
"variants": [
{
"environment": {
@@ -690,6 +716,26 @@
},
{
"environment": {
+ "allRegionsAndLocales": true,
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "fpas"
+ },
+ {
+ "environment": {
+ "allRegionsAndLocales": true,
+ "applications": [
+ "firefox-ios",
+ "focus-ios"
+ ]
+ },
+ "partnerCode": "ffip"
+ },
+ {
+ "environment": {
"distributions": [
"mint-001"
]
@@ -752,9 +798,9 @@
},
"id": "d8b7ed81-00f3-478a-a835-dc0677d7190a",
"identifier": "ebay",
- "last_modified": 1702906502450,
+ "last_modified": 1718719100298,
"recordType": "engine",
- "schema": 1702901794691,
+ "schema": 1718698365997,
"variants": [
{
"environment": {
@@ -764,7 +810,18 @@
"regions": [
"us"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -821,9 +878,9 @@
},
"id": "8dee7454-6c6c-4b22-a411-4e474c7afbb3",
"identifier": "ebay-at",
- "last_modified": 1702906502421,
+ "last_modified": 1718719100305,
"recordType": "engine",
- "schema": 1702901800849,
+ "schema": 1718698368829,
"variants": [
{
"environment": {
@@ -835,7 +892,18 @@
"regions": [
"at"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -892,9 +960,9 @@
},
"id": "e5a64fe0-2cb9-4b22-83d3-4e529c3702a9",
"identifier": "ebay-au",
- "last_modified": 1702906502429,
+ "last_modified": 1718719100302,
"recordType": "engine",
- "schema": 1702901799015,
+ "schema": 1718698373814,
"variants": [
{
"environment": {
@@ -907,7 +975,18 @@
"regions": [
"au"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -964,9 +1043,9 @@
},
"id": "5f40614e-4fc6-4dee-a897-07b258e00820",
"identifier": "ebay-be",
- "last_modified": 1702906502442,
+ "last_modified": 1718719100300,
"recordType": "engine",
- "schema": 1702901796541,
+ "schema": 1718698383258,
"variants": [
{
"environment": {
@@ -981,7 +1060,18 @@
"regions": [
"be"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -1038,9 +1128,9 @@
},
"id": "336d7fa9-7579-4981-bfb0-024c6c5f977d",
"identifier": "ebay-ca",
- "last_modified": 1715090108516,
+ "last_modified": 1718719100278,
"recordType": "engine",
- "schema": 1714065170548,
+ "schema": 1718698388762,
"variants": [
{
"environment": {
@@ -1053,7 +1143,18 @@
"regions": [
"ca"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
},
{
"environment": {
@@ -1063,7 +1164,18 @@
"locales": [
"en-CA"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -1120,9 +1232,9 @@
},
"id": "8d8484a2-b856-4edd-93d7-c53a7aaca6e1",
"identifier": "ebay-ch",
- "last_modified": 1715090108518,
+ "last_modified": 1718719100276,
"recordType": "engine",
- "schema": 1714498577167,
+ "schema": 1718698406340,
"variants": [
{
"environment": {
@@ -1138,7 +1250,18 @@
"regions": [
"ch"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
},
{
"environment": {
@@ -1148,7 +1271,18 @@
"locales": [
"rm"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -1205,9 +1339,9 @@
},
"id": "e991a5f7-616e-43b0-b349-7995b837a520",
"identifier": "ebay-de",
- "last_modified": 1715090108527,
+ "last_modified": 1718719100269,
"recordType": "engine",
- "schema": 1714498578625,
+ "schema": 1718698412277,
"variants": [
{
"environment": {
@@ -1221,7 +1355,18 @@
"dsb",
"hsb"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -1278,9 +1423,9 @@
},
"id": "0592aedc-f4e5-4873-a8d4-da9482071613",
"identifier": "ebay-es",
- "last_modified": 1715090108511,
+ "last_modified": 1718719100283,
"recordType": "engine",
- "schema": 1714498579838,
+ "schema": 1718698418873,
"variants": [
{
"environment": {
@@ -1296,7 +1441,18 @@
"eu",
"gl"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -1353,9 +1509,9 @@
},
"id": "d327156c-dfc4-47f6-a620-3846a21144d9",
"identifier": "ebay-fr",
- "last_modified": 1715090108513,
+ "last_modified": 1718719100280,
"recordType": "engine",
- "schema": 1714498580858,
+ "schema": 1718698423588,
"variants": [
{
"environment": {
@@ -1370,7 +1526,18 @@
"fr",
"wo"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -1427,9 +1594,9 @@
},
"id": "0a9fed24-cd33-4293-bac8-eb26a285c9f1",
"identifier": "ebay-ie",
- "last_modified": 1715090108524,
+ "last_modified": 1718719100271,
"recordType": "engine",
- "schema": 1714498581865,
+ "schema": 1718698428556,
"variants": [
{
"environment": {
@@ -1442,7 +1609,18 @@
"regions": [
"ie"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
},
{
"environment": {
@@ -1452,7 +1630,18 @@
"locales": [
"ga-IE"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -1509,9 +1698,9 @@
},
"id": "f36dd44c-ba5f-44e5-8b19-672eb1ed62fd",
"identifier": "ebay-it",
- "last_modified": 1715090108532,
+ "last_modified": 1718719100264,
"recordType": "engine",
- "schema": 1714498582844,
+ "schema": 1718698434710,
"variants": [
{
"environment": {
@@ -1524,7 +1713,18 @@
"lij",
"sc"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -1581,9 +1781,9 @@
},
"id": "670475c3-d56f-4f87-9834-ddb12d0e8cbd",
"identifier": "ebay-nl",
- "last_modified": 1715090108529,
+ "last_modified": 1718719100266,
"recordType": "engine",
- "schema": 1714498583851,
+ "schema": 1718698440696,
"variants": [
{
"environment": {
@@ -1595,7 +1795,18 @@
"fy-NL",
"nl"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
},
{
"environment": {
@@ -1605,7 +1816,18 @@
"regions": [
"nl"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -1662,16 +1884,27 @@
},
"id": "37f83917-8d6e-46d6-9d15-8e7779339d08",
"identifier": "ebay-pl",
- "last_modified": 1715090108535,
+ "last_modified": 1718719100261,
"recordType": "engine",
- "schema": 1714498585934,
+ "schema": 1718698443475,
"variants": [
{
"environment": {
"regions": [
"pl"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -1728,9 +1961,9 @@
},
"id": "37f83917-8d6e-46d6-9d15-8e7779339d18",
"identifier": "ebay-uk",
- "last_modified": 1715090108522,
+ "last_modified": 1718719100273,
"recordType": "engine",
- "schema": 1714498584991,
+ "schema": 1718698449042,
"variants": [
{
"environment": {
@@ -1744,27 +1977,40 @@
"en-GB",
"gd"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
},
{
"environment": {
"locales": [
+ "en-US",
"sco"
],
"regions": [
"gb"
]
- }
- },
- {
- "environment": {
- "locales": [
- "en-US"
- ],
- "regions": [
- "gb"
- ]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "5338791379"
+ }
+ ]
}
]
},
@@ -1798,16 +2044,36 @@
},
"id": "e8e4a7e3-aead-43e3-887d-4064a186bd70",
"identifier": "ecosia",
- "last_modified": 1702906502308,
+ "last_modified": 1718719100319,
"recordType": "engine",
- "schema": 1702901822899,
+ "schema": 1718698454063,
"variants": [
{
"environment": {
"locales": [
"de"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "813cf1dd"
+ },
+ {
+ "environment": {
+ "applications": [
+ "firefox-ios",
+ "focus-ios"
+ ]
+ },
+ "partnerCode": "16eeffc4"
+ }
+ ]
}
]
},
@@ -1856,16 +2122,33 @@
},
"id": "d21e561b-64ae-4a33-b2f0-c4a490a5cf82",
"identifier": "faclair-beag",
- "last_modified": 1702906502303,
+ "last_modified": 1718719100322,
"recordType": "engine",
- "schema": 1702901824109,
+ "schema": 1718698465691,
"variants": [
{
"environment": {
"locales": [
"gd"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android",
+ "firefox-ios",
+ "focus-ios"
+ ]
+ },
+ "urls": {
+ "search": {
+ "base": "https://www.faclair.com/m"
+ }
+ }
+ }
+ ]
}
]
},
@@ -2157,9 +2440,9 @@
},
"id": "7ace4aa1-e762-4f4b-87b9-b23b3c3a930b",
"identifier": "google",
- "last_modified": 1713282817051,
+ "last_modified": 1718719100288,
"recordType": "engine",
- "schema": 1713282083062,
+ "schema": 1718698468913,
"variants": [
{
"environment": {
@@ -2174,6 +2457,18 @@
},
"partnerCode": "firefox-b-e",
"telemetrySuffix": "b-e"
+ },
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android",
+ "firefox-ios",
+ "focus-ios"
+ ]
+ },
+ "partnerCode": "firefox-b-m",
+ "telemetrySuffix": "b-m"
}
],
"telemetrySuffix": "b-d"
@@ -2213,6 +2508,18 @@
},
"partnerCode": "firefox-b-1-e",
"telemetrySuffix": "b-1-e"
+ },
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android",
+ "firefox-ios",
+ "focus-ios"
+ ]
+ },
+ "partnerCode": "firefox-b-1-m",
+ "telemetrySuffix": "b-1-m"
}
],
"telemetrySuffix": "b-1-d",
@@ -2822,16 +3129,36 @@
},
"id": "2e62746e-b90a-42ee-b0f2-9ed0e1e2eaf0",
"identifier": "qwant",
- "last_modified": 1710766863306,
+ "last_modified": 1718719100293,
"recordType": "engine",
- "schema": 1710460806956,
+ "schema": 1718698472747,
"variants": [
{
"environment": {
"locales": [
"fr"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "ff_android"
+ },
+ {
+ "environment": {
+ "applications": [
+ "firefox-ios",
+ "focus-ios"
+ ]
+ },
+ "partnerCode": "ff_ios"
+ }
+ ]
},
{
"environment": {
@@ -2843,7 +3170,27 @@
"it",
"nl"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android"
+ ]
+ },
+ "partnerCode": "ff_android"
+ },
+ {
+ "environment": {
+ "applications": [
+ "firefox-ios",
+ "focus-ios"
+ ]
+ },
+ "partnerCode": "ff_ios"
+ }
+ ]
},
{
"environment": {
@@ -2981,14 +3328,41 @@
{
"base": {
"classification": "unknown",
+ "name": "Reddit",
+ "urls": {
+ "search": {
+ "base": "https://www.reddit.com/search/",
+ "params": [],
+ "searchTermParamName": "q"
+ }
+ }
+ },
+ "id": "f2038189-6bfe-458b-b379-577fe9db4d51",
+ "identifier": "reddit",
+ "last_modified": 1718719100336,
+ "recordType": "engine",
+ "schema": 1718698475234,
+ "variants": [
+ {
+ "environment": {
+ "allRegionsAndLocales": true
+ },
+ "optional": true
+ }
+ ]
+ },
+ {
+ "base": {
+ "classification": "unknown",
"name": "Salidzini.lv",
+ "partnerCode": "firefox-plugin",
"urls": {
"search": {
"base": "https://www.salidzini.lv/search.php",
"params": [
{
"name": "utm_source",
- "value": "firefox-plugin"
+ "value": "{partnerCode}"
}
],
"searchTermParamName": "q"
@@ -3001,9 +3375,9 @@
},
"id": "883c6f10-cac4-4dc0-b631-9a28cbadda49",
"identifier": "salidzinilv",
- "last_modified": 1702906502262,
+ "last_modified": 1718719100324,
"recordType": "engine",
- "schema": 1702901833283,
+ "schema": 1718698485230,
"variants": [
{
"environment": {
@@ -3011,7 +3385,20 @@
"ltg",
"lv"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android",
+ "firefox-ios",
+ "focus-ios"
+ ]
+ },
+ "partnerCode": "firefox_mobile"
+ }
+ ]
}
]
},
@@ -3039,16 +3426,29 @@
},
"id": "b0cdb724-b7df-47d0-8ead-93aa0a8f60a2",
"identifier": "seznam-cz",
- "last_modified": 1702906502339,
+ "last_modified": 1718719100311,
"recordType": "engine",
- "schema": 1702901816717,
+ "schema": 1718698494927,
"variants": [
{
"environment": {
"locales": [
"cs"
]
- }
+ },
+ "subVariants": [
+ {
+ "environment": {
+ "applications": [
+ "firefox-android",
+ "focus-android",
+ "firefox-ios",
+ "focus-ios"
+ ]
+ },
+ "partnerCode": "SearchBox"
+ }
+ ]
}
]
},
@@ -7196,6 +7596,46 @@
{
"base": {
"classification": "unknown",
+ "name": "ವಿಕ್ಷನರಿ (kn)",
+ "urls": {
+ "search": {
+ "base": "https://kn.wiktionary.org/wiki/ವಿಶೇಷ:Search",
+ "searchTermParamName": "search"
+ },
+ "suggestions": {
+ "base": "https://kn.wiktionary.org/w/api.php",
+ "params": [
+ {
+ "name": "action",
+ "value": "opensearch"
+ },
+ {
+ "name": "namespace",
+ "value": "0"
+ }
+ ],
+ "searchTermParamName": "search"
+ }
+ }
+ },
+ "id": "a2b8eb91-dc15-4d98-8a1f-d7dced364111",
+ "identifier": "wiktionary-kn",
+ "last_modified": 1718719100333,
+ "recordType": "engine",
+ "schema": 1718698503954,
+ "variants": [
+ {
+ "environment": {
+ "locales": [
+ "kn"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "base": {
+ "classification": "unknown",
"name": "Wikiccionari (oc)",
"urls": {
"search": {
@@ -7236,6 +7676,46 @@
{
"base": {
"classification": "unknown",
+ "name": "விக்சனரி (ta)",
+ "urls": {
+ "search": {
+ "base": "https://ta.wiktionary.org/wiki/சிறப்பு:Search",
+ "searchTermParamName": "search"
+ },
+ "suggestions": {
+ "base": "https://ta.wiktionary.org/w/api.php",
+ "params": [
+ {
+ "name": "action",
+ "value": "opensearch"
+ },
+ {
+ "name": "namespace",
+ "value": "0"
+ }
+ ],
+ "searchTermParamName": "search"
+ }
+ }
+ },
+ "id": "bcb9427b-c7c4-4665-9620-16ec5c0b304f",
+ "identifier": "wiktionary-ta",
+ "last_modified": 1718719100330,
+ "recordType": "engine",
+ "schema": 1718698508333,
+ "variants": [
+ {
+ "environment": {
+ "locales": [
+ "ta"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "base": {
+ "classification": "unknown",
"name": "విక్షనరీ (te)",
"urls": {
"search": {
@@ -7387,6 +7867,32 @@
]
},
{
+ "base": {
+ "classification": "unknown",
+ "name": "YouTube",
+ "urls": {
+ "search": {
+ "base": "https://www.youtube.com/results",
+ "params": [],
+ "searchTermParamName": "search_query"
+ }
+ }
+ },
+ "id": "05b6f528-bd00-4101-b107-b91d5f70b44b",
+ "identifier": "youtube",
+ "last_modified": 1718719100328,
+ "recordType": "engine",
+ "schema": 1718698509654,
+ "variants": [
+ {
+ "environment": {
+ "allRegionsAndLocales": true
+ },
+ "optional": true
+ }
+ ]
+ },
+ {
"id": "3e1fed64-5ec7-4b1c-bedc-741fe3c59bc3",
"last_modified": 1707833224345,
"orders": [
@@ -7420,5 +7926,5 @@
"schema": 1707824831520
}
],
- "timestamp": 1717416922458
+ "timestamp": 1718719100336
}
diff --git a/services/settings/dumps/security-state/intermediates.json b/services/settings/dumps/security-state/intermediates.json
index c3f3a44fc6..eff3924711 100644
--- a/services/settings/dumps/security-state/intermediates.json
+++ b/services/settings/dumps/security-state/intermediates.json
@@ -1,6 +1,402 @@
{
"data": [
{
+ "schema": 1719024776570,
+ "derHash": "srAvm5G4z0vIm6HgAOYDBrACrqiiTAiy1/Pdi46trqU=",
+ "subject": "CN=TLC ECC EV SSL CA 2,O=泰尔认证中心有限公司,C=CN",
+ "subjectDN": "MFQxCzAJBgNVBAYTAkNOMScwJQYDVQQKDB7ms7DlsJTorqTor4HkuK3lv4PmnInpmZDlhazlj7gxHDAaBgNVBAMTE1RMQyBFQ0MgRVYgU1NMIENBIDI=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "9c1932ccf6f5a9e5b723cce15947a784b4d8e5794edea688f09a2ae2b5ca22a0",
+ "size": 1142,
+ "filename": "fBELsva28hn0N50XbcZbAya0d7Zu7S6gjlqfyhkBMnw=.pem",
+ "location": "security-state-staging/intermediates/c0a83d91-c04e-4901-9ba1-fee733fe1f13.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "fBELsva28hn0N50XbcZbAya0d7Zu7S6gjlqfyhkBMnw=",
+ "crlite_enrolled": false,
+ "id": "d6882fa3-6d22-4c8b-85b2-ab63a2898a06",
+ "last_modified": 1719025023284
+ },
+ {
+ "schema": 1719024775346,
+ "derHash": "pCcOUlFpH27EDPd0xnF+Lv7D6x44RgfcdYNilqqhXFk=",
+ "subject": "CN=SSL.com EV TLS Transit RSA CA R2,O=SSL Corporation,C=US",
+ "subjectDN": "MFIxCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xKTAnBgNVBAMMIFNTTC5jb20gRVYgVExTIFRyYW5zaXQgUlNBIENBIFIy",
+ "whitelist": false,
+ "attachment": {
+ "hash": "c0b5f9a55256377fad49f1b2101194f0e95b4564e00613ae33c5e2671c939a58",
+ "size": 1987,
+ "filename": "BB0JZc-VhUu9ni64PNmCZWVFCZMOLGDKjfZ9-B9983Q=.pem",
+ "location": "security-state-staging/intermediates/c3dfb7ce-9232-4f39-ac84-1bc21cca4d34.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "BB0JZc+VhUu9ni64PNmCZWVFCZMOLGDKjfZ9+B9983Q=",
+ "crlite_enrolled": false,
+ "id": "2627d6e2-7985-4aa6-b9b1-0358ea649f25",
+ "last_modified": 1719025023281
+ },
+ {
+ "schema": 1719024774371,
+ "derHash": "woof3xSuPwRfvF4WAqAQMKdyNsxSJn8jYImcgy6XXBU=",
+ "subject": "CN=SSL.com OV TLS Issuing RSA CA 1,O=SSL Corporation,C=US",
+ "subjectDN": "MFExCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xKDAmBgNVBAMMH1NTTC5jb20gT1YgVExTIElzc3VpbmcgUlNBIENBIDE=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "d5c50345eadd12dcfdb648e4b0505d9965485d426dcdf4fa382c2909d563497e",
+ "size": 1813,
+ "filename": "hAjHe-3BykIlgjLNTOWLMDSaNA7iWDMBf9vMHQFxBfM=.pem",
+ "location": "security-state-staging/intermediates/d59f9ef5-45f8-4953-a99f-8cb62cdb168d.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "hAjHe+3BykIlgjLNTOWLMDSaNA7iWDMBf9vMHQFxBfM=",
+ "crlite_enrolled": false,
+ "id": "1341aca7-8299-4d1f-849b-e714ffc036c1",
+ "last_modified": 1719025023279
+ },
+ {
+ "schema": 1719024775642,
+ "derHash": "LLPH9oVwnKlHSKgp0DRRXZntRHrFAvY8B9EuzNM3sWE=",
+ "subject": "CN=TLC ECC OV SSL CA 2,O=泰尔认证中心有限公司,C=CN",
+ "subjectDN": "MFQxCzAJBgNVBAYTAkNOMScwJQYDVQQKDB7ms7DlsJTorqTor4HkuK3lv4PmnInpmZDlhazlj7gxHDAaBgNVBAMTE1RMQyBFQ0MgT1YgU1NMIENBIDI=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "69481e097e49bba3a97dab83f3154aa16ce172d6d74db496be6a6e1920ed1c0f",
+ "size": 1146,
+ "filename": "UqX0nbABVp5VC7JTjlMCX5lb7bevqfQbLXs2Gr7HcZ0=.pem",
+ "location": "security-state-staging/intermediates/7208c135-07df-407b-adb6-b23c846ca34b.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "UqX0nbABVp5VC7JTjlMCX5lb7bevqfQbLXs2Gr7HcZ0=",
+ "crlite_enrolled": false,
+ "id": "37004837-9c61-4ddb-95ac-93ce7e075209",
+ "last_modified": 1719025023276
+ },
+ {
+ "schema": 1719024773500,
+ "derHash": "O4w3nyP6IiVqDh9E2S8KD8dwvN6fhVfxYBSbzaIu3ng=",
+ "subject": "CN=SSL.com EV TLS Issuing ECC CA R1,O=SSL Corporation,C=US",
+ "subjectDN": "MFIxCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xKTAnBgNVBAMMIFNTTC5jb20gRVYgVExTIElzc3VpbmcgRUNDIENBIFIx",
+ "whitelist": false,
+ "attachment": {
+ "hash": "7625cc3a6cadb841df17d1dca35e294af256b9c56a45e43a582ea0d786608410",
+ "size": 1406,
+ "filename": "cCqwzeMmcY9GAwoG1CFguEUHPI8MEGng1iWmfPgg6H4=.pem",
+ "location": "security-state-staging/intermediates/84939c8b-963a-414a-888f-aedc9c366336.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "cCqwzeMmcY9GAwoG1CFguEUHPI8MEGng1iWmfPgg6H4=",
+ "crlite_enrolled": false,
+ "id": "e4fc358e-8793-4e9a-b4d5-cb322257ea3d",
+ "last_modified": 1719025023274
+ },
+ {
+ "schema": 1719024773793,
+ "derHash": "0wa/DYW9ENCDoeyls41AFJ5cRQ+ZYCHMCN4lTRci5hk=",
+ "subject": "CN=SSL.com OV TLS Issuing ECC CA 1,O=SSL Corporation,C=US",
+ "subjectDN": "MFExCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xKDAmBgNVBAMMH1NTTC5jb20gT1YgVExTIElzc3VpbmcgRUNDIENBIDE=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "718298bae74fcc46e0c6daa8f20b7e662df079fed662c8ea3fe763a369f208d1",
+ "size": 1406,
+ "filename": "_1gJkt0BlZX88iJllnik6BHg_MLbYbbnb-YQmvJxQak=.pem",
+ "location": "security-state-staging/intermediates/bdb668ac-f337-42bb-9f8d-38720a09383c.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "/1gJkt0BlZX88iJllnik6BHg/MLbYbbnb+YQmvJxQak=",
+ "crlite_enrolled": false,
+ "id": "ab7fe0f5-4013-44b7-b8a9-6172af8799ac",
+ "last_modified": 1719025023271
+ },
+ {
+ "schema": 1719024774082,
+ "derHash": "NWt4pNuavKyeuAUdWlEUPG+T70Hbrv1/3icXtqOd1sQ=",
+ "subject": "CN=TLC ECC DV SSL CA 2,O=泰尔认证中心有限公司,C=CN",
+ "subjectDN": "MFQxCzAJBgNVBAYTAkNOMScwJQYDVQQKDB7ms7DlsJTorqTor4HkuK3lv4PmnInpmZDlhazlj7gxHDAaBgNVBAMTE1RMQyBFQ0MgRFYgU1NMIENBIDI=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "3f9e1908ef9c4123aac43c61cf6654bd7e15ddb508cb5379b4124e0d16c5ca34",
+ "size": 1146,
+ "filename": "Z88H8nHx9myIVW-dnsUUbOxZMxxlvx8PsVn2Kc8Jqh0=.pem",
+ "location": "security-state-staging/intermediates/89ef9d5e-8a26-4ea2-a989-8c9c5e085d73.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "Z88H8nHx9myIVW+dnsUUbOxZMxxlvx8PsVn2Kc8Jqh0=",
+ "crlite_enrolled": false,
+ "id": "6292f23c-d72a-411b-83cb-11ecf4a3ee6a",
+ "last_modified": 1719025023269
+ },
+ {
+ "schema": 1719024772920,
+ "derHash": "RVaj0ypLZUIAupkHztdIaSfZ+S8eCKeudgdmrDfn/To=",
+ "subject": "CN=TLC RSA DV SSL CA 2,O=泰尔认证中心有限公司,C=CN",
+ "subjectDN": "MFQxCzAJBgNVBAYTAkNOMScwJQYDVQQKDB7ms7DlsJTorqTor4HkuK3lv4PmnInpmZDlhazlj7gxHDAaBgNVBAMTE1RMQyBSU0EgRFYgU1NMIENBIDI=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "cf5f3cb7cee5d05d9a7b49ee64c36ce5de39be33ae18b11649bd4bb389edbf1a",
+ "size": 2158,
+ "filename": "mECJ1cnyrycLzcKV2LqQWeskbezkJWrusiJ2gSXRSCE=.pem",
+ "location": "security-state-staging/intermediates/bf1122af-46f7-427d-ad7e-ae12dba95892.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "mECJ1cnyrycLzcKV2LqQWeskbezkJWrusiJ2gSXRSCE=",
+ "crlite_enrolled": false,
+ "id": "d1f46731-faa9-4eea-af58-5da3d5d56ed5",
+ "last_modified": 1719025023266
+ },
+ {
+ "schema": 1719024772313,
+ "derHash": "/p+w94PruEMQmqMd6dqYZLZUKUDDB98jGAsR8ffhCN4=",
+ "subject": "CN=SSL.com TLS Transit ECC CA R2,O=SSL Corporation,C=US",
+ "subjectDN": "ME8xCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xJjAkBgNVBAMMHVNTTC5jb20gVExTIFRyYW5zaXQgRUNDIENBIFIy",
+ "whitelist": false,
+ "attachment": {
+ "hash": "be14d7376806b71c91552e2f864b32818eebd29d61899c09dbd2166351212890",
+ "size": 1382,
+ "filename": "OXyj9ngbqO9cjLeO_-t9Ggl2EP4JTnVWHq4LEwhFM9w=.pem",
+ "location": "security-state-staging/intermediates/3fa21f3a-2ff3-4972-af95-fb2d086804bd.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "OXyj9ngbqO9cjLeO/+t9Ggl2EP4JTnVWHq4LEwhFM9w=",
+ "crlite_enrolled": false,
+ "id": "0ff4c892-1613-4af3-809c-3c6b5ece0e72",
+ "last_modified": 1719025023263
+ },
+ {
+ "schema": 1719024776268,
+ "derHash": "qz3oGfNC8KYdGZ1L6GpPfz8oEM3/Cwv/hy9Nk+gSzoA=",
+ "subject": "CN=SSL.com TLS Issuing RSA CA R1,O=SSL Corporation,C=US",
+ "subjectDN": "ME8xCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xJjAkBgNVBAMMHVNTTC5jb20gVExTIElzc3VpbmcgUlNBIENBIFIx",
+ "whitelist": false,
+ "attachment": {
+ "hash": "1164037827e9098e1a72d32ca812010928452b24d425fecc657556a3ae232629",
+ "size": 1792,
+ "filename": "0FKBVxnyd4Jq8v8ST-3sjO-WoB7PLBEpSdixbHE1L4g=.pem",
+ "location": "security-state-staging/intermediates/7d87e17a-40a1-4694-bd90-0e5d9218c6e7.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "0FKBVxnyd4Jq8v8ST+3sjO+WoB7PLBEpSdixbHE1L4g=",
+ "crlite_enrolled": false,
+ "id": "e46a8e8e-bef3-4fd2-98e1-ecbff463e571",
+ "last_modified": 1719025023261
+ },
+ {
+ "schema": 1719024771710,
+ "derHash": "Ha+BICXiN2J5wHQFDuNeGy2Qn4tXoA+Ct7XSgSDDWCo=",
+ "subject": "CN=SSL.com EV TLS Issuing RSA CA R1,O=SSL Corporation,C=US",
+ "subjectDN": "MFIxCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xKTAnBgNVBAMMIFNTTC5jb20gRVYgVExTIElzc3VpbmcgUlNBIENBIFIx",
+ "whitelist": false,
+ "attachment": {
+ "hash": "61dac3455ed233b863ccbd8d70bc65cb52189afac735c5bd6ef0e98710522ee2",
+ "size": 1817,
+ "filename": "3ebNWkR6qhSsVzk3WkbXqmW0areNxC--6UeU--EA9Io=.pem",
+ "location": "security-state-staging/intermediates/f4578e65-7979-4ff6-8286-dc31924b210a.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "3ebNWkR6qhSsVzk3WkbXqmW0areNxC++6UeU++EA9Io=",
+ "crlite_enrolled": false,
+ "id": "7bc24395-a445-4d62-8038-16bcd2024f10",
+ "last_modified": 1719025023258
+ },
+ {
+ "schema": 1719024771991,
+ "derHash": "f+VXL76TSvxBUWUf7wmLmUCkeWbECFV3MU1xBM3oQyk=",
+ "subject": "CN=SSL.com EV TLS Transit ECC CA R2,O=SSL Corporation,C=US",
+ "subjectDN": "MFIxCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xKTAnBgNVBAMMIFNTTC5jb20gRVYgVExTIFRyYW5zaXQgRUNDIENBIFIy",
+ "whitelist": false,
+ "attachment": {
+ "hash": "9eab9d4614f96a6e18b8525b20c15197bcf21286de199ef3ebcc813ac73dd3ba",
+ "size": 1406,
+ "filename": "YhmwQZRxuMMLT6QK3cqSB3SCtkKBIgqOYUC1UCixGUM=.pem",
+ "location": "security-state-staging/intermediates/60390ed2-14e9-4c8c-bad1-9eec6ae0bf55.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "YhmwQZRxuMMLT6QK3cqSB3SCtkKBIgqOYUC1UCixGUM=",
+ "crlite_enrolled": false,
+ "id": "02193840-91ed-4fcb-be07-f1751f47f98a",
+ "last_modified": 1719025023256
+ },
+ {
+ "schema": 1719024771417,
+ "derHash": "uQzzmOG+LlnGvx4Pf5lsqy4VM3NKC8MomJwTXrGdZyk=",
+ "subject": "CN=SSL.com IV TLS Transit RSA CA 1,O=SSL Corporation,C=US",
+ "subjectDN": "MFExCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xKDAmBgNVBAMMH1NTTC5jb20gSVYgVExTIFRyYW5zaXQgUlNBIENBIDE=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "4b4e26f7523ea7df828a4fadc885460560f458ba0b2ae86964ced1ccb7b6dfcb",
+ "size": 1967,
+ "filename": "R_O5JJ9biXMtEnmiODpukBteFwfJM0MXwQWiSsjJALQ=.pem",
+ "location": "security-state-staging/intermediates/b5423f85-913a-4e3a-8513-23c1665306b9.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "R/O5JJ9biXMtEnmiODpukBteFwfJM0MXwQWiSsjJALQ=",
+ "crlite_enrolled": false,
+ "id": "86450b8e-41cf-4cc7-85ef-01badba6bcd7",
+ "last_modified": 1719025023253
+ },
+ {
+ "schema": 1719024770519,
+ "derHash": "LcfdxEC2MyJ0hoxeHfXRW9ceWhhh0ithgbwcLL+jKzQ=",
+ "subject": "CN=SSL.com TLS Issuing ECC CA R2,O=SSL Corporation,C=US",
+ "subjectDN": "ME8xCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xJjAkBgNVBAMMHVNTTC5jb20gVExTIElzc3VpbmcgRUNDIENBIFIy",
+ "whitelist": false,
+ "attachment": {
+ "hash": "831bb8448deba8589c5e258466d9fdc144350799db0188471107ff985235b288",
+ "size": 1382,
+ "filename": "NPRrBk96t64vay83a8Kf7kLV8Vmdi_17Qgpes328_Pk=.pem",
+ "location": "security-state-staging/intermediates/342d50a7-5e74-40f4-95b5-e5a46ffc8961.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "NPRrBk96t64vay83a8Kf7kLV8Vmdi/17Qgpes328/Pk=",
+ "crlite_enrolled": false,
+ "id": "59e3180e-a2ff-4f1f-ab29-a4cedbee022f",
+ "last_modified": 1719025023251
+ },
+ {
+ "schema": 1719024770157,
+ "derHash": "E3LHtNasOkOL38h6KdMDMV/zT8Wx5zIFk2t7mShKivU=",
+ "subject": "CN=SSL.com IV TLS Issuing RSA CA 1,O=SSL Corporation,C=US",
+ "subjectDN": "MFExCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xKDAmBgNVBAMMH1NTTC5jb20gSVYgVExTIElzc3VpbmcgUlNBIENBIDE=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "ffba53970e8343098fe2f7d1dd9e7d7266090ac1fde303062c630d64a886fa9a",
+ "size": 1792,
+ "filename": "mhzhCo3EEEyXI3PieOhth0fVaJYvXtTu14HQEFJNQ18=.pem",
+ "location": "security-state-staging/intermediates/53f315e5-d84c-4648-9e8a-bbe42cc0f61d.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "mhzhCo3EEEyXI3PieOhth0fVaJYvXtTu14HQEFJNQ18=",
+ "crlite_enrolled": false,
+ "id": "286b2b4f-05b5-4254-afae-dcee91fc0b65",
+ "last_modified": 1719025023248
+ },
+ {
+ "schema": 1719024772618,
+ "derHash": "69QX9ZXD8lm3RVyBNSk1BbaSxH4PdNO6iFziLIh1yig=",
+ "subject": "CN=SSL.com TLS Transit RSA CA R2,O=SSL Corporation,C=US",
+ "subjectDN": "ME8xCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xJjAkBgNVBAMMHVNTTC5jb20gVExTIFRyYW5zaXQgUlNBIENBIFIy",
+ "whitelist": false,
+ "attachment": {
+ "hash": "c8aeda26502973c751bb9fb0f2a141c34809a5ea2966a08bf7340eec6da09e7c",
+ "size": 1963,
+ "filename": "vn0e1DEpYDnOWeNSH0IkuvrS8iIAE7x5aB7EolDUxS0=.pem",
+ "location": "security-state-staging/intermediates/6e6717df-3a67-4ebc-b765-c3b396af4ad5.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "vn0e1DEpYDnOWeNSH0IkuvrS8iIAE7x5aB7EolDUxS0=",
+ "crlite_enrolled": false,
+ "id": "5441196b-5c54-46fc-bf5f-09666be138dc",
+ "last_modified": 1719025023246
+ },
+ {
+ "schema": 1719024771131,
+ "derHash": "WrpyCi9Sd3TVFtwSAh5iSHVq3wRurggYVV6Wn45DzB8=",
+ "subject": "CN=SSL.com OV TLS Transit RSA CA 1,O=SSL Corporation,C=US",
+ "subjectDN": "MFExCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xKDAmBgNVBAMMH1NTTC5jb20gT1YgVExTIFRyYW5zaXQgUlNBIENBIDE=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "4371eae1a111c2f325f97f40cddaf70a5bec29b7d75fa8c8014fa9d9b242e0a3",
+ "size": 1987,
+ "filename": "o0HYUK1eZnSZd9pJ4VJWzYwXhM_Kd77fUqkcbAgPyBQ=.pem",
+ "location": "security-state-staging/intermediates/1be23df4-c1f9-493a-a3a6-9d74eda651df.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "o0HYUK1eZnSZd9pJ4VJWzYwXhM/Kd77fUqkcbAgPyBQ=",
+ "crlite_enrolled": false,
+ "id": "5136df5a-d925-4801-856e-01a0d33eb9f0",
+ "last_modified": 1719025023243
+ },
+ {
+ "schema": 1719024775918,
+ "derHash": "Nwj7gEORx1ql2BI1whTzmMbcpslJKjr96Spf2S/kj6s=",
+ "subject": "CN=SSL.com IV TLS Transit ECC CA 1,O=SSL Corporation,C=US",
+ "subjectDN": "MFExCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xKDAmBgNVBAMMH1NTTC5jb20gSVYgVExTIFRyYW5zaXQgRUNDIENBIDE=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "0693aced3a7ebd0daa7308e02c47700a3964c741b6848f4744328f12be7f4bb6",
+ "size": 1382,
+ "filename": "Uujf2MPA35Lg50AhrhFGPERK_ZHDRJxc3Xmyj43PdEs=.pem",
+ "location": "security-state-staging/intermediates/a0b31623-6daf-4adb-8394-2efeff698c7e.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "Uujf2MPA35Lg50AhrhFGPERK/ZHDRJxc3Xmyj43PdEs=",
+ "crlite_enrolled": false,
+ "id": "4a128fb1-c829-4c3f-8814-6d654a6cb919",
+ "last_modified": 1719025023241
+ },
+ {
+ "schema": 1719024775044,
+ "derHash": "4xkQJsUmSHoF9orfS4yjlcBEqmtecqcOhznacahg0Ns=",
+ "subject": "CN=SSL.com IV TLS Issuing ECC CA 1,O=SSL Corporation,C=US",
+ "subjectDN": "MFExCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xKDAmBgNVBAMMH1NTTC5jb20gSVYgVExTIElzc3VpbmcgRUNDIENBIDE=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "9391eb50931d558d5eb66ebbe2b3ece7dc2375d41443661167029ecc302298a4",
+ "size": 1386,
+ "filename": "Zd5CFIWdko8GdSBgv9xIY2vQLDplCKAQgT7bRrFKcVo=.pem",
+ "location": "security-state-staging/intermediates/bf5c0d10-9619-43ab-91f7-ad5abe09e56d.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "Zd5CFIWdko8GdSBgv9xIY2vQLDplCKAQgT7bRrFKcVo=",
+ "crlite_enrolled": false,
+ "id": "efaee209-130f-4744-a465-c6336294e123",
+ "last_modified": 1719025023238
+ },
+ {
+ "schema": 1719024774679,
+ "derHash": "KN5fmLLbTEOB/agwesnDVduJiWa1JWZaAZ9dbf5+8co=",
+ "subject": "CN=SSL.com OV TLS Transit ECC CA 1,O=SSL Corporation,C=US",
+ "subjectDN": "MFExCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xKDAmBgNVBAMMH1NTTC5jb20gT1YgVExTIFRyYW5zaXQgRUNDIENBIDE=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "9e8eb4f491ef89a158899d897e0dce2f70d3196c3f2614641b36d6104ded3cd4",
+ "size": 1406,
+ "filename": "RFBEONmGnotBOM1HNtNx0nqeqPqncPrhxWZuEl0SvBg=.pem",
+ "location": "security-state-staging/intermediates/3f47ec12-f698-4f04-8d1e-c7b66080c49c.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "RFBEONmGnotBOM1HNtNx0nqeqPqncPrhxWZuEl0SvBg=",
+ "crlite_enrolled": false,
+ "id": "5f6e7045-46d6-4a1b-9daf-8c613dfe9eb8",
+ "last_modified": 1719025023236
+ },
+ {
+ "schema": 1719024773203,
+ "derHash": "iZulW+4Abiu/05XAP4vufqnJtShSLOxeEr8PWPkMTSY=",
+ "subject": "CN=TLC RSA EV SSL CA 2,O=泰尔认证中心有限公司,C=CN",
+ "subjectDN": "MFQxCzAJBgNVBAYTAkNOMScwJQYDVQQKDB7ms7DlsJTorqTor4HkuK3lv4PmnInpmZDlhazlj7gxHDAaBgNVBAMTE1RMQyBSU0EgRVYgU1NMIENBIDI=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "94f8660b012509a7df3740e58fc77a6c83f6f7906625bf93c87b8814f59a39e3",
+ "size": 2158,
+ "filename": "C4hyD5xenW47ze3P0-qo_OoAhIRyoseeVTtsqA8FYf4=.pem",
+ "location": "security-state-staging/intermediates/5d73e42e-9b14-4197-9895-daaa417a8c64.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "C4hyD5xenW47ze3P0+qo/OoAhIRyoseeVTtsqA8FYf4=",
+ "crlite_enrolled": false,
+ "id": "f3885d49-a0cf-4fdf-a126-134187267b48",
+ "last_modified": 1719025023233
+ },
+ {
+ "schema": 1719024770848,
+ "derHash": "HdDVEq35Gd/vv+6WdSSqajILmRMlMLrfTSIXi/+eTR4=",
+ "subject": "CN=TLC RSA OV SSL CA 2,O=泰尔认证中心有限公司,C=CN",
+ "subjectDN": "MFQxCzAJBgNVBAYTAkNOMScwJQYDVQQKDB7ms7DlsJTorqTor4HkuK3lv4PmnInpmZDlhazlj7gxHDAaBgNVBAMTE1RMQyBSU0EgT1YgU1NMIENBIDI=",
+ "whitelist": false,
+ "attachment": {
+ "hash": "95c7e36d765bb80082a4a27e8aef27e78b73467cd8c7a07f6a2563dd1aaf87ca",
+ "size": 2162,
+ "filename": "W3CKT4JSg2gwuxYAgNDOCT-0oEkSjnSYDLf0vUePE3A=.pem",
+ "location": "security-state-staging/intermediates/88188ea7-0c5a-402d-9fed-948023b8d80e.pem",
+ "mimetype": "application/x-pem-file"
+ },
+ "pubKeyHash": "W3CKT4JSg2gwuxYAgNDOCT+0oEkSjnSYDLf0vUePE3A=",
+ "crlite_enrolled": false,
+ "id": "be56b760-de01-4dae-9ac9-3a6e1cde93e5",
+ "last_modified": 1719025023230
+ },
+ {
"schema": 1718419986483,
"derHash": "iA+8RP5xqhvkDbEwkXsbrsG9iJsrPXR47aBHKGZ+i0Q=",
"subject": "CN=GoDaddy Secure Certificate Authority - G5,O=GoDaddy Inc.,C=US",
@@ -25255,24 +25651,6 @@
"last_modified": 1654804623143
},
{
- "schema": 1652389030686,
- "derHash": "ayP62JAYDDN7hkFV2uDem62e8L2njREvLL3D0CrReVY=",
- "subject": "CN=NetLock Üzleti (Class B) Tanúsítványkiadó,OU=Tanúsítványkiadók (Certification Services),O=NetLock Kft.,L=Budapest,C=HU",
- "subjectDN": "MIGpMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE3MDUGA1UEAwwuTmV0TG9jayDDnHpsZXRpIChDbGFzcyBCKSBUYW7DunPDrXR2w6FueWtpYWTDsw==",
- "whitelist": false,
- "attachment": {
- "hash": "573f7ca4199a4ab7b67cf4b5b1c8e25a89da7c93d3296ece5e8301e5bf64c39b",
- "size": 2182,
- "filename": "1YROuDznuNvrat3sL9gwGR124PRLocGQQWd6IoM50Ls=.pem",
- "location": "security-state-staging/intermediates/5ae11eb3-59e2-4f2f-a3ad-09d610869295.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "1YROuDznuNvrat3sL9gwGR124PRLocGQQWd6IoM50Ls=",
- "crlite_enrolled": false,
- "id": "1a8145a6-66a3-4c40-914b-e027086ea091",
- "last_modified": 1652540239008
- },
- {
"schema": 1652539714356,
"derHash": "NyuPTOc77fyIcYxAe7az5tj5p5vpVxkNDnEBx7DvmjI=",
"subject": "CN=NetLock Expressz (Class C) Tanúsítványkiadó,OU=Tanúsítványkiadók (Certification Services),O=NetLock Kft.,L=Budapest,C=HU",
@@ -29881,24 +30259,6 @@
"last_modified": 1562025497120
},
{
- "schema": 1562025471549,
- "derHash": "HZNobKQscDlPvcK8H5hGHRmHHCoAB4uBVJkxLtn2/gw=",
- "subject": "CN=NetLock Üzleti Eat. (Class B Legal) Tanúsítványkiadó,OU=Tanúsítványkiadók (Certification Services),O=NetLock Kft.,L=Budapest,C=HU",
- "subjectDN": "MIG0MQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTFCMEAGA1UEAww5TmV0TG9jayDDnHpsZXRpIEVhdC4gKENsYXNzIEIgTGVnYWwpIFRhbsO6c8OtdHbDoW55a2lhZMOz",
- "whitelist": false,
- "attachment": {
- "hash": "4fba3ae97dd053930e8514eb3fdcdbc3ccccbadc3b59f72c390b9e8968b894f8",
- "size": 2198,
- "filename": "_vwER7WMeggAoauXgB8U4heDYF3dmMm_S99ZfAayhZ8=.pem",
- "location": "security-state-staging/intermediates/77e0aaee-29fa-489c-be2e-6dfde8a27857.pem",
- "mimetype": "application/x-pem-file"
- },
- "pubKeyHash": "/vwER7WMeggAoauXgB8U4heDYF3dmMm/S99ZfAayhZ8=",
- "crlite_enrolled": false,
- "id": "7174ab51-9ffe-493a-89bf-49620f52a798",
- "last_modified": 1562025472308
- },
- {
"schema": 1562025422689,
"derHash": "eBrNIJ07hz8Uj12zHGgK2tztQCONjBvxotVTOR+l0PM=",
"subject": "CN=Certigna Entity Code Signing CA,OU=0002 48146308100036,O=DHIMYOTIS,C=FR",
@@ -30853,5 +31213,5 @@
"last_modified": 1559865884636
}
],
- "timestamp": 1718553423053
+ "timestamp": 1719154633250
}
diff --git a/sourcestamp.txt b/sourcestamp.txt
index 4faddd3dc2..60b44e8070 100644
--- a/sourcestamp.txt
+++ b/sourcestamp.txt
@@ -1,2 +1,2 @@
-20240618110440
-https://hg.mozilla.org/releases/mozilla-release/rev/b8d39a885c8155af6a83ad631f71108ded7fb7af
+20240624183754
+https://hg.mozilla.org/releases/mozilla-release/rev/c7bfb1e800e25153412ab2b70836fcbb090ba99e
diff --git a/toolkit/components/search/schema/search-config-icons-schema.json b/toolkit/components/search/schema/search-config-icons-schema.json
index eda23080dd..bd17d1cbc2 100644
--- a/toolkit/components/search/schema/search-config-icons-schema.json
+++ b/toolkit/components/search/schema/search-config-icons-schema.json
@@ -22,7 +22,7 @@
"type": "string",
"title": "Filter Expression",
"description": "A JEXL to filter records",
- "pattern": "^[a-zA-Z0-9-_=!\"{} .]*$"
+ "pattern": "^[a-zA-Z0-9-_=!\"{} .<>|&()]*$"
}
}
}
diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp
index ac393e8b09..b06a34c2f5 100644
--- a/widget/windows/nsWindow.cpp
+++ b/widget/windows/nsWindow.cpp
@@ -993,7 +993,8 @@ nsresult nsWindow::Create(nsIWidget* aParent, nsNativeWidget aNativeParent,
}
}
- if (aInitData->mIsPrivate) {
+ if (Preferences::GetBool("browser.privateWindowSeparation.enabled", true) &&
+ (aInitData->mIsPrivate)) {
// Although permanent Private Browsing mode is indeed Private Browsing,
// we choose to make it look like regular Firefox in terms of the icon
// it uses (which also means we shouldn't use the Private Browsing