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
  • ----- 2025 -----
  • 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
  • 19117 discussions
[Git][tpo/applications/mullvad-browser][mullvad-browser-140.2.0esr-15.0-1] fixup! BB 42037: Disable about:firefoxview page
by morgan (@morgan) 25 Aug '25

25 Aug '25
morgan pushed to branch mullvad-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Mullvad Browser Commits: 6e9e7cba by Henry Wilkes at 2025-08-25T12:27:15+00:00 fixup! BB 42037: Disable about:firefoxview page TB 43726: Drop comments about resolved bugzilla issues. - - - - - 1 changed file: - browser/themes/shared/tabbrowser/tabs.css Changes: ===================================== browser/themes/shared/tabbrowser/tabs.css ===================================== @@ -1734,9 +1734,7 @@ tab-group { /* about:firefoxview is disabled in Base Browser. See tor-browser#42037. * Therefore we always hide #firefox-view-button, regardless of private * browsing. Here we only want to draw the border if there is a non-hidden - * toolbar item before the tabs. - * NOTE: Expect merge conflict from bugzilla bug 1917595 and bug 1917599. In - * these cases we want to keep our selector as-is. */ + * toolbar item before the tabs. */ :root :is( toolbarbutton:not(#firefox-view-button), toolbarpaletteitem:not(#wrapper-firefox-view-button) @@ -1747,9 +1745,7 @@ tab-group { } /* about:firefoxview is disabled in Base Browser. Always hide the toolbar button - * and menu item regardless of private browsing. See tor-browser#42037. - * NOTE: Expect merge conflict from bugzilla bug 1903812 and bug 1917599. In - * these cases we want to keep our selector as-is. */ + * and menu item regardless of private browsing. See tor-browser#42037. */ #firefox-view-button, #menu_openFirefoxView { display: none; } View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/6e9… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/6e9… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-140.2.0esr-15.0-1] fixup! BB 42037: Disable about:firefoxview page
by morgan (@morgan) 25 Aug '25

25 Aug '25
morgan pushed to branch base-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 5f57ce1b by Henry Wilkes at 2025-08-25T12:22:43+00:00 fixup! BB 42037: Disable about:firefoxview page TB 43726: Drop comments about resolved bugzilla issues. - - - - - 1 changed file: - browser/themes/shared/tabbrowser/tabs.css Changes: ===================================== browser/themes/shared/tabbrowser/tabs.css ===================================== @@ -1734,9 +1734,7 @@ tab-group { /* about:firefoxview is disabled in Base Browser. See tor-browser#42037. * Therefore we always hide #firefox-view-button, regardless of private * browsing. Here we only want to draw the border if there is a non-hidden - * toolbar item before the tabs. - * NOTE: Expect merge conflict from bugzilla bug 1917595 and bug 1917599. In - * these cases we want to keep our selector as-is. */ + * toolbar item before the tabs. */ :root :is( toolbarbutton:not(#firefox-view-button), toolbarpaletteitem:not(#wrapper-firefox-view-button) @@ -1747,9 +1745,7 @@ tab-group { } /* about:firefoxview is disabled in Base Browser. Always hide the toolbar button - * and menu item regardless of private browsing. See tor-browser#42037. - * NOTE: Expect merge conflict from bugzilla bug 1903812 and bug 1917599. In - * these cases we want to keep our selector as-is. */ + * and menu item regardless of private browsing. See tor-browser#42037. */ #firefox-view-button, #menu_openFirefoxView { display: none; } View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/5f57ce1… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/5f57ce1… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.2.0esr-15.0-1] fixup! BB 42037: Disable about:firefoxview page
by morgan (@morgan) 25 Aug '25

25 Aug '25
morgan pushed to branch tor-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 3d5e7a2f by Henry Wilkes at 2025-08-25T11:17:59+01:00 fixup! BB 42037: Disable about:firefoxview page TB 43726: Drop comments about resolved bugzilla issues. - - - - - 1 changed file: - browser/themes/shared/tabbrowser/tabs.css Changes: ===================================== browser/themes/shared/tabbrowser/tabs.css ===================================== @@ -1734,9 +1734,7 @@ tab-group { /* about:firefoxview is disabled in Base Browser. See tor-browser#42037. * Therefore we always hide #firefox-view-button, regardless of private * browsing. Here we only want to draw the border if there is a non-hidden - * toolbar item before the tabs. - * NOTE: Expect merge conflict from bugzilla bug 1917595 and bug 1917599. In - * these cases we want to keep our selector as-is. */ + * toolbar item before the tabs. */ :root :is( toolbarbutton:not(#firefox-view-button), toolbarpaletteitem:not(#wrapper-firefox-view-button) @@ -1747,9 +1745,7 @@ tab-group { } /* about:firefoxview is disabled in Base Browser. Always hide the toolbar button - * and menu item regardless of private browsing. See tor-browser#42037. - * NOTE: Expect merge conflict from bugzilla bug 1903812 and bug 1917599. In - * these cases we want to keep our selector as-is. */ + * and menu item regardless of private browsing. See tor-browser#42037. */ #firefox-view-button, #menu_openFirefoxView { display: none; } View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/3d5e7a2… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/3d5e7a2… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] Bug 26408: Remove redundant check of macos code signature in update_responses
by morgan (@morgan) 25 Aug '25

25 Aug '25
morgan pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 4e6d2832 by Nicolas Vigier at 2025-08-21T16:44:40+02:00 Bug 26408: Remove redundant check of macos code signature in update_responses When CHECK_CODESIGNATURE_EXISTS is set (we set it when re-generating incrementals for macos during the signing process), we were checking that both the mar files from previous and new versions are code signed. Checking that the mar file from the previous version is code signed is not necessary since it is checked just before even when the CHECK_CODESIGNATURE_EXISTS is not set. - - - - - 1 changed file: - tools/update-responses/update_responses Changes: ===================================== tools/update-responses/update_responses ===================================== @@ -261,11 +261,11 @@ sub create_incremental_mar { && ! -f "$tmpdir/A/Contents/_CodeSignature/CodeResources") { exit_error "Missing code signature in $from_version while creating $mar_file"; } + # Check that the version we update to is code signed (when re-generating + # incrementals for macos during the signing process) if ($ENV{CHECK_CODESIGNATURE_EXISTS}) { - unless (-f "$tmpdir/A/Contents/_CodeSignature/CodeResources" - && -f "$tmpdir/B/Contents/_CodeSignature/CodeResources") { - exit_error "Missing code signature while creating $mar_file"; - } + exit_error "Missing code signature while creating $mar_file" + unless -f "$tmpdir/B/Contents/_CodeSignature/CodeResources"; } local $ENV{MOZ_PRODUCT_VERSION} = $new_version; local $ENV{MAR_CHANNEL_ID} = get_config($config, $new_version, $os, 'mar_channel_id'); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.2.0esr-15.0-1] 2 commits: fixup! BB 43564: Modify ./mach bootstrap for Base Browser
by brizental (@brizental) 21 Aug '25

21 Aug '25
brizental pushed to branch tor-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 6b3510e9 by Beatriz Rizental at 2025-08-21T18:32:02+02:00 fixup! BB 43564: Modify ./mach bootstrap for Base Browser - - - - - 7b6cea75 by Beatriz Rizental at 2025-08-21T18:32:02+02:00 fixup! TB 43564: Modify ./mach bootstrap for Tor Browser - - - - - 1 changed file: - python/mozbuild/mozbuild/backend/base.py Changes: ===================================== python/mozbuild/mozbuild/backend/base.py ===================================== @@ -246,7 +246,7 @@ class BuildBackend(LoggingMixin): app = config.substs["MOZ_BUILD_APP"] noscript_target_filename = "{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi" - noscript_location = Path(config.substs["NOSCRIPT"]) + noscript_location = config.substs.get("NOSCRIPT") def _infallible_symlink(src, dst): try: @@ -280,30 +280,30 @@ class BuildBackend(LoggingMixin): "fonts": tbdir / "fonts", } - fonts_location = Path(config.substs["TOR_BROWSER_FONTS"]) - if fonts_location.is_dir(): + fonts_location = config.substs.get("TOR_BROWSER_FONTS") + if fonts_location: self.log( logging.INFO, "_setup_tor_browser_environment", { - "fonts_location": str(fonts_location), + "fonts_location": fonts_location, "fonts_target": str(paths["fonts"]), }, "Creating symlink for fonts files from {fonts_location} to {fonts_target}", ) - for file in fonts_location.iterdir(): + for file in Path(fonts_location).iterdir(): target = paths["fonts"] / file.name _infallible_symlink(file, target) # Set up NoScript extension - if noscript_location.is_file(): + if noscript_location: noscript_target = paths["exts"] / noscript_target_filename self.log( logging.INFO, "_setup_tor_browser_environment", { - "noscript_location": str(noscript_location), + "noscript_location": noscript_location, "noscript_target": str(noscript_target), }, "Creating symlink for NoScript from {noscript_location} to {noscript_target}", @@ -312,8 +312,12 @@ class BuildBackend(LoggingMixin): paths["exts"].mkdir(parents=True, exist_ok=True) _infallible_symlink(noscript_location, noscript_target) - expert_bundle_location = Path(config.substs["TOR_EXPERT_BUNDLE"]) - if expert_bundle_location.is_dir(): + expert_bundle_location = config.substs.get("TOR_EXPERT_BUNDLE") + if expert_bundle_location: + expert_bundle_location = Path(expert_bundle_location) + if not expert_bundle_location.is_dir(): + return + self.log( logging.INFO, "_setup_tor_browser_environment", @@ -353,9 +357,10 @@ class BuildBackend(LoggingMixin): _infallible_symlink(file, target) # Setup Tor binary - for item in (expert_bundle_location / "tor").iterdir(): + for item in Path(expert_bundle_location / "tor").iterdir(): target = paths["tor_bin"] / item.name - if target.is_file(): + + if item.is_file(): _infallible_symlink(item, target) # Set up licenses View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/c1827f… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/c1827f… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.2.0esr-15.0-1] 3 commits: BB 43564: Modify ./mach bootstrap for Base Browser
by brizental (@brizental) 21 Aug '25

21 Aug '25
brizental pushed to branch tor-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 5f6737f0 by Beatriz Rizental at 2025-08-21T15:13:13+02:00 BB 43564: Modify ./mach bootstrap for Base Browser - - - - - 2b7a0550 by Beatriz Rizental at 2025-08-21T15:13:16+02:00 fixup! BB 43564: Modify ./mach bootstrap for Base Browser EXTRA: Stop asking to configure git during bootstrap. - - - - - c1827fba by Beatriz Rizental at 2025-08-21T16:01:36+02:00 TB 43564: Modify ./mach bootstrap for Tor Browser - - - - - 10 changed files: - + build/moz.configure/basebrowser-resources.configure - build/moz.configure/bootstrap.configure - build/moz.configure/init.configure - + build/moz.configure/torbrowser-resources.configure - moz.configure - python/mozboot/mozboot/bootstrap.py - python/mozbuild/mozbuild/action/tooltool.py - python/mozbuild/mozbuild/artifact_commands.py - python/mozbuild/mozbuild/backend/base.py - + python/mozbuild/mozbuild/tbbutils.py Changes: ===================================== build/moz.configure/basebrowser-resources.configure ===================================== @@ -0,0 +1,88 @@ +# Helpers +# ------------------------------------------------- + + +@depends(build_project) +def is_desktop_build(build_project): + return build_project == "browser" + + +# Bootstrap resources +# ------------------------------------------------- + + +option( + "--with-noscript", + env="NOSCRIPT", + nargs=1, + default=None, + help="Path to noscript .xpi extension archive.", +) + + +@depends( + "--with-noscript", + mozbuild_state_path, + bootstrap_path( + "noscript", no_unpack=True, when=depends("--with-noscript")(lambda x: not x) + ), +) +@checking("for noscript") +@imports(_from="pathlib", _import="Path") +def noscript(value, mozbuild_state_path, _bootstrapped): + if value: + path = Path(value[0]) + if path.is_file() and path.suffix == ".xpi": + return value[0] + else: + die("--with-noscript must be an existing .xpi file") + + bootstrapped_location = Path(mozbuild_state_path) / "browser" + for file in bootstrapped_location.glob(f"*.xpi"): + if "noscript" in file.name: + return str(bootstrapped_location / file) + + # noscript is not required for building. + return None + + +set_config("NOSCRIPT", noscript) + + +option( + "--with-tor-browser-fonts", + env="TOR_BROWSER_FONTS", + nargs=1, + default=None, + help="Path to location of fonts directory.", +) + + +@depends( + "--with-tor-browser-fonts", + mozbuild_state_path, + bootstrap_path( + "fonts", + when=depends("--with-tor-browser-fonts")(lambda x: not x) & is_desktop_build, + ), +) +@checking("for tor-browser fonts directory") +@imports(_from="pathlib", _import="Path") +def tor_browser_fonts(value, mozbuild_state_path, _bootstrapped): + if value: + path = Path(value[0]) + # TODO: Do a more thorough check on the directory. + if path.is_dir(): + return value[0] + else: + die("--with-tor-browser-fonts must point to a real directory.") + + bootstrapped_location = Path(mozbuild_state_path) / "fonts" + if bootstrapped_location.is_dir(): + return str(bootstrapped_location) + + # tor browser fonts directory is not required for building. + return None + + +set_config("TOR_BROWSER_FONTS", tor_browser_fonts) ===================================== build/moz.configure/bootstrap.configure ===================================== @@ -4,6 +4,29 @@ # 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/. +option( + "--with-tor-browser-build-out", + env="TOR_BROWSER_BUILD_OUT", + nargs=1, + default="https://tb-build-06.torproject.org/~tb-builder/tor-browser-build/out", + help="URL pointing to a Tor Browser Build out folder, served over HTTP[S].", +) + + +@depends("--with-tor-browser-build-out") +def tor_browser_build_out(value): + if value: + return value[0] + + +option( + "--enable-tor-browser-build-only-bootstrap", + env="TBB_ONLY_BOOTSTRAP", + default=False, + help="Flag that disables bootstrapping any artifact from Mozilla's Taskcluster. Will only bootstrap artifacts from tor-browser-build.", +) + + option( env="MOZ_FETCHES_DIR", nargs=1, @@ -115,9 +138,10 @@ def bootstrap_toolchain_tasks(host): def bootstrap_path(path, **kwargs): when = kwargs.pop("when", None) allow_failure = kwargs.pop("allow_failure", None) + no_unpack = kwargs.pop("no_unpack", False) if kwargs: configure_error( - "bootstrap_path only takes `when` and `allow_failure` as a keyword argument" + "bootstrap_path only takes `when`, `allow_failure` and `no_unpack` as keyword arguments" ) @depends( @@ -129,11 +153,16 @@ def bootstrap_path(path, **kwargs): build_environment, dependable(path), dependable(allow_failure), + dependable(no_unpack), + tor_browser_build_out, + "--enable-tor-browser-build-only-bootstrap", + target, when=when, ) @imports("os") @imports("subprocess") @imports("sys") + @imports("mozbuild.tbbutils") @imports(_from="mozbuild.dirutils", _import="ensureParentDir") @imports(_from="importlib", _import="import_module") @imports(_from="shutil", _import="rmtree") @@ -148,6 +177,10 @@ def bootstrap_path(path, **kwargs): build_env, path, allow_failure, + no_unpack, + tor_browser_build_out, + tbb_only_bootstrap, + target, ): if not path: return @@ -158,6 +191,81 @@ def bootstrap_path(path, **kwargs): if path_parts[0] == "clang-tools": path_prefix = path_parts.pop(0) + # Small hack because noscript is inside the browser folder. + if path_parts[0] == "noscript": + path_prefix = "browser" + + def try_tbb_bootstrap(exists): + if not tor_browser_build_out: + return False + + # Tor browser build doesn't have artifacts for all targets supported + # by the Firefox build system. When this is empty it means we are + # building for a platform which tbb doesn't support. + if not target.tor_browser_build_alias: + return False + + artifact = mozbuild.tbbutils.get_artifact_name( + path_parts[0], target, tasks.prefix + ) + if not artifact: + log.info("%s is not mapped to a tbb artifact", path_parts[0]) + return False + + artifact_path = mozbuild.tbbutils.get_artifact_path( + tor_browser_build_out, artifact, target, prefix=path_prefix + ) + if not artifact_path: + log.info("no path found in tbb/out for %s", artifact) + return False + + # We will use the name of the artifact as the index. + # + # It's usually unique to the artifact version, but each artifact follows + # a different naming convention, so we can't really get more specific here. + artifact_index = artifact_path.rsplit("/", 1)[-1] + index_file = os.path.join(toolchains_base_dir, "indices", artifact) + try: + with open(index_file) as fh: + index = fh.read().strip() + except Exception: + index = None + if index == artifact_index and exists: + log.debug("%s is up-to-date", artifact) + return True + + command = ["artifact", "toolchain", "--from-url", artifact_path] + + if no_unpack: + command.append("--no-unpack") + + # Note to rebasers: + # From here on, it's a slightly modified copy/paste + # from the end of the try_bootstrap function + log.info( + "%s bootstrapped toolchain from TBB in %s", + "Updating" if exists else "Installing", + os.path.join(toolchains_base_dir, path_prefix, artifact), + ) + os.makedirs(os.path.join(toolchains_base_dir, path_prefix), exist_ok=True) + proc = subprocess.run( + [ + sys.executable, + os.path.join(build_env.topsrcdir, "mach"), + "--log-no-times", + ] + + command, + cwd=os.path.join(toolchains_base_dir, path_prefix), + check=not allow_failure, + ) + if proc.returncode != 0 and allow_failure: + return False + ensureParentDir(index_file) + with open(index_file, "w") as fh: + fh.write(artifact_index) + + return True + def try_bootstrap(exists): if not tasks: return False @@ -280,9 +388,10 @@ def bootstrap_path(path, **kwargs): try: # With --enable-bootstrap=no-update, we don't `try_bootstrap`, except # when the toolchain can't be found. - if ( - "no-update" not in enable_bootstrap or not exists - ) and not try_bootstrap(exists): + if ("no-update" not in enable_bootstrap or not exists) and not ( + try_tbb_bootstrap(exists) + or (not tbb_only_bootstrap and try_bootstrap(exists)) + ): # If there aren't toolchain artifacts to use for this build, # don't return a path. return None ===================================== build/moz.configure/init.configure ===================================== @@ -590,6 +590,21 @@ def split_triplet(triplet, allow_wasi=False): else: toolchain = "%s-%s" % (cpu, os) + # In tor-browser-build we use slightly different terminology for + # the supported platforms. Let's prepare that OS string here. + # + # Not all possible platforms listed here are supported in tbb, + # so this value will be empty sometimes. + tor_browser_build_alias = None + if canonical_os == "Android" and canonical_kernel == "Linux": + tor_browser_build_alias = f"android" + elif canonical_os == "GNU" and canonical_kernel == "Linux": + tor_browser_build_alias = f"linux" + elif canonical_os == "OSX" and canonical_kernel == "Darwin": + tor_browser_build_alias = f"macos" + elif canonical_os == "WINNT" and canonical_kernel == "WINNT": + tor_browser_build_alias = f"windows" + return namespace( alias=triplet, cpu=CPU(canonical_cpu), @@ -604,6 +619,7 @@ def split_triplet(triplet, allow_wasi=False): toolchain=toolchain, vendor=vendor, sub_configure_alias=sub_configure_alias, + tor_browser_build_alias=tor_browser_build_alias, ) ===================================== build/moz.configure/torbrowser-resources.configure ===================================== @@ -0,0 +1,37 @@ +option( + "--with-tor-expert-bundle", + env="TOR_EXPERT_BUNDLE", + nargs=1, + default=None, + help="Path to location of tor-expert-bundle directory.", +) + + +@depends( + "--with-tor-expert-bundle", + mozbuild_state_path, + bootstrap_path( + "tor-expert-bundle", + when=depends("--with-tor-expert-bundle")(lambda x: not x) & is_desktop_build, + ), +) +@checking("for tor-expert-bundle") +@imports(_from="pathlib", _import="Path") +def tor_expert_bundle(value, mozbuild_state_path, _bootstrapped): + if value: + path = Path(value[0]) + # TODO: Do a more thorough check on the directory. + if path.is_dir(): + return value[0] + else: + die("--with-tor-expert-bundle must point to a real directory.") + + bootstrapped_location = Path(mozbuild_state_path) / "tor-expert-bundle" + if bootstrapped_location.is_dir(): + return str(bootstrapped_location) + + # tor-expert-bundle is not required for building. + return None + + +set_config("TOR_EXPERT_BUNDLE", tor_expert_bundle) ===================================== moz.configure ===================================== @@ -229,6 +229,8 @@ check_prog("WGET", ("wget",), allow_missing=True) include("build/moz.configure/toolchain.configure", when="--enable-compile-environment") +include("build/moz.configure/basebrowser-resources.configure") +include("build/moz.configure/torbrowser-resources.configure") include("build/moz.configure/pkg.configure") include("build/moz.configure/memory.configure", when="--enable-compile-environment") ===================================== python/mozboot/mozboot/bootstrap.py ===================================== @@ -52,21 +52,28 @@ Note on Artifact Mode: Artifact builds download prebuilt C++ components rather than building them locally. Artifact builds are faster! -Artifact builds are recommended for people working on Firefox or -Firefox for Android frontends, or the GeckoView Java API. They are unsuitable +Artifact builds are recommended for people working on Tor Browser or +Tor Browser for Android frontends, or the GeckoView Java API. They are unsuitable for those working on C++ code. For more information see: https://firefox-source-docs.mozilla.org/contributing/build/artifact_builds.…. -Please choose the version of Firefox you want to build (see note above): +# Note to Tor Browser developers + +This is still highly experimental. Expect bugs! + +Please choose the version of Tor Browser you want to build (see note above): %s Your choice: """ APPLICATIONS = OrderedDict( [ - ("Firefox for Desktop Artifact Mode", "browser_artifact_mode"), - ("Firefox for Desktop", "browser"), - ("GeckoView/Firefox for Android Artifact Mode", "mobile_android_artifact_mode"), - ("GeckoView/Firefox for Android", "mobile_android"), + ("Tor Browser for Desktop Artifact Mode", "browser_artifact_mode"), + ("Tor Browser for Desktop", "browser"), + ( + "GeckoView/Tor Browser for Android Artifact Mode", + "mobile_android_artifact_mode", + ), + ("GeckoView/Tor Browser for Android", "mobile_android"), ("SpiderMonkey JavaScript engine", "js"), ] ) @@ -360,6 +367,8 @@ class Bootstrapper: getattr(self.instance, "ensure_%s_packages" % application)() def check_code_submission(self, checkout_root: Path): + return + if self.instance.no_interactive or which("moz-phab"): return @@ -474,8 +483,7 @@ class Bootstrapper: configure_mercurial(hg, state_dir) # Offer to configure Git, if the current checkout or repo type is Git. - elif git and checkout_type == "git": - should_configure_git = False + elif False and git and checkout_type == "git": if not self.instance.no_interactive: should_configure_git = self.instance.prompt_yesno(prompt=CONFIGURE_GIT) else: ===================================== python/mozbuild/mozbuild/action/tooltool.py ===================================== @@ -1029,14 +1029,29 @@ def unpack_file(filename): """Untar `filename`, assuming it is uncompressed or compressed with bzip2, xz, gzip, zst, or unzip a zip file. The file is assumed to contain a single directory with a name matching the base of the given filename. - Xz support is handled by shelling out to 'tar'.""" + Xz support is handled by shelling out to 'tar'. + + tor-browser#41564 - For supporting tor-browser-build artifacts that contain + multiple directories, the archive is extracted into a directory with the + same name as the base of the filename. This modification is only applied to + tar archives, because that is all that was necessary. + """ if os.path.isfile(filename) and tarfile.is_tarfile(filename): tar_file, zip_ext = os.path.splitext(filename) base_file, tar_ext = os.path.splitext(tar_file) clean_path(base_file) log.info('untarring "%s"' % filename) with TarFile.open(filename) as tar: - safe_extract(tar) + top_level_directories = set() + for name in tar.getnames(): + dir = name.split("/", 1)[0] + top_level_directories.add(dir) + if len(top_level_directories) == 1: + safe_extract(tar) + else: + safe_extract( + tar, path=os.path.join(os.path.dirname(filename), base_file) + ) elif os.path.isfile(filename) and filename.endswith(".tar.zst"): import zstandard ===================================== python/mozbuild/mozbuild/artifact_commands.py ===================================== @@ -244,6 +244,12 @@ def artifact_clear_cache(command_context, tree=None, job=None, verbose=False): nargs="+", help="Download toolchain artifact from a given task.", ) +@CommandArgument( + "--from-url", + metavar="URL", + nargs="+", + help="Download toolchain artifact from an arbitrary address.", +) @CommandArgument( "--tooltool-manifest", metavar="MANIFEST", @@ -273,6 +279,7 @@ def artifact_toolchain( skip_cache=False, from_build=(), from_task=(), + from_url=[], tooltool_manifest=None, no_unpack=False, retry=0, @@ -504,6 +511,13 @@ def artifact_toolchain( record = ArtifactRecord(task_id, name) records[record.filename] = record + if from_url: + for file in from_url: + record = DownloadRecord( + file, file.rsplit("/", 1)[-1], None, None, None, True + ) + records[record.filename] = record + for record in records.values(): command_context.log( logging.INFO, ===================================== python/mozbuild/mozbuild/backend/base.py ===================================== @@ -2,11 +2,14 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +import errno import itertools +import logging import os import time from abc import ABCMeta, abstractmethod from contextlib import contextmanager +from pathlib import Path import mozpack.path as mozpath from mach.mixin.logging import LoggingMixin @@ -239,6 +242,129 @@ class BuildBackend(LoggingMixin): with open(mozpath.join(dir, ".purgecaches"), "w") as f: f.write("\n") + def _setup_tor_browser_environment(self, config): + app = config.substs["MOZ_BUILD_APP"] + + noscript_target_filename = "{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi" + noscript_location = Path(config.substs["NOSCRIPT"]) + + def _infallible_symlink(src, dst): + try: + os.symlink(src, dst) + except OSError as e: + if e.errno == errno.EEXIST: + # If the symlink already exists, remove it and try again. + os.remove(dst) + os.symlink(src, dst) + else: + return + + if app == "browser": + tbdir = Path(config.topobjdir) / "dist" / "bin" + + if config.substs.get("OS_TARGET") == "Darwin": + tbdir = next(tbdir.glob("*.app")) + paths = { + "docs": tbdir / "Contents/Resources/TorBrowser/Docs", + "exts": tbdir / "Contents/Resources/distribution/extensions", + "tor_bin": tbdir / "Contents/MacOS/tor", + "tor_config": tbdir / "Contents/Resources/TorBrowser/Tor", + "fonts": tbdir / "Resources/fonts", + } + else: + paths = { + "docs": tbdir / "TorBrowser/Docs", + "exts": tbdir / "distribution/extensions", + "tor_bin": tbdir / "TorBrowser/Tor", + "tor_config": tbdir / "TorBrowser/Data/Tor", + "fonts": tbdir / "fonts", + } + + fonts_location = Path(config.substs["TOR_BROWSER_FONTS"]) + if fonts_location.is_dir(): + self.log( + logging.INFO, + "_setup_tor_browser_environment", + { + "fonts_location": str(fonts_location), + "fonts_target": str(paths["fonts"]), + }, + "Creating symlink for fonts files from {fonts_location} to {fonts_target}", + ) + + for file in fonts_location.iterdir(): + target = paths["fonts"] / file.name + _infallible_symlink(file, target) + + # Set up NoScript extension + if noscript_location.is_file(): + noscript_target = paths["exts"] / noscript_target_filename + self.log( + logging.INFO, + "_setup_tor_browser_environment", + { + "noscript_location": str(noscript_location), + "noscript_target": str(noscript_target), + }, + "Creating symlink for NoScript from {noscript_location} to {noscript_target}", + ) + + paths["exts"].mkdir(parents=True, exist_ok=True) + _infallible_symlink(noscript_location, noscript_target) + + expert_bundle_location = Path(config.substs["TOR_EXPERT_BUNDLE"]) + if expert_bundle_location.is_dir(): + self.log( + logging.INFO, + "_setup_tor_browser_environment", + { + "expert_bundle_location": str(expert_bundle_location), + }, + "Setting up tor-expert-bundle resources from {expert_bundle_location}", + ) + + # Set up Tor configuration files + paths["tor_config"].mkdir(parents=True, exist_ok=True) + for file in ["geoip", "geoip6"]: + target = paths["tor_config"] / file + _infallible_symlink(expert_bundle_location / "data" / file, target) + + # Set up Conjure documentation + conjust_docs_location = paths["docs"] / "conjure" + conjust_docs_location.mkdir(parents=True, exist_ok=True) + conjure_readme = conjust_docs_location / "README.CONJURE.md" + _infallible_symlink( + expert_bundle_location + / "tor/pluggable_transports/README.CONJURE.md", + conjure_readme, + ) + + # Set up pluggable transports + paths["tor_bin"].mkdir(parents=True, exist_ok=True) + pluggable_transports_location = ( + expert_bundle_location / "tor/pluggable_transports" + ) + pluggable_transports_target = paths["tor_bin"] / "PluggableTransports" + pluggable_transports_target.mkdir(parents=True, exist_ok=True) + for file in pluggable_transports_location.iterdir(): + # We only want the PT executables. + if os.access(file, os.X_OK) or file.suffix.lower() == ".exe": + target = pluggable_transports_target / file.name + _infallible_symlink(file, target) + + # Setup Tor binary + for item in (expert_bundle_location / "tor").iterdir(): + target = paths["tor_bin"] / item.name + if target.is_file(): + _infallible_symlink(item, target) + + # Set up licenses + licenses_location = paths["docs"] / "Licenses" + licenses_location.mkdir(parents=True, exist_ok=True) + for item in (expert_bundle_location / "docs").iterdir(): + target = licenses_location / item.name + _infallible_symlink(item, target) + def post_build(self, config, output, jobs, verbose, status): """Called late during 'mach build' execution, after `build(...)` has finished. @@ -257,6 +383,9 @@ class BuildBackend(LoggingMixin): """ self._write_purgecaches(config) + if status == 0: + self._setup_tor_browser_environment(config) + return status @contextmanager ===================================== python/mozbuild/mozbuild/tbbutils.py ===================================== @@ -0,0 +1,97 @@ +import re +from urllib.request import Request, urlopen + + +def list_files_http(url): + try: + req = Request(url, method="GET") + with urlopen(req) as response: + if response.status != 200: + return [] + html = response.read().decode() + except Exception: + return [] + + links = [] + for href in re.findall(r'<a href="([^"]+)"', html): + if href == "../": + continue + + if "tor-expert-bundle" in href: + href = f"{href}/tor-expert-bundle.tar.gz" + + links.append(href) + + return links + + +TOR_BROWSER_BUILD_ARTIFACTS = [ + # Tor Browser Build-only artifacts, these artifacts are not common with Firefox. + "noscript", + "fonts", + "tor-expert-bundle", +] + +# Mapping of artifacts from taskcluster to tor-browser-build. +ARTIFACT_NAME_MAP = { + "cbindgen": "cbindgen", + # FIXME (tor-browser-build#41471): nasm is more or less ready to go, but it needs to have the + # executable in the root of the artifact folder instead of nasm/bin. + # "nasm": "nasm", + # FIXME (tor-browser-build#41421): the clang project as is, is not ready to use. It needs + # to be repackaged with a bunch of things that differ per platform. Fun stuff. + # "clang": "clang", + "node": "node", +} + + +def get_artifact_name(original_artifact_name, target, host): + # These are not build artifacts, they are pre-built artifacts to be added to the final build, + # therefore this check can come before the host check. + if original_artifact_name in TOR_BROWSER_BUILD_ARTIFACTS: + return original_artifact_name + + if host != "linux64": + # Tor browser build only has development artifacts for linux64 host systems. + return None + + return ARTIFACT_NAME_MAP.get(original_artifact_name) + + +def get_artifact_path(url, artifact, target, prefix=""): + if prefix: + path = prefix + else: + path = artifact + + # The `?C=M;O=D` parameters make it so links are ordered by + # the last modified date. This here to make us get the latest + # version of file in the case there are multiple and we just + # grab the first one. + files = list_files_http(f"{url}/{path}?C=M;O=D") + + if not files: + return None + + def filter_files(files, keyword): + return [file for file in files if keyword in file] + + artifact_files = filter_files(files, artifact) + + if len(artifact_files) == 1: + return f"{url}/{path}/{artifact_files[0]}" + + files_per_os = filter_files(artifact_files, target.tor_browser_build_alias) + + # If there are files in the folder, but they don't have the OS in the name + # it means we can get any of them because they can be used to build for any OS. + # So let's just get the first one. + if len(files_per_os) == 0: + return f"{url}/{artifact}/{artifact_files[0]}" + + elif len(files_per_os) == 1: + return f"{url}/{artifact}/{files_per_os[0]}" + + matches = filter_files(files_per_os, target.cpu) + + return f"{url}/{artifact}/{matches[0]}" if matches else None View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/1b6230… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/1b6230… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-140.2.0esr-15.0-1] fixup! BB 40926: Implemented the New Identity feature
by brizental (@brizental) 21 Aug '25

21 Aug '25
brizental pushed to branch mullvad-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Mullvad Browser Commits: 64bcf3cf by Beatriz Rizental at 2025-08-21T15:40:41+02:00 fixup! BB 40926: Implemented the New Identity feature - - - - - 1 changed file: - browser/components/newidentity/content/newidentity.js Changes: ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -418,22 +418,21 @@ ChromeUtils.defineLazyGetter(this, "NewIdentityButton", () => { tbl.onLocationChange = (...args) => { tbl.onLocationChange = onLocationChange; tbl.onLocationChange(...args); - let displayAddress; - try { - const url = new URL(homeURL); - displayAddress = url.hostname; - if (!displayAddress) { - // no host, use full address and truncate if too long - const MAX_LEN = 32; - displayAddress = url.href; - if (displayAddress.length > MAX_LEN) { - displayAddress = `${displayAddress.substring(0, MAX_LEN)}…`; - } - } - } catch (e) { + const url = URL.parse(homeURL); + if (!url) { // malformed URL, bail out return; } + + let displayAddress = url.hostname; + if (!displayAddress) { + // no host, use full address and truncate if too long + const MAX_LEN = 32; + displayAddress = url.href; + if (displayAddress.length > MAX_LEN) { + displayAddress = `${displayAddress.substring(0, MAX_LEN)}…`; + } + } const callback = () => { Services.prefs.setStringPref(trustedHomePref, homeURL); win.BrowserHome(); View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/64b… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/64b… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-140.2.0esr-15.0-1] fixup! BB 40926: Implemented the New Identity feature
by brizental (@brizental) 21 Aug '25

21 Aug '25
brizental pushed to branch base-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 4b154152 by Beatriz Rizental at 2025-08-21T15:39:24+02:00 fixup! BB 40926: Implemented the New Identity feature - - - - - 1 changed file: - browser/components/newidentity/content/newidentity.js Changes: ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -418,22 +418,21 @@ ChromeUtils.defineLazyGetter(this, "NewIdentityButton", () => { tbl.onLocationChange = (...args) => { tbl.onLocationChange = onLocationChange; tbl.onLocationChange(...args); - let displayAddress; - try { - const url = new URL(homeURL); - displayAddress = url.hostname; - if (!displayAddress) { - // no host, use full address and truncate if too long - const MAX_LEN = 32; - displayAddress = url.href; - if (displayAddress.length > MAX_LEN) { - displayAddress = `${displayAddress.substring(0, MAX_LEN)}…`; - } - } - } catch (e) { + const url = URL.parse(homeURL); + if (!url) { // malformed URL, bail out return; } + + let displayAddress = url.hostname; + if (!displayAddress) { + // no host, use full address and truncate if too long + const MAX_LEN = 32; + displayAddress = url.href; + if (displayAddress.length > MAX_LEN) { + displayAddress = `${displayAddress.substring(0, MAX_LEN)}…`; + } + } const callback = () => { Services.prefs.setStringPref(trustedHomePref, homeURL); win.BrowserHome(); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/4b15415… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/4b15415… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] 2 commits: Bug 41548: Unify CFLAGS definition for Android.
by Pier Angelo Vendrame (@pierov) 21 Aug '25

21 Aug '25
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 0508c07b by Pier Angelo Vendrame at 2025-08-21T15:17:58+02:00 Bug 41548: Unify CFLAGS definition for Android. Avoid repeating -Oz, instead use a variable from rbm.conf. - - - - - 00f0cf66 by Pier Angelo Vendrame at 2025-08-21T15:19:57+02:00 Bug 41548: Set tor's visibility to hidden on Android. This helps to reduce the size of the tor binary on Android by almost 1MB uncompressed and 370kB compressed on x86. Add also other interesting linking options. - - - - - 6 changed files: - projects/libevent/config - projects/openssl/config - projects/tor/config - projects/zlib/build - projects/zstd/build - rbm.conf Changes: ===================================== projects/libevent/config ===================================== @@ -17,7 +17,7 @@ targets: configure_opt_project: --disable-shared android: var: - configure_opt_project: --disable-shared CFLAGS="-Oz" + configure_opt_project: --disable-shared CFLAGS="[% c('var/CFLAGS') %]" input_files: - project: container-image ===================================== projects/openssl/config ===================================== @@ -26,7 +26,7 @@ targets: configure_opts: '--cross-compile-prefix=[% c("var/build_target") %]- darwin64-[% c("var/macos_arch") %]-cc enable-ec_nistp_64_gcc_128' android: var: - configure_opts: 'CC=[% c("var/CC") %] android-[% c("var/toolchain_arch") %] -no-shared -D__ANDROID_API__=[% c("var/android_min_api") %] -Oz' + configure_opts: 'CC=[% c("var/CC") %] android-[% c("var/toolchain_arch") %] -no-shared -D__ANDROID_API__=[% c("var/android_min_api") %] [% c("var/CFLAGS") %]' input_files: - project: container-image ===================================== projects/tor/config ===================================== @@ -43,7 +43,7 @@ targets: android: var: - configure_opt_project: '--enable-android --enable-static-openssl --enable-static-libevent --enable-zstd --disable-tool-name-check --disable-system-torrc CFLAGS=-Oz' + configure_opt_project: '--enable-android --enable-static-openssl --enable-static-libevent --enable-zstd --disable-tool-name-check --disable-system-torrc CFLAGS="[% c("var/CFLAGS") %]" LDFLAGS="-Wl,--icf=safe -Wl,--pack-dyn-relocs=relr -Wl,--exclude-libs,ALL"' input_files: - project: container-image ===================================== projects/zlib/build ===================================== @@ -14,7 +14,7 @@ cd /var/tmp/build/[% project %]-[% c('version') %] [% IF c("var/android") -%] export CHOST=[% c("var/cross_prefix") %] export CC=[% c("var/CC") %] - export CFLAGS="-Oz" + export CFLAGS="[% c('var/CFLAGS') %]" ./configure --prefix=$distdir make -j[% c("num_procs") %] make -j[% c("num_procs") %] install ===================================== projects/zstd/build ===================================== @@ -8,7 +8,7 @@ tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.[% c('compress_ta cd /var/tmp/build/[% project %]-[% c('version') %] export CPPFLAGS=-DZSTD_MULTITHREAD export CC=[% c("var/CC") %] -export CFLAGS="-Oz" +export CFLAGS="[% c('var/CFLAGS') %]" make -C lib -j[% c("num_procs") %] PREFIX=$distdir install # Only need static libraries rm $distdir/lib/libzstd.so* ===================================== rbm.conf ===================================== @@ -470,6 +470,7 @@ targets: compiler: android-toolchain android_min_api: 21 CC: '[% c("var/cross_prefix") %][% c("var/android_min_api") %]-clang' + CFLAGS: '-Oz -fvisibility=hidden' container: suite: bookworm arch: amd64 View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.2.0esr-15.0-1] 7 commits: fixup! BB 40926: Implemented the New Identity feature
by brizental (@brizental) 21 Aug '25

21 Aug '25
brizental pushed to branch tor-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 40fe2123 by Beatriz Rizental at 2025-08-21T14:45:59+02:00 fixup! BB 40926: Implemented the New Identity feature - - - - - ca116af7 by Beatriz Rizental at 2025-08-21T14:45:59+02:00 fixup! TB 8324: Prevent DNS proxy bypasses caused by Drag&Drop - - - - - 61f37354 by Beatriz Rizental at 2025-08-21T14:46:00+02:00 fixup! TB 27476: Implement about:torconnect captive portal within Tor Browser - - - - - db2882b1 by Beatriz Rizental at 2025-08-21T14:46:00+02:00 fixup! TB 7494: Create local home page for TBB. - - - - - 2e686601 by Beatriz Rizental at 2025-08-21T14:46:00+02:00 fixup! TB 23247: Communicating security expectations for .onion - - - - - 3e500e35 by Beatriz Rizental at 2025-08-21T14:46:01+02:00 fixup! TB 21952: Implement Onion-Location - - - - - 1b623002 by Beatriz Rizental at 2025-08-21T14:46:01+02:00 fixup! TB 40458: Implement .tor.onion aliases - - - - - 9 changed files: - browser/base/content/pageinfo/security.js - browser/components/abouttor/content/aboutTor.js - browser/components/newidentity/content/newidentity.js - browser/components/onionservices/OnionAliasStore.sys.mjs - browser/components/onionservices/OnionLocationChild.sys.mjs - browser/components/onionservices/TorRequestWatch.sys.mjs - browser/components/rulesets/content/aboutRulesets.js - toolkit/components/torconnect/TorConnectChild.sys.mjs - toolkit/modules/DragDropFilter.sys.mjs Changes: ===================================== browser/base/content/pageinfo/security.js ===================================== @@ -57,15 +57,15 @@ var security = { (Ci.nsIWebProgressListener.STATE_LOADED_MIXED_ACTIVE_CONTENT | Ci.nsIWebProgressListener.STATE_LOADED_MIXED_DISPLAY_CONTENT); var isEV = ui.state & Ci.nsIWebProgressListener.STATE_IDENTITY_EV_TOPLEVEL; - let uriInformation = new URL(gDocInfo.documentURIObject.spec); + let uriInformation = URL.parse(gDocInfo.documentURIObject.spec); // If the Onion site could not be loaded, the view-source will be also be // about:neterror. - if (uriInformation.protocol == "view-source:") { - uriInformation = new URL(uriInformation.pathname); + if (uriInformation?.protocol == "view-source:") { + uriInformation = URL.parse(uriInformation.pathname); } const isOnion = - ["http:", "https:"].includes(uriInformation.protocol) && - uriInformation.hostname.endsWith(".onion"); + ["http:", "https:"].includes(uriInformation?.protocol) && + uriInformation?.hostname.endsWith(".onion"); let retval = { cAName: "", ===================================== browser/components/abouttor/content/aboutTor.js ===================================== @@ -298,10 +298,11 @@ const SurveyArea = { */ init() { document.getElementById("survey-launch").addEventListener("click", () => { - if (!this._localeData) { + const url = URL.parse(this._urlBase); + if (!url || !this._localeData) { return; } - const url = new URL(this._urlBase); + url.searchParams.append("lang", this._localeData.urlCode); open(url.href); }); ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -418,22 +418,21 @@ ChromeUtils.defineLazyGetter(this, "NewIdentityButton", () => { tbl.onLocationChange = (...args) => { tbl.onLocationChange = onLocationChange; tbl.onLocationChange(...args); - let displayAddress; - try { - const url = new URL(homeURL); - displayAddress = url.hostname; - if (!displayAddress) { - // no host, use full address and truncate if too long - const MAX_LEN = 32; - displayAddress = url.href; - if (displayAddress.length > MAX_LEN) { - displayAddress = `${displayAddress.substring(0, MAX_LEN)}…`; - } - } - } catch (e) { + const url = URL.parse(homeURL); + if (!url) { // malformed URL, bail out return; } + + let displayAddress = url.hostname; + if (!displayAddress) { + // no host, use full address and truncate if too long + const MAX_LEN = 32; + displayAddress = url.href; + if (displayAddress.length > MAX_LEN) { + displayAddress = `${displayAddress.substring(0, MAX_LEN)}…`; + } + } const callback = () => { Services.prefs.setStringPref(trustedHomePref, homeURL); win.BrowserHome(); ===================================== browser/components/onionservices/OnionAliasStore.sys.mjs ===================================== @@ -175,17 +175,15 @@ class Channel { ); return; } - let toHostname; - try { - const toUrl = new URL(rule.rule[0].to); - toHostname = toUrl.hostname; - } catch (err) { + const toHostname = URL.parse(rule.rule[0].to)?.hostname; + if (!toHostname) { log.error( - "Cannot detect the hostname from the to rule", - rule.rule[0].to, - err + "Unable to parse the URL and the hostname from the to rule", + rule.rule[0].to ); + return; } + let fromRe; try { fromRe = new RegExp(rule.rule[0].from); @@ -318,6 +316,7 @@ class _OnionAliasStore { throw Error("Name cannot be empty"); } + // This will throw if the URL is invalid. new URL(chanData.pathPrefix); const scope = new RegExp(chanData.scope); const ch = new Channel( ===================================== browser/components/onionservices/OnionLocationChild.sys.mjs ===================================== @@ -25,12 +25,12 @@ export class OnionLocationChild extends JSWindowActorChild { let onionLocationURI = doc.onionLocationURI; const refreshURI = docShell.QueryInterface(Ci.nsIRefreshURI); if (onionLocationURI && refreshURI) { - const docUrl = new URL(doc.URL); - let onionUrl = new URL(onionLocationURI.asciiSpec); + const docUrl = URL.parse(doc.URL); + let onionUrl = URL.parse(onionLocationURI.asciiSpec); // Keep consistent with Location - if (!onionUrl.hash && docUrl.hash) { + if (!onionUrl?.hash && docUrl?.hash) { onionUrl.hash = docUrl.hash; - onionLocationURI = Services.io.newURI(onionUrl.toString()); + onionLocationURI = Services.io.newURI(onionUrl?.toString() || ""); } refreshURI.refreshURI( onionLocationURI, ===================================== browser/components/onionservices/TorRequestWatch.sys.mjs ===================================== @@ -79,7 +79,14 @@ class RequestObserver { } isCrossOrigin(url1, url2) { - return new URL(url1).origin !== new URL(url2).origin; + const origin1 = URL.parse(url1)?.origin; + const origin2 = URL.parse(url2)?.origin; + + if (!origin1 || !origin2) { + return true; + } + + return origin1 !== origin2; } shouldBlindCrossOrigin(uri) { try { ===================================== browser/components/rulesets/content/aboutRulesets.js ===================================== @@ -210,8 +210,8 @@ class EditState { const pathPrefix = elements.pathPrefixInput.value.trim(); try { - const url = new URL(pathPrefix); - if (url.protocol !== "http:" && url.protocol !== "https:") { + const url = URL.parse(pathPrefix); + if (url?.protocol !== "http:" && url?.protocol !== "https:") { elements.pathPrefixInput.setCustomValidity( await document.l10n.formatValue("rulesets-details-path-input-invalid") ); ===================================== toolkit/components/torconnect/TorConnectChild.sys.mjs ===================================== @@ -30,20 +30,21 @@ export class TorConnectChild extends RemotePageChild { this.#redirected = true; const redirect = new URLSearchParams( - new URL(this.contentWindow.document.location.href).search + URL.parse(this.contentWindow.document.location.href)?.search ).get("redirect"); // Fallback in error cases: let replaceURI = "about:tor"; - try { - const url = new URL( - redirect - ? decodeURIComponent(redirect) - : // NOTE: We expect no redirect when address is entered manually, or - // about:torconnect is opened from preferences or urlbar. - // Go to the home page. - await this.sendQuery("torconnect:home-page") - ); + const url = URL.parse( + redirect + ? decodeURIComponent(redirect) + : // NOTE: We expect no redirect when address is entered manually, or + // about:torconnect is opened from preferences or urlbar. + // Go to the home page. + await this.sendQuery("torconnect:home-page") + ); + + if (url) { // Do not allow javascript URI. See tor-browser#41766 if ( ["about:", "file:", "https:", "http:"].includes(url.protocol) || @@ -55,8 +56,8 @@ export class TorConnectChild extends RemotePageChild { } else { console.error(`Scheme is not allowed "${redirect}"`); } - } catch (e) { - console.error(`Invalid redirect URL "${redirect}"`, e); + } else { + console.error(`Invalid redirect URL "${redirect}"`); } // Replace the destination to prevent "about:torconnect" entering the ===================================== toolkit/modules/DragDropFilter.sys.mjs ===================================== @@ -97,11 +97,7 @@ export const DragDropFilter = { const links = aDataTransfer.mozGetDataAt(urlType, i); // Skip DNS-safe URLs (no hostname, e.g. RFC 3966 tel:) const mayLeakDNS = links.split("\n").some(link => { - try { - return new URL(link).hostname; - } catch (e) { - return false; - } + return URL.parse(link)?.hostname ?? false; }); if (!mayLeakDNS) { continue; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/c29f47… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/c29f47… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] Bug 41523: Use custom glean in geckoview
by brizental (@brizental) 21 Aug '25

21 Aug '25
brizental pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 6100c67a by Beatriz Rizental at 2025-08-21T14:41:56+02:00 Bug 41523: Use custom glean in geckoview - - - - - 5 changed files: - Makefile - projects/geckoview/build_common - projects/geckoview/config - projects/geckoview/gradle-dependencies-list.txt - projects/glean/config Changes: ===================================== Makefile ===================================== @@ -647,6 +647,9 @@ cargo_vendor-lox: submodule-update cargo_vendor-uniffi-rs: submodule-update $(rbm) build uniffi-rs --step cargo_vendor --target alpha --target torbrowser-linux-x86_64 +cargo_vendor-glean: submodule-update + $(rbm) build glean --step cargo_vendor --target alpha --target torbrowser-linux-x86_64 + go_vendor-conjure: submodule-update $(rbm) build conjure --step go_vendor --target alpha --target torbrowser-linux-x86_64 ===================================== projects/geckoview/build_common ===================================== @@ -14,6 +14,7 @@ export PATH="/var/tmp/dist/node/bin:$PATH" export LC_ALL=C.UTF-8 export LANG=C.UTF-8 +tar -xf [% c('input_files_by_name/glean') %] tar -xf [% c('input_files_by_name/application-services') %] export NIMBUS_FML=$rootdir/application-services/nimbus-fml @@ -34,6 +35,7 @@ export GRADLE_FLAGS="--no-daemon --offline -Dmaven.repo.local=$distdir/[% projec # standardized for reproducibility. mv $rootdir/[% c('input_files_by_name/gradle-dependencies') %] $gradle_repo cp -rl $rootdir/application-services/maven/* $gradle_repo +cp -rl $rootdir/glean/maven/* $gradle_repo cp -rl $gradle_repo/dl/android/maven2/* $gradle_repo || true cp -rl $gradle_repo/m2/* $gradle_repo || true cp -rl $gradle_repo/maven2/* $gradle_repo || true ===================================== projects/geckoview/config ===================================== @@ -37,7 +37,7 @@ var: - openjdk-17-jdk-headless # this should be updated when the list of gradle dependencies is changed # see doc/how-to-create-gradle-dependencies-list.txt - gradle_dependencies_version: 17 + gradle_dependencies_version: 18 gradle_version: 8.13 glean_parser: 14.0.1 # python/mozboot/mozboot/android.py @@ -77,6 +77,9 @@ steps: - project: application-services name: application-services pkg_type: build + - project: glean + name: glean + pkg_type: build - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]' name: gradle-dependencies exec: '[% INCLUDE "fetch-gradle-dependencies" %]' @@ -162,6 +165,9 @@ input_files: - URL: '[% pc("glean-parser", "var/glean_wheels_url") %]' name: glean-wheels sha256sum: '[% pc("glean-parser", "var/glean_wheels_sha256sum") %]' + - project: glean + name: glean + pkg_type: build - project: oss-licenses-plugin name: oss-licenses-plugin - name: tor-expert-bundle-aar ===================================== projects/geckoview/gradle-dependencies-list.txt ===================================== @@ -1023,12 +1023,6 @@ dba74d6bf94647ee397bf7afb2ab07f6fe8d13157e56785fa540a2a13ed82c99 | https://maven d36f248782d4ab513d2ab2b6141799525211c37ba0941c4aa2e73ee00f1a14b2 | https://maven.google.com/com/google/firebase/firebase-messaging/24.1.1/fire… d001eb0ccbbfc8cb9eaa193a358e63712974639775647be949ab232c2b29b407 | https://maven.google.com/com/google/testing/platform/core-proto/0.0.9-alpha… 3bb45280df1dd1c96b9a01724a614566b7d60d33453fcd52c2c741f9999c3a4e | https://maven.google.com/com/google/testing/platform/core-proto/0.0.9-alpha… -7d66a1b1e51592eda1e77c44d5692192dbffc828ea3899ff92ae0161b681a336 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/… -07742881a447c577669139ed7548fc4a0e6c43c63aa28a6f4652ff2d163b94f6 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/… -79aa542e883553436721d40af661beb9ac09dad323b89afde057631c54fdf83c | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-native/64.3.1/… -17ae368dcc12a965df8a9195e5d897fb70400159a87effcf65ee5c05790f814e | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-native/64.3.1/… -cb1c7a04874d97c6bb1d3ba4ce009e1fde5f46225b45f6bb87559328573b530b | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/64.3.1/glean-6… -5792a08566c294a46ea777939819154a945eeee8d5cb47d391f845d7c711013a | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/64.3.1/glean-6… 243a64470fda0e86a6fddeb0af4c7aa9426ce84e68cbfe18d75ee5da4b7e0b92 | https://plugins.gradle.org/m2/com/almworks/sqlite4java/sqlite4java/1.0.392/… 139552c586a57bf6d98f87d6b7e23fef4db53cf74097be962f7868e3606c79d2 | https://plugins.gradle.org/m2/com/almworks/sqlite4java/sqlite4java/1.0.392/… 02a5b08a2b35d2d58eb2eaca9d84ac00fb341da725fdbd653ea3ed130437e95a | https://plugins.gradle.org/m2/com/caverock/androidsvg-aar/1.4/androidsvg-aa… ===================================== projects/glean/config ===================================== @@ -12,35 +12,37 @@ var: gradle_dependencies_version: 1 gradle_version: 8.13 -input_files: - - project: container-image - - project: '[% c("var/compiler") %]' - name: '[% c("var/compiler") %]' - # These versions of build tools and platform are not the same version needed - # by our other projects, therefore we download it only here instead of modifying - # the android-toolchain project. - - URL: 'https://dl.google.com/android/repository/build-tools_r35_linux.zip' - name: build_tools_35 - sha256sum: bd3a4966912eb8b30ed0d00b0cda6b6543b949d5ffe00bea54c04c81e1561d88 - - URL: 'https://dl.google.com/android/repository/platform-35_r02.zip' - name: platform_35 - sha256sum: 0988cacad01b38a18a47bac14a0695f246bc76c1b06c0eeb8eb0dc825ab0c8e0 - - project: gradle - name: gradle - - project: rust - name: rust - - project: uniffi-rs - name: uniffi-rs - - URL: '[% pc("glean-parser", "var/glean_wheels_url") %]' - name: glean-wheels - sha256sum: '[% pc("glean-parser", "var/glean_wheels_sha256sum") %]' - - name: cargo_vendor - project: glean - pkg_type: cargo_vendor - norec: - sha256sum: 0cb6a7093b93ecc8d8e13f02e5ec46a538b5eaf55ab027b46754bfbdeec2152e - - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]' - name: gradle-dependencies - exec: '[% INCLUDE "fetch-gradle-dependencies" %]' - - filename: use-custom-gradle-repo.diff - - filename: use-uniffi-noop.diff +steps: + build: + input_files: + - project: container-image + - project: '[% c("var/compiler") %]' + name: '[% c("var/compiler") %]' + # These versions of build tools and platform are not the same version needed + # by our other projects, therefore we download it only here instead of modifying + # the android-toolchain project. + - URL: 'https://dl.google.com/android/repository/build-tools_r35_linux.zip' + name: build_tools_35 + sha256sum: bd3a4966912eb8b30ed0d00b0cda6b6543b949d5ffe00bea54c04c81e1561d88 + - URL: 'https://dl.google.com/android/repository/platform-35_r02.zip' + name: platform_35 + sha256sum: 0988cacad01b38a18a47bac14a0695f246bc76c1b06c0eeb8eb0dc825ab0c8e0 + - project: gradle + name: gradle + - project: rust + name: rust + - project: uniffi-rs + name: uniffi-rs + - URL: '[% pc("glean-parser", "var/glean_wheels_url") %]' + name: glean-wheels + sha256sum: '[% pc("glean-parser", "var/glean_wheels_sha256sum") %]' + - name: cargo_vendor + project: glean + pkg_type: cargo_vendor + norec: + sha256sum: 0cb6a7093b93ecc8d8e13f02e5ec46a538b5eaf55ab027b46754bfbdeec2152e + - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]' + name: gradle-dependencies + exec: '[% INCLUDE "fetch-gradle-dependencies" %]' + - filename: use-custom-gradle-repo.diff + - filename: use-uniffi-noop.diff View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/6… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/6… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.2.0esr-15.0-1] fixup! TB 31286: Implementation of bridge, proxy, and firewall settings in...
by morgan (@morgan) 21 Aug '25

21 Aug '25
morgan pushed to branch tor-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: c29f471d by Henry Wilkes at 2025-08-21T09:24:12+01:00 fixup! TB 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection TB 44115: Make the remove all bridges dialog button destructive. - - - - - 1 changed file: - browser/components/torpreferences/content/connectionPane.js Changes: ===================================== browser/components/torpreferences/content/connectionPane.js ===================================== @@ -2173,6 +2173,7 @@ const gBridgeSettings = { Services.prompt.BUTTON_POS_0 * Services.prompt.BUTTON_TITLE_IS_STRING + Services.prompt.BUTTON_POS_0_DEFAULT + + Services.prompt.BUTTON_DEFAULT_IS_DESTRUCTIVE + Services.prompt.BUTTON_POS_1 * Services.prompt.BUTTON_TITLE_CANCEL; const [titleString, bodyString, removeString] = View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/c29f471… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/c29f471… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.2.0esr-15.0-1] fixup! [android] TBA strings
by henry (@henry) 21 Aug '25

21 Aug '25
henry pushed to branch tor-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: d590dc64 by Henry Wilkes at 2025-08-21T08:06:38+00:00 fixup! [android] TBA strings TB 43179: Fixup the string comments for translators. - - - - - 1 changed file: - mobile/android/fenix/app/src/main/res/values/torbrowser_strings.xml Changes: ===================================== mobile/android/fenix/app/src/main/res/values/torbrowser_strings.xml ===================================== @@ -137,10 +137,9 @@ <!-- Connection assist. Content Description for back button. Button will start the connection assist process again --> <string name="connection_assist_back_button_content_description_start_again">Start again</string> - - <!-- "Close %s's tabs?" --> + <!-- Notification title for closing browser tabs. "%s" will be replaced with the localised application name, such as "Tor Browser". --> <string name="notification_close_tor_browser_tabs">Close %s’s tabs?</string> - <!-- "Close %s's tabs? (long)" --> + <!-- Notification body for closing browser tabs. "%s" will be replaced with the localised application name, such as "Tor Browser". --> <string name="notification_close_tor_browser_tabs_long">Tap or swipe this notification to close %s’s tabs</string> </resources> View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d590dc6… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d590dc6… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.2.0esr-15.0-1] 4 commits: fixup! TB 31286: Implementation of bridge, proxy, and firewall settings in...
by morgan (@morgan) 20 Aug '25

20 Aug '25
morgan pushed to branch tor-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 9b43d384 by Henry Wilkes at 2025-08-20T17:40:32+01:00 fixup! TB 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection TB 43727: Drop the moz-toggle label-align-after attribute. - - - - - 941d407e by Henry Wilkes at 2025-08-20T17:40:33+01:00 fixup! TB 27476: Implement about:torconnect captive portal within Tor Browser TB 43727: Drop the moz-toggle label-align-after attribute. - - - - - 57bb4918 by Henry Wilkes at 2025-08-20T17:40:34+01:00 fixup! TB 7494: Create local home page for TBB. TB 43727: Align "Onionize" label before the toggle. - - - - - 1ab41197 by Henry Wilkes at 2025-08-20T17:57:06+01:00 fixup! Customize moz-toggle for tor-browser. TB 43727: Drop the moz-toggle label-align-after attribute. Upstream now does this by default. Instead we add the label-align-before attribute for the exception in about:tor. - - - - - 6 changed files: - browser/components/abouttor/content/aboutTor.html - browser/components/torpreferences/content/connectionPane.inc.xhtml - toolkit/components/torconnect/content/aboutTorConnect.html - toolkit/content/widgets/lit-utils.mjs - toolkit/content/widgets/moz-input-common.css - toolkit/content/widgets/moz-toggle/moz-toggle.mjs Changes: ===================================== browser/components/abouttor/content/aboutTor.html ===================================== @@ -77,6 +77,7 @@ /> <moz-toggle id="onionize-toggle" + label-align-before="" data-l10n-id="tor-browser-home-onionize-toggle" data-l10n-attrs="label" ></moz-toggle> ===================================== browser/components/torpreferences/content/connectionPane.inc.xhtml ===================================== @@ -79,7 +79,6 @@ <html:moz-toggle id="tor-connection-quickstart-toggle" class="tor-toggle" - label-align-after="" data-l10n-id="tor-connection-quickstart-checkbox" data-l10n-attrs="label" /> @@ -145,7 +144,6 @@ <html:moz-toggle id="tor-bridges-enabled-toggle" class="tor-toggle" - label-align-after="" data-l10n-id="tor-bridges-use-bridges" data-l10n-attrs="label" /> ===================================== toolkit/components/torconnect/content/aboutTorConnect.html ===================================== @@ -62,7 +62,7 @@ <button id="viewLogButton"></button> <div id="quickstartContainer"> - <moz-toggle id="quickstartToggle" label-align-after=""></moz-toggle> + <moz-toggle id="quickstartToggle"></moz-toggle> </div> <div class="button-container"> ===================================== toolkit/content/widgets/lit-utils.mjs ===================================== @@ -250,6 +250,9 @@ export class MozBaseInputElement extends MozLitElement { supportPage: { type: String, attribute: "support-page" }, accessKey: { type: String, mapped: true, fluent: true }, parentDisabled: { type: Boolean, state: true }, + // label-align-before is a customisation for the moz-toggle in about:tor. + // See tor-browser#43727. + labelAlignBefore: { type: Boolean, attribute: "label-align-before" }, }; static inputLayout = "inline"; @@ -404,9 +407,10 @@ export class MozBaseInputElement extends MozLitElement { part="label" for="input" shownaccesskey=${ifDefined(this.accessKey)} - >${this.isInlineLayout + >${this.labelAlignBefore ? this.labelTemplate() : ""}${this + .isInlineLayout ? this.inputTemplate() - : ""}${this.labelTemplate()}</label + : ""}${this.labelAlignBefore ? "" : this.labelTemplate()}</label >${this.hasDescription ? "" : this.supportLinkTemplate()} </span> ${this.descriptionTemplate()} ===================================== toolkit/content/widgets/moz-input-common.css ===================================== @@ -12,6 +12,7 @@ --input-margin-block-adjust: calc((1lh - var(--input-height)) / 2); --icon-margin-block-adjust: calc((1lh - var(--icon-size-default)) / 2); --input-margin-inline-start-adjust: calc(-1 * var(--input-space-offset)); + --input-margin-inline-adjust: var(--input-margin-inline-start-adjust) var(--space-small); } :host(:not([hidden])) { @@ -32,6 +33,13 @@ --input-margin-block-adjust: 0; } + :host([label-align-before]) { + /* The label is before the input, so we need the input to only have a + * starting gap between it and the label. */ + --input-space-offset: 0; + --input-margin-inline-adjust: var(--space-small) 0; + } + @media (forced-colors) { :host(:state(disabled)) { color: GrayText; @@ -72,7 +80,7 @@ line-height: inherit; vertical-align: top; margin-block: var(--input-margin-block-adjust); - margin-inline: var(--input-margin-inline-start-adjust) var(--space-small); + margin-inline: var(--input-margin-inline-adjust); :host(:not(:state(has-label))) & { margin-inline-end: 0; ===================================== toolkit/content/widgets/moz-toggle/moz-toggle.mjs ===================================== @@ -27,8 +27,6 @@ export default class MozToggle extends MozBaseInputElement { pressed: { type: Boolean, reflect: true }, // Extension for tor-browser. Used for tor-browser#41333. title: { type: String, attribute: "title" }, - // Extension for tor-browser. Used for tor-browser#40837. - labelAlignAfter: { type: Boolean, attribute: "label-align-after" }, }; static activatedProperty = "pressed"; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/4390c5… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/4390c5… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-140.2.0esr-15.0-1] 4 commits: fixup! BB 31740: Remove some unnecessary RemoteSettings instances
by Pier Angelo Vendrame (@pierov) 20 Aug '25

20 Aug '25
Pier Angelo Vendrame pushed to branch mullvad-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Mullvad Browser Commits: 46629939 by Pier Angelo Vendrame at 2025-08-20T18:03:50+02:00 fixup! BB 31740: Remove some unnecessary RemoteSettings instances BB 43795: Restore the URL classifier XPCOM components. We are not really interested in removing them. We're interested in them not calling Mozilla. However, we have a central patch for RemoteSettings, so we do not need to patch the single user. Or, if we did, at least we should patch UrlClassifierExceptionListService where it creates its RemoteSettings instance. - - - - - cc561c52 by Pier Angelo Vendrame at 2025-08-20T18:03:51+02:00 fixup! BB 31740: Remove some unnecessary RemoteSettings instances BB 43795: Restore the URL classifier XPCOM components. Remove this page as part of another commit. This comit should go away automatically at the next rebase. - - - - - 2164237e by Pier Angelo Vendrame at 2025-08-20T18:03:52+02:00 fixup! BB 42716: Disable unwanted about: pages BB 43795: Restore the URL classifier XPCOM components. Move the commit where we disable about:urlclassifier. - - - - - 673df9af by Pier Angelo Vendrame at 2025-08-20T18:03:52+02:00 fixup! BB 42730: Patch RemoteSettings to use only local dumps as a data source Make explicit that blanking REMOTE_SETTINGS_SERVER_URL is our change. - - - - - 4 changed files: - docshell/base/nsAboutRedirector.cpp - netwerk/url-classifier/UrlClassifierFeatureBase.cpp - netwerk/url-classifier/components.conf - toolkit/modules/AppConstants.sys.mjs Changes: ===================================== docshell/base/nsAboutRedirector.cpp ===================================== @@ -220,6 +220,8 @@ static const RedirEntry kRedirMap[] = { nsIAboutModule::HIDE_FROM_ABOUTABOUT}, #endif #ifndef BASE_BROWSER_VERSION + // We disable safe browsing and the data update mechanisms. So this page + // will be non-functional or at least unreliable. {"url-classifier", "chrome://global/content/aboutUrlClassifier.xhtml", nsIAboutModule::ALLOW_SCRIPT}, #endif ===================================== netwerk/url-classifier/UrlClassifierFeatureBase.cpp ===================================== @@ -80,7 +80,7 @@ void UrlClassifierFeatureBase::InitializePreferences() { nsCOMPtr<nsIUrlClassifierExceptionListService> exceptionListService = do_GetService("@mozilla.org/url-classifier/exception-list-service;1"); - if (!exceptionListService) { + if (NS_WARN_IF(!exceptionListService)) { return; } ===================================== netwerk/url-classifier/components.conf ===================================== @@ -13,4 +13,24 @@ Classes = [ 'constructor': 'mozilla::net::ChannelClassifierService::GetSingleton', 'headers': ['mozilla/net/ChannelClassifierService.h'], }, + { + 'cid': '{b9f4fd03-9d87-4bfd-9958-85a821750ddc}', + 'contract_ids': ['@mozilla.org/url-classifier/exception-list-service;1'], + 'esModule': 'resource://gre/modules/UrlClassifierExceptionListService.sys.mjs', + 'constructor': 'UrlClassifierExceptionListService', + }, + { + 'cid': '{8753A413-3ED6-4A61-A1DC-B31A7E69B796}', + 'interfaces': ['nsIUrlClassifierExceptionListEntry'], + 'headers': ['mozilla/net/UrlClassifierExceptionListEntry.h'], + 'type': 'mozilla::net::UrlClassifierExceptionListEntry', + 'contract_ids': ['@mozilla.org/url-classifier/exception-list-entry;1'], + }, + { + 'cid': '{807535BF-018E-4300-B8D3-4A6405FB9F65}', + 'interfaces': ['nsIUrlClassifierExceptionList'], + 'headers': ['mozilla/net/UrlClassifierExceptionList.h'], + 'type': 'mozilla::net::UrlClassifierExceptionList', + 'contract_ids': ['@mozilla.org/url-classifier/exception-list;1'], + }, ] ===================================== toolkit/modules/AppConstants.sys.mjs ===================================== @@ -210,10 +210,12 @@ export var AppConstants = Object.freeze({ ENABLE_WEBDRIVER: @ENABLE_WEBDRIVER_BOOL@, REMOTE_SETTINGS_SERVER_URL: -#ifdef MOZ_THUNDERBIRD +#if defined(BASE_BROWSER_VERSION) + "", +#elif defined(MOZ_THUNDERBIRD) "https://thunderbird-settings.thunderbird.net/v1", #else - "", + "https://firefox.settings.services.mozilla.com/v1", #endif REMOTE_SETTINGS_VERIFY_SIGNATURE: View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/dd… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/dd… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-140.2.0esr-15.0-1] 4 commits: fixup! BB 31740: Remove some unnecessary RemoteSettings instances
by Pier Angelo Vendrame (@pierov) 20 Aug '25

20 Aug '25
Pier Angelo Vendrame pushed to branch base-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 978afe83 by Pier Angelo Vendrame at 2025-08-20T18:01:38+02:00 fixup! BB 31740: Remove some unnecessary RemoteSettings instances BB 43795: Restore the URL classifier XPCOM components. We are not really interested in removing them. We're interested in them not calling Mozilla. However, we have a central patch for RemoteSettings, so we do not need to patch the single user. Or, if we did, at least we should patch UrlClassifierExceptionListService where it creates its RemoteSettings instance. - - - - - f183749f by Pier Angelo Vendrame at 2025-08-20T18:01:40+02:00 fixup! BB 31740: Remove some unnecessary RemoteSettings instances BB 43795: Restore the URL classifier XPCOM components. Remove this page as part of another commit. This comit should go away automatically at the next rebase. - - - - - 72840c42 by Pier Angelo Vendrame at 2025-08-20T18:01:40+02:00 fixup! BB 42716: Disable unwanted about: pages BB 43795: Restore the URL classifier XPCOM components. Move the commit where we disable about:urlclassifier. - - - - - 227d47ef by Pier Angelo Vendrame at 2025-08-20T18:01:41+02:00 fixup! BB 42730: Patch RemoteSettings to use only local dumps as a data source Make explicit that blanking REMOTE_SETTINGS_SERVER_URL is our change. - - - - - 4 changed files: - docshell/base/nsAboutRedirector.cpp - netwerk/url-classifier/UrlClassifierFeatureBase.cpp - netwerk/url-classifier/components.conf - toolkit/modules/AppConstants.sys.mjs Changes: ===================================== docshell/base/nsAboutRedirector.cpp ===================================== @@ -218,6 +218,8 @@ static const RedirEntry kRedirMap[] = { nsIAboutModule::HIDE_FROM_ABOUTABOUT}, #endif #ifndef BASE_BROWSER_VERSION + // We disable safe browsing and the data update mechanisms. So this page + // will be non-functional or at least unreliable. {"url-classifier", "chrome://global/content/aboutUrlClassifier.xhtml", nsIAboutModule::ALLOW_SCRIPT}, #endif ===================================== netwerk/url-classifier/UrlClassifierFeatureBase.cpp ===================================== @@ -80,7 +80,7 @@ void UrlClassifierFeatureBase::InitializePreferences() { nsCOMPtr<nsIUrlClassifierExceptionListService> exceptionListService = do_GetService("@mozilla.org/url-classifier/exception-list-service;1"); - if (!exceptionListService) { + if (NS_WARN_IF(!exceptionListService)) { return; } ===================================== netwerk/url-classifier/components.conf ===================================== @@ -13,4 +13,24 @@ Classes = [ 'constructor': 'mozilla::net::ChannelClassifierService::GetSingleton', 'headers': ['mozilla/net/ChannelClassifierService.h'], }, + { + 'cid': '{b9f4fd03-9d87-4bfd-9958-85a821750ddc}', + 'contract_ids': ['@mozilla.org/url-classifier/exception-list-service;1'], + 'esModule': 'resource://gre/modules/UrlClassifierExceptionListService.sys.mjs', + 'constructor': 'UrlClassifierExceptionListService', + }, + { + 'cid': '{8753A413-3ED6-4A61-A1DC-B31A7E69B796}', + 'interfaces': ['nsIUrlClassifierExceptionListEntry'], + 'headers': ['mozilla/net/UrlClassifierExceptionListEntry.h'], + 'type': 'mozilla::net::UrlClassifierExceptionListEntry', + 'contract_ids': ['@mozilla.org/url-classifier/exception-list-entry;1'], + }, + { + 'cid': '{807535BF-018E-4300-B8D3-4A6405FB9F65}', + 'interfaces': ['nsIUrlClassifierExceptionList'], + 'headers': ['mozilla/net/UrlClassifierExceptionList.h'], + 'type': 'mozilla::net::UrlClassifierExceptionList', + 'contract_ids': ['@mozilla.org/url-classifier/exception-list;1'], + }, ] ===================================== toolkit/modules/AppConstants.sys.mjs ===================================== @@ -210,10 +210,12 @@ export var AppConstants = Object.freeze({ ENABLE_WEBDRIVER: @ENABLE_WEBDRIVER_BOOL@, REMOTE_SETTINGS_SERVER_URL: -#ifdef MOZ_THUNDERBIRD +#if defined(BASE_BROWSER_VERSION) + "", +#elif defined(MOZ_THUNDERBIRD) "https://thunderbird-settings.thunderbird.net/v1", #else - "", + "https://firefox.settings.services.mozilla.com/v1", #endif REMOTE_SETTINGS_VERIFY_SIGNATURE: View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/dcfb18… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/dcfb18… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.2.0esr-15.0-1] 4 commits: fixup! BB 31740: Remove some unnecessary RemoteSettings instances
by Pier Angelo Vendrame (@pierov) 20 Aug '25

20 Aug '25
Pier Angelo Vendrame pushed to branch tor-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 57dfb0ea by Pier Angelo Vendrame at 2025-08-20T17:59:14+02:00 fixup! BB 31740: Remove some unnecessary RemoteSettings instances BB 43795: Restore the URL classifier XPCOM components. We are not really interested in removing them. We're interested in them not calling Mozilla. However, we have a central patch for RemoteSettings, so we do not need to patch the single user. Or, if we did, at least we should patch UrlClassifierExceptionListService where it creates its RemoteSettings instance. - - - - - 61ec52da by Pier Angelo Vendrame at 2025-08-20T17:59:17+02:00 fixup! BB 31740: Remove some unnecessary RemoteSettings instances BB 43795: Restore the URL classifier XPCOM components. Remove this page as part of another commit. This comit should go away automatically at the next rebase. - - - - - dd621fde by Pier Angelo Vendrame at 2025-08-20T17:59:19+02:00 fixup! BB 42716: Disable unwanted about: pages BB 43795: Restore the URL classifier XPCOM components. Move the commit where we disable about:urlclassifier. - - - - - 4390c5a4 by Pier Angelo Vendrame at 2025-08-20T17:59:21+02:00 fixup! BB 42730: Patch RemoteSettings to use only local dumps as a data source Make explicit that blanking REMOTE_SETTINGS_SERVER_URL is our change. - - - - - 4 changed files: - docshell/base/nsAboutRedirector.cpp - netwerk/url-classifier/UrlClassifierFeatureBase.cpp - netwerk/url-classifier/components.conf - toolkit/modules/AppConstants.sys.mjs Changes: ===================================== docshell/base/nsAboutRedirector.cpp ===================================== @@ -223,6 +223,8 @@ static const RedirEntry kRedirMap[] = { nsIAboutModule::HIDE_FROM_ABOUTABOUT}, #endif #ifndef BASE_BROWSER_VERSION + // We disable safe browsing and the data update mechanisms. So this page + // will be non-functional or at least unreliable. {"url-classifier", "chrome://global/content/aboutUrlClassifier.xhtml", nsIAboutModule::ALLOW_SCRIPT}, #endif ===================================== netwerk/url-classifier/UrlClassifierFeatureBase.cpp ===================================== @@ -80,7 +80,7 @@ void UrlClassifierFeatureBase::InitializePreferences() { nsCOMPtr<nsIUrlClassifierExceptionListService> exceptionListService = do_GetService("@mozilla.org/url-classifier/exception-list-service;1"); - if (!exceptionListService) { + if (NS_WARN_IF(!exceptionListService)) { return; } ===================================== netwerk/url-classifier/components.conf ===================================== @@ -13,4 +13,24 @@ Classes = [ 'constructor': 'mozilla::net::ChannelClassifierService::GetSingleton', 'headers': ['mozilla/net/ChannelClassifierService.h'], }, + { + 'cid': '{b9f4fd03-9d87-4bfd-9958-85a821750ddc}', + 'contract_ids': ['@mozilla.org/url-classifier/exception-list-service;1'], + 'esModule': 'resource://gre/modules/UrlClassifierExceptionListService.sys.mjs', + 'constructor': 'UrlClassifierExceptionListService', + }, + { + 'cid': '{8753A413-3ED6-4A61-A1DC-B31A7E69B796}', + 'interfaces': ['nsIUrlClassifierExceptionListEntry'], + 'headers': ['mozilla/net/UrlClassifierExceptionListEntry.h'], + 'type': 'mozilla::net::UrlClassifierExceptionListEntry', + 'contract_ids': ['@mozilla.org/url-classifier/exception-list-entry;1'], + }, + { + 'cid': '{807535BF-018E-4300-B8D3-4A6405FB9F65}', + 'interfaces': ['nsIUrlClassifierExceptionList'], + 'headers': ['mozilla/net/UrlClassifierExceptionList.h'], + 'type': 'mozilla::net::UrlClassifierExceptionList', + 'contract_ids': ['@mozilla.org/url-classifier/exception-list;1'], + }, ] ===================================== toolkit/modules/AppConstants.sys.mjs ===================================== @@ -210,10 +210,12 @@ export var AppConstants = Object.freeze({ ENABLE_WEBDRIVER: @ENABLE_WEBDRIVER_BOOL@, REMOTE_SETTINGS_SERVER_URL: -#ifdef MOZ_THUNDERBIRD +#if defined(BASE_BROWSER_VERSION) + "", +#elif defined(MOZ_THUNDERBIRD) "https://thunderbird-settings.thunderbird.net/v1", #else - "", + "https://firefox.settings.services.mozilla.com/v1", #endif REMOTE_SETTINGS_VERIFY_SIGNATURE: View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/9691ec… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/9691ec… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] Bug 40698: Remove locale from tbb_version.json/version.json
by boklm (@boklm) 20 Aug '25

20 Aug '25
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 7d72dc2c by Nicolas Vigier at 2025-08-20T15:23:18+02:00 Bug 40698: Remove locale from tbb_version.json/version.json - - - - - 1 changed file: - projects/browser/build Changes: ===================================== projects/browser/build ===================================== @@ -262,7 +262,7 @@ do rm -rf defaults # create tbb_version.json (torbrowser) or version.json (mullvadbrowser) # file for tor-browser#25020 and tor-browser-build#41044 - echo '{"version":"[% c("var/torbrowser_version") %]","architecture":"[% c("var/mar_osname") %]","channel":"[% c("var/channel") %]","locale":"en-US"}' > ../[% c("var/version_json") %] + echo '{"version":"[% c("var/torbrowser_version") %]","architecture":"[% c("var/mar_osname") %]","channel":"[% c("var/channel") %]"}' > ../[% c("var/version_json") %] popd done View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/7… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/7… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-140.2.0esr-15.0-1] 2 commits: fixup! BB 40926: Implemented the New Identity feature
by morgan (@morgan) 20 Aug '25

20 Aug '25
morgan pushed to branch mullvad-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Mullvad Browser Commits: 7535773c by Henry Wilkes at 2025-08-20T13:42:42+00:00 fixup! BB 40926: Implemented the New Identity feature TB 44034: Update new identity checkbox string. TB 44040: Use the prompt API for new identity. - - - - - ddc85dbe by Henry Wilkes at 2025-08-20T13:42:47+00:00 fixup! Base Browser strings TB 44034: Update new identity checkbox string. - - - - - 6 changed files: - − browser/components/newidentity/content/newIdentityDialog.css - − browser/components/newidentity/content/newIdentityDialog.js - − browser/components/newidentity/content/newIdentityDialog.xhtml - browser/components/newidentity/content/newidentity.js - browser/components/newidentity/jar.mn - toolkit/locales/en-US/toolkit/global/base-browser.ftl Changes: ===================================== browser/components/newidentity/content/newIdentityDialog.css deleted ===================================== @@ -1,7 +0,0 @@ -/* 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/. */ - -#infoTitle { - font-weight: 600; -} ===================================== browser/components/newidentity/content/newIdentityDialog.js deleted ===================================== @@ -1,17 +0,0 @@ -/* 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/. */ - -document.addEventListener("dialogaccept", () => { - const retvals = window.arguments[0]; - retvals.confirmed = true; - retvals.neverAskAgain = document.getElementById("neverAskAgain").checked; -}); - -document.addEventListener("DOMContentLoaded", () => { - const dialog = document.getElementById("newIdentityDialog"); - - const accept = dialog.getButton("accept"); - document.l10n.setAttributes(accept, "new-identity-dialog-confirm"); - accept.classList.add("danger-button"); -}); ===================================== browser/components/newidentity/content/newIdentityDialog.xhtml deleted ===================================== @@ -1,65 +0,0 @@ -<?xml version="1.0"?> - -<!-- 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/. --> - -<!-- based on resetProfile.xhtml --> - -<?csp default-src chrome: ?> - -<window - id="newIdentityDialogWindow" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - xmlns:html="http://www.w3.org/1999/xhtml" - xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - aria-labelledby="infoTitle" - aria-describedby="infoBody" -> - <dialog id="newIdentityDialog" buttons="accept,cancel" defaultButton="accept"> - <linkset> - <html:link rel="stylesheet" href="chrome://global/skin/global.css" /> - <html:link - rel="stylesheet" - href="chrome://global/content/commonDialog.css" - /> - <html:link - rel="stylesheet" - href="chrome://global/skin/commonDialog.css" - /> - <html:link - rel="stylesheet" - href="chrome://browser/content/newIdentityDialog.css" - /> - - <html:link rel="localization" href="branding/brand.ftl" /> - <html:link rel="localization" href="toolkit/global/base-browser.ftl" /> - </linkset> - - <div xmlns="http://www.w3.org/1999/xhtml"> - <div id="dialogGrid"> - <div class="dialogRow" id="infoRow"> - <div id="iconContainer"> - <xul:image id="infoIcon" /> - </div> - <div id="infoContainer"> - <xul:description - id="infoTitle" - data-l10n-id="new-identity-dialog-title" - /> - <xul:description - id="infoBody" - data-l10n-id="new-identity-dialog-description" - /> - <xul:checkbox - id="neverAskAgain" - data-l10n-id="new-identity-dialog-never-ask-checkbox" - /> - </div> - </div> - </div> - </div> - - <script src="chrome://browser/content/newIdentityDialog.js" /> - </dialog> -</window> ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -513,18 +513,37 @@ ChromeUtils.defineLazyGetter(this, "NewIdentityButton", () => { const prefConfirm = "browser.new_identity.confirm_newnym"; const shouldConfirm = Services.prefs.getBoolPref(prefConfirm, true); if (shouldConfirm) { - const params = { - confirmed: false, - neverAskAgain: false, - }; - await window.gDialogBox.open( - "chrome://browser/content/newIdentityDialog.xhtml", - params + const [titleString, bodyString, checkboxString, restartString] = + await document.l10n.formatValues([ + { id: "new-identity-dialog-title" }, + { id: "new-identity-dialog-description" }, + { id: "restart-warning-dialog-do-not-warn-checkbox" }, + { id: "restart-warning-dialog-restart-button" }, + ]); + const flags = + Services.prompt.BUTTON_POS_0 * + Services.prompt.BUTTON_TITLE_IS_STRING + + Services.prompt.BUTTON_POS_0_DEFAULT + + Services.prompt.BUTTON_DEFAULT_IS_DESTRUCTIVE + + Services.prompt.BUTTON_POS_1 * Services.prompt.BUTTON_TITLE_CANCEL; + const propBag = await Services.prompt.asyncConfirmEx( + window.browsingContext, + Services.prompt.MODAL_TYPE_INTERNAL_WINDOW, + titleString, + bodyString, + flags, + restartString, + null, + null, + checkboxString, + false ); - Services.prefs.setBoolPref(prefConfirm, !params.neverAskAgain); - if (!params.confirmed) { + if (propBag.get("buttonNumClicked") !== 0) { return; } + if (propBag.get("checked")) { + Services.prefs.setBoolPref(prefConfirm, false); + } } const impl = new NewIdentityImpl(); ===================================== browser/components/newidentity/jar.mn ===================================== @@ -1,5 +1,2 @@ browser.jar: content/browser/newidentity.js (content/newidentity.js) - content/browser/newIdentityDialog.xhtml (content/newIdentityDialog.xhtml) - content/browser/newIdentityDialog.css (content/newIdentityDialog.css) - content/browser/newIdentityDialog.js (content/newIdentityDialog.js) ===================================== toolkit/locales/en-US/toolkit/global/base-browser.ftl ===================================== @@ -63,10 +63,6 @@ toolbar-new-identity = new-identity-dialog-title = Reset your identity? new-identity-dialog-description = { -brand-short-name } will close all windows and tabs. All website sessions will be lost. -new-identity-dialog-never-ask-checkbox = - .label = Never ask me again -new-identity-dialog-confirm = - .label = Restart { -brand-short-name } ## New identity: blocked home page notification. View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/8f… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/8f… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-140.2.0esr-15.0-1] 2 commits: fixup! BB 40926: Implemented the New Identity feature
by morgan (@morgan) 20 Aug '25

20 Aug '25
morgan pushed to branch base-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 69cb9a3b by Henry Wilkes at 2025-08-20T13:41:08+00:00 fixup! BB 40926: Implemented the New Identity feature TB 44034: Update new identity checkbox string. TB 44040: Use the prompt API for new identity. - - - - - dcfb181d by Henry Wilkes at 2025-08-20T13:41:09+00:00 fixup! Base Browser strings TB 44034: Update new identity checkbox string. - - - - - 6 changed files: - − browser/components/newidentity/content/newIdentityDialog.css - − browser/components/newidentity/content/newIdentityDialog.js - − browser/components/newidentity/content/newIdentityDialog.xhtml - browser/components/newidentity/content/newidentity.js - browser/components/newidentity/jar.mn - toolkit/locales/en-US/toolkit/global/base-browser.ftl Changes: ===================================== browser/components/newidentity/content/newIdentityDialog.css deleted ===================================== @@ -1,7 +0,0 @@ -/* 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/. */ - -#infoTitle { - font-weight: 600; -} ===================================== browser/components/newidentity/content/newIdentityDialog.js deleted ===================================== @@ -1,17 +0,0 @@ -/* 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/. */ - -document.addEventListener("dialogaccept", () => { - const retvals = window.arguments[0]; - retvals.confirmed = true; - retvals.neverAskAgain = document.getElementById("neverAskAgain").checked; -}); - -document.addEventListener("DOMContentLoaded", () => { - const dialog = document.getElementById("newIdentityDialog"); - - const accept = dialog.getButton("accept"); - document.l10n.setAttributes(accept, "new-identity-dialog-confirm"); - accept.classList.add("danger-button"); -}); ===================================== browser/components/newidentity/content/newIdentityDialog.xhtml deleted ===================================== @@ -1,65 +0,0 @@ -<?xml version="1.0"?> - -<!-- 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/. --> - -<!-- based on resetProfile.xhtml --> - -<?csp default-src chrome: ?> - -<window - id="newIdentityDialogWindow" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - xmlns:html="http://www.w3.org/1999/xhtml" - xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - aria-labelledby="infoTitle" - aria-describedby="infoBody" -> - <dialog id="newIdentityDialog" buttons="accept,cancel" defaultButton="accept"> - <linkset> - <html:link rel="stylesheet" href="chrome://global/skin/global.css" /> - <html:link - rel="stylesheet" - href="chrome://global/content/commonDialog.css" - /> - <html:link - rel="stylesheet" - href="chrome://global/skin/commonDialog.css" - /> - <html:link - rel="stylesheet" - href="chrome://browser/content/newIdentityDialog.css" - /> - - <html:link rel="localization" href="branding/brand.ftl" /> - <html:link rel="localization" href="toolkit/global/base-browser.ftl" /> - </linkset> - - <div xmlns="http://www.w3.org/1999/xhtml"> - <div id="dialogGrid"> - <div class="dialogRow" id="infoRow"> - <div id="iconContainer"> - <xul:image id="infoIcon" /> - </div> - <div id="infoContainer"> - <xul:description - id="infoTitle" - data-l10n-id="new-identity-dialog-title" - /> - <xul:description - id="infoBody" - data-l10n-id="new-identity-dialog-description" - /> - <xul:checkbox - id="neverAskAgain" - data-l10n-id="new-identity-dialog-never-ask-checkbox" - /> - </div> - </div> - </div> - </div> - - <script src="chrome://browser/content/newIdentityDialog.js" /> - </dialog> -</window> ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -513,18 +513,37 @@ ChromeUtils.defineLazyGetter(this, "NewIdentityButton", () => { const prefConfirm = "browser.new_identity.confirm_newnym"; const shouldConfirm = Services.prefs.getBoolPref(prefConfirm, true); if (shouldConfirm) { - const params = { - confirmed: false, - neverAskAgain: false, - }; - await window.gDialogBox.open( - "chrome://browser/content/newIdentityDialog.xhtml", - params + const [titleString, bodyString, checkboxString, restartString] = + await document.l10n.formatValues([ + { id: "new-identity-dialog-title" }, + { id: "new-identity-dialog-description" }, + { id: "restart-warning-dialog-do-not-warn-checkbox" }, + { id: "restart-warning-dialog-restart-button" }, + ]); + const flags = + Services.prompt.BUTTON_POS_0 * + Services.prompt.BUTTON_TITLE_IS_STRING + + Services.prompt.BUTTON_POS_0_DEFAULT + + Services.prompt.BUTTON_DEFAULT_IS_DESTRUCTIVE + + Services.prompt.BUTTON_POS_1 * Services.prompt.BUTTON_TITLE_CANCEL; + const propBag = await Services.prompt.asyncConfirmEx( + window.browsingContext, + Services.prompt.MODAL_TYPE_INTERNAL_WINDOW, + titleString, + bodyString, + flags, + restartString, + null, + null, + checkboxString, + false ); - Services.prefs.setBoolPref(prefConfirm, !params.neverAskAgain); - if (!params.confirmed) { + if (propBag.get("buttonNumClicked") !== 0) { return; } + if (propBag.get("checked")) { + Services.prefs.setBoolPref(prefConfirm, false); + } } const impl = new NewIdentityImpl(); ===================================== browser/components/newidentity/jar.mn ===================================== @@ -1,5 +1,2 @@ browser.jar: content/browser/newidentity.js (content/newidentity.js) - content/browser/newIdentityDialog.xhtml (content/newIdentityDialog.xhtml) - content/browser/newIdentityDialog.css (content/newIdentityDialog.css) - content/browser/newIdentityDialog.js (content/newIdentityDialog.js) ===================================== toolkit/locales/en-US/toolkit/global/base-browser.ftl ===================================== @@ -63,10 +63,6 @@ toolbar-new-identity = new-identity-dialog-title = Reset your identity? new-identity-dialog-description = { -brand-short-name } will close all windows and tabs. All website sessions will be lost. -new-identity-dialog-never-ask-checkbox = - .label = Never ask me again -new-identity-dialog-confirm = - .label = Restart { -brand-short-name } ## New identity: blocked home page notification. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/4891bc… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/4891bc… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-140.2.0esr-15.0-1] 2 commits: fixup! BB 40926: Implemented the New Identity feature
by morgan (@morgan) 20 Aug '25

20 Aug '25
morgan pushed to branch tor-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 68e8f5df by Henry Wilkes at 2025-08-20T13:32:15+00:00 fixup! BB 40926: Implemented the New Identity feature TB 44034: Update new identity checkbox string. TB 44040: Use the prompt API for new identity. - - - - - 9691ec21 by Henry Wilkes at 2025-08-20T13:32:15+00:00 fixup! Base Browser strings TB 44034: Update new identity checkbox string. - - - - - 6 changed files: - − browser/components/newidentity/content/newIdentityDialog.css - − browser/components/newidentity/content/newIdentityDialog.js - − browser/components/newidentity/content/newIdentityDialog.xhtml - browser/components/newidentity/content/newidentity.js - browser/components/newidentity/jar.mn - toolkit/locales/en-US/toolkit/global/base-browser.ftl Changes: ===================================== browser/components/newidentity/content/newIdentityDialog.css deleted ===================================== @@ -1,7 +0,0 @@ -/* 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/. */ - -#infoTitle { - font-weight: 600; -} ===================================== browser/components/newidentity/content/newIdentityDialog.js deleted ===================================== @@ -1,17 +0,0 @@ -/* 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/. */ - -document.addEventListener("dialogaccept", () => { - const retvals = window.arguments[0]; - retvals.confirmed = true; - retvals.neverAskAgain = document.getElementById("neverAskAgain").checked; -}); - -document.addEventListener("DOMContentLoaded", () => { - const dialog = document.getElementById("newIdentityDialog"); - - const accept = dialog.getButton("accept"); - document.l10n.setAttributes(accept, "new-identity-dialog-confirm"); - accept.classList.add("danger-button"); -}); ===================================== browser/components/newidentity/content/newIdentityDialog.xhtml deleted ===================================== @@ -1,65 +0,0 @@ -<?xml version="1.0"?> - -<!-- 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/. --> - -<!-- based on resetProfile.xhtml --> - -<?csp default-src chrome: ?> - -<window - id="newIdentityDialogWindow" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - xmlns:html="http://www.w3.org/1999/xhtml" - xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - aria-labelledby="infoTitle" - aria-describedby="infoBody" -> - <dialog id="newIdentityDialog" buttons="accept,cancel" defaultButton="accept"> - <linkset> - <html:link rel="stylesheet" href="chrome://global/skin/global.css" /> - <html:link - rel="stylesheet" - href="chrome://global/content/commonDialog.css" - /> - <html:link - rel="stylesheet" - href="chrome://global/skin/commonDialog.css" - /> - <html:link - rel="stylesheet" - href="chrome://browser/content/newIdentityDialog.css" - /> - - <html:link rel="localization" href="branding/brand.ftl" /> - <html:link rel="localization" href="toolkit/global/base-browser.ftl" /> - </linkset> - - <div xmlns="http://www.w3.org/1999/xhtml"> - <div id="dialogGrid"> - <div class="dialogRow" id="infoRow"> - <div id="iconContainer"> - <xul:image id="infoIcon" /> - </div> - <div id="infoContainer"> - <xul:description - id="infoTitle" - data-l10n-id="new-identity-dialog-title" - /> - <xul:description - id="infoBody" - data-l10n-id="new-identity-dialog-description" - /> - <xul:checkbox - id="neverAskAgain" - data-l10n-id="new-identity-dialog-never-ask-checkbox" - /> - </div> - </div> - </div> - </div> - - <script src="chrome://browser/content/newIdentityDialog.js" /> - </dialog> -</window> ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -513,18 +513,37 @@ ChromeUtils.defineLazyGetter(this, "NewIdentityButton", () => { const prefConfirm = "browser.new_identity.confirm_newnym"; const shouldConfirm = Services.prefs.getBoolPref(prefConfirm, true); if (shouldConfirm) { - const params = { - confirmed: false, - neverAskAgain: false, - }; - await window.gDialogBox.open( - "chrome://browser/content/newIdentityDialog.xhtml", - params + const [titleString, bodyString, checkboxString, restartString] = + await document.l10n.formatValues([ + { id: "new-identity-dialog-title" }, + { id: "new-identity-dialog-description" }, + { id: "restart-warning-dialog-do-not-warn-checkbox" }, + { id: "restart-warning-dialog-restart-button" }, + ]); + const flags = + Services.prompt.BUTTON_POS_0 * + Services.prompt.BUTTON_TITLE_IS_STRING + + Services.prompt.BUTTON_POS_0_DEFAULT + + Services.prompt.BUTTON_DEFAULT_IS_DESTRUCTIVE + + Services.prompt.BUTTON_POS_1 * Services.prompt.BUTTON_TITLE_CANCEL; + const propBag = await Services.prompt.asyncConfirmEx( + window.browsingContext, + Services.prompt.MODAL_TYPE_INTERNAL_WINDOW, + titleString, + bodyString, + flags, + restartString, + null, + null, + checkboxString, + false ); - Services.prefs.setBoolPref(prefConfirm, !params.neverAskAgain); - if (!params.confirmed) { + if (propBag.get("buttonNumClicked") !== 0) { return; } + if (propBag.get("checked")) { + Services.prefs.setBoolPref(prefConfirm, false); + } } const impl = new NewIdentityImpl(); ===================================== browser/components/newidentity/jar.mn ===================================== @@ -1,5 +1,2 @@ browser.jar: content/browser/newidentity.js (content/newidentity.js) - content/browser/newIdentityDialog.xhtml (content/newIdentityDialog.xhtml) - content/browser/newIdentityDialog.css (content/newIdentityDialog.css) - content/browser/newIdentityDialog.js (content/newIdentityDialog.js) ===================================== toolkit/locales/en-US/toolkit/global/base-browser.ftl ===================================== @@ -63,10 +63,6 @@ toolbar-new-identity = new-identity-dialog-title = Reset your identity? new-identity-dialog-description = { -brand-short-name } will close all windows and tabs. All website sessions will be lost. -new-identity-dialog-never-ask-checkbox = - .label = Never ask me again -new-identity-dialog-confirm = - .label = Restart { -brand-short-name } ## New identity: blocked home page notification. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/b66d9c… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/b66d9c… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] Bug 40697: Remove repackage_browser.sh.
by Pier Angelo Vendrame (@pierov) 20 Aug '25

20 Aug '25
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 427fdb1b by Pier Angelo Vendrame at 2025-08-20T09:20:47+02:00 Bug 40697: Remove repackage_browser.sh. This script is very old, has not been maintained and does not work with the current versions of Tor Browser anymore. Use the scripts in tor-browser.git/tools/torbrowser, instead. - - - - - 1 changed file: - − tools/repackage_browser.sh Changes: ===================================== tools/repackage_browser.sh deleted ===================================== @@ -1,58 +0,0 @@ -#!/bin/bash - -# This script allows you to repackage a Tor Browser bundle using an -# obj-x86_64-pc-linux-gnu directory from a local tor-browser.git build. -# -# This script will download the current Tor Browser version (using -# var/torbrowser_version from rbm config, or an optional second argument) -# and repackage it with the specified obj directory. -# -# The new repackaged bundle can be found in the _repackaged directory. - -set -e - -display_usage() { - echo -e "\\nUsage: $0 firefox_obj_path [torbrowser-version]\\n" -} -if [ $# -lt 1 ] || [ $# -gt 2 ] -then - display_usage - exit 1 -fi - -DIRNAME="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" -OBJ_PATH=$1 -if [ $# -eq 2 ] -then - TOR_VERSION="$2" -else - TOR_VERSION=$("$DIRNAME"/../rbm/rbm showconf tor-browser var/torbrowser_version) -fi -TOR_FILENAME=tor-browser-linux64-${TOR_VERSION}_en-US.tar.xz -TOR_BROWSER_URL=https://dist.torproject.org/torbrowser/"${TOR_VERSION}"/"${TOR_FILENAME}" -TMPDIR="$(mktemp -d)" - -( -cd "$TMPDIR" -wget "$TOR_BROWSER_URL" -wget "$TOR_BROWSER_URL".asc -gpg --no-default-keyring --keyring "$DIRNAME"/../keyring/torbrowser.gpg --verify "${TOR_FILENAME}".asc "${TOR_FILENAME}" - -# From projects/firefox/build: replace firefox binary by the wrapper and strip libraries/binaries -tar xf "${TOR_FILENAME}" -cp -r "${OBJ_PATH}"/dist/firefox . -rm firefox/firefox-bin -mv firefox/firefox firefox/firefox.real -for LIB in firefox/*.so firefox/gtk2/*.so firefox/firefox.real firefox/plugin-container firefox/updater -do - strip "$LIB" -done - -# Overwrite extracted tor-browser with locally built files and move to _repackaged folder -cp -r firefox/* tor-browser_en-US/Browser -rm -rf firefox "${TOR_FILENAME}" -REPACKAGED_DIR="$DIRNAME"/_repackaged/ -mkdir -p "$REPACKAGED_DIR" -mv tor-browser_en-US "$REPACKAGED_DIR"/tor-browser-"$(date '+%Y%m%d%H%M%S')" -rm -rf "$TMPDIR" -) View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-140.2.0esr-15.0-1] fixup! Firefox preference overrides.
by brizental (@brizental) 20 Aug '25

20 Aug '25
brizental pushed to branch mullvad-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Mullvad Browser Commits: 8f29664e by Beatriz Rizental at 2025-08-20T14:39:14+02:00 fixup! Firefox preference overrides. - - - - - 1 changed file: - browser/app/profile/001-base-profile.js Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -282,6 +282,8 @@ pref("privacy.trackingprotection.annotate_channels", false); pref("privacy.trackingprotection.cryptomining.enabled", false); pref("privacy.trackingprotection.fingerprinting.enabled", false); pref("privacy.trackingprotection.socialtracking.enabled", false); +// tor-browser#43986: Explicitly disable bounce tracking protection +pref("privacy.bounceTrackingProtection.mode", 0); pref("privacy.socialtracking.block_cookies.enabled", false); pref("privacy.annotate_channels.strict_list.enabled", false); // tor-browser#43178: for defense-in-depth, avoid remote overrides to FPP. View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/8f2… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/8f2… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-140.2.0esr-15.0-1] fixup! Firefox preference overrides.
by brizental (@brizental) 20 Aug '25

20 Aug '25
brizental pushed to branch base-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser Commits: 4891bcd3 by Beatriz Rizental at 2025-08-20T14:38:13+02:00 fixup! Firefox preference overrides. - - - - - 1 changed file: - browser/app/profile/001-base-profile.js Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -282,6 +282,8 @@ pref("privacy.trackingprotection.annotate_channels", false); pref("privacy.trackingprotection.cryptomining.enabled", false); pref("privacy.trackingprotection.fingerprinting.enabled", false); pref("privacy.trackingprotection.socialtracking.enabled", false); +// tor-browser#43986: Explicitly disable bounce tracking protection +pref("privacy.bounceTrackingProtection.mode", 0); pref("privacy.socialtracking.block_cookies.enabled", false); pref("privacy.annotate_channels.strict_list.enabled", false); // tor-browser#43178: for defense-in-depth, avoid remote overrides to FPP. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/4891bcd… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/4891bcd… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][maint-13.5] Bug 41543: Update Ubuntu version used to run mmdebstrap to 24.04.3
by Pier Angelo Vendrame (@pierov) 20 Aug '25

20 Aug '25
Pier Angelo Vendrame pushed to branch maint-13.5 at The Tor Project / Applications / tor-browser-build Commits: d15a7ca4 by NoisyCoil at 2025-08-20T14:27:02+02:00 Bug 41543: Update Ubuntu version used to run mmdebstrap to 24.04.3 - - - - - 1 changed file: - projects/mmdebstrap-image/config Changes: ===================================== projects/mmdebstrap-image/config ===================================== @@ -7,7 +7,7 @@ container: use_container: 1 var: - ubuntu_version: 22.04.3 + ubuntu_version: 24.04.3 pre: | #!/bin/sh @@ -68,4 +68,4 @@ input_files: name: mmdebstrap - URL: 'https://cdimage.ubuntu.com/ubuntu-base/releases/[% c("var/ubuntu_version") %]/release/ubuntu-base-[% c("var/ubuntu_version") %]-base-amd64.tar.gz' filename: 'container-image_ubuntu-base-[% c("var/ubuntu_version") %]-base-amd64.tar.gz' - sha256sum: ad33b7ae47b75c92c2e2fe21fd4612e15357e67679d8751d6ce892a475be24fe + sha256sum: 6bc2cde3930ad088b3bb46fa45279e96d25bc3810f209850ecbe4722711874f9 View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/d… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/d… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • ...
  • 765
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.