From f18a9ce2ef5bbad062c7ed38c224b073c984b587 Mon Sep 17 00:00:00 2001 From: Kathy Brade Date: Tue, 26 Feb 2019 10:07:17 -0500 Subject: [PATCH] Bug 28044: Integrate Tor Launcher into tor-browser Build and package Tor Launcher as part of the browser (similar to how pdfjs is handled). The --disable-tor-launcher build option may be used to omit Tor Launcher. If a Tor Launcher extension is present in the user's profile, it is removed. --- browser/app/profile/000-tor-browser.js | 4 ++-- browser/extensions/moz.build | 5 +++++ browser/installer/Makefile.in | 4 ++++ browser/installer/package-manifest.in | 5 +++++ build/moz.configure/old.configure | 3 +++ old-configure.in | 15 +++++++++++++++ tbb-tests/browser_tor_TB4.js | 2 +- .../mozapps/extensions/internal/XPIDatabase.jsm | 5 +++++ .../mozapps/extensions/internal/XPIProvider.jsm | 10 ++++++++++ 9 files changed, 50 insertions(+), 3 deletions(-) diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js index 2337ae54530e8..8cf6323532cdd 100644 --- a/browser/app/profile/000-tor-browser.js +++ b/browser/app/profile/000-tor-browser.js @@ -218,7 +218,7 @@ pref("extensions.autoDisableScopes", 0); pref("extensions.bootstrappedAddons", "{}"); pref("extensions.checkCompatibility.4.*", false); pref("extensions.databaseSchema", 3); -pref("extensions.enabledAddons", "https-everywhere%40eff.org:3.1.4,%7B73a6fe31-595d-460b-a920-fcc0f8843232%7D:2.6.6.1,torbutton%40torproject.org:1.5.2,ubufox%40ubuntu.com:2.6,tor-launcher%40torproject.org:0.1.1pre-alpha,%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D:17.0.5"); +pref("extensions.enabledAddons", "https-everywhere%40eff.org:3.1.4,%7B73a6fe31-595d-460b-a920-fcc0f8843232%7D:2.6.6.1,torbutton%40torproject.org:1.5.2,ubufox%40ubuntu.com:2.6,%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D:17.0.5"); pref("extensions.enabledItems", "langpack-en-US@firefox.mozilla.org:,{73a6fe31-595d-460b-a920-fcc0f8843232}:1.9.9.57,{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.4,{972ce4c6-7e08-4474-a285-3208198ce6fd}:3.5.8"); pref("extensions.enabledScopes", 5); // AddonManager.SCOPE_PROFILE=1 | AddonManager.SCOPE_APPLICATION=4 pref("extensions.pendingOperations", false); @@ -231,7 +231,7 @@ pref("extensions.getAddons.showPane", false); pref("extensions.htmlaboutaddons.recommendations.enabled", false); // Show our legacy extensions directly on about:addons and get rid of the // warning for the default theme. -pref("extensions.legacy.exceptions", "{972ce4c6-7e08-4474-a285-3208198ce6fd},torbutton@torproject.org,tor-launcher@torproject.org"); +pref("extensions.legacy.exceptions", "{972ce4c6-7e08-4474-a285-3208198ce6fd},torbutton@torproject.org"); // Bug 26114: Allow NoScript to access addons.mozilla.org etc. pref("extensions.webextensions.restrictedDomains", ""); // Bug 31396: Disable indexedDB WebExtension storage backend. diff --git a/browser/extensions/moz.build b/browser/extensions/moz.build index d82083e1c5aad..9db1143d3392f 100644 --- a/browser/extensions/moz.build +++ b/browser/extensions/moz.build @@ -12,3 +12,8 @@ DIRS += [ 'webcompat', 'report-site-issue' ] + +if not CONFIG['TOR_BROWSER_DISABLE_TOR_LAUNCHER']: + DIRS += [ + 'tor-launcher', + ] diff --git a/browser/installer/Makefile.in b/browser/installer/Makefile.in index cfeff03e4e529..d250a3d50355f 100644 --- a/browser/installer/Makefile.in +++ b/browser/installer/Makefile.in @@ -89,6 +89,10 @@ endif endif endif +ifdef TOR_BROWSER_DISABLE_TOR_LAUNCHER +DEFINES += -DTOR_BROWSER_DISABLE_TOR_LAUNCHER +endif + ifneq (,$(filter WINNT Darwin Android,$(OS_TARGET))) DEFINES += -DMOZ_SHARED_MOZGLUE=1 endif diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in index ef8495e328fb1..9f7489a01707d 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in @@ -244,6 +244,11 @@ @RESPATH@/browser/chrome/browser.manifest @RESPATH@/browser/chrome/pdfjs.manifest @RESPATH@/browser/chrome/pdfjs/* +#ifndef TOR_BROWSER_DISABLE_TOR_LAUNCHER +@RESPATH@/browser/chrome/torlauncher.manifest +@RESPATH@/browser/chrome/torlauncher/* +@RESPATH@/browser/@PREF_DIR@/torlauncher-prefs.js +#endif @RESPATH@/chrome/toolkit@JAREXT@ @RESPATH@/chrome/toolkit.manifest @RESPATH@/chrome/recording.manifest diff --git a/build/moz.configure/old.configure b/build/moz.configure/old.configure index 7286b23ce86af..f30c2da045ec7 100644 --- a/build/moz.configure/old.configure +++ b/build/moz.configure/old.configure @@ -261,6 +261,9 @@ def old_configure_options(*options): '--with-user-appdir', '--x-includes', '--x-libraries', + + # Tor additions. + '--enable-tor-launcher', ) def prepare_configure_options(extra_old_configure_args, all_options, *options): # old-configure only supports the options listed in @old_configure_options diff --git a/old-configure.in b/old-configure.in index ec1fae7da4252..bb1e7213a77d4 100644 --- a/old-configure.in +++ b/old-configure.in @@ -2190,6 +2190,21 @@ if test -n "$MOZ_UPDATER"; then AC_DEFINE(MOZ_UPDATER) fi +dnl ======================================================== +dnl Tor additions +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(tor-launcher, +[ --disable-tor-launcher + Do not include Tor Launcher], + TOR_BROWSER_DISABLE_TOR_LAUNCHER=1, + TOR_BROWSER_DISABLE_TOR_LAUNCHER=) + +if test -n "$TOR_BROWSER_DISABLE_TOR_LAUNCHER"; then + AC_DEFINE(TOR_BROWSER_DISABLE_TOR_LAUNCHER) +fi + +AC_SUBST(TOR_BROWSER_DISABLE_TOR_LAUNCHER) + dnl ======================================================== dnl parental controls (for Windows Vista) dnl ======================================================== diff --git a/tbb-tests/browser_tor_TB4.js b/tbb-tests/browser_tor_TB4.js index 4d575b1ad2942..e566fb2d81b5e 100644 --- a/tbb-tests/browser_tor_TB4.js +++ b/tbb-tests/browser_tor_TB4.js @@ -110,7 +110,7 @@ let expectedPrefs = [ ["extensions.bootstrappedAddons", "{}"], ["extensions.checkCompatibility.4.*", false], ["extensions.databaseSchema", 3], - ["extensions.enabledAddons", "https-everywhere%40eff.org:3.1.4,%7B73a6fe31-595d-460b-a920-fcc0f8843232%7D:2.6.6.1,torbutton%40torproject.org:1.5.2,ubufox%40ubuntu.com:2.6,tor-launcher%40torproject.org:0.1.1pre-alpha,%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D:17.0.5"], + ["extensions.enabledAddons", "https-everywhere%40eff.org:3.1.4,%7B73a6fe31-595d-460b-a920-fcc0f8843232%7D:2.6.6.1,torbutton%40torproject.org:1.5.2,ubufox%40ubuntu.com:2.6,%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D:17.0.5"], ["extensions.enabledItems", "langpack-en-US@firefox.mozilla.org:,{73a6fe31-595d-460b-a920-fcc0f8843232}:1.9.9.57,{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.4,{972ce4c6-7e08-4474-a285-3208198ce6fd}:3.5.8"], ["extensions.enabledScopes", 1], ["extensions.pendingOperations", false], diff --git a/toolkit/mozapps/extensions/internal/XPIDatabase.jsm b/toolkit/mozapps/extensions/internal/XPIDatabase.jsm index e0d551601cca3..b26b638dc3951 100644 --- a/toolkit/mozapps/extensions/internal/XPIDatabase.jsm +++ b/toolkit/mozapps/extensions/internal/XPIDatabase.jsm @@ -2126,6 +2126,11 @@ this.XPIDatabase = { return true; } + // Ensure that Tor Launcher is never enabled as an add-on. It will be + // removed inside getInstallState() soon. + if (aAddon.id == "tor-launcher@torproject.org") + return false; + if (this.mustSign(aAddon.type) && !aAddon.isCorrectlySigned) { logger.warn(`Add-on ${aAddon.id} is not correctly signed.`); if (Services.prefs.getBoolPref(PREF_XPI_SIGNATURES_DEV_ROOT, false)) { diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm index 46ab81bf8ce78..60bfed7a3d231 100644 --- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm +++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm @@ -1460,6 +1460,16 @@ var XPIStates = { for (let [id, file] of loc.readAddons()) { knownIds.delete(id); + // Since it is now part of the browser, uninstall the Tor Launcher + // extension. This will remove the Tor Launcher .xpi from user + // profiles on macOS. + if (id === "tor-launcher@torproject.org") { + logger.debug("Uninstalling the Tor Launcher extension."); + loc.installer.uninstallAddon(id); + changed = true; + continue; + } + let xpiState = loc.get(id); if (!xpiState) { logger.debug("New add-on ${id} in ${loc}", { id, loc: loc.name }); -- GitLab