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 "MB 87: Disable the default browser box on Windows and Linux"
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/bbf...