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
Download
Threads by month
  • ----- 2025 -----
  • 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
  • 18612 discussions
[Git][tpo/applications/tor-browser][base-browser-115.8.0esr-13.5-1] 2 commits: fixup! Firefox preference overrides.
by Pier Angelo Vendrame (@pierov) 06 Mar '24

06 Mar '24
Pier Angelo Vendrame pushed to branch base-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: dc518fc9 by Pier Angelo Vendrame at 2024-03-06T19:21:22+01:00 fixup! Firefox preference overrides. MB 80: Allow default browser on Windows for Mullvad Browser - - - - - afac3196 by Pier Angelo Vendrame at 2024-03-06T19:21:32+01:00 fixup! Bug 9173: Change the default Firefox profile directory to be relative. Force `GenerateAppUserModelID` to use the profile directory in portable mode. - - - - - 2 changed files: - browser/app/profile/001-base-profile.js - widget/windows/WinTaskbar.cpp Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -631,11 +631,6 @@ pref("privacy.query_stripping.strip_on_share.enabled", true); pref("dom.text-recognition.enabled", false); #ifdef XP_WIN -// prefs to disable jump-list entries in the taskbar on Windows (see bug #12885) -// this pref changes the app's set AUMID to be dependent on the profile path, rather than -// attempting to read it from the registry; this is necessary so that the file generated -// by the jumplist system can be properly deleted if it is disabled -pref("taskbar.grouping.useprofile", true); pref("browser.taskbar.lists.enabled", false); pref("browser.taskbar.lists.frequent.enabled", false); pref("browser.taskbar.lists.tasks.enabled", false); ===================================== widget/windows/WinTaskbar.cpp ===================================== @@ -209,6 +209,19 @@ bool WinTaskbar::GenerateAppUserModelID(nsAString& aAppUserModelId, // If marked as such in prefs, use a hash of the profile path for the id // instead of the install path hash setup by the installer. bool useProfile = Preferences::GetBool("taskbar.grouping.useprofile", false); + + { + // For portable mode, force the AUMID to be based on the profile directory + // instead of reading it from the registry. + bool isPortable = true; + // Do not even check if taskbar.grouping.useprofile is already true. + if (!useProfile && + NS_SUCCEEDED(gDirServiceProvider->GetIsPortableMode(&isPortable)) && + isPortable) { + useProfile = true; + } + } + if (useProfile) { nsCOMPtr<nsIFile> profileDir; NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR, View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/f3ff42… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/f3ff42… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.8.0esr-13.5-1] 6 commits: Revert "MB 87: Disable the default browser box on Windows and Linux"
by Pier Angelo Vendrame (@pierov) 06 Mar '24

06 Mar '24
Pier Angelo Vendrame pushed to branch mullvad-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser Commits: 8893383e by Pier Angelo Vendrame at 2024-03-06T19:18:51+01:00 Revert &quot;MB 87: Disable the default browser box on Windows and Linux&quot; This reverts commit bd64d5f09ec5cd2bab9db6fdc0ff679107b7fc4a. We are going to disable the default browser whenever we are in portable mode instead. - - - - - 757aaf94 by Pier Angelo Vendrame at 2024-03-06T19:18:53+01:00 fixup! Firefox preference overrides. MB 80: Allow default browser on Windows for Mullvad Browser - - - - - 51bf1800 by Pier Angelo Vendrame at 2024-03-06T19:18:54+01:00 fixup! Bug 9173: Change the default Firefox profile directory to be relative. Force `GenerateAppUserModelID` to use the profile directory in portable mode. - - - - - 722401c5 by Pier Angelo Vendrame at 2024-03-06T19:18:55+01:00 fixup! MB 38: Mullvad Browser configuration MB 80: Enable the default browser agent - - - - - 5eeb2ea8 by Pier Angelo Vendrame at 2024-03-06T19:18:55+01:00 MB 80: Enable Mullvad Browser as a default browser - - - - - 68744b70 by Pier Angelo Vendrame at 2024-03-06T19:18:56+01:00 fixup! MB 80: Enable Mullvad Browser as a default browser Debugging faciliites. - - - - - 14 changed files: - browser/app/profile/001-base-profile.js - browser/components/preferences/main.js - browser/components/shell/ShellService.sys.mjs - browser/components/shell/WindowsDefaultBrowser.cpp - browser/components/shell/nsWindowsShellService.cpp - browser/installer/package-manifest.in - mozconfig-windows-x86_64 - + other-licenses/nsis/Contrib/ApplicationID/Makefile - + other-licenses/nsis/Contrib/CityHash/Makefile - toolkit/mozapps/defaultagent/EventLog.h - toolkit/mozapps/defaultagent/SetDefaultBrowser.cpp - toolkit/mozapps/defaultagent/moz.build - widget/windows/WinTaskbar.cpp - widget/windows/moz.build Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -629,11 +629,6 @@ pref("privacy.query_stripping.strip_on_share.enabled", true); pref("dom.text-recognition.enabled", false); #ifdef XP_WIN -// prefs to disable jump-list entries in the taskbar on Windows (see bug #12885) -// this pref changes the app's set AUMID to be dependent on the profile path, rather than -// attempting to read it from the registry; this is necessary so that the file generated -// by the jumplist system can be properly deleted if it is disabled -pref("taskbar.grouping.useprofile", true); pref("browser.taskbar.lists.enabled", false); pref("browser.taskbar.lists.frequent.enabled", false); pref("browser.taskbar.lists.tasks.enabled", false); ===================================== browser/components/preferences/main.js ===================================== @@ -1743,10 +1743,11 @@ var gMainPane = { let shellSvc = getShellService(); let defaultBrowserBox = document.getElementById("defaultBrowserBox"); let isInFlatpak = gGIOService?.isRunningUnderFlatpak; + const xreDirProvider = Cc[ + "@mozilla.org/xre/directory-provider;1" + ].getService(Ci.nsIXREDirProvider); // Flatpak does not support setting nor detection of default browser - // privacy-browser#87: Let's keep the default browser box only on macOS - // for now. - if (!shellSvc || isInFlatpak || Services.appinfo.OS !== "Darwin") { + if (!shellSvc || isInFlatpak || xreDirProvider.isPortableMode) { defaultBrowserBox.hidden = true; return; } ===================================== browser/components/shell/ShellService.sys.mjs ===================================== @@ -64,7 +64,8 @@ let ShellServiceInternal = { }, isDefaultBrowserOptOut() { - if (AppConstants.platform == "win") { + // Mozilla is also going to disable this, see Bug 1274517 and Bug 1272162. + if (AppConstants.platform == "win" && !AppConstants.BASE_BROWSER_VERSION) { let optOutValue = lazy.WindowsRegistry.readRegKey( Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER, "Software\\Mozilla\\Firefox", @@ -295,7 +296,7 @@ let ShellServiceInternal = { ) { if (this._shouldSetDefaultPDFHandler()) { lazy.log.info("Setting Firefox as default PDF handler"); - exeArgs.push(".pdf", "FirefoxPDF"); + exeArgs.push(".pdf", "MullvadBrowserPDF"); } else { lazy.log.info("Not setting Firefox as default PDF handler"); } @@ -338,7 +339,7 @@ let ShellServiceInternal = { "set-default-extension-handlers-user-choice", aumi, ".pdf", - "FirefoxPDF", + "MullvadBrowserPDF", ], }); telemetryResult = "ErrOther"; ===================================== browser/components/shell/WindowsDefaultBrowser.cpp ===================================== @@ -31,7 +31,7 @@ #include <wchar.h> #include <windows.h> -#define APP_REG_NAME_BASE L"Firefox-" +#define APP_REG_NAME_BASE L"MullvadBrowser-" static bool IsWindowsLogonConnected() { WCHAR userName[UNLEN + 1]; ===================================== browser/components/shell/nsWindowsShellService.cpp ===================================== @@ -310,9 +310,11 @@ nsWindowsShellService::CheckAllProgIDsExist(bool* aResult) { return NS_OK; } *aResult = - CheckProgIDExists(FormatProgID(L"FirefoxURL", aumid.get()).get()) && - CheckProgIDExists(FormatProgID(L"FirefoxHTML", aumid.get()).get()) && - CheckProgIDExists(FormatProgID(L"FirefoxPDF", aumid.get()).get()); + CheckProgIDExists( + FormatProgID(L"MullvadBrowserURL", aumid.get()).get()) && + CheckProgIDExists( + FormatProgID(L"MullvadBrowserHTML", aumid.get()).get()) && + CheckProgIDExists(FormatProgID(L"MullvadBrowserPDF", aumid.get()).get()); return NS_OK; } ===================================== browser/installer/package-manifest.in ===================================== @@ -63,8 +63,8 @@ @RESPATH@/updater.ini #endif #ifdef MOZ_DEFAULT_BROWSER_AGENT -@RESPATH@/defaultagent.ini -@RESPATH@/defaultagent_localized.ini +; @RESPATH@/defaultagent.ini +; @RESPATH@/defaultagent_localized.ini #endif #if defined(MOZ_UPDATE_AGENT) || defined(MOZ_DEFAULT_BROWSER_AGENT) @RESPATH@/locale.ini ===================================== mozconfig-windows-x86_64 ===================================== @@ -8,7 +8,6 @@ ac_add_options --enable-strip # Bits is Background Intelligent Transfer Service ac_add_options --disable-bits-download ac_add_options --disable-maintenance-service -ac_add_options --disable-default-browser-agent # See bug #13379 ac_add_options --enable-nss-mar ===================================== other-licenses/nsis/Contrib/ApplicationID/Makefile ===================================== @@ -0,0 +1,14 @@ +CXXFLAGS=-Icityhash -DWIN32 -DNDEBUG -D_WINDOWS -D_USRDLL -DCITYHASH_EXPORTS -DUNICODE +SRCS=Set.cpp +OBJS=$(subst .cpp,.o,$(SRCS)) +LDFLAGS=-lole32 -lshlwapi -shared -Wl,--no-insert-timestamp +PLUGIN=ApplicationID.dll + +all: $(PLUGIN) + +$(PLUGIN): $(OBJS) + $(CXX) $(OBJS) $(LDFLAGS) -o $@ + llvm-strip $@ + +clean: + $(RM) $(OBJS) $(PLUGIN) ===================================== other-licenses/nsis/Contrib/CityHash/Makefile ===================================== @@ -0,0 +1,14 @@ +CXXFLAGS=-Icityhash -DWIN32 -DNDEBUG -D_WINDOWS -D_USRDLL -DCITYHASH_EXPORTS -DUNICODE +SRCS=CityHash.cpp cityhash/city.cpp +OBJS=$(subst .cpp,.o,$(SRCS)) +LDFLAGS=-shared -Wl,--no-insert-timestamp +PLUGIN=CityHash.dll + +all: $(PLUGIN) + +$(PLUGIN): $(OBJS) + $(CXX) $(OBJS) $(LDFLAGS) -o $@ + llvm-strip $@ + +clean: + $(RM) $(OBJS) $(PLUGIN) ===================================== toolkit/mozapps/defaultagent/EventLog.h ===================================== @@ -7,7 +7,7 @@ #ifndef __DEFAULT_BROWSER_AGENT_EVENT_LOG_H__ #define __DEFAULT_BROWSER_AGENT_EVENT_LOG_H__ -#include "mozilla/Types.h" +#include <cwchar> MOZ_BEGIN_EXTERN_C @@ -15,10 +15,21 @@ extern MOZ_EXPORT const wchar_t* gWinEventLogSourceName; MOZ_END_EXTERN_C -#include "mozilla/WindowsEventLog.h" - -#define LOG_ERROR(hr) MOZ_WIN_EVENT_LOG_ERROR(gWinEventLogSourceName, hr) -#define LOG_ERROR_MESSAGE(format, ...) \ - MOZ_WIN_EVENT_LOG_ERROR_MESSAGE(gWinEventLogSourceName, format, __VA_ARGS__) +#ifdef LOG_ERRORS_FILE +extern FILE* gLogFile; +# define LOG_ERROR(hr) \ + if (gLogFile) { \ + fprintf(gLogFile, "Error in %s:%d: 0x%X\r\n", __FILE__, __LINE__, \ + (unsigned int)hr); \ + } +# define LOG_ERROR_MESSAGE(format, ...) \ + if (gLogFile) { \ + fwprintf(gLogFile, format __VA_OPT__(, ) __VA_ARGS__); \ + fputs("\r\n", gLogFile); \ + } +#else +# define LOG_ERROR(hr) +# define LOG_ERROR_MESSAGE(format, ...) +#endif #endif // __DEFAULT_BROWSER_AGENT_EVENT_LOG_H__ ===================================== toolkit/mozapps/defaultagent/SetDefaultBrowser.cpp ===================================== @@ -224,19 +224,19 @@ static bool VerifyUserDefault(const wchar_t* aExt, const wchar_t* aProgID) { HRESULT SetDefaultBrowserUserChoice( const wchar_t* aAumi, const wchar_t* const* aExtraFileExtensions) { - auto urlProgID = FormatProgID(L"FirefoxURL", aAumi); + auto urlProgID = FormatProgID(L"MullvadBrowserURL", aAumi); if (!CheckProgIDExists(urlProgID.get())) { LOG_ERROR_MESSAGE(L"ProgID %s not found", urlProgID.get()); return MOZ_E_NO_PROGID; } - auto htmlProgID = FormatProgID(L"FirefoxHTML", aAumi); + auto htmlProgID = FormatProgID(L"MullvadBrowserHTML", aAumi); if (!CheckProgIDExists(htmlProgID.get())) { LOG_ERROR_MESSAGE(L"ProgID %s not found", htmlProgID.get()); return MOZ_E_NO_PROGID; } - auto pdfProgID = FormatProgID(L"FirefoxPDF", aAumi); + auto pdfProgID = FormatProgID(L"MullvadBrowserPDF", aAumi); if (!CheckProgIDExists(pdfProgID.get())) { LOG_ERROR_MESSAGE(L"ProgID %s not found", pdfProgID.get()); return MOZ_E_NO_PROGID; @@ -363,3 +363,41 @@ HRESULT SetDefaultExtensionHandlersUserChoiceImpl( return S_OK; } + +#ifdef LOG_ERRORS_FILE +FILE* gLogFile; +#endif + +// Simplified version of wmain that uses only this file from main.cpp. +int wmain(int argc, wchar_t** argv) { + if (argc < 3 || !argv[1] || !argv[2]) { + return E_INVALIDARG; + } + +#ifdef LOG_ERRORS_FILE + std::unique_ptr<FILE, decltype(&fclose)> logFile(fopen(LOG_ERRORS_FILE, "a+"), + &fclose); + gLogFile = logFile.get(); +#endif + + HRESULT hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED); + if (FAILED(hr)) { + LOG_ERROR(hr); + return hr; + } + const struct ComUninitializer { + ~ComUninitializer() { CoUninitialize(); } + } kCUi; + + if (!wcscmp(argv[1], L"set-default-browser-user-choice")) { + // `argv` is itself null-terminated, so we can safely pass the tail of the + // array here. + return SetDefaultBrowserUserChoice(argv[2], &argv[3]); + } else if (!wcscmp(argv[1], L"set-default-extension-handlers-user-choice")) { + // `argv` is itself null-terminated, so we can safely pass the tail of the + // array here. + return SetDefaultExtensionHandlersUserChoice(argv[2], &argv[3]); + } else { + return E_INVALIDARG; + } +} ===================================== toolkit/mozapps/defaultagent/moz.build ===================================== @@ -6,51 +6,23 @@ Program("default-browser-agent") -SPHINX_TREES["default-browser-agent"] = "docs" - -DIRS += ["rust"] - UNIFIED_SOURCES += [ "/mfbt/Poison.cpp", "/mfbt/Unused.cpp", - "Cache.cpp", - "common.cpp", - "DefaultBrowser.cpp", - "DefaultPDF.cpp", - "EventLog.cpp", - "main.cpp", - "Notification.cpp", - "Policy.cpp", - "Registry.cpp", - "RemoteSettings.cpp", - "ScheduledTask.cpp", "SetDefaultBrowser.cpp", - "Telemetry.cpp", - "UtfConvert.cpp", ] SOURCES += [ "/browser/components/shell/WindowsDefaultBrowser.cpp", "/browser/components/shell/WindowsUserChoice.cpp", "/other-licenses/nsis/Contrib/CityHash/cityhash/city.cpp", - "/third_party/WinToast/wintoastlib.cpp", "/toolkit/mozapps/update/common/readstrings.cpp", ] -# Suppress warnings from third-party code. -SOURCES["/third_party/WinToast/wintoastlib.cpp"].flags += ["-Wno-implicit-fallthrough"] - -USE_LIBS += [ - "defaultagent-static", - "jsoncpp", -] - LOCAL_INCLUDES += [ "/browser/components/shell/", "/mfbt/", "/other-licenses/nsis/Contrib/CityHash/cityhash", - "/third_party/WinToast", - "/toolkit/components/jsoncpp/include", "/toolkit/mozapps/update/common", "/xpcom/build", ] @@ -58,20 +30,12 @@ LOCAL_INCLUDES += [ OS_LIBS += [ "advapi32", "bcrypt", - "comsupp", "crypt32", - "kernel32", "netapi32", "ole32", - "oleaut32", - "rpcrt4", "shell32", "shlwapi", - "taskschd", - "userenv", - "wininet", - "ws2_32", - "ntdll", + "uuid", ] DEFINES["NS_NO_XPCOM"] = True @@ -96,18 +60,3 @@ if CONFIG["CC_TYPE"] == "clang-cl": WIN32_EXE_LDFLAGS += ["-ENTRY:wmainCRTStartup"] else: WIN32_EXE_LDFLAGS += ["-municode"] - -GENERATED_FILES += ["defaultagent.ini"] -defaultagentini = GENERATED_FILES["defaultagent.ini"] -defaultagentini.script = "/browser/locales/generate_ini.py" -defaultagentini.inputs = [ - "defaultagent.ini", - "defaultagent_append.ini", -] -FINAL_TARGET_FILES += ["!defaultagent.ini"] - -if CONFIG["ENABLE_TESTS"]: - DIRS += ["tests/gtest"] - -with Files("**"): - BUG_COMPONENT = ("Toolkit", "Default Browser Agent") ===================================== widget/windows/WinTaskbar.cpp ===================================== @@ -209,6 +209,19 @@ bool WinTaskbar::GenerateAppUserModelID(nsAString& aAppUserModelId, // If marked as such in prefs, use a hash of the profile path for the id // instead of the install path hash setup by the installer. bool useProfile = Preferences::GetBool("taskbar.grouping.useprofile", false); + + { + // For portable mode, force the AUMID to be based on the profile directory + // instead of reading it from the registry. + bool isPortable = true; + // Do not even check if taskbar.grouping.useprofile is already true. + if (!useProfile && + NS_SUCCEEDED(gDirServiceProvider->GetIsPortableMode(&isPortable)) && + isPortable) { + useProfile = true; + } + } + if (useProfile) { nsCOMPtr<nsIFile> profileDir; NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR, @@ -237,7 +250,7 @@ bool WinTaskbar::GenerateAppUserModelID(nsAString& aAppUserModelId, nsCString appName; if (appInfo && NS_SUCCEEDED(appInfo->GetName(appName))) { nsAutoString regKey; - regKey.AssignLiteral("Software\\Mozilla\\"); + regKey.AssignLiteral("Software\\" MOZ_APP_VENDOR "\\"); AppendASCIItoUTF16(appName, regKey); regKey.AppendLiteral("\\TaskBarIDs"); ===================================== widget/windows/moz.build ===================================== @@ -188,6 +188,7 @@ DEFINES["MOZ_UNICODE"] = True DEFINES["MOZ_APP_NAME"] = '"%s"' % CONFIG["MOZ_APP_NAME"] # Turn `firefox` into `Firefox`. DEFINES["MOZ_TOAST_APP_NAME"] = '"%s"' % CONFIG["MOZ_APP_NAME"].title() +DEFINES["MOZ_APP_VENDOR"] = '"%s"' % CONFIG["MOZ_APP_VENDOR"] for var in ("MOZ_ENABLE_D3D10_LAYER",): if CONFIG[var]: View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/bb… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/bb… 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 41089: Register file types in the Mullvad Browser installer.
by Pier Angelo Vendrame (@pierov) 06 Mar '24

06 Mar '24
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: e764744f by Pier Angelo Vendrame at 2024-03-04T11:24:56+01:00 Bug 41089: Register file types in the Mullvad Browser installer. This step is needed to set Mullvad Browser as a default browser. Also, we use the same way as Firefox to identify different installs uniquely based on the hash of their installation directory. Therefore, we need to build the CityHash NSIS plugin on Firefox and consume it in browser. We do the same for the ApplicationID plugin. - - - - - 7 changed files: - projects/browser/build - projects/browser/config - projects/browser/windows-installer/browser-install.nsi - projects/browser/windows-installer/defines.nsh.in - projects/browser/windows-installer/postupdate.nsi - projects/browser/windows-installer/registry.nsh - projects/firefox/build Changes: ===================================== projects/browser/build ===================================== @@ -320,6 +320,7 @@ done [% IF c('var/mullvad-browser') -%] pushd $distdir/windows-installer + tar -xf $rootdir/[% c('input_files_by_name/firefox') %]/nsis-plugins.tar.[% c("compress_tar") %] # While Firefox re-uses the uninstaller for this, we cannot do it, because # we write the uninstaller from the installer. # Instead, we need to write an updated postupdate.exe also when updating. ===================================== projects/browser/config ===================================== @@ -124,6 +124,7 @@ input_files: - filename: 'defines.nsh' content: '[% INCLUDE "windows-installer/defines.nsh.in" %]' refresh_input: 1 + enable: '[% c("var/windows") %]' - filename: pe_checksum_fix.py enable: '[% c("var/windows") %]' # To generate a new keystore, see how-to-generate-keystore.txt ===================================== projects/browser/windows-installer/browser-install.nsi ===================================== @@ -1,5 +1,7 @@ + !addplugindir nsis-plugins !include "common.nsh" !include "registry.nsh" + !include "Win\COM.nsh" ;-------------------------------- OutFile "browser-install.exe" @@ -219,7 +221,7 @@ Section "Browser" SecBrowser ; Write the uninstaller WriteUninstaller $INSTDIR\uninstall.exe - !insertmacro UPDATE_REGISTRY + Call UpdateRegistry CreateShortCut "$SMPROGRAMS\${DISPLAY_NAME}.lnk" "$INSTDIR\${EXE_NAME}" ${If} $createDesktopShortcut == "true" @@ -238,24 +240,57 @@ FunctionEnd ;-------------------------------- ; Uninstaller + +Function un.GetPathFromString + !insertmacro GetPathFromStringImp +FunctionEnd + Section "Uninstall" + ; Currently, the uninstaller is written by the installer, only in install + ; mode, and we do not have any way to update it. + ; However, we keep postupdate.exe updated, so we can use that instead. + ExecWait '"$INSTDIR\postupdate.exe" /Uninstall' $0 + RMDir /r "$INSTDIR" DeleteRegKey HKCU "${UNINST_KEY}" - StrCpy $0 "" - ShellLink::GetShortCutTarget "$SMPROGRAMS\${DISPLAY_NAME}.lnk" - Pop $0 - ${If} $0 == "$INSTDIR\${EXE_NAME}" - Delete "$SMPROGRAMS\${DISPLAY_NAME}.lnk" - ${EndIf} + StrCpy $2 "$SMPROGRAMS\${DISPLAY_NAME}.lnk" + StrCpy $3 "" + ShellLink::GetShortCutTarget "$2" + Pop $3 + ${If} $3 == "$INSTDIR\${EXE_NAME}" + ; https://stackoverflow.com/questions/42816091/nsis-remove-pinned-icon-from-t… + !insertmacro ComHlpr_CreateInProcInstance ${CLSID_StartMenuPin} ${IID_IStartMenuPinnedList} r0 "" + ${If} $0 P<> 0 + System::Call 'SHELL32::SHCreateItemFromParsingName(ws, p0, g "${IID_IShellItem}", *p0r1)' "$2" + ${If} $1 P<> 0 + ${IStartMenuPinnedList::RemoveFromList} $0 '(r1)' + ${IUnknown::Release} $1 "" + ${EndIf} + ${IUnknown::Release} $0 "" + ${EndIf} - StrCpy $0 "" - ShellLink::GetShortCutTarget "$DESKTOP\${DISPLAY_NAME}.lnk" - Pop $0 - ${If} $0 == "$INSTDIR\${EXE_NAME}" - Delete "$DESKTOP\${DISPLAY_NAME}.lnk" + Delete "$2" ${EndIf} + FindFirst $1 $2 "$DESKTOP\*.lnk" + loop: + IfErrors end + StrCpy $0 "" + ShellLink::GetShortCutTarget "$DESKTOP\$2" + ; Do not pop, and pass the value over + Call un.GetPathFromString + Pop $0 + ${If} $0 == "$INSTDIR\${EXE_NAME}" + Delete "$DESKTOP\$2" + ${EndIf} + FindNext $1 $2 + goto loop + end: + FindClose $1 + + ${RefreshShellIcons} + ; TODO: Optionally remove profiles. ; This operation is not trivial, because it involes finding our installation ; hash, its associated default profile and making sure it is not shared with ===================================== projects/browser/windows-installer/defines.nsh.in ===================================== @@ -5,13 +5,7 @@ ; Project and display name !define PROJECT_NAME "[% c('var/Project_Name') %]" -[% IF c("var/channel") == "release" -%] - !define DISPLAY_NAME "[% c('var/Project_Name') %]" -[% ELSIF c("var/testbuild") -%] - !define DISPLAY_NAME "[% c('var/Project_Name') %] Testbuild" -[% ELSE -%] - !define DISPLAY_NAME "[% c('var/Project_Name_Channel') %]" -[% END -%] + !define DISPLAY_NAME "[% c('var/display_name') %]" !define NAME_NO_SPACES "[% c('var/ProjectName') %]" !define UPDATE_CHANNEL "[% c('var/channel') FILTER ucfirst %]" ===================================== projects/browser/windows-installer/postupdate.nsi ===================================== @@ -1,3 +1,4 @@ +!addplugindir nsis-plugins !include "FileFunc.nsh" !include "LogicLib.nsh" @@ -9,9 +10,14 @@ Icon "${ICON_NAME}" RequestExecutionLevel user Function .onInit + StrCpy $INSTDIR $EXEDIR + ${GetOptions} $CMDLINE "/Visible" $0 IfErrors 0 +2 SetSilent silent + ${GetOptions} $CMDLINE "/Uninstall" $0 + IfErrors +2 0 + Call Uninstall FunctionEnd Section PostUpdate "PostUpdate" @@ -19,10 +25,14 @@ Section PostUpdate "PostUpdate" IfFileExists $EXEDIR\system-install 0 +2 StrCpy $0 "true" ${If} $0 == "true" - StrCpy $INSTDIR $EXEDIR - !insertmacro UPDATE_REGISTRY + Call UpdateRegistry RMDir /r /REBOOTOK $EXEDIR\tobedeleted ${Else} RMDir /r $EXEDIR\tobedeleted ${EndIf} SectionEnd + +Function Uninstall + Call ClearRegistry + Quit +FunctionEnd ===================================== projects/browser/windows-installer/registry.nsh ===================================== @@ -1,6 +1,39 @@ +; Utilities to update the registry values in installs. +; Based on Firefox's NSIS scripts. +; +; 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/. + !define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME_NO_SPACES}${UPDATE_CHANNEL}" -!macro UPDATE_REGISTRY +; The only "public" functions of this file are UpdateRegistry and ClearRegistry. + +var aumid + +; Compute the AUMID we will use for our links. +; We use the same strategy as Firefox: we hash the path of the installation +; directory with CityHash64. +; See InitHashAppModelId in toolkit/mozapps/installer/windows/nsis/common.nsh. +; While we could differentiate between channels (we force one install for each +; channel), following Firefox has the advantage that we have to adapt/rework +; less stuff. +Function ComputeAumid + StrCpy $0 $INSTDIR + ; NSIS command will not convert from short form to the long one. + ; So, this is the way they suggest to get the long name in their docs. + System::Call 'kernel32::GetLongPathName(t r0, t .r1, i ${NSIS_MAX_STRLEN}) i .r2' + ${If} $2 != "error" + CityHash::GetCityHash64 $1 + Pop $aumid + ${Else} + StrCpy $aumid "error" + ${EndIf} +FunctionEnd + +; Set the installation details. +; See https://nsis.sourceforge.io/Add_uninstall_information_to_Add/Remove_Programs. +Function SetUninstallData WriteRegStr HKCU "${UNINST_KEY}" "DisplayName" "${DISPLAY_NAME}" WriteRegStr HKCU "${UNINST_KEY}" "DisplayIcon" "$\"$INSTDIR\${EXE_NAME}$\"" WriteRegStr HKCU "${UNINST_KEY}" "DisplayVersion" "${VERSION}" @@ -16,4 +49,332 @@ WriteRegStr HKCU "${UNINST_KEY}" "URLInfoAbout" "${URL_ABOUT}" WriteRegStr HKCU "${UNINST_KEY}" "URLUpdateInfo" "${URL_UPDATE}" WriteRegStr HKCU "${UNINST_KEY}" "HelpLink" "${URL_HELP}" +FunctionEnd + +; Register a certain class in the form $browserName$className-$aumid. +; The classes registered by Firefox are URL, HTML and PDF. +; The default browser agent checks them before registering anything. +; See SetDefaultBrowserUserChoice in +; toolkit/mozapps/defaultagent/SetDefaultBrowser.cpp, FormatProgID and +; CheckProgIDExists in browser/components/shell/WindowsUserChoice.cpp. +; See also AddHandlerValues in +; toolkit/mozapps/installer/windows/nsis/common.nsh. +Function RegisterClass + ; Based on Firefox's AddHandlerValues + Pop $3 ; Is this a protocol? + Pop $2 ; Icon index + Pop $1 ; Description + Pop $0 ; Class name + + StrCpy $R0 "${NAME_NO_SPACES}$0-$aumid" ; Expanded class name + StrCpy $R1 "${PROJECT_NAME} $1" ; Description with project name + StrCpy $R2 "$INSTDIR\${EXE_NAME}" ; Full path to the main executable + StrCpy $R3 "Software\Classes\$R0" ; Registry key to update + + WriteRegStr HKCU $R3 "" "$R1" + WriteRegStr HKCU $R3 "FriendlyTypeName" "$R1" + ${If} $3 == "true" + WriteRegStr HKCU $R3 "URL Protocol" "" + ${EndIf} + ; Firefox sets EditFlags only when empty + ReadRegDWORD $R4 HKCU $R3 "EditFlags" + ${If} $R4 == "" + WriteRegDWORD HKCU $R3 "EditFlags" 0x00000002 + ${EndIf} + WriteRegStr HKCU "$R3\DefaultIcon" "" "$R2,$2" + WriteRegStr HKCU "$R3\shell" "" "open" + WriteRegStr HKCU "$R3\shell\open\command" "" '"$R2" -osint -url "%1"' +FunctionEnd + +; Register all the classes we need to handle. +; See RegisterClass. +Function RegisterClasses + Push "URL" + Push "URL" + Push 1 + Push true + Call RegisterClass + + Push "HTML" + Push "HTML Document" + Push 1 + Push false + Call RegisterClass + + Push "PDF" + Push "PDF Document" + Push 5 + Push false + Call RegisterClass +FunctionEnd + +; Register the start menu entry. +; Microsoft's documentation says this is deprecated after Windows 8, however +; these entries are still visible in the settings application. +; See the SetStartMenuInternet macro in +; browser/installer/windows/nsis/shared.nsh. +; We do not add entries for features we do not support, such as the safe mode. +; Also, the functionality to hide/show shortcuts should not apply to Windows 10, +; so we did not implement that as well. +Function RegisterStartMenu + StrCpy $0 "Software\Clients\StartMenuInternet\${NAME_NO_SPACES}-$aumid" + StrCpy $1 "$INSTDIR\${EXE_NAME}" + StrCpy $2 "${NAME_NO_SPACES}-$aumid" + StrCpy $3 "${NAME_NO_SPACES}URL-$aumid" + StrCpy $4 "${NAME_NO_SPACES}HTML-$aumid" + StrCpy $5 "${NAME_NO_SPACES}PDF-$aumid" + + WriteRegStr HKCU "$0" "" "${DISPLAY_NAME}" + WriteRegStr HKCU "$0\DefaultItcon" "" "$1,0" + WriteRegStr HKCU "$0\shell\open\command" "" '"$1"' + WriteRegStr HKCU "$0\Capabilities\StartMenu" "StartMenuInternet" "$2" + ; Same as Firefox, see SetStartMenuInternet + ; URLs + WriteRegStr HKCU "$0\Capabilities\URLAssociations" "http" "$3" + WriteRegStr HKCU "$0\Capabilities\URLAssociations" "https" "$3" + ; mailto is currently unsupported, but we could enable it here, if needed. + ; WriteRegStr HKCU "$0\Capabilities\URLAssociations" "mailto" "$3" + ; No need to uninstall FTP here, since we had never installed it. + ; HTML + aumid + WriteRegStr HKCU "$0\Capabilities\FileAssociations" ".htm" "$4" + WriteRegStr HKCU "$0\Capabilities\FileAssociations" ".html" "$4" + WriteRegStr HKCU "$0\Capabilities\FileAssociations" ".shtml" "$4" + WriteRegStr HKCU "$0\Capabilities\FileAssociations" ".xht" "$4" + WriteRegStr HKCU "$0\Capabilities\FileAssociations" ".xhtml" "$4" + WriteRegStr HKCU "$0\Capabilities\FileAssociations" ".svg" "$4" + WriteRegStr HKCU "$0\Capabilities\FileAssociations" ".webp" "$4" + WriteRegStr HKCU "$0\Capabilities\FileAssociations" ".avif" "$4" + ; PDF + aumid + WriteRegStr HKCU "$0\Capabilities\FileAssociations" ".pdf" "$5" + + WriteRegStr HKCU "Software\RegisteredApplications" "$2" "$0\Capabilities" +FunctionEnd + +; Copied from toolkit/mozapps/installer/windows/nsis/common.nsh. +; Implemented as a macro first so that we can use it both in the installer (to +; update the registry) and in the uninstaller (to check which links we have to +; remove). The macro is then expanded in an installer function, and in an +; uninstaller function, to avoid multiple copies of the same code. +!macro GetPathFromStringImp + Exch $R9 + Push $R8 + Push $R7 + + StrCpy $R7 0 ; Set the counter to 0. + + ; Handle quoted paths with arguments. + StrCpy $R8 $R9 1 ; Copy the first char. + StrCmp $R8 '"' +2 +1 ; Is it a "? + StrCmp $R8 "'" +1 +9 ; Is it a '? + StrCpy $R9 $R9 "" 1 ; Remove the first char. + IntOp $R7 $R7 + 1 ; Increment the counter. + StrCpy $R8 $R9 1 $R7 ; Starting from the counter copy the next char. + StrCmp $R8 "" end +1 ; Are there no more chars? + StrCmp $R8 '"' +2 +1 ; Is it a " char? + StrCmp $R8 "'" +1 -4 ; Is it a ' char? + StrCpy $R9 $R9 $R7 ; Copy chars up to the counter. + GoTo end + + ; Handle DefaultIcon paths. DefaultIcon paths are not quoted and end with + ; a , and a number. + IntOp $R7 $R7 - 1 ; Decrement the counter. + StrCpy $R8 $R9 1 $R7 ; Copy one char from the end minus the counter. + StrCmp $R8 '' +4 +1 ; Are there no more chars? + StrCmp $R8 ',' +1 -3 ; Is it a , char? + StrCpy $R9 $R9 $R7 ; Copy chars up to the end minus the counter. + GoTo end + + ; Handle unquoted paths with arguments. An unquoted path with arguments + ; must be an 8dot3 path. + StrCpy $R7 -1 ; Set the counter to -1 so it will start at 0. + IntOp $R7 $R7 + 1 ; Increment the counter. + StrCpy $R8 $R9 1 $R7 ; Starting from the counter copy the next char. + StrCmp $R8 "" end +1 ; Are there no more chars? + StrCmp $R8 " " +1 -3 ; Is it a space char? + StrCpy $R9 $R9 $R7 ; Copy chars up to the counter. + + end: + ClearErrors + + Pop $R7 + Pop $R8 + Exch $R9 !macroend + +Function GetPathFromString + !insertmacro GetPathFromStringImp +FunctionEnd + +; Create a Software\Classes\Applications\$exeName.exe entry, shared by all the +; installs. +; If this key has already been registered by another channel/install, we just +; make sure the open entry has the expected command line flags. +; See SetStartMenuInternet in browser/installer/windows/nsis/shared.nsh. +Function RegisterTypes + StrCpy $0 "Software\Classes\Applications\${EXE_NAME}" + StrCpy $1 "$0\shell\open\command" + StrCpy $2 "$0\SupportedTypes" + + ReadRegStr $3 HKCU "$1" "" + ${If} $3 != "" + ; If the user already has something, we just update it to make sure it + ; contains the -osint flag. This should not be a problem if we created these + ; entries, but we still check them in case they were added manually. + Push $3 + Call GetPathFromString + Pop $3 + WriteRegStr HKCU "$1" "" '"$3" -osint -url "%1"' + ${Else} + WriteRegStr HKCU "$1" "" '"$INSTDIR\${EXE_NAME}" -osint -url "%1"' + WriteRegStr HKCU "$0\DefaultIcon" "" "$INSTDIR\${EXE_NAME},1" + + ; Same as Firefox, see SetStartMenuInternet + WriteRegStr HKCU "$2" ".apng" "" + WriteRegStr HKCU "$2" ".bmp" "" + WriteRegStr HKCU "$2" ".flac" "" + WriteRegStr HKCU "$2" ".gif" "" + WriteRegStr HKCU "$2" ".htm" "" + WriteRegStr HKCU "$2" ".html" "" + WriteRegStr HKCU "$2" ".ico" "" + WriteRegStr HKCU "$2" ".jfif" "" + WriteRegStr HKCU "$2" ".jpeg" "" + WriteRegStr HKCU "$2" ".jpg" "" + WriteRegStr HKCU "$2" ".json" "" + WriteRegStr HKCU "$2" ".m4a" "" + WriteRegStr HKCU "$2" ".mp3" "" + WriteRegStr HKCU "$2" ".oga" "" + WriteRegStr HKCU "$2" ".ogg" "" + WriteRegStr HKCU "$2" ".ogv" "" + WriteRegStr HKCU "$2" ".opus" "" + WriteRegStr HKCU "$2" ".pdf" "" + WriteRegStr HKCU "$2" ".pjpeg" "" + WriteRegStr HKCU "$2" ".pjp" "" + WriteRegStr HKCU "$2" ".png" "" + WriteRegStr HKCU "$2" ".rdf" "" + WriteRegStr HKCU "$2" ".shtml" "" + WriteRegStr HKCU "$2" ".svg" "" + WriteRegStr HKCU "$2" ".webm" "" + WriteRegStr HKCU "$2" ".avif" "" + WriteRegStr HKCU "$2" ".xht" "" + WriteRegStr HKCU "$2" ".xhtml" "" + WriteRegStr HKCU "$2" ".xml" "" + ${EndIf} +FunctionEnd + +; Set the AUMID to all links pointing to our exe in a certain directory. +; See RegisterAumid. +Function RegisterAumidDirectory + Pop $0 + FindFirst $1 $2 "$0\*.lnk" + loop: + IfErrors end + ShellLink::GetShortCutTarget "$0\$2" + ; Do not pop, and pass the value over + Call GetPathFromString + Pop $3 + ${If} $3 == "$INSTDIR\${EXE_NAME}" + ApplicationID::Set "$0\$2" "$aumid" "true" + ${EndIf} + FindNext $1 $2 + goto loop + end: + FindClose $1 +FunctionEnd + +; Firefox expects the installer to write its AUMID in the registry. +; It is hardcoded to use Software\Mozilla\Firefox\TaskBarIDs, but we change it +; in widget/windows/WinTaskbar.cpp in one of our patches. +; See InitHashAppModelId in toolkit/mozapps/installer/windows/nsis/common.nsh. +; +; In addition to that, we need to associate the AUMID to every link as per +; specifications: +; https://learn.microsoft.com/en-us/windows/win32/shell/appids#application-de… +Function RegisterAumid + StrCpy $0 "Software\${APP_DIR}\${PROJECT_NAME}\TaskBarIDs" + WriteRegStr HKCU "$0" "$INSTDIR" "$aumid" + + Push $DESKTOP + Call RegisterAumidDirectory + Push "$QUICKLAUNCH\User Pinned\TaskBar" + Call RegisterAumidDirectory + Push "$QUICKLAUNCH\User Pinned\StartMenu" + Call RegisterAumidDirectory +FunctionEnd + +; Sets all the needed registry keys during an install, or run all the needed +; maintenance in the post update. +Function UpdateRegistry + Call SetUninstallData + Call ComputeAumid + ${If} $aumid != "error" + Call RegisterClasses + Call RegisterStartMenu + Call RegisterTypes + Call RegisterAumid + ${EndIf} +FunctionEnd + +;-------------------------------- +; Uninstall helper +; We do not ship an uninstaller in the updates. +; However, to be able to undo changes done during the post update step, we call +; `postupdate.exe` with the `/Uninstall`. They are implemented here. +; `postupdate.exe` always runs as it was an installer, which is the reason for +; which the following functions do not have the `un.` prefix. +; However, they have an `Un` suffix, and each `Un$function` function undoes the +; changes done by the corresponding `$function` function. + +Function UnregisterClass + Pop $0 ; Class name + StrCpy $1 "${NAME_NO_SPACES}$0-$aumid" ; Expanded class name + DeleteRegKey HKCU "Software\Classes\$1" +FunctionEnd + +Function UnregisterClasses + Push "URL" + Call UnregisterClass + Push "HTML" + Call UnregisterClass + Push "PDF" + Call UnregisterClass +FunctionEnd + +Function UnregisterStartMenu + DeleteRegValue HKCU "Software\RegisteredApplications" "${NAME_NO_SPACES}-$aumid" + DeleteRegKey HKCU "Software\Clients\StartMenuInternet\${NAME_NO_SPACES}-$aumid" +FunctionEnd + +Function UnregisterTypes + StrCpy $0 "Software\Classes\Applications\${EXE_NAME}" + StrCpy $1 "$0\shell\open\command" + ReadRegStr $2 HKCU "$1" "" + ${If} $2 != "" + Push $2 + Call GetPathFromString + Pop $3 + ; Do not do anything if we are not the installation that created the keys. + ${If} $3 == "$INSTDIR\${EXE_NAME}" + DeleteRegKey HKCU "$0" + ${EndIf} + ${EndIf} +FunctionEnd + +Function UnregisterAumid + DeleteRegValue HKCU "Software\${APP_DIR}\${PROJECT_NAME}\TaskBarIDs" "$INSTDIR" + ; No need to do anything on the links, as they will be deleted. +FunctionEnd + +; Remove all the registry changes we have done. +Function ClearRegistry + Call ComputeAumid + ${If} $aumid != "error" + ; We take for granted we do not have conflicting aumids. + Call UnregisterClasses + Call UnregisterStartMenu + Call UnregisterAumid + ${EndIf} + ; The types do not depend on the AUMID. So, even though we add them only + ; when we have an AUMID (they would be useless otherwise), we always check if + ; we should remove them. + Call UnregisterTypes +FunctionEnd ===================================== projects/firefox/build ===================================== @@ -6,7 +6,8 @@ }) %] distdir=/var/tmp/dist/[% project %] mkdir -p /var/tmp/build -mkdir -p [% dest_dir _ '/' _ c('filename') %] +[% SET out_dir = dest_dir _ '/' _ c('filename') -%] +mkdir -p [% out_dir %] [% IF c("var/windows") -%] # Setting up fxc2 @@ -276,6 +277,20 @@ cp -L obj-*/dist/bin/geckodriver* $distdir [% END -%] [% END -%] +[% IF c("var/mullvad-browser") && c("var/windows") -%] + function make_nsis_plugin { + pushd "other-licenses/nsis/Contrib/$1" + make CXX=[% c("arch") %]-w64-mingw32-clang++ + cp "$1.dll" $distdir/nsis-plugins/ + [% c("touch") %] "$distdir/nsis-plugins/$1.dll" + popd + } + + mkdir -p $distdir/nsis-plugins + make_nsis_plugin ApplicationID + make_nsis_plugin CityHash +[% END -%] + cd $distdir [% IF c("var/linux") -%] @@ -328,7 +343,7 @@ echo "Starting to package artifacts $(date)" [% c('tar', { tar_src => [ browserdir ], - tar_args => '-caf ' _ dest_dir _ '/' _ c('filename') _ '/browser.tar.' _ c('compress_tar'), + tar_args => '-caf ' _ out_dir _ '/browser.tar.' _ c('compress_tar'), }) %] # Debug symbols @@ -339,13 +354,13 @@ echo "Starting to package artifacts $(date)" mv include [% c('var/project-name') %]/ [% c('tar', { tar_src => [ c('var/project-name') ], - tar_args => '-cJf ' _ dest_dir _ '/' _ c('filename') _ '/browser-debug-symbols.tar.xz', + tar_args => '-cJf ' _ out_dir _ '/browser-debug-symbols.tar.xz', }) %] popd [% ELSIF c("var/windows") -%] [% c('zip', { zip_src => [ 'Debug' ], - zip_args => dest_dir _ '/' _ c('filename') _ '/browser-debug-symbols.zip', + zip_args => out_dir _ '/browser-debug-symbols.zip', }) %] [% END -%] @@ -354,12 +369,12 @@ llvm-strip geckodriver* [% IF c("var/windows") -%] [% c('zip', { zip_src => [ 'geckodriver.exe' ], - zip_args => dest_dir _ '/' _ c('filename') _ '/geckodriver.zip', + zip_args => out_dir _ '/geckodriver.zip', }) %] [% ELSE -%] [% c('tar', { tar_src => [ 'geckodriver' ], - tar_args => '-cJf ' _ dest_dir _ '/' _ c('filename') _ '/geckodriver.tar.xz', + tar_args => '-cJf ' _ out_dir _ '/geckodriver.tar.xz', }) %] [% END -%] @@ -367,12 +382,19 @@ llvm-strip geckodriver* [% IF c("var/updater_enabled") -%] [% c('zip', { zip_src => [ 'mar-tools' ], - zip_args => dest_dir _ '/' _ c('filename') _ '/' _ 'mar-tools-' _ c("var/osname") _ '-' _ c("var/torbrowser_version") _ '.zip', + zip_args => out_dir _ '/' _ 'mar-tools-' _ c("var/osname") _ '-' _ c("var/torbrowser_version") _ '.zip', + }) %] +[% END -%] + +[% IF c("var/mullvad-browser") && c("var/windows") -%] + [% c('tar', { + tar_src => [ 'nsis-plugins' ], + tar_args => '-caf ' _ out_dir _ '/nsis-plugins.tar.' _ c('compress_tar'), }) %] [% END -%] [% IF c("var/build_infos_json") -%] - cat > "[% dest_dir _ '/' _ c('filename') _ '/build-infos.json' %]" << EOF_BUILDINFOS + cat > "[% out_dir _ '/build-infos.json' %]" << EOF_BUILDINFOS { "firefox_platform_version" : "[% c("var/firefox_platform_version") %]", "firefox_buildid" : "$MOZ_BUILD_DATE" View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/e… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/e… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.8.0esr-13.0-1] fixup! Add TorStrings module for localization
by Pier Angelo Vendrame (@pierov) 06 Mar '24

06 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.8.0esr-13.0-1 at The Tor Project / Applications / Tor Browser Commits: 572c0bd7 by Henry Wilkes at 2024-03-05T16:48:52+00:00 fixup! Add TorStrings module for localization Bug 42305: Tidy up stable strings, ready for new translation CI. Cherry-picked from Bug 42221: Remove unused strings now that 13.0 is stable. Plus removed aboutTor.dtd after Bug 41333. - - - - - 7 changed files: - toolkit/torbutton/chrome/locale/en-US/aboutTBUpdate.dtd - − toolkit/torbutton/chrome/locale/en-US/aboutTor.dtd - toolkit/torbutton/chrome/locale/en-US/settings.properties - toolkit/torbutton/chrome/locale/en-US/torConnect.properties - toolkit/torbutton/chrome/locale/en-US/torbutton.dtd - toolkit/torbutton/chrome/locale/en-US/torbutton.properties - toolkit/torbutton/chrome/locale/en-US/torlauncher.properties Changes: ===================================== toolkit/torbutton/chrome/locale/en-US/aboutTBUpdate.dtd ===================================== @@ -7,9 +7,6 @@ <!ENTITY aboutTBUpdate.version "Version"> <!ENTITY aboutTBUpdate.releaseDate "Release Date"> <!ENTITY aboutTBUpdate.releaseNotes "Release Notes"> - -<!-- TODO: Remove the entries below when 13.0 becomes stable --> -<!ENTITY aboutTBUpdate.updated "Tor Browser has been updated."> <!-- LOCALIZATION NOTE: the following entities are used to create the link to - obtain more information about the latest update. - The markup on the page looks like this: ===================================== toolkit/torbutton/chrome/locale/en-US/aboutTor.dtd deleted ===================================== @@ -1,43 +0,0 @@ -<!-- Copyright (c) 2022, The Tor Project, Inc. - - 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/. --> - - -<!-- Remove this entire file once stable reaches 13.0 --> - -<!ENTITY aboutTor.title "About Tor"> - -<!ENTITY aboutTor.viewChangelog.label "View Changelog"> - -<!ENTITY aboutTor.ready.label "Explore. Privately."> -<!ENTITY aboutTor.ready2.label "You’re ready for the world’s most private browsing experience."> -<!ENTITY aboutTor.failure.label "Something Went Wrong!"> -<!ENTITY aboutTor.failure2.label "Tor is not working in this browser."> - -<!ENTITY aboutTor.search.label "Search with DuckDuckGo"> -<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com"> - -<!ENTITY aboutTor.torbrowser_user_manual_questions.label "Questions?"> -<!ENTITY aboutTor.torbrowser_user_manual_link.label "Check our Tor Browser Manual »"> -<!-- The next two entities are used within the browser's Help menu. --> -<!ENTITY aboutTor.torbrowser_user_manual.accesskey "M"> -<!ENTITY aboutTor.torbrowser_user_manual.label "Tor Browser Manual"> - -<!ENTITY aboutTor.tor_mission.label "The Tor Project is a US 501(c)(3) non-profit organization advancing human rights and freedoms by creating and deploying free and open source anonymity and privacy technologies, supporting their unrestricted availability and use, and furthering their scientific and popular understanding."> -<!ENTITY aboutTor.getInvolved.label "Get Involved »"> - -<!ENTITY aboutTor.newsletter.tagline "Get the latest news from Tor straight to your inbox."> -<!ENTITY aboutTor.newsletter.link_text "Sign up for Tor News."> -<!ENTITY aboutTor.donationBanner.freeToUse "Tor is free to use because of donations from people like you."> -<!ENTITY aboutTor.donationBanner.buttonA "Donate Now"> - -<!ENTITY aboutTor.alpha.ready.label "Test. Thoroughly."> -<!ENTITY aboutTor.alpha.ready2.label "You’re ready to test the world’s most private browsing experience."> -<!ENTITY aboutTor.alpha.bannerDescription "Tor Browser Alpha is an unstable version of Tor Browser you can use to preview new features, test their performance and provide feedback before release."> -<!ENTITY aboutTor.alpha.bannerLink "Report a bug on the Tor Forum"> - -<!ENTITY aboutTor.nightly.ready.label "Test. Thoroughly."> -<!ENTITY aboutTor.nightly.ready2.label "You’re ready to test the world’s most private browsing experience."> -<!ENTITY aboutTor.nightly.bannerDescription "Tor Browser Nightly is an unstable version of Tor Browser you can use to preview new features, test their performance and provide feedback before release."> -<!ENTITY aboutTor.nightly.bannerLink "Report a bug on the Tor Forum"> ===================================== toolkit/torbutton/chrome/locale/en-US/settings.properties ===================================== @@ -26,8 +26,6 @@ settings.quickstartCheckbox=Always connect automatically # Bridge settings settings.bridgesHeading=Bridges -# Old description used up to 12.0 - TODO: remove when 12.5 becomes stable: -settings.bridgesDescription=Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another. settings.bridgesDescription2=Bridges help you securely access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another. settings.bridgeLocation=Your location settings.bridgeLocationAutomatic=Automatic @@ -88,15 +86,6 @@ settings.builtinBridgeMeekAzureDescription2=Makes it look like you’re connecte settings.bridgeButtonConnect=Connect settings.bridgeButtonAccept=OK -# Old dialog strings used up to 12.0 - TODO: remove when 12.5 becomes stable: -settings.builtinBridgeTitle=Built-In Bridges -settings.builtinBridgeDescription=Tor Browser includes some specific types of bridges known as “pluggable transports”. -settings.builtinBridgeObfs4=obfs4 -settings.builtinBridgeObfs4Description=obfs4 is a type of built-in bridge that makes your Tor traffic look random. They are also less likely to be blocked than their predecessors, obfs3 bridges. -settings.builtinBridgeSnowflakeDescription=Snowflake is a built-in bridge that defeats censorship by routing your connection through Snowflake proxies, ran by volunteers. -settings.builtinBridgeMeekAzureDescription=meek-azure is a built-in bridge that makes it look like you are using a Microsoft web site instead of using Tor. -# end - # Request bridges dialog settings.requestBridgeDialogTitle=Request Bridge settings.submitCaptcha=Submit @@ -132,7 +121,3 @@ settings.allowedPortsPlaceholder=Comma-separated values # Log dialog settings.torLogDialogTitle=Tor Logs settings.copyLog=Copy Tor Log to Clipboard - -# Legacy strings - remove once 12.0 has gone EOL -settings.provideBridgeTitle=Provide Bridge -settings.provideBridgeHeader=Enter bridge information from a trusted source ===================================== toolkit/torbutton/chrome/locale/en-US/torConnect.properties ===================================== @@ -52,12 +52,3 @@ torConnect.autoBootstrappingFailed=Automatic configuration failed torConnect.autoBootstrappingAllFailed=None of the configurations we tried worked torConnect.cannotDetermineCountry=Unable to determine user country torConnect.noSettingsForCountry=No settings available for your location - -# Urlbar strings used up to 12.0 - TODO: remove when 12.5 becomes stable: -torConnect.torNotConnectedConcise=Not Connected -torConnect.torConnectingConcise=Connecting… -torConnect.torConnectedConcise=Connected - -# connectMessage strings used up to 12.0 - TODO: remove when 12.5 becomes stable: -torConnect.tryAgainMessage=Tor Browser has failed to establish a connection to the Tor Network -torConnect.connectMessage=Changes to Tor Settings will not take effect until you connect ===================================== toolkit/torbutton/chrome/locale/en-US/torbutton.dtd ===================================== @@ -8,9 +8,6 @@ <!ENTITY torbutton.context_menu.new_circuit_key "C"> <!ENTITY torbutton.circuit_display.title "Tor Circuit"> -<!-- Old circuit display strings used up to 12.0 - remove when 12.5 becomes - - stable. --> -<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site"> <!-- Onion services strings. Strings are kept here for ease of translation. --> <!ENTITY torbutton.onionServices.authPrompt.tooltip "Open onion service client authentication prompt"> ===================================== toolkit/torbutton/chrome/locale/en-US/torbutton.properties ===================================== @@ -22,25 +22,6 @@ torbutton.circuit_display.region-guard-node = %S (guard) torbutton.circuit_display.new-circuit-guard-description = Your guard node may not change torbutton.circuit_display.new-circuit-bridge-description = Your bridge may not change -# Old circuit display strings used up to 12.0 - remove when 12.5 becomes stable: -torbutton.circuit_display.relay = Relay -torbutton.circuit_display.unknown_country = Unknown country -torbutton.circuit_display.guard = Guard -torbutton.circuit_display.guard_note = Your [Guard] node may not change. -torbutton.circuit_display.learn_more = Learn more -torbutton.circuit_display.click_to_copy = Click to Copy -torbutton.circuit_display.copied = Copied! -# end - -# External app blocker strings used up to 12.0 - TODO: remove when 12.5 becomes stable: -torbutton.popup.external.title = Download an external file type? -torbutton.popup.external.app = Tor Browser cannot display this file. You will need to open it with another application.\n\n -torbutton.popup.external.note = Some types of files can cause applications to connect to the Internet without using Tor.\n\n -torbutton.popup.external.suggest = To be safe, you should only open downloaded files while offline, or use a Tor Live CD such as Tails.\n -torbutton.popup.launch = Download file -torbutton.popup.cancel = Cancel -torbutton.popup.dontask = Automatically download files from now on - # Download pane warning torbutton.download.warning.title = Be careful opening downloads # %S will be a link to the Tails operating system website. With the content given by torbutton.download.warning.tails_brand_name @@ -131,18 +112,3 @@ profileProblemTitle=%S Profile Problem profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it. profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it. profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again. - -# New identity warning -torbutton.popup.no_newnym = Torbutton cannot safely give you a new identity. It does not have access to the Tor Control Port.\n\nAre you running Tor Browser Bundle? - - -## Legacy - -# Preferences for mobile: these strings are still referenced, but we should -# check whether this feature is still used -torbutton.security_settings.menu.title = Security Settings - -# The notification that appears when maximizing the browser with letterboxing disabled -# TODO: This string is not needed as of 12.5a5, and has a replacement in Base Browser! -# To be removed when 12.0 will not need new updates. -torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size. ===================================== toolkit/torbutton/chrome/locale/en-US/torlauncher.properties ===================================== @@ -59,7 +59,3 @@ torlauncher.bootstrapWarning.pt_missing=missing pluggable transport torlauncher.nsresult.NS_ERROR_NET_RESET=The connection to the server was lost. torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Could not connect to the server. torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Could not connect to the proxy. - -## 12.5-only strings that can be removed once it goes EOL. - -torlauncher.tor_controlconn_failed=Could not connect to Tor control port. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/572c0bd… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/572c0bd… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.8.0esr-13.5-1] Bug 41918: Option to reuse last window size when letterboxing is enabled.
by ma1 (@ma1) 06 Mar '24

06 Mar '24
ma1 pushed to branch mullvad-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser Commits: bbf5383c by hackademix at 2024-03-06T18:20:36+01:00 Bug 41918: Option to reuse last window size when letterboxing is enabled. - - - - - 6 changed files: - browser/app/profile/001-base-profile.js - dom/base/nsContentUtils.cpp - dom/base/nsContentUtils.h - toolkit/components/resistfingerprinting/RFPHelper.sys.mjs - toolkit/components/windowwatcher/nsWindowWatcher.cpp - xpfe/appshell/AppWindow.cpp Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -379,6 +379,8 @@ pref("privacy.resistFingerprinting.letterboxing", true); pref("privacy.resistFingerprinting.letterboxing.vcenter", true); // tor-browser#41917 letterboxing gradient background pref("privacy.resistFingerprinting.letterboxing.gradient", true); +// tor-browser#41918: should we reuse last window sizes if letterboxing is enabled +pref("privacy.resistFingerprinting.letterboxing.rememberSize", false); // tor-browser#41695: how many warnings we show if user closes them without restoring the window size pref("privacy.resistFingerprinting.resizeWarnings", 3); // tor-browser#33282: new windows start at 1400x900 when there's enough screen space, otherwise down by 200x100 blocks ===================================== dom/base/nsContentUtils.cpp ===================================== @@ -2663,6 +2663,18 @@ void nsContentUtils::CalcRoundedWindowSizeForResistingFingerprinting( *aOutputHeight = resultHeight; } +bool nsContentUtils::ShouldRoundWindowSizeForResistingFingerprinting() { + return !( + Preferences::GetBool("privacy.resistFingerprinting.letterboxing", + false) && + // We want to round window size at least once in the browser's life time: + // AppWindow::ForceRoundedDimensions() will set this preference to true. + Preferences::GetBool( + "privacy.resistFingerprinting.letterboxing.didForceSize", false) && + Preferences::GetBool( + "privacy.resistFingerprinting.letterboxing.rememberSize", false)); +} + bool nsContentUtils::ThreadsafeIsCallerChrome() { return NS_IsMainThread() ? IsCallerChrome() : IsCurrentThreadRunningChromeWorker(); ===================================== dom/base/nsContentUtils.h ===================================== @@ -406,6 +406,10 @@ class nsContentUtils { bool aSetOuterWidth, bool aSetOuterHeight, int32_t* aOutputWidth, int32_t* aOutputHeight); + // Tell if we actually want to round size of new windows for RFP, + // depending on letterboxing status and user's preference. + static bool ShouldRoundWindowSizeForResistingFingerprinting(); + /** * Returns the parent node of aChild crossing document boundaries, but skips * any cross-process parent frames and continues with the nearest in-process ===================================== toolkit/components/resistfingerprinting/RFPHelper.sys.mjs ===================================== @@ -18,6 +18,8 @@ const kPrefLetterboxingVcenter = "privacy.resistFingerprinting.letterboxing.vcenter"; const kPrefLetterboxingGradient = "privacy.resistFingerprinting.letterboxing.gradient"; +const kPrefLetterboxingDidForceSize = + "privacy.resistFingerprinting.letterboxing.didForceSize"; const kTopicDOMWindowOpened = "domwindowopened"; @@ -221,6 +223,7 @@ class _RFPHelper { _handlePrefChanged(data) { switch (data) { case kPrefResistFingerprinting: + Service.prefs.clearUserPref(kPrefLetterboxingDidForceSize); this._handleResistFingerprintingChanged(); break; case kPrefSpoofEnglish: @@ -228,6 +231,7 @@ class _RFPHelper { this._handleSpoofEnglishChanged(); break; case kPrefLetterboxing: + Service.prefs.clearUserPref(kPrefLetterboxingDidForceSize); case kPrefLetterboxingVcenter: case kPrefLetterboxingGradient: this._handleLetterboxingPrefChanged(); ===================================== toolkit/components/windowwatcher/nsWindowWatcher.cpp ===================================== @@ -2333,7 +2333,9 @@ static void SizeOpenedWindow(nsIDocShellTreeOwner* aTreeOwner, screenDesktopRect.Size() / screenCssToDesktopScale; if (aSizeSpec.SizeSpecified()) { - if (!nsContentUtils::ShouldResistFingerprinting()) { + if (!(nsContentUtils::ShouldResistFingerprinting() && + nsContentUtils:: + ShouldRoundWindowSizeForResistingFingerprinting())) { /* Unlike position, force size out-of-bounds check only if size actually was specified. Otherwise, intrinsically sized windows are broken. */ ===================================== xpfe/appshell/AppWindow.cpp ===================================== @@ -1123,8 +1123,9 @@ NS_IMETHODIMP AppWindow::GetAvailScreenSize(int32_t* aAvailWidth, return NS_OK; } -// Rounds window size to 1000x1000, or, if there isn't enough available -// screen space, to a multiple of 200x100. +// Rounds window size to privacy.window.maxInnerWidth x +// privacy.window.maxInnerWidth, or, if there isn't enough available screen +// space, to a multiple of 200x100. NS_IMETHODIMP AppWindow::ForceRoundedDimensions() { if (mIsHiddenWindow) { return NS_OK; @@ -1164,6 +1165,11 @@ NS_IMETHODIMP AppWindow::ForceRoundedDimensions() { SetPrimaryContentSize(targetSizeDev.width, targetSizeDev.height); + // Ensure we force initial rounded size at least once, as checked by + // nsContentUtils::ShouldRoundWindowSizeForResistingFingerprinting(). + Preferences::SetBool("privacy.resistFingerprinting.letterboxing.didForceSize", + true); + return NS_OK; } @@ -2703,7 +2709,8 @@ void AppWindow::SizeShell() { if (nsContentUtils::ShouldResistFingerprinting( "if RFP is enabled we want to round the dimensions of the new" "new pop up window regardless of their origin") && - windowType.EqualsLiteral("navigator:browser")) { + windowType.EqualsLiteral("navigator:browser") && + nsContentUtils::ShouldRoundWindowSizeForResistingFingerprinting()) { // Once we've got primary content, force dimensions. if (mPrimaryContentShell || mPrimaryBrowserParent) { ForceRoundedDimensions(); View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/bbf… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/bbf… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-115.8.0esr-13.5-1] Bug 41918: Option to reuse last window size when letterboxing is enabled.
by ma1 (@ma1) 06 Mar '24

06 Mar '24
ma1 pushed to branch base-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: f3ff4275 by hackademix at 2024-03-06T18:18:16+01:00 Bug 41918: Option to reuse last window size when letterboxing is enabled. - - - - - 6 changed files: - browser/app/profile/001-base-profile.js - dom/base/nsContentUtils.cpp - dom/base/nsContentUtils.h - toolkit/components/resistfingerprinting/RFPHelper.sys.mjs - toolkit/components/windowwatcher/nsWindowWatcher.cpp - xpfe/appshell/AppWindow.cpp Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -380,6 +380,8 @@ pref("privacy.resistFingerprinting.letterboxing", true); pref("privacy.resistFingerprinting.letterboxing.vcenter", true); // tor-browser#41917 letterboxing gradient background pref("privacy.resistFingerprinting.letterboxing.gradient", true); +// tor-browser#41918: should we reuse last window sizes if letterboxing is enabled +pref("privacy.resistFingerprinting.letterboxing.rememberSize", false); // tor-browser#41695: how many warnings we show if user closes them without restoring the window size pref("privacy.resistFingerprinting.resizeWarnings", 3); // tor-browser#33282: new windows start at 1400x900 when there's enough screen space, otherwise down by 200x100 blocks ===================================== dom/base/nsContentUtils.cpp ===================================== @@ -2663,6 +2663,18 @@ void nsContentUtils::CalcRoundedWindowSizeForResistingFingerprinting( *aOutputHeight = resultHeight; } +bool nsContentUtils::ShouldRoundWindowSizeForResistingFingerprinting() { + return !( + Preferences::GetBool("privacy.resistFingerprinting.letterboxing", + false) && + // We want to round window size at least once in the browser's life time: + // AppWindow::ForceRoundedDimensions() will set this preference to true. + Preferences::GetBool( + "privacy.resistFingerprinting.letterboxing.didForceSize", false) && + Preferences::GetBool( + "privacy.resistFingerprinting.letterboxing.rememberSize", false)); +} + bool nsContentUtils::ThreadsafeIsCallerChrome() { return NS_IsMainThread() ? IsCallerChrome() : IsCurrentThreadRunningChromeWorker(); ===================================== dom/base/nsContentUtils.h ===================================== @@ -406,6 +406,10 @@ class nsContentUtils { bool aSetOuterWidth, bool aSetOuterHeight, int32_t* aOutputWidth, int32_t* aOutputHeight); + // Tell if we actually want to round size of new windows for RFP, + // depending on letterboxing status and user's preference. + static bool ShouldRoundWindowSizeForResistingFingerprinting(); + /** * Returns the parent node of aChild crossing document boundaries, but skips * any cross-process parent frames and continues with the nearest in-process ===================================== toolkit/components/resistfingerprinting/RFPHelper.sys.mjs ===================================== @@ -18,6 +18,8 @@ const kPrefLetterboxingVcenter = "privacy.resistFingerprinting.letterboxing.vcenter"; const kPrefLetterboxingGradient = "privacy.resistFingerprinting.letterboxing.gradient"; +const kPrefLetterboxingDidForceSize = + "privacy.resistFingerprinting.letterboxing.didForceSize"; const kTopicDOMWindowOpened = "domwindowopened"; @@ -221,6 +223,7 @@ class _RFPHelper { _handlePrefChanged(data) { switch (data) { case kPrefResistFingerprinting: + Service.prefs.clearUserPref(kPrefLetterboxingDidForceSize); this._handleResistFingerprintingChanged(); break; case kPrefSpoofEnglish: @@ -228,6 +231,7 @@ class _RFPHelper { this._handleSpoofEnglishChanged(); break; case kPrefLetterboxing: + Service.prefs.clearUserPref(kPrefLetterboxingDidForceSize); case kPrefLetterboxingVcenter: case kPrefLetterboxingGradient: this._handleLetterboxingPrefChanged(); ===================================== toolkit/components/windowwatcher/nsWindowWatcher.cpp ===================================== @@ -2333,7 +2333,9 @@ static void SizeOpenedWindow(nsIDocShellTreeOwner* aTreeOwner, screenDesktopRect.Size() / screenCssToDesktopScale; if (aSizeSpec.SizeSpecified()) { - if (!nsContentUtils::ShouldResistFingerprinting()) { + if (!(nsContentUtils::ShouldResistFingerprinting() && + nsContentUtils:: + ShouldRoundWindowSizeForResistingFingerprinting())) { /* Unlike position, force size out-of-bounds check only if size actually was specified. Otherwise, intrinsically sized windows are broken. */ ===================================== xpfe/appshell/AppWindow.cpp ===================================== @@ -1123,8 +1123,9 @@ NS_IMETHODIMP AppWindow::GetAvailScreenSize(int32_t* aAvailWidth, return NS_OK; } -// Rounds window size to 1000x1000, or, if there isn't enough available -// screen space, to a multiple of 200x100. +// Rounds window size to privacy.window.maxInnerWidth x +// privacy.window.maxInnerWidth, or, if there isn't enough available screen +// space, to a multiple of 200x100. NS_IMETHODIMP AppWindow::ForceRoundedDimensions() { if (mIsHiddenWindow) { return NS_OK; @@ -1164,6 +1165,11 @@ NS_IMETHODIMP AppWindow::ForceRoundedDimensions() { SetPrimaryContentSize(targetSizeDev.width, targetSizeDev.height); + // Ensure we force initial rounded size at least once, as checked by + // nsContentUtils::ShouldRoundWindowSizeForResistingFingerprinting(). + Preferences::SetBool("privacy.resistFingerprinting.letterboxing.didForceSize", + true); + return NS_OK; } @@ -2703,7 +2709,8 @@ void AppWindow::SizeShell() { if (nsContentUtils::ShouldResistFingerprinting( "if RFP is enabled we want to round the dimensions of the new" "new pop up window regardless of their origin") && - windowType.EqualsLiteral("navigator:browser")) { + windowType.EqualsLiteral("navigator:browser") && + nsContentUtils::ShouldRoundWindowSizeForResistingFingerprinting()) { // Once we've got primary content, force dimensions. if (mPrimaryContentShell || mPrimaryBrowserParent) { ForceRoundedDimensions(); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f3ff427… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f3ff427… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.8.0esr-13.5-1] Bug 41918: Option to reuse last window size when letterboxing is enabled.
by ma1 (@ma1) 06 Mar '24

06 Mar '24
ma1 pushed to branch tor-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: f4471d9f by hackademix at 2024-03-06T16:53:19+00:00 Bug 41918: Option to reuse last window size when letterboxing is enabled. - - - - - 6 changed files: - browser/app/profile/001-base-profile.js - dom/base/nsContentUtils.cpp - dom/base/nsContentUtils.h - toolkit/components/resistfingerprinting/RFPHelper.sys.mjs - toolkit/components/windowwatcher/nsWindowWatcher.cpp - xpfe/appshell/AppWindow.cpp Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -380,6 +380,8 @@ pref("privacy.resistFingerprinting.letterboxing", true); pref("privacy.resistFingerprinting.letterboxing.vcenter", true); // tor-browser#41917 letterboxing gradient background pref("privacy.resistFingerprinting.letterboxing.gradient", true); +// tor-browser#41918: should we reuse last window sizes if letterboxing is enabled +pref("privacy.resistFingerprinting.letterboxing.rememberSize", false); // tor-browser#41695: how many warnings we show if user closes them without restoring the window size pref("privacy.resistFingerprinting.resizeWarnings", 3); // tor-browser#33282: new windows start at 1400x900 when there's enough screen space, otherwise down by 200x100 blocks ===================================== dom/base/nsContentUtils.cpp ===================================== @@ -2663,6 +2663,18 @@ void nsContentUtils::CalcRoundedWindowSizeForResistingFingerprinting( *aOutputHeight = resultHeight; } +bool nsContentUtils::ShouldRoundWindowSizeForResistingFingerprinting() { + return !( + Preferences::GetBool("privacy.resistFingerprinting.letterboxing", + false) && + // We want to round window size at least once in the browser's life time: + // AppWindow::ForceRoundedDimensions() will set this preference to true. + Preferences::GetBool( + "privacy.resistFingerprinting.letterboxing.didForceSize", false) && + Preferences::GetBool( + "privacy.resistFingerprinting.letterboxing.rememberSize", false)); +} + bool nsContentUtils::ThreadsafeIsCallerChrome() { return NS_IsMainThread() ? IsCallerChrome() : IsCurrentThreadRunningChromeWorker(); ===================================== dom/base/nsContentUtils.h ===================================== @@ -406,6 +406,10 @@ class nsContentUtils { bool aSetOuterWidth, bool aSetOuterHeight, int32_t* aOutputWidth, int32_t* aOutputHeight); + // Tell if we actually want to round size of new windows for RFP, + // depending on letterboxing status and user's preference. + static bool ShouldRoundWindowSizeForResistingFingerprinting(); + /** * Returns the parent node of aChild crossing document boundaries, but skips * any cross-process parent frames and continues with the nearest in-process ===================================== toolkit/components/resistfingerprinting/RFPHelper.sys.mjs ===================================== @@ -18,6 +18,8 @@ const kPrefLetterboxingVcenter = "privacy.resistFingerprinting.letterboxing.vcenter"; const kPrefLetterboxingGradient = "privacy.resistFingerprinting.letterboxing.gradient"; +const kPrefLetterboxingDidForceSize = + "privacy.resistFingerprinting.letterboxing.didForceSize"; const kTopicDOMWindowOpened = "domwindowopened"; @@ -221,6 +223,7 @@ class _RFPHelper { _handlePrefChanged(data) { switch (data) { case kPrefResistFingerprinting: + Service.prefs.clearUserPref(kPrefLetterboxingDidForceSize); this._handleResistFingerprintingChanged(); break; case kPrefSpoofEnglish: @@ -228,6 +231,7 @@ class _RFPHelper { this._handleSpoofEnglishChanged(); break; case kPrefLetterboxing: + Service.prefs.clearUserPref(kPrefLetterboxingDidForceSize); case kPrefLetterboxingVcenter: case kPrefLetterboxingGradient: this._handleLetterboxingPrefChanged(); ===================================== toolkit/components/windowwatcher/nsWindowWatcher.cpp ===================================== @@ -2333,7 +2333,9 @@ static void SizeOpenedWindow(nsIDocShellTreeOwner* aTreeOwner, screenDesktopRect.Size() / screenCssToDesktopScale; if (aSizeSpec.SizeSpecified()) { - if (!nsContentUtils::ShouldResistFingerprinting()) { + if (!(nsContentUtils::ShouldResistFingerprinting() && + nsContentUtils:: + ShouldRoundWindowSizeForResistingFingerprinting())) { /* Unlike position, force size out-of-bounds check only if size actually was specified. Otherwise, intrinsically sized windows are broken. */ ===================================== xpfe/appshell/AppWindow.cpp ===================================== @@ -1123,8 +1123,9 @@ NS_IMETHODIMP AppWindow::GetAvailScreenSize(int32_t* aAvailWidth, return NS_OK; } -// Rounds window size to 1000x1000, or, if there isn't enough available -// screen space, to a multiple of 200x100. +// Rounds window size to privacy.window.maxInnerWidth x +// privacy.window.maxInnerWidth, or, if there isn't enough available screen +// space, to a multiple of 200x100. NS_IMETHODIMP AppWindow::ForceRoundedDimensions() { if (mIsHiddenWindow) { return NS_OK; @@ -1164,6 +1165,11 @@ NS_IMETHODIMP AppWindow::ForceRoundedDimensions() { SetPrimaryContentSize(targetSizeDev.width, targetSizeDev.height); + // Ensure we force initial rounded size at least once, as checked by + // nsContentUtils::ShouldRoundWindowSizeForResistingFingerprinting(). + Preferences::SetBool("privacy.resistFingerprinting.letterboxing.didForceSize", + true); + return NS_OK; } @@ -2703,7 +2709,8 @@ void AppWindow::SizeShell() { if (nsContentUtils::ShouldResistFingerprinting( "if RFP is enabled we want to round the dimensions of the new" "new pop up window regardless of their origin") && - windowType.EqualsLiteral("navigator:browser")) { + windowType.EqualsLiteral("navigator:browser") && + nsContentUtils::ShouldRoundWindowSizeForResistingFingerprinting()) { // Once we've got primary content, force dimensions. if (mPrimaryContentShell || mPrimaryBrowserParent) { ForceRoundedDimensions(); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f4471d9… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f4471d9… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.8.0esr-13.5-1] 2 commits: fixup! Firefox preference overrides.
by Pier Angelo Vendrame (@pierov) 06 Mar '24

06 Mar '24
Pier Angelo Vendrame pushed to branch mullvad-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser Commits: 187a1c0b by Pier Angelo Vendrame at 2024-03-06T17:41:34+01:00 fixup! Firefox preference overrides. Bug 42377: Hidden fonts should obey the allow list. Remove .Helvetica Neue DeskInterface from the allow list. This font might not be actually available, and in any case fonts starting with period will not be displayed by the browser. - - - - - fd5f4778 by Pier Angelo Vendrame at 2024-03-06T17:41:45+01:00 Bug 42377: Hidden fonts should obey the allow list. Hidden font families were automatically added to the `font.system.whitelist`, which is a behavior that conflicts with our font picking. - - - - - 2 changed files: - browser/app/profile/001-base-profile.js - gfx/thebes/gfxPlatformFontList.cpp Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -654,7 +654,7 @@ pref("toolkit.winRegisterApplicationRestart", false); pref("gfx.bundled-fonts.activate", 1); #ifdef XP_MACOSX -pref("font.system.whitelist", "AppleGothic, Apple Color Emoji, Arial, Courier, Courier New, Geneva, Georgia, Heiti TC, Helvetica, Helvetica Neue, .Helvetica Neue DeskInterface, Hiragino Kaku Gothic ProN, Kailasa, Lucida Grande, Menlo, Monaco, PingFang HK, PingFang SC, PingFang TC, Songti SC, Songti TC, Tahoma, Thonburi, Times, Times New Roman, Verdana, STIX Two Math, Noto Sans Adlam, Noto Sans Armenian, Noto Sans Balinese, Noto Sans Bamum, Noto Sans Bassa Vah, Noto Sans Batak, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Buhid, Noto Sans Canadian Aboriginal, Noto Sans Chakma, Noto Sans Cham, Noto Sans Cherokee, Noto Sans Coptic, Noto Sans Deseret, Noto Sans Devanagari, Noto Sans Elbasan, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Grantha, Noto Sans Gujarati, Noto Sans Gunjala Gondi, Noto Sans Gurmukhi, Noto Sans Hanifi Rohingya, Noto Sans Hanunoo, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Javanese, Noto Sans Kayah Li, Noto Sans Khojki, Noto Sans Khudawadi, Noto Sans Lao, Noto Sans Lepcha, Noto Sans Limbu, Noto Sans Lisu, Noto Sans Mahajani, Noto Sans Malayalam, Noto Sans Mandaic, Noto Sans Masaram Gondi, Noto Sans Medefaidrin, Noto Sans Meetei Mayek, Noto Sans Mende Kikakui, Noto Sans Miao, Noto Sans Modi, Noto Sans Mongolian, Noto Sans Mro, Noto Sans Myanmar, Noto Sans Multani, Noto Sans Newa, Noto Sans New Tai Lue, Noto Sans NKo, Noto Sans Ol Chiki, Noto Sans Oriya, Noto Sans Osage, Noto Sans Osmanya, Noto Sans Pahawh Hmong, Noto Sans Pau Cin Hau, Noto Sans Rejang, Noto Sans Runic, Noto Sans Samaritan, Noto Sans Saurashtra, Noto Sans Sharada, Noto Sans Shavian, Noto Sans Sinhala, Noto Sans Sora Sompeng, Noto Sans Soyombo, Noto Sans Sundanese, Noto Sans Syloti Nagri, Noto Sans Symbols 2, Noto Sans Symbols, Noto Sans Syriac, Noto Sans Tagalog, Noto Sans Tagbanwa, Noto Sans Tai Le, Noto Sans Tai Tham, Noto Sans Tai Viet, Noto Sans Takri, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Tifinagh Adrar, Noto Sans Tifinagh Agraw Imazighen, Noto Sans Tifinagh Ahaggar, Noto Sans Tifinagh Air, Noto Sans Tifinagh APT, Noto Sans Tifinagh Azawagh, Noto Sans Tifinagh Ghat, Noto Sans Tifinagh Hawad, Noto Sans Tifinagh, Noto Sans Tifinagh Rhissa Ixa, Noto Sans Tifinagh SIL, Noto Sans Tifinagh Tawellemmet, Noto Sans Tirhuta, Noto Sans Vai, Noto Sans Wancho, Noto Sans Warang Citi, Noto Sans Yi, Noto Sans Zanabazar Square, Noto Serif Armenian, Noto Serif Balinese, Noto Serif Bengali, Noto Serif Devanagari, Noto Serif Dogra, Noto Serif Ethiopic, Noto Serif Georgian, Noto Serif Grantha, Noto Serif Gujarati, Noto Serif Gurmukhi, Noto Serif Hebrew, Noto Serif Kannada, Noto Serif Khmer, Noto Serif Khojki, Noto Serif Lao, Noto Serif Malayalam, Noto Serif Myanmar, Noto Serif NP Hmong, Noto Serif Sinhala, Noto Serif Tamil, Noto Serif Telugu, Noto Serif Tibetan, Noto Serif Yezidi"); +pref("font.system.whitelist", "AppleGothic, Apple Color Emoji, Arial, Courier, Courier New, Geneva, Georgia, Heiti TC, Helvetica, Helvetica Neue, Hiragino Kaku Gothic ProN, Kailasa, Lucida Grande, Menlo, Monaco, PingFang HK, PingFang SC, PingFang TC, Songti SC, Songti TC, Tahoma, Thonburi, Times, Times New Roman, Verdana, STIX Two Math, Noto Sans Adlam, Noto Sans Armenian, Noto Sans Balinese, Noto Sans Bamum, Noto Sans Bassa Vah, Noto Sans Batak, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Buhid, Noto Sans Canadian Aboriginal, Noto Sans Chakma, Noto Sans Cham, Noto Sans Cherokee, Noto Sans Coptic, Noto Sans Deseret, Noto Sans Devanagari, Noto Sans Elbasan, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Grantha, Noto Sans Gujarati, Noto Sans Gunjala Gondi, Noto Sans Gurmukhi, Noto Sans Hanifi Rohingya, Noto Sans Hanunoo, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Javanese, Noto Sans Kayah Li, Noto Sans Khojki, Noto Sans Khudawadi, Noto Sans Lao, Noto Sans Lepcha, Noto Sans Limbu, Noto Sans Lisu, Noto Sans Mahajani, Noto Sans Malayalam, Noto Sans Mandaic, Noto Sans Masaram Gondi, Noto Sans Medefaidrin, Noto Sans Meetei Mayek, Noto Sans Mende Kikakui, Noto Sans Miao, Noto Sans Modi, Noto Sans Mongolian, Noto Sans Mro, Noto Sans Myanmar, Noto Sans Multani, Noto Sans Newa, Noto Sans New Tai Lue, Noto Sans NKo, Noto Sans Ol Chiki, Noto Sans Oriya, Noto Sans Osage, Noto Sans Osmanya, Noto Sans Pahawh Hmong, Noto Sans Pau Cin Hau, Noto Sans Rejang, Noto Sans Runic, Noto Sans Samaritan, Noto Sans Saurashtra, Noto Sans Sharada, Noto Sans Shavian, Noto Sans Sinhala, Noto Sans Sora Sompeng, Noto Sans Soyombo, Noto Sans Sundanese, Noto Sans Syloti Nagri, Noto Sans Symbols 2, Noto Sans Symbols, Noto Sans Syriac, Noto Sans Tagalog, Noto Sans Tagbanwa, Noto Sans Tai Le, Noto Sans Tai Tham, Noto Sans Tai Viet, Noto Sans Takri, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Tifinagh Adrar, Noto Sans Tifinagh Agraw Imazighen, Noto Sans Tifinagh Ahaggar, Noto Sans Tifinagh Air, Noto Sans Tifinagh APT, Noto Sans Tifinagh Azawagh, Noto Sans Tifinagh Ghat, Noto Sans Tifinagh Hawad, Noto Sans Tifinagh, Noto Sans Tifinagh Rhissa Ixa, Noto Sans Tifinagh SIL, Noto Sans Tifinagh Tawellemmet, Noto Sans Tirhuta, Noto Sans Vai, Noto Sans Wancho, Noto Sans Warang Citi, Noto Sans Yi, Noto Sans Zanabazar Square, Noto Serif Armenian, Noto Serif Balinese, Noto Serif Bengali, Noto Serif Devanagari, Noto Serif Dogra, Noto Serif Ethiopic, Noto Serif Georgian, Noto Serif Grantha, Noto Serif Gujarati, Noto Serif Gurmukhi, Noto Serif Hebrew, Noto Serif Kannada, Noto Serif Khmer, Noto Serif Khojki, Noto Serif Lao, Noto Serif Malayalam, Noto Serif Myanmar, Noto Serif NP Hmong, Noto Serif Sinhala, Noto Serif Tamil, Noto Serif Telugu, Noto Serif Tibetan, Noto Serif Yezidi"); // Armenian pref("font.name-list.serif.x-armn", "Noto Serif Armenian, Times, Times New Roman"); ===================================== gfx/thebes/gfxPlatformFontList.cpp ===================================== @@ -401,12 +401,6 @@ void gfxPlatformFontList::ApplyWhitelist() { AutoTArray<RefPtr<gfxFontFamily>, 128> accepted; bool whitelistedFontFound = false; for (const auto& entry : mFontFamilies) { - if (entry.GetData()->IsHidden()) { - // Hidden system fonts are exempt from whitelisting, but don't count - // towards determining whether we "kept" any (user-visible) fonts - accepted.AppendElement(entry.GetData()); - continue; - } nsAutoCString fontFamilyName(entry.GetKey()); ToLowerCase(fontFamilyName); if (familyNamesWhitelist.Contains(fontFamilyName)) { @@ -442,8 +436,7 @@ void gfxPlatformFontList::ApplyWhitelist( AutoTArray<fontlist::Family::InitData, 128> accepted; bool keptNonHidden = false; for (auto& f : aFamilies) { - if (f.mVisibility == FontVisibility::Hidden || - familyNamesWhitelist.Contains(f.mKey)) { + if (familyNamesWhitelist.Contains(f.mKey)) { accepted.AppendElement(f); if (f.mVisibility != FontVisibility::Hidden) { keptNonHidden = true; View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/82… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/82… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-115.8.0esr-13.5-1] 2 commits: fixup! Firefox preference overrides.
by Pier Angelo Vendrame (@pierov) 06 Mar '24

06 Mar '24
Pier Angelo Vendrame pushed to branch base-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: d89c5260 by Pier Angelo Vendrame at 2024-03-06T17:40:57+01:00 fixup! Firefox preference overrides. Bug 42377: Hidden fonts should obey the allow list. Remove .Helvetica Neue DeskInterface from the allow list. This font might not be actually available, and in any case fonts starting with period will not be displayed by the browser. - - - - - 047d94e4 by Pier Angelo Vendrame at 2024-03-06T17:41:06+01:00 Bug 42377: Hidden fonts should obey the allow list. Hidden font families were automatically added to the `font.system.whitelist`, which is a behavior that conflicts with our font picking. - - - - - 2 changed files: - browser/app/profile/001-base-profile.js - gfx/thebes/gfxPlatformFontList.cpp Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -656,7 +656,7 @@ pref("toolkit.winRegisterApplicationRestart", false); pref("gfx.bundled-fonts.activate", 1); #ifdef XP_MACOSX -pref("font.system.whitelist", "AppleGothic, Apple Color Emoji, Arial, Courier, Courier New, Geneva, Georgia, Heiti TC, Helvetica, Helvetica Neue, .Helvetica Neue DeskInterface, Hiragino Kaku Gothic ProN, Kailasa, Lucida Grande, Menlo, Monaco, PingFang HK, PingFang SC, PingFang TC, Songti SC, Songti TC, Tahoma, Thonburi, Times, Times New Roman, Verdana, STIX Two Math, Noto Sans Adlam, Noto Sans Armenian, Noto Sans Balinese, Noto Sans Bamum, Noto Sans Bassa Vah, Noto Sans Batak, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Buhid, Noto Sans Canadian Aboriginal, Noto Sans Chakma, Noto Sans Cham, Noto Sans Cherokee, Noto Sans Coptic, Noto Sans Deseret, Noto Sans Devanagari, Noto Sans Elbasan, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Grantha, Noto Sans Gujarati, Noto Sans Gunjala Gondi, Noto Sans Gurmukhi, Noto Sans Hanifi Rohingya, Noto Sans Hanunoo, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Javanese, Noto Sans Kayah Li, Noto Sans Khojki, Noto Sans Khudawadi, Noto Sans Lao, Noto Sans Lepcha, Noto Sans Limbu, Noto Sans Lisu, Noto Sans Mahajani, Noto Sans Malayalam, Noto Sans Mandaic, Noto Sans Masaram Gondi, Noto Sans Medefaidrin, Noto Sans Meetei Mayek, Noto Sans Mende Kikakui, Noto Sans Miao, Noto Sans Modi, Noto Sans Mongolian, Noto Sans Mro, Noto Sans Myanmar, Noto Sans Multani, Noto Sans Newa, Noto Sans New Tai Lue, Noto Sans NKo, Noto Sans Ol Chiki, Noto Sans Oriya, Noto Sans Osage, Noto Sans Osmanya, Noto Sans Pahawh Hmong, Noto Sans Pau Cin Hau, Noto Sans Rejang, Noto Sans Runic, Noto Sans Samaritan, Noto Sans Saurashtra, Noto Sans Sharada, Noto Sans Shavian, Noto Sans Sinhala, Noto Sans Sora Sompeng, Noto Sans Soyombo, Noto Sans Sundanese, Noto Sans Syloti Nagri, Noto Sans Symbols 2, Noto Sans Symbols, Noto Sans Syriac, Noto Sans Tagalog, Noto Sans Tagbanwa, Noto Sans Tai Le, Noto Sans Tai Tham, Noto Sans Tai Viet, Noto Sans Takri, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Tifinagh Adrar, Noto Sans Tifinagh Agraw Imazighen, Noto Sans Tifinagh Ahaggar, Noto Sans Tifinagh Air, Noto Sans Tifinagh APT, Noto Sans Tifinagh Azawagh, Noto Sans Tifinagh Ghat, Noto Sans Tifinagh Hawad, Noto Sans Tifinagh, Noto Sans Tifinagh Rhissa Ixa, Noto Sans Tifinagh SIL, Noto Sans Tifinagh Tawellemmet, Noto Sans Tirhuta, Noto Sans Vai, Noto Sans Wancho, Noto Sans Warang Citi, Noto Sans Yi, Noto Sans Zanabazar Square, Noto Serif Armenian, Noto Serif Balinese, Noto Serif Bengali, Noto Serif Devanagari, Noto Serif Dogra, Noto Serif Ethiopic, Noto Serif Georgian, Noto Serif Grantha, Noto Serif Gujarati, Noto Serif Gurmukhi, Noto Serif Hebrew, Noto Serif Kannada, Noto Serif Khmer, Noto Serif Khojki, Noto Serif Lao, Noto Serif Malayalam, Noto Serif Myanmar, Noto Serif NP Hmong, Noto Serif Sinhala, Noto Serif Tamil, Noto Serif Telugu, Noto Serif Tibetan, Noto Serif Yezidi"); +pref("font.system.whitelist", "AppleGothic, Apple Color Emoji, Arial, Courier, Courier New, Geneva, Georgia, Heiti TC, Helvetica, Helvetica Neue, Hiragino Kaku Gothic ProN, Kailasa, Lucida Grande, Menlo, Monaco, PingFang HK, PingFang SC, PingFang TC, Songti SC, Songti TC, Tahoma, Thonburi, Times, Times New Roman, Verdana, STIX Two Math, Noto Sans Adlam, Noto Sans Armenian, Noto Sans Balinese, Noto Sans Bamum, Noto Sans Bassa Vah, Noto Sans Batak, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Buhid, Noto Sans Canadian Aboriginal, Noto Sans Chakma, Noto Sans Cham, Noto Sans Cherokee, Noto Sans Coptic, Noto Sans Deseret, Noto Sans Devanagari, Noto Sans Elbasan, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Grantha, Noto Sans Gujarati, Noto Sans Gunjala Gondi, Noto Sans Gurmukhi, Noto Sans Hanifi Rohingya, Noto Sans Hanunoo, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Javanese, Noto Sans Kayah Li, Noto Sans Khojki, Noto Sans Khudawadi, Noto Sans Lao, Noto Sans Lepcha, Noto Sans Limbu, Noto Sans Lisu, Noto Sans Mahajani, Noto Sans Malayalam, Noto Sans Mandaic, Noto Sans Masaram Gondi, Noto Sans Medefaidrin, Noto Sans Meetei Mayek, Noto Sans Mende Kikakui, Noto Sans Miao, Noto Sans Modi, Noto Sans Mongolian, Noto Sans Mro, Noto Sans Myanmar, Noto Sans Multani, Noto Sans Newa, Noto Sans New Tai Lue, Noto Sans NKo, Noto Sans Ol Chiki, Noto Sans Oriya, Noto Sans Osage, Noto Sans Osmanya, Noto Sans Pahawh Hmong, Noto Sans Pau Cin Hau, Noto Sans Rejang, Noto Sans Runic, Noto Sans Samaritan, Noto Sans Saurashtra, Noto Sans Sharada, Noto Sans Shavian, Noto Sans Sinhala, Noto Sans Sora Sompeng, Noto Sans Soyombo, Noto Sans Sundanese, Noto Sans Syloti Nagri, Noto Sans Symbols 2, Noto Sans Symbols, Noto Sans Syriac, Noto Sans Tagalog, Noto Sans Tagbanwa, Noto Sans Tai Le, Noto Sans Tai Tham, Noto Sans Tai Viet, Noto Sans Takri, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Tifinagh Adrar, Noto Sans Tifinagh Agraw Imazighen, Noto Sans Tifinagh Ahaggar, Noto Sans Tifinagh Air, Noto Sans Tifinagh APT, Noto Sans Tifinagh Azawagh, Noto Sans Tifinagh Ghat, Noto Sans Tifinagh Hawad, Noto Sans Tifinagh, Noto Sans Tifinagh Rhissa Ixa, Noto Sans Tifinagh SIL, Noto Sans Tifinagh Tawellemmet, Noto Sans Tirhuta, Noto Sans Vai, Noto Sans Wancho, Noto Sans Warang Citi, Noto Sans Yi, Noto Sans Zanabazar Square, Noto Serif Armenian, Noto Serif Balinese, Noto Serif Bengali, Noto Serif Devanagari, Noto Serif Dogra, Noto Serif Ethiopic, Noto Serif Georgian, Noto Serif Grantha, Noto Serif Gujarati, Noto Serif Gurmukhi, Noto Serif Hebrew, Noto Serif Kannada, Noto Serif Khmer, Noto Serif Khojki, Noto Serif Lao, Noto Serif Malayalam, Noto Serif Myanmar, Noto Serif NP Hmong, Noto Serif Sinhala, Noto Serif Tamil, Noto Serif Telugu, Noto Serif Tibetan, Noto Serif Yezidi"); // Armenian pref("font.name-list.serif.x-armn", "Noto Serif Armenian, Times, Times New Roman"); ===================================== gfx/thebes/gfxPlatformFontList.cpp ===================================== @@ -401,12 +401,6 @@ void gfxPlatformFontList::ApplyWhitelist() { AutoTArray<RefPtr<gfxFontFamily>, 128> accepted; bool whitelistedFontFound = false; for (const auto& entry : mFontFamilies) { - if (entry.GetData()->IsHidden()) { - // Hidden system fonts are exempt from whitelisting, but don't count - // towards determining whether we "kept" any (user-visible) fonts - accepted.AppendElement(entry.GetData()); - continue; - } nsAutoCString fontFamilyName(entry.GetKey()); ToLowerCase(fontFamilyName); if (familyNamesWhitelist.Contains(fontFamilyName)) { @@ -442,8 +436,7 @@ void gfxPlatformFontList::ApplyWhitelist( AutoTArray<fontlist::Family::InitData, 128> accepted; bool keptNonHidden = false; for (auto& f : aFamilies) { - if (f.mVisibility == FontVisibility::Hidden || - familyNamesWhitelist.Contains(f.mKey)) { + if (familyNamesWhitelist.Contains(f.mKey)) { accepted.AppendElement(f); if (f.mVisibility != FontVisibility::Hidden) { keptNonHidden = true; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/01ceac… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/01ceac… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.8.0esr-13.5-1] 2 commits: fixup! Firefox preference overrides.
by Pier Angelo Vendrame (@pierov) 06 Mar '24

06 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 406293f5 by Pier Angelo Vendrame at 2024-03-06T11:30:40+01:00 fixup! Firefox preference overrides. Bug 42377: Hidden fonts should obey the allow list. Remove .Helvetica Neue DeskInterface from the allow list. This font might not be actually available, and in any case fonts starting with period will not be displayed by the browser. - - - - - a8c62f72 by Pier Angelo Vendrame at 2024-03-06T17:00:49+01:00 Bug 42377: Hidden fonts should obey the allow list. Hidden font families were automatically added to the `font.system.whitelist`, which is a behavior that conflicts with our font picking. - - - - - 2 changed files: - browser/app/profile/001-base-profile.js - gfx/thebes/gfxPlatformFontList.cpp Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -656,7 +656,7 @@ pref("toolkit.winRegisterApplicationRestart", false); pref("gfx.bundled-fonts.activate", 1); #ifdef XP_MACOSX -pref("font.system.whitelist", "AppleGothic, Apple Color Emoji, Arial, Courier, Courier New, Geneva, Georgia, Heiti TC, Helvetica, Helvetica Neue, .Helvetica Neue DeskInterface, Hiragino Kaku Gothic ProN, Kailasa, Lucida Grande, Menlo, Monaco, PingFang HK, PingFang SC, PingFang TC, Songti SC, Songti TC, Tahoma, Thonburi, Times, Times New Roman, Verdana, STIX Two Math, Noto Sans Adlam, Noto Sans Armenian, Noto Sans Balinese, Noto Sans Bamum, Noto Sans Bassa Vah, Noto Sans Batak, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Buhid, Noto Sans Canadian Aboriginal, Noto Sans Chakma, Noto Sans Cham, Noto Sans Cherokee, Noto Sans Coptic, Noto Sans Deseret, Noto Sans Devanagari, Noto Sans Elbasan, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Grantha, Noto Sans Gujarati, Noto Sans Gunjala Gondi, Noto Sans Gurmukhi, Noto Sans Hanifi Rohingya, Noto Sans Hanunoo, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Javanese, Noto Sans Kayah Li, Noto Sans Khojki, Noto Sans Khudawadi, Noto Sans Lao, Noto Sans Lepcha, Noto Sans Limbu, Noto Sans Lisu, Noto Sans Mahajani, Noto Sans Malayalam, Noto Sans Mandaic, Noto Sans Masaram Gondi, Noto Sans Medefaidrin, Noto Sans Meetei Mayek, Noto Sans Mende Kikakui, Noto Sans Miao, Noto Sans Modi, Noto Sans Mongolian, Noto Sans Mro, Noto Sans Myanmar, Noto Sans Multani, Noto Sans Newa, Noto Sans New Tai Lue, Noto Sans NKo, Noto Sans Ol Chiki, Noto Sans Oriya, Noto Sans Osage, Noto Sans Osmanya, Noto Sans Pahawh Hmong, Noto Sans Pau Cin Hau, Noto Sans Rejang, Noto Sans Runic, Noto Sans Samaritan, Noto Sans Saurashtra, Noto Sans Sharada, Noto Sans Shavian, Noto Sans Sinhala, Noto Sans Sora Sompeng, Noto Sans Soyombo, Noto Sans Sundanese, Noto Sans Syloti Nagri, Noto Sans Symbols 2, Noto Sans Symbols, Noto Sans Syriac, Noto Sans Tagalog, Noto Sans Tagbanwa, Noto Sans Tai Le, Noto Sans Tai Tham, Noto Sans Tai Viet, Noto Sans Takri, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Tifinagh Adrar, Noto Sans Tifinagh Agraw Imazighen, Noto Sans Tifinagh Ahaggar, Noto Sans Tifinagh Air, Noto Sans Tifinagh APT, Noto Sans Tifinagh Azawagh, Noto Sans Tifinagh Ghat, Noto Sans Tifinagh Hawad, Noto Sans Tifinagh, Noto Sans Tifinagh Rhissa Ixa, Noto Sans Tifinagh SIL, Noto Sans Tifinagh Tawellemmet, Noto Sans Tirhuta, Noto Sans Vai, Noto Sans Wancho, Noto Sans Warang Citi, Noto Sans Yi, Noto Sans Zanabazar Square, Noto Serif Armenian, Noto Serif Balinese, Noto Serif Bengali, Noto Serif Devanagari, Noto Serif Dogra, Noto Serif Ethiopic, Noto Serif Georgian, Noto Serif Grantha, Noto Serif Gujarati, Noto Serif Gurmukhi, Noto Serif Hebrew, Noto Serif Kannada, Noto Serif Khmer, Noto Serif Khojki, Noto Serif Lao, Noto Serif Malayalam, Noto Serif Myanmar, Noto Serif NP Hmong, Noto Serif Sinhala, Noto Serif Tamil, Noto Serif Telugu, Noto Serif Tibetan, Noto Serif Yezidi"); +pref("font.system.whitelist", "AppleGothic, Apple Color Emoji, Arial, Courier, Courier New, Geneva, Georgia, Heiti TC, Helvetica, Helvetica Neue, Hiragino Kaku Gothic ProN, Kailasa, Lucida Grande, Menlo, Monaco, PingFang HK, PingFang SC, PingFang TC, Songti SC, Songti TC, Tahoma, Thonburi, Times, Times New Roman, Verdana, STIX Two Math, Noto Sans Adlam, Noto Sans Armenian, Noto Sans Balinese, Noto Sans Bamum, Noto Sans Bassa Vah, Noto Sans Batak, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Buhid, Noto Sans Canadian Aboriginal, Noto Sans Chakma, Noto Sans Cham, Noto Sans Cherokee, Noto Sans Coptic, Noto Sans Deseret, Noto Sans Devanagari, Noto Sans Elbasan, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Grantha, Noto Sans Gujarati, Noto Sans Gunjala Gondi, Noto Sans Gurmukhi, Noto Sans Hanifi Rohingya, Noto Sans Hanunoo, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Javanese, Noto Sans Kayah Li, Noto Sans Khojki, Noto Sans Khudawadi, Noto Sans Lao, Noto Sans Lepcha, Noto Sans Limbu, Noto Sans Lisu, Noto Sans Mahajani, Noto Sans Malayalam, Noto Sans Mandaic, Noto Sans Masaram Gondi, Noto Sans Medefaidrin, Noto Sans Meetei Mayek, Noto Sans Mende Kikakui, Noto Sans Miao, Noto Sans Modi, Noto Sans Mongolian, Noto Sans Mro, Noto Sans Myanmar, Noto Sans Multani, Noto Sans Newa, Noto Sans New Tai Lue, Noto Sans NKo, Noto Sans Ol Chiki, Noto Sans Oriya, Noto Sans Osage, Noto Sans Osmanya, Noto Sans Pahawh Hmong, Noto Sans Pau Cin Hau, Noto Sans Rejang, Noto Sans Runic, Noto Sans Samaritan, Noto Sans Saurashtra, Noto Sans Sharada, Noto Sans Shavian, Noto Sans Sinhala, Noto Sans Sora Sompeng, Noto Sans Soyombo, Noto Sans Sundanese, Noto Sans Syloti Nagri, Noto Sans Symbols 2, Noto Sans Symbols, Noto Sans Syriac, Noto Sans Tagalog, Noto Sans Tagbanwa, Noto Sans Tai Le, Noto Sans Tai Tham, Noto Sans Tai Viet, Noto Sans Takri, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Tifinagh Adrar, Noto Sans Tifinagh Agraw Imazighen, Noto Sans Tifinagh Ahaggar, Noto Sans Tifinagh Air, Noto Sans Tifinagh APT, Noto Sans Tifinagh Azawagh, Noto Sans Tifinagh Ghat, Noto Sans Tifinagh Hawad, Noto Sans Tifinagh, Noto Sans Tifinagh Rhissa Ixa, Noto Sans Tifinagh SIL, Noto Sans Tifinagh Tawellemmet, Noto Sans Tirhuta, Noto Sans Vai, Noto Sans Wancho, Noto Sans Warang Citi, Noto Sans Yi, Noto Sans Zanabazar Square, Noto Serif Armenian, Noto Serif Balinese, Noto Serif Bengali, Noto Serif Devanagari, Noto Serif Dogra, Noto Serif Ethiopic, Noto Serif Georgian, Noto Serif Grantha, Noto Serif Gujarati, Noto Serif Gurmukhi, Noto Serif Hebrew, Noto Serif Kannada, Noto Serif Khmer, Noto Serif Khojki, Noto Serif Lao, Noto Serif Malayalam, Noto Serif Myanmar, Noto Serif NP Hmong, Noto Serif Sinhala, Noto Serif Tamil, Noto Serif Telugu, Noto Serif Tibetan, Noto Serif Yezidi"); // Armenian pref("font.name-list.serif.x-armn", "Noto Serif Armenian, Times, Times New Roman"); ===================================== gfx/thebes/gfxPlatformFontList.cpp ===================================== @@ -401,12 +401,6 @@ void gfxPlatformFontList::ApplyWhitelist() { AutoTArray<RefPtr<gfxFontFamily>, 128> accepted; bool whitelistedFontFound = false; for (const auto& entry : mFontFamilies) { - if (entry.GetData()->IsHidden()) { - // Hidden system fonts are exempt from whitelisting, but don't count - // towards determining whether we "kept" any (user-visible) fonts - accepted.AppendElement(entry.GetData()); - continue; - } nsAutoCString fontFamilyName(entry.GetKey()); ToLowerCase(fontFamilyName); if (familyNamesWhitelist.Contains(fontFamilyName)) { @@ -442,8 +436,7 @@ void gfxPlatformFontList::ApplyWhitelist( AutoTArray<fontlist::Family::InitData, 128> accepted; bool keptNonHidden = false; for (auto& f : aFamilies) { - if (f.mVisibility == FontVisibility::Hidden || - familyNamesWhitelist.Contains(f.mKey)) { + if (familyNamesWhitelist.Contains(f.mKey)) { accepted.AppendElement(f); if (f.mVisibility != FontVisibility::Hidden) { keptNonHidden = true; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/a85148… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/a85148… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-update-responses][main] release: new version, 13.0.11
by richard (@richard) 06 Mar '24

06 Mar '24
richard pushed to branch main at The Tor Project / Applications / Tor Browser update responses Commits: 5c370af8 by Richard Pospesel at 2024-03-06T12:51:03+00:00 release: new version, 13.0.11 - - - - - 30 changed files: - update_3/release/.htaccess - + update_3/release/13.0.10-13.0.11-linux-i686-ALL.xml - + update_3/release/13.0.10-13.0.11-linux-x86_64-ALL.xml - + update_3/release/13.0.10-13.0.11-macos-ALL.xml - + update_3/release/13.0.10-13.0.11-windows-i686-ALL.xml - + update_3/release/13.0.10-13.0.11-windows-x86_64-ALL.xml - − update_3/release/13.0.10-linux-i686-ALL.xml - − update_3/release/13.0.10-linux-x86_64-ALL.xml - − update_3/release/13.0.10-macos-ALL.xml - − update_3/release/13.0.10-windows-i686-ALL.xml - − update_3/release/13.0.10-windows-x86_64-ALL.xml - + update_3/release/13.0.11-linux-i686-ALL.xml - + update_3/release/13.0.11-linux-x86_64-ALL.xml - + update_3/release/13.0.11-macos-ALL.xml - + update_3/release/13.0.11-windows-i686-ALL.xml - + update_3/release/13.0.11-windows-x86_64-ALL.xml - − update_3/release/13.0.7-13.0.10-linux-i686-ALL.xml - − update_3/release/13.0.7-13.0.10-linux-x86_64-ALL.xml - − update_3/release/13.0.7-13.0.10-macos-ALL.xml - − update_3/release/13.0.7-13.0.10-windows-i686-ALL.xml - − update_3/release/13.0.7-13.0.10-windows-x86_64-ALL.xml - − update_3/release/13.0.8-13.0.10-linux-i686-ALL.xml - − update_3/release/13.0.8-13.0.10-linux-x86_64-ALL.xml - − update_3/release/13.0.8-13.0.10-macos-ALL.xml - − update_3/release/13.0.8-13.0.10-windows-i686-ALL.xml - − update_3/release/13.0.8-13.0.10-windows-x86_64-ALL.xml - + update_3/release/13.0.8-13.0.11-linux-i686-ALL.xml - + update_3/release/13.0.8-13.0.11-linux-x86_64-ALL.xml - + update_3/release/13.0.8-13.0.11-macos-ALL.xml - + update_3/release/13.0.8-13.0.11-windows-i686-ALL.xml The diff was not included because it is too large. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build] Pushed new tag tbb-13.0.11-build1
by richard (@richard) 05 Mar '24

05 Mar '24
richard pushed new tag tbb-13.0.11-build1 at The Tor Project / Applications / tor-browser-build -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/tree/tbb… 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.0] Bug 41101: Prepare Tor Browser Stable 13.0.11.
by richard (@richard) 05 Mar '24

05 Mar '24
richard pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build Commits: 3a0bc8e6 by Pier Angelo Vendrame at 2024-03-05T17:38:36+01:00 Bug 41101: Prepare Tor Browser Stable 13.0.11. This is a Tor Browser-only release to update the domain front CDN. - - - - - 7 changed files: - projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt - projects/browser/allowed_addons.json - projects/firefox-android/config - projects/firefox/config - projects/manual/config - projects/translation/config - rbm.conf Changes: ===================================== projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt ===================================== @@ -1,3 +1,59 @@ +Tor Browser 13.0.11 - March 06 2024 + * All Platforms + * Bug 42435: Update moat domain fronting configuration [tor-browser] + * Build System + * All Platforms + * Bug 41085: kick_devmole_build script prints wrong URL for Mullvad's build hashes [tor-browser-build] + * Bug 41097: authenticode-timestamping.sh fails to run again because tmp-timestamp already exists [tor-browser-build] + +Tor Browser 13.5a5 - February 28 2024 + * All Platforms + * Updated OpenSSL to 3.0.13 + * Updated Snowflake to 2.9.0 + * Bug 42376: The placeholder of datetime inputs keeps being localized when spoof English is on [tor-browser] + * Bug 42378: spoof english + htmlform <details> can leak app language [tor-browser] + * Bug 42390: Betterboxing: make the decorator border disappear when the corners are flat [tor-browser] + * Bug 42397: Change RFP-spoofed Timezone from UTC to a real-world, less discriminable one [tor-browser] + * Bug 42412: Rebase Tor Browser Alpha onto 115.8.0esr [tor-browser] + * Bug 41079: Bump version of Snowflake to v2.9.0 [tor-browser-build] + * Windows + macOS + Linux + * Updated Firefox to 115.8.0esr + * Bug 41814: Change "vanilla bridge:" to "Tor bridge:" in bridge cards [tor-browser] + * Bug 42270: Implement design changes to QR code dialog [tor-browser] + * Bug 42389: Betterboxing: gradient is never shown [tor-browser] + * Bug 42398: Include Alpha and Nightly in MOZ_APP_DISPLAYNAME (and possibly in other places) [tor-browser] + * Bug 42414: Show ellipsis when the tor bridge address overflows [tor-browser] + * Bug 42415: Improve focus styling for forced focus in bridge settings [tor-browser] + * Bug 42421: Remove bridge option should be hidden for Lox bridges [tor-browser] + * Bug 42423: Move temporary Lox Fluent strings to new file [tor-browser] + * Bug 42425: Improve accessibility of the bridge emoji cells [tor-browser] + * Android + * Updated GeckoView to 115.8.0esr + * Bug 42253: Remove "New private tab" action and widget [tor-browser] + * Bug 42402: Remove Android YEC strings [tor-browser] + * Bug 42407: TTP-03-010 WP3: Potential phishing [tor-browser] + * Bug 42416: Backport Android security fixes from Firefox 123 [tor-browser] + * macOS + * Bug 40569: Create build-specific installer for macOS [tor-browser-build] + * Build System + * All Platforms + * Updated Go to 1.20.14 and 1.21.7 + * Bug 41081: Update detailsURL in tools/signing/nightly/update-responses-base-config.yml [tor-browser-build] + * Bug 41085: kick_devmole_build script prints wrong URL for Mullvad's build hashes [tor-browser-build] + * Bug 40068: Switch from IO::CaptureOutput to Capture::Tiny [rbm] + * Bug 40069: Make stdout and stderr utf8 [rbm] + * Bug 40071: Add an option to create zip files using 7z [rbm] + * Bug 40072: Move capture_exec to a separate module [rbm] + * Windows + * Bug 41076: Include the ShellLink plugin in NSIS [tor-browser-build] + * macOS + * Bug 41084: $app_bundle is missing the final .app in projects/firefox/build [tor-browser-build] + * Android + * Bug 42399: Re-enable minimization of JS for Android [tor-browser] + * Bug 41080: Re-pack omni.ja with 7-zip on Android [tor-browser-build] + * Bug 41092: Use an uncompressed omni.ja to improve final apk compression. [tor-browser-build] + * Bug 41093: Sign unsigned APKs instead of the QA-signed ones [tor-browser-build] + Tor Browser 13.0.10 - February 20 2024 * All Platforms * Updated OpenSSL to 3.0.13 @@ -239,7 +295,6 @@ Tor Browser 13.5a2 - November 27 2023 * Bug 42302: The allowed ports string contains a typo [tor-browser] * Windows + macOS + Linux * Updated Firefox to 115.5.0esr - * Bug 42231: Improve the network monitor patch for http onion resources [tor-browser] * Bug 42072: YEC 2023 Takeover for Desktop Stable [tor-browser] * Bug 42188: Donations are asked repeatedly when I click New identity button [tor-browser] * Bug 42194: Blank Net Error page on name resolution failure [tor-browser] ===================================== projects/browser/allowed_addons.json ===================================== @@ -11,13 +11,13 @@ "authors": [ { "id": 13299734, - "name": "Alexander Shutau", + "name": "Dark Reader Ltd", "url": "https://addons.mozilla.org/en-US/firefox/user/13299734/", "username": "alexanderby", - "picture_url": "https://addons.mozilla.org/user-media/userpics/34/9734/13299734/13299734.pn…" + "picture_url": "https://addons.mozilla.org/user-media/userpics/34/9734/13299734/13299734.pn…" } ], - "average_daily_users": 1145406, + "average_daily_users": 1156101, "categories": { "firefox": [ "web-development", @@ -28,18 +28,18 @@ "contributions_url": "https://opencollective.com/darkreader?utm_content=product-page-contribute&u…", "created": "2017-09-19T07:03:00Z", "current_version": { - "id": 5688757, + "id": 5698881, "compatibility": { "firefox": { - "min": "54.0", + "min": "78.0", "max": "*" }, "android": { - "min": "54.0", + "min": "113.0", "max": "*" } }, - "edit_url": "https://addons.mozilla.org/en-US/developers/addon/darkreader/versions/56887…", + "edit_url": "https://addons.mozilla.org/en-US/developers/addon/darkreader/versions/56988…", "is_strict_compatibility_enabled": false, "license": { "id": 22, @@ -50,22 +50,22 @@ "url": "http://www.opensource.org/license/mit" }, "release_notes": { - "en-US": "- Fixed errors when Adopted Stylesheets were not present.\n- Fixed breaking on ::view-transition selectors (Airbnb issue).\n- Users' fixes for websites." + "en-US": "- Optimized Adopted Style Sheets changes handling.\n- Fixed watching for style/link element position changes.\n- Fixed processing large style elements loaded by chunks.\n- Fixed enabling the extension with a hotkey after it was disabled automatically.\n- Fixed sliders in mobile UI.\n- Users' fixes for websites." }, - "reviewed": "2024-02-08T08:33:10Z", - "version": "4.9.77", + "reviewed": "2024-03-05T08:23:41Z", + "version": "4.9.78", "files": [ { - "id": 4233074, - "created": "2024-02-07T11:23:55Z", - "hash": "sha256:931de67e9091c69edd9fd3f348a7ed1de1dce7d136017fed641bd10eb0ae8891", + "id": 4243182, + "created": "2024-02-29T10:00:39Z", + "hash": "sha256:21e08b3f26e9b54257d30f6b2fb2d966d41ace54d2d79ccec55e55517084c7ce", "is_restart_required": false, "is_webextension": true, "is_mozilla_signed_extension": false, "platform": "all", - "size": 725369, + "size": 727208, "status": "public", - "url": "https://addons.mozilla.org/firefox/downloads/file/4233074/darkreader-4.9.77…", + "url": "https://addons.mozilla.org/firefox/downloads/file/4243182/darkreader-4.9.78…", "permissions": [ "alarms", "contextMenus", @@ -143,7 +143,7 @@ }, "is_disabled": false, "is_experimental": false, - "last_updated": "2024-02-08T08:33:10Z", + "last_updated": "2024-03-05T08:23:41Z", "name": { "ar": "Dark Reader", "bn": "Dark Reader", @@ -218,10 +218,10 @@ "category": "recommended" }, "ratings": { - "average": 4.543, - "bayesian_average": 4.541876920708902, - "count": 5422, - "text_count": 1714 + "average": 4.5383, + "bayesian_average": 4.537199119336593, + "count": 5475, + "text_count": 1727 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/reviews/", "requires_payment": false, @@ -318,7 +318,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/versions/", - "weekly_downloads": 24238 + "weekly_downloads": 23635 }, "notes": null }, @@ -334,7 +334,7 @@ "picture_url": "https://addons.mozilla.org/user-media/userpics/56/7656/6937656/6937656.png?…" } ], - "average_daily_users": 266930, + "average_daily_users": 267126, "categories": { "firefox": [ "privacy-security" @@ -547,10 +547,10 @@ "category": "recommended" }, "ratings": { - "average": 4.8027, - "bayesian_average": 4.798069751523067, - "count": 1404, - "text_count": 252 + "average": 4.7977, + "bayesian_average": 4.793130609775481, + "count": 1409, + "text_count": 254 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/reviews/", "requires_payment": false, @@ -635,7 +635,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/versions/", - "weekly_downloads": 3379 + "weekly_downloads": 3273 }, "notes": null }, @@ -651,7 +651,7 @@ "picture_url": "https://addons.mozilla.org/user-media/userpics/73/4073/5474073/5474073.png?…" } ], - "average_daily_users": 1230616, + "average_daily_users": 1233259, "categories": { "firefox": [ "privacy-security" @@ -1170,10 +1170,10 @@ "category": "recommended" }, "ratings": { - "average": 4.7951, - "bayesian_average": 4.792379053678419, - "count": 2387, - "text_count": 454 + "average": 4.7974, + "bayesian_average": 4.79471376173004, + "count": 2399, + "text_count": 457 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/reviews/", "requires_payment": false, @@ -1197,7 +1197,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/versions/", - "weekly_downloads": 22274 + "weekly_downloads": 20288 }, "notes": null }, @@ -1213,7 +1213,7 @@ "picture_url": null } ], - "average_daily_users": 7720487, + "average_daily_users": 7782292, "categories": { "firefox": [ "privacy-security" @@ -1222,7 +1222,7 @@ "contributions_url": "", "created": "2015-04-25T07:26:22Z", "current_version": { - "id": 5672315, + "id": 5693353, "compatibility": { "firefox": { "min": "78.0", @@ -1233,7 +1233,7 @@ "max": "*" } }, - "edit_url": "https://addons.mozilla.org/en-US/developers/addon/ublock-origin/versions/56…", + "edit_url": "https://addons.mozilla.org/en-US/developers/addon/ublock-origin/versions/56…", "is_strict_compatibility_enabled": false, "license": { "id": 6, @@ -1244,22 +1244,22 @@ "url": "http://www.gnu.org/licenses/gpl-3.0.html" }, "release_notes": { - "en-US": "See complete release notes for <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/514b85ddd154153a63fe9c…" rel=\"nofollow\">1.55.0</a>.\n\n<b>Fixes / changes</b>\n\n<ul><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/1e03af965f6b7a76aa94f6…" rel=\"nofollow\">Mind drop events in filter expression field of logger</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e018352ca30c61b4a80c2a…" rel=\"nofollow\">Improve <code>xml-prune</code> scriptlet</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/ec6b213ac8c38077b676e1…" rel=\"nofollow\">Fix message entries overflowing in logger</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/a6311ada7aec5e36a802c2…" rel=\"nofollow\">Add support for <code>application/x-javascript</code> in <code>replace=</code> option</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8b0f4ac6d1a68a10f0736a…" rel=\"nofollow\">Extend support for differential updates to imported lists</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/5e2218ad38a67bad16b5a2…" rel=\"nofollow\">Add detection of mismatched <code>!#if</code>-<code>!#endif</code> in linter</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/d3d5708132bbca2b9b3232…" rel=\"nofollow\">Support links to update lists which are differential update-friendly</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/5da8dae3bfc5fd15895013…" rel=\"nofollow\">Remove \"Purge all caches\" button from \"Filter lists\" pane</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f9bd0d08194525f2457cf5…" rel=\"nofollow\">Add support for <code>all</code> list token in updater-link feature</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f266c7ca3a6228a20999be…" rel=\"nofollow\">Fix logging of broad exception filter <code>#@#+js()</code></a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/444dcf1f11a8dacef0553e…" rel=\"nofollow\">Improve <code>no-xhr-if</code> scriptlet</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/5f699ca11537ba17c330a8…" rel=\"nofollow\">Ensure cache storage backend is selected before access</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/983fbc3b50419c274040d9…" rel=\"nofollow\">Fix popup panel rendering when embedded in logger</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/2f972ff52f4edc3dc99084…" rel=\"nofollow\">Add visual hint in support information re. differential update</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/75541b4012443bd5602cc0…" rel=\"nofollow\">Remove obsolete web accessible resources</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/8eb76fbc2577032e63698e…" rel=\"nofollow\">Rename <code>urltransform</code> to <code>uritransform</code></a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/43e266ca8d07228388c2a6…" rel=\"nofollow\">Vertically expand/collapse in steps in dom inspector</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/d1f0669c5cf9357a9528d8…" rel=\"nofollow\">Reset the DOM inspector when URL in top context changes</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/d2f70a310ccc2ce2b2c97c…" rel=\"nofollow\">Support shadow-piercing combinator <code>&gt;&gt;&gt;</code> in <code>trusted-click-element</code></a></li><li>[...]</li></ul>\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/7d13ab8046ad75d1230ea5…" rel=\"nofollow\">Commits history since last version</a>" + "en-US": "See complete release notes for <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/d2b406aad3a1689d93242d…" rel=\"nofollow\">1.56.0</a>.\n\n<b>Fixes / changes</b>\n\n<ul><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/39dfcbf564824557b9576b…" rel=\"nofollow\">Mind that multiple <code>uritransform</code> may apply to a single request</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/a81992f7ab9a23a438d94b…" rel=\"nofollow\">Fix incorrect built-in filtering expression in logger</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e88d43f67c0962312b76d6…" rel=\"nofollow\">Fix improper invalidation of valid <code>uritransform</code> exception filters</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/0f3549a7d85e6616619d00…" rel=\"nofollow\">Improve <code>prevent-addEventListener</code> scriptlet</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/378d2611f7de534428615a…" rel=\"nofollow\">Fix Chartbeat flicker control <code>div</code>'s</a> (by @ryanbr)</li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/bbf6c43dcdb62ea74fd182…" rel=\"nofollow\">Fix potential exfiltration of browsing history by a rogue list author through <code>permissions=</code></a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/93a9a64cf8ec890f9a478c…" rel=\"nofollow\">Ignore event handler-related attributes in <code>set-attr</code> scriptlet</a> (suggested by @distinctmondaylilac)</li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/4ed2b2948421552ce1c170…" rel=\"nofollow\">Fix potential exfiltration of browsing history by a rogue list author through <code>csp=</code></a> (reported by @distinctmondaylilac)</li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/0fc7f9c779a1eb0dde44e6…" rel=\"nofollow\">Output scriptlet logging information to the logger</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/0dc5f09464b305050627d6…" rel=\"nofollow\">Fix decompiling of scriptlet parameters</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/5a4d736ff47d1505619f0b…" rel=\"nofollow\">Add support for <code>extraMatch</code> in <code>trusted-click-element</code> scriptlet</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/439735e662e837889e0dbe…" rel=\"nofollow\">Remove minimum height constraint from \"My filters\" pane</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/ef423b580af2dea4a9a044…" rel=\"nofollow\">Unregister all scriptlets when disabling uBO on a specific site</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e06c923bfb016c184026f7…" rel=\"nofollow\">Allow <code>uritransform</code> to process the hash part of a URL</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/3e0f743a60bf78bced8580…" rel=\"nofollow\">Remember presentation state of \"My rules\" pane</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/819053ea32148fd9ad7c6c…" rel=\"nofollow\">Fix improperly assembled <code>!#include</code> sublists</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/9506d56abc46f95d7412b9…" rel=\"nofollow\">Mark procedural filters with pseudo-elements selector as invalid</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/9b18234e17c6871170acd1…" rel=\"nofollow\">Prevent access to picker when \"My filters\" is not enabled</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/f990e686b6eacbbd0bd43a…" rel=\"nofollow\">Provide visual feedback when applying changes in \"Filter lists\" pane</a></li><li>[...]</li></ul>\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/738859f7b07778caaaa182…" rel=\"nofollow\">Commits history since last version</a>" }, - "reviewed": "2024-01-08T10:26:54Z", - "version": "1.55.0", + "reviewed": "2024-02-20T18:51:52Z", + "version": "1.56.0", "files": [ { - "id": 4216633, - "created": "2024-01-03T20:24:50Z", - "hash": "sha256:a02ca1d32737c3437f97553e5caaead6479a66ac1f8ff3b84a06cfa6bb0c7647", + "id": 4237670, + "created": "2024-02-17T14:54:31Z", + "hash": "sha256:f5fbeeac511ca4e10a74723413727fda8e6f9236c726d16eb54ade1fbe7be5be", "is_restart_required": false, "is_webextension": true, "is_mozilla_signed_extension": false, "platform": "all", - "size": 3647341, + "size": 3819727, "status": "public", - "url": "https://addons.mozilla.org/firefox/downloads/file/4216633/ublock_origin-1.5…", + "url": "https://addons.mozilla.org/firefox/downloads/file/4237670/ublock_origin-1.5…", "permissions": [ "alarms", "dns", @@ -1379,7 +1379,7 @@ }, "is_disabled": false, "is_experimental": false, - "last_updated": "2024-02-02T17:55:27Z", + "last_updated": "2024-03-04T01:35:20Z", "name": { "ar": "uBlock Origin", "bg": "uBlock Origin", @@ -1524,10 +1524,10 @@ "category": "recommended" }, "ratings": { - "average": 4.7881, - "bayesian_average": 4.787723506381607, - "count": 17231, - "text_count": 4500 + "average": 4.7889, + "bayesian_average": 4.78852910141135, + "count": 17348, + "text_count": 4523 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/reviews/", "requires_payment": false, @@ -1590,7 +1590,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/versions/", - "weekly_downloads": 177322 + "weekly_downloads": 164561 }, "notes": null }, @@ -1606,7 +1606,7 @@ "picture_url": null } ], - "average_daily_users": 178336, + "average_daily_users": 178548, "categories": { "firefox": [ "photos-music-videos", @@ -1702,10 +1702,10 @@ "category": "recommended" }, "ratings": { - "average": 4.4586, - "bayesian_average": 4.453632190728077, - "count": 1197, - "text_count": 458 + "average": 4.4478, + "bayesian_average": 4.442927736258425, + "count": 1206, + "text_count": 462 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/re…", "requires_payment": false, @@ -1727,7 +1727,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/ve…", - "weekly_downloads": 338 + "weekly_downloads": 351 }, "notes": null }, @@ -1743,7 +1743,7 @@ "picture_url": null } ], - "average_daily_users": 80426, + "average_daily_users": 78821, "categories": { "firefox": [ "privacy-security", @@ -1878,7 +1878,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/versions/", - "weekly_downloads": 1192 + "weekly_downloads": 1812 }, "notes": null }, @@ -1894,7 +1894,7 @@ "picture_url": "https://addons.mozilla.org/user-media/userpics/64/9064/12929064/12929064.pn…" } ], - "average_daily_users": 303170, + "average_daily_users": 307636, "categories": { "firefox": [ "search-tools", @@ -2111,10 +2111,10 @@ "category": "recommended" }, "ratings": { - "average": 4.6486, - "bayesian_average": 4.644151267365882, - "count": 1406, - "text_count": 273 + "average": 4.6443, + "bayesian_average": 4.639930009440798, + "count": 1417, + "text_count": 274 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/reviews/", "requires_payment": false, @@ -2137,7 +2137,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/versions/", - "weekly_downloads": 5685 + "weekly_downloads": 5954 }, "notes": null }, @@ -2160,7 +2160,7 @@ "picture_url": null } ], - "average_daily_users": 124960, + "average_daily_users": 124882, "categories": { "firefox": [ "search-tools", @@ -2441,10 +2441,10 @@ "category": "recommended" }, "ratings": { - "average": 4.3708, - "bayesian_average": 4.3664252602275715, - "count": 1327, - "text_count": 375 + "average": 4.3743, + "bayesian_average": 4.369989496152543, + "count": 1336, + "text_count": 378 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/reviews/", "requires_payment": false, @@ -2464,7 +2464,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/versions/", - "weekly_downloads": 23 + "weekly_downloads": 44 }, "notes": null }, @@ -2480,7 +2480,7 @@ "picture_url": "https://addons.mozilla.org/user-media/userpics/43/0143/143/143.png?modified…" } ], - "average_daily_users": 310960, + "average_daily_users": 309662, "categories": { "firefox": [ "web-development", @@ -2667,10 +2667,10 @@ "category": "recommended" }, "ratings": { - "average": 4.3955, - "bayesian_average": 4.3928075540461755, - "count": 2172, - "text_count": 837 + "average": 4.396, + "bayesian_average": 4.393343568847512, + "count": 2182, + "text_count": 840 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/reviews/", "requires_payment": false, @@ -2714,7 +2714,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/versions/", - "weekly_downloads": 7229 + "weekly_downloads": 7462 }, "notes": null }, @@ -2730,7 +2730,7 @@ "picture_url": null } ], - "average_daily_users": 162651, + "average_daily_users": 163018, "categories": { "firefox": [ "photos-music-videos", @@ -2839,10 +2839,10 @@ "category": "recommended" }, "ratings": { - "average": 3.8749, - "bayesian_average": 3.8708093397361107, - "count": 1223, - "text_count": 444 + "average": 3.8731, + "bayesian_average": 3.8690686700002854, + "count": 1229, + "text_count": 445 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/revi…", "requires_payment": false, @@ -2861,7 +2861,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/vers…", - "weekly_downloads": 1653 + "weekly_downloads": 2750 }, "notes": null } ===================================== projects/firefox-android/config ===================================== @@ -16,7 +16,7 @@ container: var: fenix_version: 115.2.1 browser_branch: 13.0-1 - browser_build: 13 + browser_build: 14 variant: Beta # This should be updated when the list of gradle dependencies is changed. gradle_dependencies_version: 1 ===================================== projects/firefox/config ===================================== @@ -18,7 +18,7 @@ var: firefox_version: '[% c("var/firefox_platform_version") %]esr' browser_series: '13.0' browser_branch: '[% c("var/browser_series") %]-1' - browser_build: 1 + browser_build: 2 branding_directory_prefix: 'tb' copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]' nightly_updates_publish_dir: '[% c("var/nightly_updates_publish_dir_prefix") %]nightly-[% c("var/osname") %]' ===================================== projects/manual/config ===================================== @@ -1,7 +1,7 @@ # vim: filetype=yaml sw=2 # To update, see doc/how-to-update-the-manual.txt # Remember to update also the package's hash, with the version! -version: 136210 +version: 148707 filename: 'manual-[% c("version") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]' container: use_container: 1 @@ -23,6 +23,6 @@ input_files: - project: container-image - URL: 'https://build-sources.tbb.torproject.org/manual_[% c("version") %].zip' name: manual - sha256sum: 6731381fd992cf65dd01e56e2b924005af633369da5ac9eb905fd8025255b386 + sha256sum: a765497eaec3a926823812930a78d25048a1df0c4d765b53e87888db09f5d8d8 - filename: packagemanual.py name: package_script ===================================== projects/translation/config ===================================== @@ -12,19 +12,19 @@ compress_tar: 'gz' steps: base-browser: base-browser: '[% INCLUDE build %]' - git_hash: cbd9b6c415ec2edb99237ef67ccd4f033a7b9c2a + git_hash: 16211a4b8524d71525f0ea73c07771c634132b30 targets: nightly: git_hash: 'base-browser' tor-browser: tor-browser: '[% INCLUDE build %]' - git_hash: a50fa943d7428ebe6e4e6b09f175e098a97eec63 + git_hash: 012f643d2d6b04ebf868bf62cdb7ad5b727734f5 targets: nightly: git_hash: 'tor-browser' mullvad-browser: mullvad-browser: '[% INCLUDE build %]' - git_hash: 57de1569da0e2c48fd999a13e555f6b522041993 + git_hash: c5361cb496ae7e047fd9226139537f1fcfc7938d targets: nightly: git_hash: 'mullvad-browser' @@ -32,7 +32,7 @@ steps: fenix: '[% INCLUDE build %]' # We need to bump the commit before releasing but just pointing to a branch # might cause too much rebuidling of the Firefox part. - git_hash: b0b9f5d6908c58e9492e6bdce9e8acdc493b178d + git_hash: e7d263c7ee81d7d9db3410ca880b1aeb107ef784 compress_tar: 'zst' targets: nightly: ===================================== rbm.conf ===================================== @@ -81,13 +81,14 @@ buildconf: git_signtag_opt: '-s' var: - torbrowser_version: '13.0.10' - torbrowser_build: '[% IF c("var/mullvad-browser") %]build2[% ELSE %]build1[% END %]' + torbrowser_version: '13.0.11' + torbrowser_build: 'build1' torbrowser_incremental_from: + # 13.0.11 is Tor Browser-only + - '13.0.10' - '13.0.9' - '[% IF c("var/tor-browser") %]13.0.8[% END %]' - - '13.0.7' - - '[% IF c("var/mullvad-browser") %]13.0.6[% END %]' + - '[% IF c("var/mullvad-browser") %]13.0.7[% END %]' updater_enabled: 1 build_mar: 1 mar_channel_id: '[% c("var/projectname") %]-torproject-[% c("var/channel") %]' View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/3… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/3… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/firefox-android] Pushed new tag firefox-android-115.2.1-13.0-1-build14
by Pier Angelo Vendrame (@pierov) 05 Mar '24

05 Mar '24
Pier Angelo Vendrame pushed new tag firefox-android-115.2.1-13.0-1-build14 at The Tor Project / Applications / firefox-android -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/tree/firef… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/firefox-android][firefox-android-115.2.1-13.0-1] fixup! Update last commit date for tor-browser-build#40992
by Pier Angelo Vendrame (@pierov) 05 Mar '24

05 Mar '24
Pier Angelo Vendrame pushed to branch firefox-android-115.2.1-13.0-1 at The Tor Project / Applications / firefox-android Commits: a36acf93 by Pier Angelo Vendrame at 2024-03-05T17:18:38+01:00 fixup! Update last commit date for tor-browser-build#40992 - - - - - 0 changed files: Changes: View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/a36… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/a36… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser] Pushed new tag tor-browser-115.8.0esr-13.0-1-build2
by Pier Angelo Vendrame (@pierov) 05 Mar '24

05 Mar '24
Pier Angelo Vendrame pushed new tag tor-browser-115.8.0esr-13.0-1-build2 at The Tor Project / Applications / Tor Browser -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.8.0esr-13.0-1] fixup! Bug 40562: Added Tor Browser preferences to 000-tor-browser.js
by Pier Angelo Vendrame (@pierov) 05 Mar '24

05 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.8.0esr-13.0-1 at The Tor Project / Applications / Tor Browser Commits: f4e58357 by Cecylia Bocovich at 2024-03-05T14:06:10+01:00 fixup! Bug 40562: Added Tor Browser preferences to 000-tor-browser.js Bug 42435: Update moat domain fronting configuration - - - - - 1 changed file: - browser/app/profile/000-tor-browser.js Changes: ===================================== browser/app/profile/000-tor-browser.js ===================================== @@ -110,8 +110,8 @@ pref("extensions.torlauncher.torrc_path", ""); pref("extensions.torlauncher.tordatadir_path", ""); // BridgeDB-related preferences (used for Moat). -pref("extensions.torlauncher.bridgedb_front", "foursquare.com"); -pref("extensions.torlauncher.bridgedb_reflector", "https://moat.torproject.org.global.prod.fastly.net/"); +pref("extensions.torlauncher.bridgedb_front", "www.phpmyadmin.net"); +pref("extensions.torlauncher.bridgedb_reflector", "https://1723079976.rsc.cdn77.org"); pref("extensions.torlauncher.moat_service", "https://bridges.torproject.org/moat"); pref("extensions.torlauncher.bridgedb_bridge_type", "obfs4"); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f4e5835… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f4e5835… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.8.0esr-13.5-1] fixup! Bug 40562: Added Tor Browser preferences to 000-tor-browser.js
by Pier Angelo Vendrame (@pierov) 05 Mar '24

05 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: a8514843 by Cecylia Bocovich at 2024-03-05T13:05:31+00:00 fixup! Bug 40562: Added Tor Browser preferences to 000-tor-browser.js Bug 42435: Update moat domain fronting configuration - - - - - 1 changed file: - browser/app/profile/000-tor-browser.js Changes: ===================================== browser/app/profile/000-tor-browser.js ===================================== @@ -109,6 +109,6 @@ pref("extensions.torlauncher.torrc_path", ""); pref("extensions.torlauncher.tordatadir_path", ""); // BridgeDB-related preferences (used for Moat). -pref("extensions.torlauncher.bridgedb_front", "foursquare.com"); -pref("extensions.torlauncher.bridgedb_reflector", "https://moat.torproject.org.global.prod.fastly.net/"); +pref("extensions.torlauncher.bridgedb_front", "www.phpmyadmin.net"); +pref("extensions.torlauncher.bridgedb_reflector", "https://1723079976.rsc.cdn77.org"); pref("extensions.torlauncher.moat_service", "https://bridges.torproject.org/moat"); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/a851484… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/a851484… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.8.0esr-13.0-1] fixup! MB 37: Customization for the about dialog
by Pier Angelo Vendrame (@pierov) 05 Mar '24

05 Mar '24
Pier Angelo Vendrame pushed to branch mullvad-browser-115.8.0esr-13.0-1 at The Tor Project / Applications / Mullvad Browser Commits: a1340c13 by Pier Angelo Vendrame at 2024-03-05T13:59:07+01:00 fixup! MB 37: Customization for the about dialog MB 270: Update support email - - - - - 2 changed files: - browser/base/content/aboutDialog.xhtml - browser/locales/en-US/browser/aboutDialogMullvad.ftl Changes: ===================================== browser/base/content/aboutDialog.xhtml ===================================== @@ -138,7 +138,7 @@ <description class="text-blurb"> <label is="text-link" href="https://mullvad.net/browser" data-l10n-id="mullvad-about-readMore"/> </description> - <description class="text-blurb" data-l10n-id="mullvad-about-feedback"/> + <description class="text-blurb" data-l10n-id="mullvad-about-feedback2" data-l10n-args='{"emailAddress":"support(a)mullvadvpn.net"}'/> </vbox> </vbox> </hbox> ===================================== browser/locales/en-US/browser/aboutDialogMullvad.ftl ===================================== @@ -4,5 +4,5 @@ mullvad-about-desc = { -brand-short-name } is a privacy-focused web browser developed in collaboration between <label data-l10n-name="mullvad-about-mullvadLink">Mullvad VPN</label> and the <label data-l10n-name="mullvad-about-torProjectLink">Tor Project</label>. It’s produced to minimize tracking and fingerprinting. mullvad-about-readMore = Read more -mullvad-about-feedback = Help & feedback: support(a)mullvad.net +mullvad-about-feedback2 = Help & feedback: { $emailAddress } mullvad-about-telemetryLink = Telemetry View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/a13… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/a13… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.8.0esr-13.5-1] fixup! Add built-in bridge lines for Android.
by Pier Angelo Vendrame (@pierov) 05 Mar '24

05 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: c1b6d5ec by Pier Angelo Vendrame at 2024-03-05T13:55:49+01:00 fixup! Add built-in bridge lines for Android. Bug 42427: Do not ship bridges as prefences anymore. Revert &quot;Add built-in bridge lines for Android.&quot; This reverts commit 5f61167d67c8b74bfb104229b9bc42a0bc6997e6. - - - - - 1 changed file: - mobile/android/app/000-tor-browser-android.js Changes: ===================================== mobile/android/app/000-tor-browser-android.js ===================================== @@ -35,68 +35,3 @@ pref("security.webauth.webauthn_enable_android_fido2", false); // Disable the External App Blocker on Android pref("extensions.torbutton.launch_warning", false); - -// Temporarily add the built-in bridges here. - -pref("extensions.torlauncher.default_bridge_recommended_type", "obfs4"); - -// Default bridges. -pref( - "extensions.torlauncher.default_bridge.obfs4.1", - "obfs4 192.95.36.142:443 CDF2E852BF539B82BD10E27E9115A31734E378C2 cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ iat-mode=1" -); -pref( - "extensions.torlauncher.default_bridge.obfs4.2", - "obfs4 37.218.245.14:38224 D9A82D2F9C2F65A18407B1D2B764F130847F8B5D cert=bjRaMrr1BRiAW8IE9U5z27fQaYgOhX1UCmOpg2pFpoMvo6ZgQMzLsaTzzQNTlm7hNcb+Sg iat-mode=0" -); -pref( - "extensions.torlauncher.default_bridge.obfs4.3", - "obfs4 85.31.186.98:443 011F2599C0E9B27EE74B353155E244813763C3E5 cert=ayq0XzCwhpdysn5o0EyDUbmSOx3X/oTEbzDMvczHOdBJKlvIdHHLJGkZARtT4dcBFArPPg iat-mode=0" -); -pref( - "extensions.torlauncher.default_bridge.obfs4.4", - "obfs4 85.31.186.26:443 91A6354697E6B02A386312F68D82CF86824D3606 cert=PBwr+S8JTVZo6MPdHnkTwXJPILWADLqfMGoVvhZClMq/Urndyd42BwX9YFJHZnBB3H0XCw iat-mode=0" -); -pref( - "extensions.torlauncher.default_bridge.obfs4.5", - "obfs4 193.11.166.194:27015 2D82C2E354D531A68469ADF7F878FA6060C6BACA cert=4TLQPJrTSaDffMK7Nbao6LC7G9OW/NHkUwIdjLSS3KYf0Nv4/nQiiI8dY2TcsQx01NniOg iat-mode=0" -); -pref( - "extensions.torlauncher.default_bridge.obfs4.6", - "obfs4 193.11.166.194:27020 86AC7B8D430DAC4117E9F42C9EAED18133863AAF cert=0LDeJH4JzMDtkJJrFphJCiPqKx7loozKN7VNfuukMGfHO0Z8OGdzHVkhVAOfo1mUdv9cMg iat-mode=0" -); -pref( - "extensions.torlauncher.default_bridge.obfs4.7", - "obfs4 193.11.166.194:27025 1AE2C08904527FEA90C4C4F8C1083EA59FBC6FAF cert=ItvYZzW5tn6v3G4UnQa6Qz04Npro6e81AP70YujmK/KXwDFPTs3aHXcHp4n8Vt6w/bv8cA iat-mode=0" -); -pref( - "extensions.torlauncher.default_bridge.obfs4.8", - "obfs4 209.148.46.65:443 74FAD13168806246602538555B5521A0383A1875 cert=ssH+9rP8dG2NLDN2XuFw63hIO/9MNNinLmxQDpVa+7kTOa9/m+tGWT1SmSYpQ9uTBGa6Hw iat-mode=0" -); -pref( - "extensions.torlauncher.default_bridge.obfs4.9", - "obfs4 146.57.248.225:22 10A6CD36A537FCE513A322361547444B393989F0 cert=K1gDtDAIcUfeLqbstggjIw2rtgIKqdIhUlHp82XRqNSq/mtAjp1BIC9vHKJ2FAEpGssTPw iat-mode=0" -); -pref( - "extensions.torlauncher.default_bridge.obfs4.10", - "obfs4 45.145.95.6:27015 C5B7CD6946FF10C5B3E89691A7D3F2C122D2117C cert=TD7PbUO0/0k6xYHMPW3vJxICfkMZNdkRrb63Zhl5j9dW3iRGiCx0A7mPhe5T2EDzQ35+Zw iat-mode=0" -); -pref( - "extensions.torlauncher.default_bridge.obfs4.11", - "obfs4 51.222.13.177:80 5EDAC3B810E12B01F6FD8050D2FD3E277B289A08 cert=2uplIpLQ0q9+0qMFrK5pkaYRDOe460LL9WHBvatgkuRr/SL31wBOEupaMMJ6koRE6Ld0ew iat-mode=0" -); - -pref( - "extensions.torlauncher.default_bridge.meek-azure.1", - "meek_lite 192.0.2.18:80 BE776A53492E1E044A26F17306E1BC46A55A1625 url=https://meek.azureedge.net/ front=ajax.aspnetcdn.com" -); - -pref( - "extensions.torlauncher.default_bridge.snowflake.1", - "snowflake 192.0.2.3:80 2B280B23E1107BB62ABFC40DDCC8824814F80A72 fingerprint=2B280B23E1107BB62ABFC40DDCC8824814F80A72 url=https://snowflake-broker.torproject.net.global.prod.fastly.net/ front=cdn.sstatic.net ice=stun:stun.l.google.com:19302,stun:stun.antisip.com:3478,stun:stun.bluesip.net:3478,stun:stun.dus.net:3478,stun:stun.epygi.com:3478,stun:stun.sonetel.com:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.voys.nl:3478 utls-imitate=hellorandomizedalpn" -); - -pref( - "extensions.torlauncher.default_bridge.snowflake.2", - "snowflake 192.0.2.4:80 8838024498816A039FCBBAB14E6F40A0843051FA fingerprint=8838024498816A039FCBBAB14E6F40A0843051FA url=https://snowflake-broker.torproject.net.global.prod.fastly.net/ front=cdn.sstatic.net ice=stun:stun.l.google.com:19302,stun:stun.antisip.com:3478,stun:stun.bluesip.net:3478,stun:stun.dus.net:3478,stun:stun.epygi.com:3478,stun:stun.sonetel.net:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.voys.nl:3478 utls-imitate=hellorandomizedalpn" -); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/c1b6d5e… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/c1b6d5e… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.8.0esr-13.5-1] fixup! Bug 40926: Implemented the New Identity feature
by ma1 (@ma1) 05 Mar '24

05 Mar '24
ma1 pushed to branch mullvad-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser Commits: 822f5b8b by hackademix at 2024-03-05T10:46:19+01:00 fixup! Bug 40926: Implemented the New Identity feature Bug 42236: Let users decide whether to load their home page on new identity. - - - - - 2 changed files: - browser/components/newidentity/content/newidentity.js - browser/locales/en-US/chrome/browser/newIdentity.properties Changes: ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -10,37 +10,28 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityStrings", () => { ); const brandShortName = brandBundle.GetStringFromName("brandShortName"); - let strings = { - new_identity: "New Identity", - new_identity_sentence_case: "New identity", - new_identity_prompt_title: "Reset your identity?", - new_identity_prompt: `${brandShortName} will close all windows and tabs. All website sessions will be lost. \nRestart ${brandShortName} now to reset your identity?`, - new_identity_restart: `Restart ${brandShortName}`, - new_identity_ask_again: "Never ask me again", - new_identity_menu_accesskey: "I", - }; - let bundle = null; + const fallbackBundle = Services.strings.createBundle( + "resource:///chrome/en-US/locale/browser/newIdentity.properties" + ); + const strings = {}; + const brandedStrings = ["new_identity_prompt", "new_identity_restart"]; + for (let { key } of fallbackBundle.getSimpleEnumeration()) { + strings[key] = fallbackBundle.GetStringFromName(key); + } try { - bundle = Services.strings.createBundle( + const bundle = Services.strings.createBundle( "chrome://browser/locale/newIdentity.properties" ); - } catch (e) { - console.warn("Could not load the New Identity strings"); - } - if (bundle) { for (const key of Object.keys(strings)) { try { strings[key] = bundle.GetStringFromName(key); } catch (e) {} } - strings.new_identity_prompt = strings.new_identity_prompt.replaceAll( - "%S", - brandShortName - ); - strings.new_identity_restart = strings.new_identity_restart.replaceAll( - "%S", - brandShortName - ); + } catch (e) { + console.warn("Could not load localized New Identity strings"); + } + for (let key of brandedStrings) { + strings[key] = strings[key].replaceAll("%S", brandShortName); } return strings; }); @@ -437,10 +428,76 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => { logger.info("Opening a new window"); return new Promise(resolve => { // Open a new window forcing the about:privatebrowsing page (tor-browser#41765) - const win = OpenBrowserWindow({private: "no-home"}); + // unless user explicitly overrides this policy (tor-browser #42236) + const homePref = "browser.startup.homepage"; + const trustedHomePref = "browser.startup.homepage.new_identity"; + const homeURL = Services.prefs.getStringPref(homePref, ""); + const isTrustedHome = + homeURL === "about:tor" || + homeURL.startsWith("chrome://") || // about:blank and other built-ins + homeURL === Services.prefs.getStringPref(trustedHomePref, ""); + const isCustomHome = + Services.prefs.getIntPref("browser.startup.page") === 1; + const win = OpenBrowserWindow({ + private: isCustomHome && isTrustedHome ? "private" : "no-home", + }); // This mechanism to know when the new window is ready is used by // OpenBrowserWindow itself (see its definition in browser.js). - win.addEventListener("MozAfterPaint", () => resolve(), { once: true }); + win.addEventListener( + "MozAfterPaint", + () => { + resolve(); + if (isTrustedHome || !isCustomHome) { + return; + } + const tbl = win.TabsProgressListener; + const { onLocationChange } = tbl; + 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) { + // malformed URL, bail out + return; + } + const label = + NewIdentityStrings.new_identity_home_notification.replace( + "%S", + displayAddress + ); + const callback = () => { + Services.prefs.setStringPref(trustedHomePref, homeURL); + win.BrowserHome(); + }; + const notificationBox = win.gBrowser.getNotificationBox(); + notificationBox.appendNotification( + "new-identity-safe-home", + { + label, + priority: notificationBox.PRIORITY_INFO_MEDIUM, + }, + [ + { + label: NewIdentityStrings.new_identity_home_load_button, + callback, + }, + ] + ); + }; + }, + { once: true } + ); }); } ===================================== browser/locales/en-US/chrome/browser/newIdentity.properties ===================================== @@ -8,3 +8,6 @@ new_identity_restart = Restart %S new_identity_ask_again = Never ask me again # Shown in the File menu (use Alt to show File, if you do not see) new_identity_menu_accesskey = I +new_identity_home_notification = Tor Browser blocked your homepage (%S) from loading because it might recognize your previous session. +# %S is replaced with the custom homepage URL's domain if applicable, or some short-hand of it otherwise +new_identity_home_load_button = Load it anyway View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/822… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/822… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-115.8.0esr-13.5-1] fixup! Bug 40926: Implemented the New Identity feature
by ma1 (@ma1) 05 Mar '24

05 Mar '24
ma1 pushed to branch base-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 01ceac8a by hackademix at 2024-03-05T10:44:20+01:00 fixup! Bug 40926: Implemented the New Identity feature Bug 42236: Let users decide whether to load their home page on new identity. - - - - - 2 changed files: - browser/components/newidentity/content/newidentity.js - browser/locales/en-US/chrome/browser/newIdentity.properties Changes: ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -10,37 +10,28 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityStrings", () => { ); const brandShortName = brandBundle.GetStringFromName("brandShortName"); - let strings = { - new_identity: "New Identity", - new_identity_sentence_case: "New identity", - new_identity_prompt_title: "Reset your identity?", - new_identity_prompt: `${brandShortName} will close all windows and tabs. All website sessions will be lost. \nRestart ${brandShortName} now to reset your identity?`, - new_identity_restart: `Restart ${brandShortName}`, - new_identity_ask_again: "Never ask me again", - new_identity_menu_accesskey: "I", - }; - let bundle = null; + const fallbackBundle = Services.strings.createBundle( + "resource:///chrome/en-US/locale/browser/newIdentity.properties" + ); + const strings = {}; + const brandedStrings = ["new_identity_prompt", "new_identity_restart"]; + for (let { key } of fallbackBundle.getSimpleEnumeration()) { + strings[key] = fallbackBundle.GetStringFromName(key); + } try { - bundle = Services.strings.createBundle( + const bundle = Services.strings.createBundle( "chrome://browser/locale/newIdentity.properties" ); - } catch (e) { - console.warn("Could not load the New Identity strings"); - } - if (bundle) { for (const key of Object.keys(strings)) { try { strings[key] = bundle.GetStringFromName(key); } catch (e) {} } - strings.new_identity_prompt = strings.new_identity_prompt.replaceAll( - "%S", - brandShortName - ); - strings.new_identity_restart = strings.new_identity_restart.replaceAll( - "%S", - brandShortName - ); + } catch (e) { + console.warn("Could not load localized New Identity strings"); + } + for (let key of brandedStrings) { + strings[key] = strings[key].replaceAll("%S", brandShortName); } return strings; }); @@ -437,10 +428,76 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => { logger.info("Opening a new window"); return new Promise(resolve => { // Open a new window forcing the about:privatebrowsing page (tor-browser#41765) - const win = OpenBrowserWindow({private: "no-home"}); + // unless user explicitly overrides this policy (tor-browser #42236) + const homePref = "browser.startup.homepage"; + const trustedHomePref = "browser.startup.homepage.new_identity"; + const homeURL = Services.prefs.getStringPref(homePref, ""); + const isTrustedHome = + homeURL === "about:tor" || + homeURL.startsWith("chrome://") || // about:blank and other built-ins + homeURL === Services.prefs.getStringPref(trustedHomePref, ""); + const isCustomHome = + Services.prefs.getIntPref("browser.startup.page") === 1; + const win = OpenBrowserWindow({ + private: isCustomHome && isTrustedHome ? "private" : "no-home", + }); // This mechanism to know when the new window is ready is used by // OpenBrowserWindow itself (see its definition in browser.js). - win.addEventListener("MozAfterPaint", () => resolve(), { once: true }); + win.addEventListener( + "MozAfterPaint", + () => { + resolve(); + if (isTrustedHome || !isCustomHome) { + return; + } + const tbl = win.TabsProgressListener; + const { onLocationChange } = tbl; + 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) { + // malformed URL, bail out + return; + } + const label = + NewIdentityStrings.new_identity_home_notification.replace( + "%S", + displayAddress + ); + const callback = () => { + Services.prefs.setStringPref(trustedHomePref, homeURL); + win.BrowserHome(); + }; + const notificationBox = win.gBrowser.getNotificationBox(); + notificationBox.appendNotification( + "new-identity-safe-home", + { + label, + priority: notificationBox.PRIORITY_INFO_MEDIUM, + }, + [ + { + label: NewIdentityStrings.new_identity_home_load_button, + callback, + }, + ] + ); + }; + }, + { once: true } + ); }); } ===================================== browser/locales/en-US/chrome/browser/newIdentity.properties ===================================== @@ -8,3 +8,6 @@ new_identity_restart = Restart %S new_identity_ask_again = Never ask me again # Shown in the File menu (use Alt to show File, if you do not see) new_identity_menu_accesskey = I +new_identity_home_notification = Tor Browser blocked your homepage (%S) from loading because it might recognize your previous session. +# %S is replaced with the custom homepage URL's domain if applicable, or some short-hand of it otherwise +new_identity_home_load_button = Load it anyway View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/01ceac8… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/01ceac8… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.8.0esr-13.5-1] fixup! Bug 40926: Implemented the New Identity feature
by ma1 (@ma1) 05 Mar '24

05 Mar '24
ma1 pushed to branch tor-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 4e4718b4 by hackademix at 2024-03-05T10:26:15+01:00 fixup! Bug 40926: Implemented the New Identity feature Bug 42236: Let users decide whether to load their home page on new identity. - - - - - 2 changed files: - browser/components/newidentity/content/newidentity.js - browser/locales/en-US/chrome/browser/newIdentity.properties Changes: ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -10,37 +10,28 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityStrings", () => { ); const brandShortName = brandBundle.GetStringFromName("brandShortName"); - let strings = { - new_identity: "New Identity", - new_identity_sentence_case: "New identity", - new_identity_prompt_title: "Reset your identity?", - new_identity_prompt: `${brandShortName} will close all windows and tabs. All website sessions will be lost. \nRestart ${brandShortName} now to reset your identity?`, - new_identity_restart: `Restart ${brandShortName}`, - new_identity_ask_again: "Never ask me again", - new_identity_menu_accesskey: "I", - }; - let bundle = null; + const fallbackBundle = Services.strings.createBundle( + "resource:///chrome/en-US/locale/browser/newIdentity.properties" + ); + const strings = {}; + const brandedStrings = ["new_identity_prompt", "new_identity_restart"]; + for (let { key } of fallbackBundle.getSimpleEnumeration()) { + strings[key] = fallbackBundle.GetStringFromName(key); + } try { - bundle = Services.strings.createBundle( + const bundle = Services.strings.createBundle( "chrome://browser/locale/newIdentity.properties" ); - } catch (e) { - console.warn("Could not load the New Identity strings"); - } - if (bundle) { for (const key of Object.keys(strings)) { try { strings[key] = bundle.GetStringFromName(key); } catch (e) {} } - strings.new_identity_prompt = strings.new_identity_prompt.replaceAll( - "%S", - brandShortName - ); - strings.new_identity_restart = strings.new_identity_restart.replaceAll( - "%S", - brandShortName - ); + } catch (e) { + console.warn("Could not load localized New Identity strings"); + } + for (let key of brandedStrings) { + strings[key] = strings[key].replaceAll("%S", brandShortName); } return strings; }); @@ -437,10 +428,76 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => { logger.info("Opening a new window"); return new Promise(resolve => { // Open a new window forcing the about:privatebrowsing page (tor-browser#41765) - const win = OpenBrowserWindow({private: "no-home"}); + // unless user explicitly overrides this policy (tor-browser #42236) + const homePref = "browser.startup.homepage"; + const trustedHomePref = "browser.startup.homepage.new_identity"; + const homeURL = Services.prefs.getStringPref(homePref, ""); + const isTrustedHome = + homeURL === "about:tor" || + homeURL.startsWith("chrome://") || // about:blank and other built-ins + homeURL === Services.prefs.getStringPref(trustedHomePref, ""); + const isCustomHome = + Services.prefs.getIntPref("browser.startup.page") === 1; + const win = OpenBrowserWindow({ + private: isCustomHome && isTrustedHome ? "private" : "no-home", + }); // This mechanism to know when the new window is ready is used by // OpenBrowserWindow itself (see its definition in browser.js). - win.addEventListener("MozAfterPaint", () => resolve(), { once: true }); + win.addEventListener( + "MozAfterPaint", + () => { + resolve(); + if (isTrustedHome || !isCustomHome) { + return; + } + const tbl = win.TabsProgressListener; + const { onLocationChange } = tbl; + 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) { + // malformed URL, bail out + return; + } + const label = + NewIdentityStrings.new_identity_home_notification.replace( + "%S", + displayAddress + ); + const callback = () => { + Services.prefs.setStringPref(trustedHomePref, homeURL); + win.BrowserHome(); + }; + const notificationBox = win.gBrowser.getNotificationBox(); + notificationBox.appendNotification( + "new-identity-safe-home", + { + label, + priority: notificationBox.PRIORITY_INFO_MEDIUM, + }, + [ + { + label: NewIdentityStrings.new_identity_home_load_button, + callback, + }, + ] + ); + }; + }, + { once: true } + ); }); } ===================================== browser/locales/en-US/chrome/browser/newIdentity.properties ===================================== @@ -8,3 +8,6 @@ new_identity_restart = Restart %S new_identity_ask_again = Never ask me again # Shown in the File menu (use Alt to show File, if you do not see) new_identity_menu_accesskey = I +new_identity_home_notification = Tor Browser blocked your homepage (%S) from loading because it might recognize your previous session. +# %S is replaced with the custom homepage URL's domain if applicable, or some short-hand of it otherwise +new_identity_home_load_button = Load it anyway View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/4e4718b… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/4e4718b… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-115.8.0esr-13.5-1] Bug 42378: Apply spoof English to the default detail summary.
by Pier Angelo Vendrame (@pierov) 04 Mar '24

04 Mar '24
Pier Angelo Vendrame pushed to branch base-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 5100fb4f by Pier Angelo Vendrame at 2024-03-04T09:49:58+01:00 Bug 42378: Apply spoof English to the default detail summary. - - - - - 1 changed file: - dom/html/HTMLDetailsElement.cpp Changes: ===================================== dom/html/HTMLDetailsElement.cpp ===================================== @@ -105,8 +105,9 @@ void HTMLDetailsElement::SetupShadowTree() { } nsAutoString defaultSummaryText; - nsContentUtils::GetLocalizedString(nsContentUtils::eFORMS_PROPERTIES, - "DefaultSummary", defaultSummaryText); + nsContentUtils::GetMaybeLocalizedString(nsContentUtils::eFORMS_PROPERTIES, + "DefaultSummary", OwnerDoc(), + defaultSummaryText); RefPtr<nsTextNode> description = new (nim) nsTextNode(nim); description->SetText(defaultSummaryText, kNotify); summary->AppendChildTo(description, kNotify, IgnoreErrors()); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/5100fb4… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/5100fb4… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.8.0esr-13.5-1] Bug 42378: Apply spoof English to the default detail summary.
by Pier Angelo Vendrame (@pierov) 04 Mar '24

04 Mar '24
Pier Angelo Vendrame pushed to branch mullvad-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser Commits: 303938d9 by Pier Angelo Vendrame at 2024-03-04T09:49:37+01:00 Bug 42378: Apply spoof English to the default detail summary. - - - - - 1 changed file: - dom/html/HTMLDetailsElement.cpp Changes: ===================================== dom/html/HTMLDetailsElement.cpp ===================================== @@ -105,8 +105,9 @@ void HTMLDetailsElement::SetupShadowTree() { } nsAutoString defaultSummaryText; - nsContentUtils::GetLocalizedString(nsContentUtils::eFORMS_PROPERTIES, - "DefaultSummary", defaultSummaryText); + nsContentUtils::GetMaybeLocalizedString(nsContentUtils::eFORMS_PROPERTIES, + "DefaultSummary", OwnerDoc(), + defaultSummaryText); RefPtr<nsTextNode> description = new (nim) nsTextNode(nim); description->SetText(defaultSummaryText, kNotify); summary->AppendChildTo(description, kNotify, IgnoreErrors()); View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/303… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/303… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • ...
  • 745
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.