lists.torproject.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

tbb-commits

Thread Start a new thread
Threads by month
  • ----- 2026 -----
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2015 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2014 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
tbb-commits@lists.torproject.org

  • 1 participants
  • 20967 discussions
[Git][tpo/applications/mullvad-browser][mullvad-browser-149.0a1-16.0-2] fixup! BB 43322: Customize the font visibility lists.
by Pier Angelo Vendrame (@pierov) 16 Apr '26

16 Apr '26
Pier Angelo Vendrame pushed to branch mullvad-browser-149.0a1-16.0-2 at The Tor Project / Applications / Mullvad Browser Commits: db14782c by Pier Angelo Vendrame at 2026-04-16T17:45:14+02:00 fixup! BB 43322: Customize the font visibility lists. BB 44862: Add Segoe MDL2 Assets to fontvis. - - - - - 1 changed file: - gfx/thebes/StandardFonts-win10-bb.inc Changes: ===================================== gfx/thebes/StandardFonts-win10-bb.inc ===================================== @@ -16,6 +16,7 @@ static const char* kBaseFonts[] = { "MS Gothic", "MS PGothic", "MV Boli", + "Segoe MDL2 Assets", "Segoe UI", "SimSun", "Sylfaen", View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/db1… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/db1… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-149.0a1-16.0-2] fixup! BB 43322: Customize the font visibility lists.
by Pier Angelo Vendrame (@pierov) 16 Apr '26

16 Apr '26
Pier Angelo Vendrame pushed to branch tor-browser-149.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: 723952b8 by Pier Angelo Vendrame at 2026-04-16T17:43:14+02:00 fixup! BB 43322: Customize the font visibility lists. BB 44862: Add Segoe MDL2 Assets to fontvis. - - - - - 1 changed file: - gfx/thebes/StandardFonts-win10-bb.inc Changes: ===================================== gfx/thebes/StandardFonts-win10-bb.inc ===================================== @@ -16,6 +16,7 @@ static const char* kBaseFonts[] = { "MS Gothic", "MS PGothic", "MV Boli", + "Segoe MDL2 Assets", "Segoe UI", "SimSun", "Sylfaen", View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/723952b… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/723952b… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-149.0a1-16.0-2] fixup! Add CI for Tor Browser
by brizental (@brizental) 16 Apr '26

16 Apr '26
brizental pushed to branch tor-browser-149.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: fbfc2288 by Beatriz Rizental at 2026-04-16T11:40:32-03:00 fixup! Add CI for Tor Browser Bug 44860: Add a container with Android toolchains - - - - - 3 changed files: - .gitlab-ci.yml - .gitlab/ci/containers/base/Containerfile - .gitlab/ci/jobs/update-containers.yml Changes: ===================================== .gitlab-ci.yml ===================================== @@ -6,7 +6,7 @@ stages: - update-translations variables: - IMAGE_PATH: containers.torproject.org/tpo/applications/tor-browser/base:latest + IMAGE_PATH: containers.torproject.org/tpo/applications/tor-browser/desktop:latest LOCAL_REPO_PATH: /srv/apps-repos/tor-browser.git include: ===================================== .gitlab/ci/containers/base/Containerfile ===================================== @@ -1,23 +1,39 @@ -# This image is published in containers.torproject.org/tpo/applications/tor-browser/base +# This image is published in containers.torproject.org/tpo/applications/tor-browser/{android,desktop} # -# Whenever there are changes to this file, -# they are autopublished on merge to the tpo/applications/tor-browser repository. -# -# The image is updated roughly once a month when the tor-browser repository is rebased. +# This image is built and published on CI. The CI job that does this is manual, +# therefore it's up to the developer or reviewer to trigger this CI job when necessary +# e.g. after a RR rebase or big changes to this file. FROM containers.torproject.org/tpo/tpa/base-images/python:trixie +ARG APPLICATION_CHOICE + RUN apt-get update && apt-get install -y \ + curl \ git \ - xvfb + libc6-dev \ + xvfb \ + zlib1g-dev RUN git clone --single-branch --depth 1 https://gitlab.torproject.org/tpo/applications/tor-browser.git # Bootstrap will download and install all dependencies required for building / linting / etc. RUN cd tor-browser && \ - yes | MOZBUILD_STATE_PATH=/var/tmp/mozbuild ./mach bootstrap --application-choice "Tor Browser for Desktop" && \ + yes | MOZBUILD_STATE_PATH=/var/tmp/mozbuild ./mach bootstrap --application-choice "$APPLICATION_CHOICE" && \ cd .. +ENV PATH="/var/tmp/mozbuild/clang/bin:/root/.cargo/bin:$PATH" + +RUN echo "$APPLICATION_CHOICE" | grep -qi android && \ + rustup target add armv7-linux-androideabi \ + aarch64-linux-android \ + i686-linux-android \ + x86_64-linux-android \ + || true + RUN rm -rf tor-browser && \ apt-get clean && \ - rm -rf /var/lib/apt/lists/* + rm -rf /var/lib/apt/lists/* && \ + rm -rf /var/tmp/mozbuild/toolchains && \ + rm -rf /var/tmp/mozbuild/indices && \ + rm -rf /var/tmp/mozbuild/android-device ===================================== .gitlab/ci/jobs/update-containers.yml ===================================== @@ -1,11 +1,17 @@ -build-base-image: +build-image: stage: update-container-images interruptible: true image: containers.torproject.org/tpo/tpa/base-images/podman:bookworm + parallel: + matrix: + - PLATFORM: desktop + APPLICATION_CHOICE: "Tor Browser for Desktop" + - PLATFORM: android + APPLICATION_CHOICE: "GeckoView/Tor Browser for Android" script: - - export TAG="${CI_REGISTRY_IMAGE}/base:latest" + - export TAG="${CI_REGISTRY_IMAGE}/${PLATFORM}:latest" - podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - podman build --layers=false $IMAGE -t ${TAG} -f .gitlab/ci/containers/base/Containerfile . + - podman build --layers=false $IMAGE -t ${TAG} --build-arg APPLICATION_CHOICE="${APPLICATION_CHOICE}" -f .gitlab/ci/containers/base/Containerfile . - | echo -e "\e[33mPushing new image to registry as ${TAG}\e[0m" podman push ${TAG} View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/fbfc228… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/fbfc228… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-140.10.0esr-15.0-1] fixup! BB 40926: Implemented the New Identity feature
by ma1 (@ma1) 16 Apr '26

16 Apr '26
ma1 pushed to branch mullvad-browser-140.10.0esr-15.0-1 at The Tor Project / Applications / Mullvad Browser Commits: d9d20a24 by hackademix at 2026-04-16T13:10:07+02:00 fixup! BB 40926: Implemented the New Identity feature BB 44288: Regression, custom home page not blocked anymore on new identity. - - - - - 2 changed files: - browser/components/newidentity/content/newidentity.js - browser/modules/BrowserWindowTracker.sys.mjs Changes: ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -402,7 +402,8 @@ ChromeUtils.defineLazyGetter(this, "NewIdentityButton", () => { const isCustomHome = Services.prefs.getIntPref("browser.startup.page") === 1; const win = OpenBrowserWindow({ - private: isCustomHome && isTrustedHome ? "private" : "no-home", + private: true, + skipCustomHome: !(isCustomHome && isTrustedHome), }); // This mechanism to know when the new window is ready is used by // OpenBrowserWindow itself (see its definition in browser.js). @@ -435,7 +436,7 @@ ChromeUtils.defineLazyGetter(this, "NewIdentityButton", () => { } const callback = () => { Services.prefs.setStringPref(trustedHomePref, homeURL); - win.BrowserHome(); + win.BrowserCommands.home(); }; const notificationBox = win.gBrowser.getNotificationBox(); notificationBox.appendNotification( ===================================== browser/modules/BrowserWindowTracker.sys.mjs ===================================== @@ -296,6 +296,7 @@ export const BrowserWindowTracker = { args = null, remote = undefined, fission = undefined, + skipCustomHome = false, } = {}) { let windowFeatures = "chrome,dialog=no,all"; if (features) { @@ -306,7 +307,7 @@ export const BrowserWindowTracker = { windowFeatures += ",private"; if ( (!args && !lazy.PrivateBrowsingUtils.permanentPrivateBrowsing) || - args?.private === "no-home" + skipCustomHome ) { // Force the new window to load about:privatebrowsing instead of the // default home page. View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/d9d… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/d9d… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.10.0esr-15.0-1] fixup! BB 40926: Implemented the New Identity feature
by ma1 (@ma1) 16 Apr '26

16 Apr '26
ma1 pushed to branch tor-browser-140.10.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 1fb85f39 by hackademix at 2026-04-16T09:30:39+02:00 fixup! BB 40926: Implemented the New Identity feature BB 44288: Regression, custom home page not blocked anymore on new identity. - - - - - 2 changed files: - browser/components/newidentity/content/newidentity.js - browser/modules/BrowserWindowTracker.sys.mjs Changes: ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -402,7 +402,8 @@ ChromeUtils.defineLazyGetter(this, "NewIdentityButton", () => { const isCustomHome = Services.prefs.getIntPref("browser.startup.page") === 1; const win = OpenBrowserWindow({ - private: isCustomHome && isTrustedHome ? "private" : "no-home", + private: true, + skipCustomHome: !(isCustomHome && isTrustedHome), }); // This mechanism to know when the new window is ready is used by // OpenBrowserWindow itself (see its definition in browser.js). @@ -435,7 +436,7 @@ ChromeUtils.defineLazyGetter(this, "NewIdentityButton", () => { } const callback = () => { Services.prefs.setStringPref(trustedHomePref, homeURL); - win.BrowserHome(); + win.BrowserCommands.home(); }; const notificationBox = win.gBrowser.getNotificationBox(); notificationBox.appendNotification( ===================================== browser/modules/BrowserWindowTracker.sys.mjs ===================================== @@ -296,6 +296,7 @@ export const BrowserWindowTracker = { args = null, remote = undefined, fission = undefined, + skipCustomHome = false, } = {}) { let windowFeatures = "chrome,dialog=no,all"; if (features) { @@ -306,7 +307,7 @@ export const BrowserWindowTracker = { windowFeatures += ",private"; if ( (!args && !lazy.PrivateBrowsingUtils.permanentPrivateBrowsing) || - args?.private === "no-home" + skipCustomHome ) { // Force the new window to load about:privatebrowsing instead of the // default home page. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/1fb85f3… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/1fb85f3… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-140.10.0esr-15.0-1] 2 commits: Bug 2009213 - Use local statics for harfbuzz callback pointers, to ensure...
by Pier Angelo Vendrame (@pierov) 16 Apr '26

16 Apr '26
Pier Angelo Vendrame pushed to branch mullvad-browser-140.10.0esr-15.0-1 at The Tor Project / Applications / Mullvad Browser Commits: 9a7a95dc by Jonathan Kew at 2026-04-16T09:17:32+02:00 Bug 2009213 - Use local statics for harfbuzz callback pointers, to ensure thread-safe initialization. r=gfx-reviewers,lsalzman Differential Revision: https://phabricator.services.mozilla.com/D278945 - - - - - f3289251 by Pier Angelo Vendrame at 2026-04-16T09:17:33+02:00 Bug 1666613 - Do not rely on intl.css for text direction in parsererror. r=dom-core,hsivonen,firefox-style-system-reviewers,emilio Differential Revision: https://phabricator.services.mozilla.com/D244629 - - - - - 7 changed files: - dom/xml/nsXMLContentSink.cpp - + dom/xml/test/file_bug1666613.xml - dom/xml/test/mochitest.toml - + dom/xml/test/test_bug1666613.html - gfx/thebes/gfxHarfBuzzShaper.cpp - gfx/thebes/gfxHarfBuzzShaper.h - layout/style/res/ua.css Changes: ===================================== dom/xml/nsXMLContentSink.cpp ===================================== @@ -54,6 +54,7 @@ #include "mozilla/dom/ScriptLoader.h" #include "mozilla/dom/txMozillaXSLTProcessor.h" #include "mozilla/dom/nsCSPUtils.h" +#include "mozilla/intl/LocaleService.h" #include "mozilla/CycleCollectedJSContext.h" #include "mozilla/LoadInfo.h" #include "mozilla/UseCounter.h" @@ -1370,12 +1371,6 @@ nsXMLContentSink::ReportError(const char16_t* aErrorText, } // prepare to set <parsererror> as the document root - rv = HandleProcessingInstruction( - u"xml-stylesheet", - u"href=\"chrome://global/locale/intl.css\" type=\"text/css\""); - NS_ENSURE_SUCCESS(rv, rv); - - const char16_t* noAtts[] = {0, 0}; constexpr auto errorNs = u"http://www.mozilla.org/newlayout/xml/parsererror.xml"_ns; @@ -1384,7 +1379,12 @@ nsXMLContentSink::ReportError(const char16_t* aErrorText, parsererror.Append((char16_t)0xFFFF); parsererror.AppendLiteral("parsererror"); - rv = HandleStartElement(parsererror.get(), noAtts, 0, (uint32_t)-1, 0); + const char16_t* dirAttr[] = {u"dir", u"ltr", 0, 0}; + if (intl::LocaleService::GetInstance()->IsAppLocaleRTL() && + !mDocument->ShouldResistFingerprinting(RFPTarget::JSLocale)) { + dirAttr[1] = u"rtl"; + } + rv = HandleStartElement(parsererror.get(), dirAttr, 0, 2, 0); NS_ENSURE_SUCCESS(rv, rv); rv = HandleCharacterData(aErrorText, NS_strlen(aErrorText), false); @@ -1394,6 +1394,7 @@ nsXMLContentSink::ReportError(const char16_t* aErrorText, sourcetext.Append((char16_t)0xFFFF); sourcetext.AppendLiteral("sourcetext"); + const char16_t* noAtts[] = {0, 0}; rv = HandleStartElement(sourcetext.get(), noAtts, 0, (uint32_t)-1, 0); NS_ENSURE_SUCCESS(rv, rv); ===================================== dom/xml/test/file_bug1666613.xml ===================================== @@ -0,0 +1 @@ +<invalid ===================================== dom/xml/test/mochitest.toml ===================================== @@ -4,6 +4,7 @@ support-files = [ "file_bug293347xslt.xml", "file_bug343870.xml", "file_bug691215.xml", + "file_bug1666613.xml", ] ["test_bug232004.xhtml"] @@ -19,3 +20,5 @@ skip-if = [ "http2", "http3", ] + +["test_bug1666613.html"] ===================================== dom/xml/test/test_bug1666613.html ===================================== @@ -0,0 +1,45 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test for Bug 1666613</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> + <style>iframe { width: 90%; }</style> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1666613">Mozilla Bug 691215</a> +<p id="display"></p> +<script class="testbody" type="text/javascript"> + +SimpleTest.waitForExplicitFinish(); + +function checkDir(expected) { + return new Promise(resolve => { + let iframe = document.createElement("iframe"); + document.body.append(iframe); + iframe.onload = () => { + let parserError = iframe.contentDocument.documentElement; + is(parserError.getAttribute("dir"), expected); + resolve(); + }; + iframe.src = "file_bug1666613.xml"; + }); +} + +async function sanityTest() { + await checkDir("ltr"); + await pseudoBidiTest(); +} + +async function pseudoBidiTest() { + await SpecialPowers.pushPrefEnv({ + set: [["intl.l10n.pseudo", "bidi"]] + }); + await checkDir("rtl"); + SimpleTest.finish(); +} + +sanityTest(); +</script> +</body> +</html> ===================================== gfx/thebes/gfxHarfBuzzShaper.cpp ===================================== @@ -1181,9 +1181,6 @@ static void AddOpenTypeFeature(uint32_t aTag, uint32_t aValue, void* aUserArg) { * gfxFontShaper override to initialize the text run using HarfBuzz */ -static hb_font_funcs_t* sHBFontFuncs = nullptr; -static hb_font_funcs_t* sNominalGlyphFunc = nullptr; -static hb_unicode_funcs_t* sHBUnicodeFuncs = nullptr; MOZ_RUNINIT static const hb_script_t sMathScript = hb_ot_tag_to_script(HB_TAG('m', 'a', 't', 'h')); @@ -1192,52 +1189,58 @@ bool gfxHarfBuzzShaper::Initialize() { // other thread can yet be using it. MOZ_PUSH_IGNORE_THREAD_SAFETY - if (!sHBFontFuncs) { - // static function callback pointers, initialized by the first - // harfbuzz shaper used - sHBFontFuncs = hb_font_funcs_create(); - hb_font_funcs_set_nominal_glyph_func(sHBFontFuncs, HBGetNominalGlyph, - nullptr, nullptr); - hb_font_funcs_set_nominal_glyphs_func(sHBFontFuncs, HBGetNominalGlyphs, - nullptr, nullptr); - hb_font_funcs_set_variation_glyph_func(sHBFontFuncs, HBGetVariationGlyph, - nullptr, nullptr); - hb_font_funcs_set_glyph_h_advance_func(sHBFontFuncs, HBGetGlyphHAdvance, - nullptr, nullptr); - hb_font_funcs_set_glyph_h_advances_func(sHBFontFuncs, HBGetGlyphHAdvances, - nullptr, nullptr); - hb_font_funcs_set_glyph_v_advance_func(sHBFontFuncs, HBGetGlyphVAdvance, - nullptr, nullptr); - hb_font_funcs_set_glyph_v_origin_func(sHBFontFuncs, HBGetGlyphVOrigin, - nullptr, nullptr); - hb_font_funcs_set_glyph_extents_func(sHBFontFuncs, HBGetGlyphExtents, - nullptr, nullptr); - hb_font_funcs_set_glyph_contour_point_func(sHBFontFuncs, HBGetContourPoint, + // Function callback pointers; these are local statics to ensure thread-safe + // initialization on first use. + static hb_font_funcs_t* sHBFontFuncs = [] { + auto* funcs = hb_font_funcs_create(); + hb_font_funcs_set_nominal_glyph_func(funcs, HBGetNominalGlyph, nullptr, + nullptr); + hb_font_funcs_set_nominal_glyphs_func(funcs, HBGetNominalGlyphs, nullptr, + nullptr); + hb_font_funcs_set_variation_glyph_func(funcs, HBGetVariationGlyph, nullptr, + nullptr); + hb_font_funcs_set_glyph_h_advance_func(funcs, HBGetGlyphHAdvance, nullptr, + nullptr); + hb_font_funcs_set_glyph_h_advances_func(funcs, HBGetGlyphHAdvances, nullptr, + nullptr); + hb_font_funcs_set_glyph_v_advance_func(funcs, HBGetGlyphVAdvance, nullptr, + nullptr); + hb_font_funcs_set_glyph_v_origin_func(funcs, HBGetGlyphVOrigin, nullptr, + nullptr); + hb_font_funcs_set_glyph_extents_func(funcs, HBGetGlyphExtents, nullptr, + nullptr); + hb_font_funcs_set_glyph_contour_point_func(funcs, HBGetContourPoint, nullptr, nullptr); - hb_font_funcs_set_glyph_h_kerning_func(sHBFontFuncs, HBGetHKerning, nullptr, + hb_font_funcs_set_glyph_h_kerning_func(funcs, HBGetHKerning, nullptr, nullptr); - hb_font_funcs_make_immutable(sHBFontFuncs); - - sNominalGlyphFunc = hb_font_funcs_create(); - hb_font_funcs_set_nominal_glyph_func(sNominalGlyphFunc, HBGetNominalGlyph, - nullptr, nullptr); - hb_font_funcs_make_immutable(sNominalGlyphFunc); - - sHBUnicodeFuncs = hb_unicode_funcs_create(hb_unicode_funcs_get_empty()); - hb_unicode_funcs_set_mirroring_func(sHBUnicodeFuncs, HBGetMirroring, - nullptr, nullptr); - hb_unicode_funcs_set_script_func(sHBUnicodeFuncs, HBGetScript, nullptr, - nullptr); - hb_unicode_funcs_set_general_category_func( - sHBUnicodeFuncs, HBGetGeneralCategory, nullptr, nullptr); - hb_unicode_funcs_set_combining_class_func( - sHBUnicodeFuncs, HBGetCombiningClass, nullptr, nullptr); - hb_unicode_funcs_set_compose_func(sHBUnicodeFuncs, HBUnicodeCompose, - nullptr, nullptr); - hb_unicode_funcs_set_decompose_func(sHBUnicodeFuncs, HBUnicodeDecompose, - nullptr, nullptr); - hb_unicode_funcs_make_immutable(sHBUnicodeFuncs); - } + hb_font_funcs_make_immutable(funcs); + return funcs; + }(); + + static hb_font_funcs_t* sNominalGlyphFunc = [] { + auto* funcs = hb_font_funcs_create(); + hb_font_funcs_set_nominal_glyph_func(funcs, HBGetNominalGlyph, nullptr, + nullptr); + hb_font_funcs_make_immutable(funcs); + return funcs; + }(); + + static hb_unicode_funcs_t* sHBUnicodeFuncs = [] { + auto* funcs = hb_unicode_funcs_create(hb_unicode_funcs_get_empty()); + hb_unicode_funcs_set_mirroring_func(funcs, HBGetMirroring, nullptr, + nullptr); + hb_unicode_funcs_set_script_func(funcs, HBGetScript, nullptr, nullptr); + hb_unicode_funcs_set_general_category_func(funcs, HBGetGeneralCategory, + nullptr, nullptr); + hb_unicode_funcs_set_combining_class_func(funcs, HBGetCombiningClass, + nullptr, nullptr); + hb_unicode_funcs_set_compose_func(funcs, HBUnicodeCompose, nullptr, + nullptr); + hb_unicode_funcs_set_decompose_func(funcs, HBUnicodeDecompose, nullptr, + nullptr); + hb_unicode_funcs_make_immutable(funcs); + return funcs; + }(); gfxFontEntry* entry = mFont->GetFontEntry(); if (!mUseFontGetGlyph) { @@ -1280,11 +1283,10 @@ bool gfxHarfBuzzShaper::Initialize() { hb_buffer_set_cluster_level(mBuffer, HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS); - auto* funcs = - mFont->GetFontEntry()->HasFontTable(TRUETYPE_TAG('C', 'F', 'F', ' ')) - ? sNominalGlyphFunc - : sHBFontFuncs; - mHBFont = CreateHBFont(mFont, funcs, this); + bool isCFF = + mFont->GetFontEntry()->HasFontTable(TRUETYPE_TAG('C', 'F', 'F', ' ')); + auto* funcs = isCFF ? sNominalGlyphFunc : sHBFontFuncs; + mHBFont = CreateHBFont(mFont, funcs, this, isCFF); MOZ_POP_THREAD_SAFETY @@ -1293,12 +1295,13 @@ bool gfxHarfBuzzShaper::Initialize() { hb_font_t* gfxHarfBuzzShaper::CreateHBFont(gfxFont* aFont, hb_font_funcs_t* aFontFuncs, - void* aCallbackData) { + void* aCallbackData, + bool aCreateSubfont) { auto face(aFont->GetFontEntry()->GetHBFace()); hb_font_t* result = hb_font_create(face); if (aFontFuncs && aCallbackData) { - if (aFontFuncs == sNominalGlyphFunc) { + if (aCreateSubfont) { hb_font_t* subfont = hb_font_create_sub_font(result); hb_font_destroy(result); result = subfont; ===================================== gfx/thebes/gfxHarfBuzzShaper.h ===================================== @@ -103,7 +103,8 @@ class gfxHarfBuzzShaper : public gfxFontShaper { // bounds, etc; if not, the built-in hb_ot font functions will be used. static hb_font_t* CreateHBFont(gfxFont* aFont, hb_font_funcs_t* aFontFuncs = nullptr, - void* aCallbackData = nullptr); + void* aCallbackData = nullptr, + bool aCreateSubfont = false); protected: // Initializes the shaper and returns whether this was successful. ===================================== layout/style/res/ua.css ===================================== @@ -434,6 +434,10 @@ parsererror|parsererror { color: black; } +parsererror|parsererror[dir="rtl"] { + direction: rtl; +} + parsererror|sourcetext { display: block; white-space: pre; @@ -443,6 +447,7 @@ parsererror|sourcetext { color: red; font-weight: bold; font-size: 12pt; + direction: ltr; } /* Custom content container in the CanvasFrame, positioned on top of everything View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/05… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/05… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.10.0esr-15.0-1] Bug 1666613 - Do not rely on intl.css for text direction in parsererror....
by Pier Angelo Vendrame (@pierov) 16 Apr '26

16 Apr '26
Pier Angelo Vendrame pushed to branch tor-browser-140.10.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 2e24cfd0 by Pier Angelo Vendrame at 2026-04-16T09:04:35+02:00 Bug 1666613 - Do not rely on intl.css for text direction in parsererror. r=dom-core,hsivonen,firefox-style-system-reviewers,emilio Differential Revision: https://phabricator.services.mozilla.com/D244629 - - - - - 5 changed files: - dom/xml/nsXMLContentSink.cpp - + dom/xml/test/file_bug1666613.xml - dom/xml/test/mochitest.toml - + dom/xml/test/test_bug1666613.html - layout/style/res/ua.css Changes: ===================================== dom/xml/nsXMLContentSink.cpp ===================================== @@ -54,6 +54,7 @@ #include "mozilla/dom/ScriptLoader.h" #include "mozilla/dom/txMozillaXSLTProcessor.h" #include "mozilla/dom/nsCSPUtils.h" +#include "mozilla/intl/LocaleService.h" #include "mozilla/CycleCollectedJSContext.h" #include "mozilla/LoadInfo.h" #include "mozilla/UseCounter.h" @@ -1370,12 +1371,6 @@ nsXMLContentSink::ReportError(const char16_t* aErrorText, } // prepare to set <parsererror> as the document root - rv = HandleProcessingInstruction( - u"xml-stylesheet", - u"href=\"chrome://global/locale/intl.css\" type=\"text/css\""); - NS_ENSURE_SUCCESS(rv, rv); - - const char16_t* noAtts[] = {0, 0}; constexpr auto errorNs = u"http://www.mozilla.org/newlayout/xml/parsererror.xml"_ns; @@ -1384,7 +1379,12 @@ nsXMLContentSink::ReportError(const char16_t* aErrorText, parsererror.Append((char16_t)0xFFFF); parsererror.AppendLiteral("parsererror"); - rv = HandleStartElement(parsererror.get(), noAtts, 0, (uint32_t)-1, 0); + const char16_t* dirAttr[] = {u"dir", u"ltr", 0, 0}; + if (intl::LocaleService::GetInstance()->IsAppLocaleRTL() && + !mDocument->ShouldResistFingerprinting(RFPTarget::JSLocale)) { + dirAttr[1] = u"rtl"; + } + rv = HandleStartElement(parsererror.get(), dirAttr, 0, 2, 0); NS_ENSURE_SUCCESS(rv, rv); rv = HandleCharacterData(aErrorText, NS_strlen(aErrorText), false); @@ -1394,6 +1394,7 @@ nsXMLContentSink::ReportError(const char16_t* aErrorText, sourcetext.Append((char16_t)0xFFFF); sourcetext.AppendLiteral("sourcetext"); + const char16_t* noAtts[] = {0, 0}; rv = HandleStartElement(sourcetext.get(), noAtts, 0, (uint32_t)-1, 0); NS_ENSURE_SUCCESS(rv, rv); ===================================== dom/xml/test/file_bug1666613.xml ===================================== @@ -0,0 +1 @@ +<invalid ===================================== dom/xml/test/mochitest.toml ===================================== @@ -4,6 +4,7 @@ support-files = [ "file_bug293347xslt.xml", "file_bug343870.xml", "file_bug691215.xml", + "file_bug1666613.xml", ] ["test_bug232004.xhtml"] @@ -19,3 +20,5 @@ skip-if = [ "http2", "http3", ] + +["test_bug1666613.html"] ===================================== dom/xml/test/test_bug1666613.html ===================================== @@ -0,0 +1,45 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test for Bug 1666613</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> + <style>iframe { width: 90%; }</style> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1666613">Mozilla Bug 691215</a> +<p id="display"></p> +<script class="testbody" type="text/javascript"> + +SimpleTest.waitForExplicitFinish(); + +function checkDir(expected) { + return new Promise(resolve => { + let iframe = document.createElement("iframe"); + document.body.append(iframe); + iframe.onload = () => { + let parserError = iframe.contentDocument.documentElement; + is(parserError.getAttribute("dir"), expected); + resolve(); + }; + iframe.src = "file_bug1666613.xml"; + }); +} + +async function sanityTest() { + await checkDir("ltr"); + await pseudoBidiTest(); +} + +async function pseudoBidiTest() { + await SpecialPowers.pushPrefEnv({ + set: [["intl.l10n.pseudo", "bidi"]] + }); + await checkDir("rtl"); + SimpleTest.finish(); +} + +sanityTest(); +</script> +</body> +</html> ===================================== layout/style/res/ua.css ===================================== @@ -434,6 +434,10 @@ parsererror|parsererror { color: black; } +parsererror|parsererror[dir="rtl"] { + direction: rtl; +} + parsererror|sourcetext { display: block; white-space: pre; @@ -443,6 +447,7 @@ parsererror|sourcetext { color: red; font-weight: bold; font-size: 12pt; + direction: ltr; } /* Custom content container in the CanvasFrame, positioned on top of everything View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/2e24cfd… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/2e24cfd… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/mullvad-browser] Pushed new tag mullvad-browser-140.10.0esr-15.0-1-build1
by Pier Angelo Vendrame (@pierov) 16 Apr '26

16 Apr '26
Pier Angelo Vendrame pushed new tag mullvad-browser-140.10.0esr-15.0-1-build1 at The Tor Project / Applications / Mullvad Browser -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/mullv… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-140.10.0esr-15.0-1] 24 commits: Add CI for Mullvad Browser
by Pier Angelo Vendrame (@pierov) 16 Apr '26

16 Apr '26
Pier Angelo Vendrame pushed to branch mullvad-browser-140.10.0esr-15.0-1 at The Tor Project / Applications / Mullvad Browser Commits: 8b9656a8 by Henry Wilkes at 2026-04-16T08:56:11+02:00 Add CI for Mullvad Browser - - - - - ccf71985 by Pier Angelo Vendrame at 2026-04-16T08:56:11+02:00 MB 38: Mullvad Browser configuration - - - - - c128e55d by Pier Angelo Vendrame at 2026-04-16T08:56:11+02:00 MB 1: Mullvad Browser branding See also: mullvad-browser#5: Product name and directory customization mullvad-browser#12: Create new branding directories and integrate Mullvad icons+branding mullvad-browser#14: Remove Default Built-in bookmarks mullvad-browser#35: Add custom PDF icons for Windows builds mullvad-browser#48: Replace Mozilla copyright and legal trademarks in mullvadbrowser.exe metadata mullvad-browser#51: Update trademark string mullvad-browser#104: Update shipped dll metadata copyright/licensing info mullvad-browser#107: Add alpha and nightly icons - - - - - 7d79ad55 by Henry Wilkes at 2026-04-16T08:56:12+02:00 Mullvad Browser strings This commit adds strings needed by the following Mullvad Browser patches. - - - - - 49e74255 by Pier Angelo Vendrame at 2026-04-16T08:56:12+02:00 MB 20: Allow packaged-addons in PBM. We install a few addons from the distribution directory, but they are not automatically enabled for PBM mode. This commit modifies the code that installs them to also add the PBM permission to the known ones. - - - - - c6cefa7a by Pier Angelo Vendrame at 2026-04-16T08:56:12+02:00 MB 63: Customize some about pages for Mullvad Browser Also: mullvad-browser#57: Purge unneeded about: pages - - - - - 7b6066fd by Pier Angelo Vendrame at 2026-04-16T08:56:13+02:00 MB 37: Customization for the about dialog - - - - - 88a5aacb by Henry Wilkes at 2026-04-16T08:56:13+02:00 MB 39: Add home page about:mullvad-browser - - - - - dc5f0e8a by hackademix at 2026-04-16T08:56:13+02:00 MB 97: Remove UI cues to install new extensions. - - - - - bb3f20ac by hackademix at 2026-04-16T08:56:14+02:00 MB 47: uBlock Origin customization - - - - - 6b7ed369 by Pier Angelo Vendrame at 2026-04-16T08:56:14+02:00 MB 21: Disable the password manager This commit disables the about:login page and removes the "Login and Password" section of about:preferences. We do not do anything to the real password manager of Firefox, that is in toolkit: it contains C++ parts that make it difficult to actually prevent it from being built.. Finally, we modify the the function that opens about:login to report an error in the console so that we can quickly get a backtrace to the code that tries to use it. - - - - - d2eb6db9 by Pier Angelo Vendrame at 2026-04-16T08:56:14+02:00 MB 112: Updater customization for Mullvad Browser MB 71: Set the updater base URL to Mullvad domain - - - - - c327da61 by Nicolas Vigier at 2026-04-16T08:56:15+02:00 MB 79: Add Mullvad Browser MAR signing keys MB 256: Add mullvad-browser nightly mar signing key - - - - - e90cb48b by Pier Angelo Vendrame at 2026-04-16T08:56:15+02:00 MB 34: Hide unsafe and unwanted preferences UI about:preferences allow to override some of our defaults, that could be fingeprintable or have some other unwanted consequences. - - - - - ebca6e1c by Pier Angelo Vendrame at 2026-04-16T08:56:15+02:00 MB 160: Disable the cookie exceptions button Besides disabling the "Delete on close checkbox", disable also the "Manage Exceptions" button when always using PBM. - - - - - 54c51fb6 by hackademix at 2026-04-16T08:56:16+02:00 MB 163: prevent uBlock Origin from being uninstalled/disabled - - - - - 9d35f886 by Pier Angelo Vendrame at 2026-04-16T08:56:16+02:00 MB 188: Customize Gitlab Issue and Merge templates - - - - - 876735dc by Pier Angelo Vendrame at 2026-04-16T08:56:16+02:00 MB 213: Customize the search engines list. MB 483: Ship DDG without AI as a bundled search engine. MB 487: Use custom order for search engines. - - - - - 5bf2369e by hackademix at 2026-04-16T08:56:17+02:00 MB 214: Enable cross-tab identity leak protection in "quiet" mode - - - - - 013c2c5a by Pier Angelo Vendrame at 2026-04-16T08:56:17+02:00 MB 80: Enable Mullvad Browser as a default browser - - - - - 06bc3c8a by Pier Angelo Vendrame at 2026-04-16T08:56:17+02:00 MB 320: Temporarily disable WebRTC and WDBA on Windows. WebRTC should be re-enabled when tor-browser#42758 is resolved, and and the default browser agent when in general we make this feature work again. - - - - - 971cb898 by Henry Wilkes at 2026-04-16T08:56:18+02:00 MB 329: Customize toolbar for mullvad-browser. - - - - - 655120bb by Henry Wilkes at 2026-04-16T08:56:18+02:00 MB 419: Mullvad Browser migration procedures. This commit implements the the Mullvad Browser's version of _migrateUI. - - - - - 054d326d by Henry Wilkes at 2026-04-16T08:56:18+02:00 MB 488: Adjust search engine removal notification for Mullvad Leta. - - - - - 253 changed files: - .gitlab/ci/jobs/update-translations.yml - .gitlab/issue_templates/000 Bug Report.md - .gitlab/issue_templates/010 Proposal.md - .gitlab/issue_templates/020 Web Compatibility.md - .gitlab/issue_templates/030 Test.md - .gitlab/issue_templates/040 Feature.md - .gitlab/issue_templates/060 Rebase - Alpha.md - .gitlab/issue_templates/061 Rebase - Stable.md - .gitlab/issue_templates/063 Rebase - Rapid.md - .gitlab/issue_templates/090 Emergency Security Issue.md - .gitlab/merge_request_templates/Default.md - + .gitlab/merge_request_templates/Rebase.md - browser/app/Makefile.in - browser/app/macbuild/Contents/Info.plist.in - browser/app/module.ver - browser/app/firefox.exe.manifest → browser/app/mullvadbrowser.exe.manifest - + browser/app/profile/000-mullvad-browser.js - browser/app/profile/001-base-profile.js - browser/base/content/aboutDialog.xhtml - browser/base/content/appmenu-viewcache.inc.xhtml - browser/base/content/browser-menubar.inc - browser/base/content/browser-places.js - browser/base/content/browser.js - browser/base/content/default-bookmarks.html - browser/base/content/nsContextMenu.sys.mjs - browser/base/content/overrides/app-license.html - browser/base/content/pageinfo/pageInfo.xhtml - browser/base/content/utilityOverlay.js - browser/branding/branding-common.mozbuild - + browser/branding/mb-alpha/VisualElements_150.png - + browser/branding/mb-alpha/VisualElements_70.png - + browser/branding/mb-alpha/configure.sh - + browser/branding/mb-alpha/content/about-logo.png - + browser/branding/mb-alpha/content/about-logo.svg - + browser/branding/mb-alpha/content/about-logo(a)2x.png - + browser/branding/mb-alpha/content/about-wordmark.svg - + browser/branding/mb-alpha/content/about.png - + browser/branding/mb-alpha/content/aboutDialog.css - + browser/branding/mb-alpha/content/document_pdf.svg - + browser/branding/mb-alpha/content/firefox-wordmark.svg - + browser/branding/mb-alpha/content/icon128.png - + browser/branding/mb-alpha/content/icon16.png - + browser/branding/mb-alpha/content/icon256.png - + browser/branding/mb-alpha/content/icon32.png - + browser/branding/mb-alpha/content/icon48.png - + browser/branding/mb-alpha/content/icon64.png - + browser/branding/mb-alpha/content/jar.mn - + browser/branding/mb-alpha/content/moz.build - + browser/branding/mb-alpha/content/mullvad-branding.css - + browser/branding/mb-alpha/default128.png - + browser/branding/mb-alpha/default16.png - + browser/branding/mb-alpha/default22.png - + browser/branding/mb-alpha/default24.png - + browser/branding/mb-alpha/default256.png - + browser/branding/mb-alpha/default32.png - + browser/branding/mb-alpha/default48.png - + browser/branding/mb-alpha/default64.png - + browser/branding/mb-alpha/document.icns - + browser/branding/mb-alpha/document.ico - + browser/branding/mb-alpha/document_pdf.ico - + browser/branding/mb-alpha/firefox.icns - + browser/branding/mb-alpha/firefox.ico - + browser/branding/mb-alpha/firefox.svg - + browser/branding/mb-alpha/locales/en-US/brand.ftl - + browser/branding/mb-alpha/locales/en-US/brand.properties - + browser/branding/mb-alpha/locales/jar.mn - + browser/branding/mb-alpha/locales/moz.build - + browser/branding/mb-alpha/locales/mullvad-about-wordmark-en.ftl - + browser/branding/mb-alpha/moz.build - + browser/branding/mb-alpha/mullvadbrowser.VisualElementsManifest.xml - + browser/branding/mb-alpha/newtab.ico - + browser/branding/mb-alpha/newwindow.ico - + browser/branding/mb-alpha/pbmode.ico - + browser/branding/mb-alpha/pref/firefox-branding.js - + browser/branding/mb-nightly/VisualElements_150.png - + browser/branding/mb-nightly/VisualElements_70.png - + browser/branding/mb-nightly/configure.sh - + browser/branding/mb-nightly/content/about-logo.png - + browser/branding/mb-nightly/content/about-logo.svg - + browser/branding/mb-nightly/content/about-logo(a)2x.png - + browser/branding/mb-nightly/content/about-wordmark.svg - + browser/branding/mb-nightly/content/about.png - + browser/branding/mb-nightly/content/aboutDialog.css - + browser/branding/mb-nightly/content/document_pdf.svg - + browser/branding/mb-nightly/content/firefox-wordmark.svg - + browser/branding/mb-nightly/content/icon128.png - + browser/branding/mb-nightly/content/icon16.png - + browser/branding/mb-nightly/content/icon256.png - + browser/branding/mb-nightly/content/icon32.png - + browser/branding/mb-nightly/content/icon48.png - + browser/branding/mb-nightly/content/icon64.png - + browser/branding/mb-nightly/content/jar.mn - + browser/branding/mb-nightly/content/moz.build - + browser/branding/mb-nightly/content/mullvad-branding.css - + browser/branding/mb-nightly/default128.png - + browser/branding/mb-nightly/default16.png - + browser/branding/mb-nightly/default22.png - + browser/branding/mb-nightly/default24.png - + browser/branding/mb-nightly/default256.png - + browser/branding/mb-nightly/default32.png - + browser/branding/mb-nightly/default48.png - + browser/branding/mb-nightly/default64.png - + browser/branding/mb-nightly/document.icns - + browser/branding/mb-nightly/document.ico - + browser/branding/mb-nightly/document_pdf.ico - + browser/branding/mb-nightly/firefox.icns - + browser/branding/mb-nightly/firefox.ico - + browser/branding/mb-nightly/firefox.svg - + browser/branding/mb-nightly/locales/en-US/brand.ftl - + browser/branding/mb-nightly/locales/en-US/brand.properties - + browser/branding/mb-nightly/locales/jar.mn - + browser/branding/mb-nightly/locales/moz.build - + browser/branding/mb-nightly/locales/mullvad-about-wordmark-en.ftl - + browser/branding/mb-nightly/moz.build - + browser/branding/mb-nightly/mullvadbrowser.VisualElementsManifest.xml - + browser/branding/mb-nightly/newtab.ico - + browser/branding/mb-nightly/newwindow.ico - + browser/branding/mb-nightly/pbmode.ico - + browser/branding/mb-nightly/pref/firefox-branding.js - + browser/branding/mb-release/VisualElements_150.png - + browser/branding/mb-release/VisualElements_70.png - + browser/branding/mb-release/configure.sh - + browser/branding/mb-release/content/about-logo.png - + browser/branding/mb-release/content/about-logo.svg - + browser/branding/mb-release/content/about-logo(a)2x.png - + browser/branding/mb-release/content/about-wordmark.svg - + browser/branding/mb-release/content/about.png - + browser/branding/mb-release/content/aboutDialog.css - + browser/branding/mb-release/content/document_pdf.svg - + browser/branding/mb-release/content/firefox-wordmark.svg - + browser/branding/mb-release/content/icon128.png - + browser/branding/mb-release/content/icon16.png - + browser/branding/mb-release/content/icon256.png - + browser/branding/mb-release/content/icon32.png - + browser/branding/mb-release/content/icon48.png - + browser/branding/mb-release/content/icon64.png - + browser/branding/mb-release/content/jar.mn - + browser/branding/mb-release/content/moz.build - + browser/branding/mb-release/content/mullvad-branding.css - + browser/branding/mb-release/default128.png - + browser/branding/mb-release/default16.png - + browser/branding/mb-release/default22.png - + browser/branding/mb-release/default24.png - + browser/branding/mb-release/default256.png - + browser/branding/mb-release/default32.png - + browser/branding/mb-release/default48.png - + browser/branding/mb-release/default64.png - + browser/branding/mb-release/document.icns - + browser/branding/mb-release/document.ico - + browser/branding/mb-release/document_pdf.ico - + browser/branding/mb-release/firefox.icns - + browser/branding/mb-release/firefox.ico - + browser/branding/mb-release/firefox.svg - + browser/branding/mb-release/locales/en-US/brand.ftl - + browser/branding/mb-release/locales/en-US/brand.properties - + browser/branding/mb-release/locales/jar.mn - + browser/branding/mb-release/locales/moz.build - + browser/branding/mb-release/locales/mullvad-about-wordmark-en.ftl - + browser/branding/mb-release/moz.build - + browser/branding/mb-release/mullvadbrowser.VisualElementsManifest.xml - + browser/branding/mb-release/newtab.ico - + browser/branding/mb-release/newwindow.ico - + browser/branding/mb-release/pbmode.ico - + browser/branding/mb-release/pref/firefox-branding.js - browser/components/BrowserContentHandler.sys.mjs - browser/components/BrowserGlue.sys.mjs - browser/components/DesktopActorRegistry.sys.mjs - browser/components/ProfileDataUpgrader.sys.mjs - browser/components/about/AboutRedirector.cpp - browser/components/about/components.conf - browser/components/customizableui/CustomizableUI.sys.mjs - browser/components/moz.build - + browser/components/mullvad-browser/AboutMullvadBrowserChild.sys.mjs - + browser/components/mullvad-browser/AboutMullvadBrowserParent.sys.mjs - + browser/components/mullvad-browser/content/2728-sparkles.svg - + browser/components/mullvad-browser/content/aboutMullvadBrowser.css - + browser/components/mullvad-browser/content/aboutMullvadBrowser.html - + browser/components/mullvad-browser/content/aboutMullvadBrowser.js - + browser/components/mullvad-browser/jar.mn - + browser/components/mullvad-browser/moz.build - browser/components/preferences/home.inc.xhtml - browser/components/preferences/main.js - browser/components/preferences/preferences.xhtml - browser/components/preferences/privacy.inc.xhtml - browser/components/preferences/privacy.js - browser/components/preferences/search.inc.xhtml - browser/components/search/SearchUIUtils.sys.mjs - browser/components/shell/ShellService.sys.mjs - browser/components/shell/WindowsDefaultBrowser.cpp - browser/components/shell/nsWindowsShellService.cpp - browser/components/tabbrowser/NewTabPagePreloading.sys.mjs - browser/config/mozconfigs/base-browser - + browser/config/mozconfigs/mullvad-browser - browser/installer/package-manifest.in - browser/installer/windows/nsis/updater_append.ini - browser/locales/l10n.toml - browser/modules/HomePage.sys.mjs - browser/moz.build - browser/moz.configure - config/create_rc.py - devtools/client/aboutdebugging/src/actions/runtimes.js - devtools/client/aboutdebugging/src/components/sidebar/Sidebar.js - devtools/client/jar.mn - devtools/client/themes/images/aboutdebugging-firefox-aurora.svg - devtools/client/themes/images/aboutdebugging-firefox-beta.svg - devtools/client/themes/images/aboutdebugging-firefox-logo.svg - devtools/client/themes/images/aboutdebugging-firefox-nightly.svg - devtools/client/themes/images/aboutdebugging-firefox-release.svg - + devtools/client/themes/images/aboutdebugging-mullvadbrowser-logo.svg - docshell/base/nsAboutRedirector.cpp - docshell/build/components.conf - moz.configure - mozconfig-linux-aarch64 - mozconfig-linux-aarch64-dev - mozconfig-linux-x86_64 - mozconfig-linux-x86_64-asan - mozconfig-linux-x86_64-dev - mozconfig-macos - mozconfig-macos-dev - mozconfig-windows-x86_64 - + other-licenses/nsis/Contrib/ApplicationID/Makefile - other-licenses/nsis/Contrib/ApplicationID/Set.cpp - + other-licenses/nsis/Contrib/CityHash/Makefile - toolkit/components/extensions/child/ext-storage.js - toolkit/components/extensions/parent/ext-storage.js - toolkit/components/passwordmgr/LoginHelper.sys.mjs - toolkit/components/search/SearchService.sys.mjs - toolkit/components/search/content/base-browser-search-engine-icons.json - toolkit/components/search/content/base-browser-search-engines.json - + toolkit/components/search/content/brave.svg - + toolkit/components/search/content/mojeek.ico - toolkit/components/search/tests/xpcshell/test_base_browser.js - toolkit/components/securitylevel/SecurityLevel.sys.mjs - + toolkit/content/aboutRightsMullvad.xhtml - + toolkit/content/aboutTelemetryMullvad.xhtml - toolkit/content/jar.mn - + toolkit/locales/en-US/toolkit/global/mullvad-browser.ftl - toolkit/mozapps/defaultagent/EventLog.h - toolkit/mozapps/defaultagent/SetDefaultBrowser.cpp - toolkit/mozapps/extensions/AddonManager.sys.mjs - toolkit/mozapps/extensions/content/aboutaddons.css - toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs - toolkit/mozapps/extensions/internal/XPIProvider.sys.mjs - toolkit/mozapps/update/updater/nightly_aurora_level3_primary.der - toolkit/mozapps/update/updater/nightly_aurora_level3_secondary.der - toolkit/mozapps/update/updater/release_primary.der - toolkit/mozapps/update/updater/release_secondary.der - + toolkit/themes/shared/icons/mullvadbrowser.png - toolkit/themes/shared/minimal-toolkit.jar.inc.mn - toolkit/xre/nsAppRunner.cpp - tools/lint/fluent-lint/exclusions.yml - widget/windows/WinTaskbar.cpp - widget/windows/moz.build The diff was not included because it is too large. View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/c4… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/c4… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.10.0esr-15.0-1] Bug 2009213 - Use local statics for harfbuzz callback pointers, to ensure...
by Pier Angelo Vendrame (@pierov) 16 Apr '26

16 Apr '26
Pier Angelo Vendrame pushed to branch tor-browser-140.10.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 1ca1b1fb by Jonathan Kew at 2026-04-16T08:41:11+02:00 Bug 2009213 - Use local statics for harfbuzz callback pointers, to ensure thread-safe initialization. r=gfx-reviewers,lsalzman Differential Revision: https://phabricator.services.mozilla.com/D278945 - - - - - 2 changed files: - gfx/thebes/gfxHarfBuzzShaper.cpp - gfx/thebes/gfxHarfBuzzShaper.h Changes: ===================================== gfx/thebes/gfxHarfBuzzShaper.cpp ===================================== @@ -1181,9 +1181,6 @@ static void AddOpenTypeFeature(uint32_t aTag, uint32_t aValue, void* aUserArg) { * gfxFontShaper override to initialize the text run using HarfBuzz */ -static hb_font_funcs_t* sHBFontFuncs = nullptr; -static hb_font_funcs_t* sNominalGlyphFunc = nullptr; -static hb_unicode_funcs_t* sHBUnicodeFuncs = nullptr; MOZ_RUNINIT static const hb_script_t sMathScript = hb_ot_tag_to_script(HB_TAG('m', 'a', 't', 'h')); @@ -1192,52 +1189,58 @@ bool gfxHarfBuzzShaper::Initialize() { // other thread can yet be using it. MOZ_PUSH_IGNORE_THREAD_SAFETY - if (!sHBFontFuncs) { - // static function callback pointers, initialized by the first - // harfbuzz shaper used - sHBFontFuncs = hb_font_funcs_create(); - hb_font_funcs_set_nominal_glyph_func(sHBFontFuncs, HBGetNominalGlyph, - nullptr, nullptr); - hb_font_funcs_set_nominal_glyphs_func(sHBFontFuncs, HBGetNominalGlyphs, - nullptr, nullptr); - hb_font_funcs_set_variation_glyph_func(sHBFontFuncs, HBGetVariationGlyph, - nullptr, nullptr); - hb_font_funcs_set_glyph_h_advance_func(sHBFontFuncs, HBGetGlyphHAdvance, - nullptr, nullptr); - hb_font_funcs_set_glyph_h_advances_func(sHBFontFuncs, HBGetGlyphHAdvances, - nullptr, nullptr); - hb_font_funcs_set_glyph_v_advance_func(sHBFontFuncs, HBGetGlyphVAdvance, - nullptr, nullptr); - hb_font_funcs_set_glyph_v_origin_func(sHBFontFuncs, HBGetGlyphVOrigin, - nullptr, nullptr); - hb_font_funcs_set_glyph_extents_func(sHBFontFuncs, HBGetGlyphExtents, - nullptr, nullptr); - hb_font_funcs_set_glyph_contour_point_func(sHBFontFuncs, HBGetContourPoint, + // Function callback pointers; these are local statics to ensure thread-safe + // initialization on first use. + static hb_font_funcs_t* sHBFontFuncs = [] { + auto* funcs = hb_font_funcs_create(); + hb_font_funcs_set_nominal_glyph_func(funcs, HBGetNominalGlyph, nullptr, + nullptr); + hb_font_funcs_set_nominal_glyphs_func(funcs, HBGetNominalGlyphs, nullptr, + nullptr); + hb_font_funcs_set_variation_glyph_func(funcs, HBGetVariationGlyph, nullptr, + nullptr); + hb_font_funcs_set_glyph_h_advance_func(funcs, HBGetGlyphHAdvance, nullptr, + nullptr); + hb_font_funcs_set_glyph_h_advances_func(funcs, HBGetGlyphHAdvances, nullptr, + nullptr); + hb_font_funcs_set_glyph_v_advance_func(funcs, HBGetGlyphVAdvance, nullptr, + nullptr); + hb_font_funcs_set_glyph_v_origin_func(funcs, HBGetGlyphVOrigin, nullptr, + nullptr); + hb_font_funcs_set_glyph_extents_func(funcs, HBGetGlyphExtents, nullptr, + nullptr); + hb_font_funcs_set_glyph_contour_point_func(funcs, HBGetContourPoint, nullptr, nullptr); - hb_font_funcs_set_glyph_h_kerning_func(sHBFontFuncs, HBGetHKerning, nullptr, + hb_font_funcs_set_glyph_h_kerning_func(funcs, HBGetHKerning, nullptr, nullptr); - hb_font_funcs_make_immutable(sHBFontFuncs); - - sNominalGlyphFunc = hb_font_funcs_create(); - hb_font_funcs_set_nominal_glyph_func(sNominalGlyphFunc, HBGetNominalGlyph, - nullptr, nullptr); - hb_font_funcs_make_immutable(sNominalGlyphFunc); - - sHBUnicodeFuncs = hb_unicode_funcs_create(hb_unicode_funcs_get_empty()); - hb_unicode_funcs_set_mirroring_func(sHBUnicodeFuncs, HBGetMirroring, - nullptr, nullptr); - hb_unicode_funcs_set_script_func(sHBUnicodeFuncs, HBGetScript, nullptr, - nullptr); - hb_unicode_funcs_set_general_category_func( - sHBUnicodeFuncs, HBGetGeneralCategory, nullptr, nullptr); - hb_unicode_funcs_set_combining_class_func( - sHBUnicodeFuncs, HBGetCombiningClass, nullptr, nullptr); - hb_unicode_funcs_set_compose_func(sHBUnicodeFuncs, HBUnicodeCompose, - nullptr, nullptr); - hb_unicode_funcs_set_decompose_func(sHBUnicodeFuncs, HBUnicodeDecompose, - nullptr, nullptr); - hb_unicode_funcs_make_immutable(sHBUnicodeFuncs); - } + hb_font_funcs_make_immutable(funcs); + return funcs; + }(); + + static hb_font_funcs_t* sNominalGlyphFunc = [] { + auto* funcs = hb_font_funcs_create(); + hb_font_funcs_set_nominal_glyph_func(funcs, HBGetNominalGlyph, nullptr, + nullptr); + hb_font_funcs_make_immutable(funcs); + return funcs; + }(); + + static hb_unicode_funcs_t* sHBUnicodeFuncs = [] { + auto* funcs = hb_unicode_funcs_create(hb_unicode_funcs_get_empty()); + hb_unicode_funcs_set_mirroring_func(funcs, HBGetMirroring, nullptr, + nullptr); + hb_unicode_funcs_set_script_func(funcs, HBGetScript, nullptr, nullptr); + hb_unicode_funcs_set_general_category_func(funcs, HBGetGeneralCategory, + nullptr, nullptr); + hb_unicode_funcs_set_combining_class_func(funcs, HBGetCombiningClass, + nullptr, nullptr); + hb_unicode_funcs_set_compose_func(funcs, HBUnicodeCompose, nullptr, + nullptr); + hb_unicode_funcs_set_decompose_func(funcs, HBUnicodeDecompose, nullptr, + nullptr); + hb_unicode_funcs_make_immutable(funcs); + return funcs; + }(); gfxFontEntry* entry = mFont->GetFontEntry(); if (!mUseFontGetGlyph) { @@ -1280,11 +1283,10 @@ bool gfxHarfBuzzShaper::Initialize() { hb_buffer_set_cluster_level(mBuffer, HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS); - auto* funcs = - mFont->GetFontEntry()->HasFontTable(TRUETYPE_TAG('C', 'F', 'F', ' ')) - ? sNominalGlyphFunc - : sHBFontFuncs; - mHBFont = CreateHBFont(mFont, funcs, this); + bool isCFF = + mFont->GetFontEntry()->HasFontTable(TRUETYPE_TAG('C', 'F', 'F', ' ')); + auto* funcs = isCFF ? sNominalGlyphFunc : sHBFontFuncs; + mHBFont = CreateHBFont(mFont, funcs, this, isCFF); MOZ_POP_THREAD_SAFETY @@ -1293,12 +1295,13 @@ bool gfxHarfBuzzShaper::Initialize() { hb_font_t* gfxHarfBuzzShaper::CreateHBFont(gfxFont* aFont, hb_font_funcs_t* aFontFuncs, - void* aCallbackData) { + void* aCallbackData, + bool aCreateSubfont) { auto face(aFont->GetFontEntry()->GetHBFace()); hb_font_t* result = hb_font_create(face); if (aFontFuncs && aCallbackData) { - if (aFontFuncs == sNominalGlyphFunc) { + if (aCreateSubfont) { hb_font_t* subfont = hb_font_create_sub_font(result); hb_font_destroy(result); result = subfont; ===================================== gfx/thebes/gfxHarfBuzzShaper.h ===================================== @@ -103,7 +103,8 @@ class gfxHarfBuzzShaper : public gfxFontShaper { // bounds, etc; if not, the built-in hb_ot font functions will be used. static hb_font_t* CreateHBFont(gfxFont* aFont, hb_font_funcs_t* aFontFuncs = nullptr, - void* aCallbackData = nullptr); + void* aCallbackData = nullptr, + bool aCreateSubfont = false); protected: // Initializes the shaper and returns whether this was successful. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/1ca1b1f… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/1ca1b1f… You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • ...
  • 2097
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.