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
  • 18632 discussions
[tor-browser/tor-browser-45.1.0esr-6.0-1] Regression tests for Bug 15646: Prevent keyboard layout fingerprinting in KeyboardEvent
by gk@torproject.org 17 May '16

17 May '16
commit de5346adae7452c79820958873cf6eca473f537f Author: Arthur Edelstein <arthuredelstein(a)gmail.com> Date: Tue Dec 22 12:35:17 2015 -0800 Regression tests for Bug 15646: Prevent keyboard layout fingerprinting in KeyboardEvent --- dom/events/test/mochitest.ini | 1 + dom/events/test/test_tor_bug15646.html | 159 +++++++++++++++++++++++++++++++++ 2 files changed, 160 insertions(+) diff --git a/dom/events/test/mochitest.ini b/dom/events/test/mochitest.ini index e23b950..e7fb89c 100644 --- a/dom/events/test/mochitest.ini +++ b/dom/events/test/mochitest.ini @@ -192,3 +192,4 @@ support-files = [test_bug1013412.html] skip-if = buildapp == 'b2g' # no wheel events on b2g [test_dom_activate_event.html] +[test_tor_bug15646.html] diff --git a/dom/events/test/test_tor_bug15646.html b/dom/events/test/test_tor_bug15646.html new file mode 100644 index 0000000..463781f --- /dev/null +++ b/dom/events/test/test_tor_bug15646.html @@ -0,0 +1,159 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://trac.torproject.org/15646 +--> +<head> + <title>Test for Bug 15646</title> + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <script type="application/javascript" src="/tests/SimpleTest/SpawnTask.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body> +<a target="_blank" href="https://trac.torproject.org/15466">Tor Bug 15646</a> +<p id="display"></p> +<div id="content" style="display: none"> + +</div> +<pre id="test"> +</pre> +<span id="testTarget" style="border: 1px solid black;">testTarget</span> +<script type="application/javascript;version=1.7"> + SimpleTest.waitForExplicitFinish(); + let miscKeyData = [ + ["Alt", "AltLeft", 18], + ["ArrowDown", "ArrowDown", 40], + ["ArrowLeft", "ArrowLeft", 37], + ["ArrowRight", "ArrowRight", 39], + ["ArrowUp", "ArrowUp", 38], + ["Backspace", "Backspace", 8], + ["CapsLock", "CapsLock", 20], + ["ContextMenu", "ContextMenu", 93], + ["Control", "ControlLeft", 17], + ["Delete", "Delete", 46], + ["End", "End", 35], + ["Enter", "Enter", 13], + ["Escape", "Escape", 27], + ["Help", "Help", 6], + ["Home", "Home", 36], + ["Insert", "Insert", 45], + ["Meta", "OSLeft", 91], + ["PageDown", "PageDown", 34], + ["PageUp", "PageUp", 33], + ["Pause", "Pause", 19], + ["PrintScreen", "PrintScreen", 44], + ["ScrollLock", "ScrollLock", 145], + ["Shift", "ShiftLeft", 16], + ["Tab", "Tab", 9], + [" ", "Space", 32], + [",", "Comma", 188], + [".", "Period", 190], + ["/", "Slash", 191], + [";", "Semicolon", 59], + ["'", "Quote", 222], + ["[", "BracketLeft", 219], + ["]", "BracketRight", 221], + ["`", "Backquote", 192], + ["\\", "Backslash", 220], + ["-", "Minus", 173], + ["=", "Equal", 61], + ]; + let uppers = [], lowers = []; + for (let i = 65; i < 91; ++i) { + let upperChar = String.fromCharCode(i); + lowers.push([upperChar.toLowerCase(), "Key" + upperChar, i]); + uppers.push([upperChar, "Key" + upperChar, i]); + } + let fnKeys = []; + for (let i = 1; i < 25; ++i) { + let keyName = "F" + i, + keyCode = i + 111; + fnKeys.push([keyName, keyName, keyCode]); + } + let digits = []; + for (let i = 0; i < 10; ++i) { + let keyName = "" + i, + keyCode = 48 + i; + digits.push([keyName, "Digit" + keyName, keyCode]); + } + let allKeyData = miscKeyData.concat(lowers).concat(fnKeys).concat(digits); + let pushPref = function (key, value) { + return new Promise(resolve => { + SpecialPowers.pushPrefEnv({"set": [[key, value]]}, resolve); + }); + }; + let miscShiftKeyData = [ + ["!", "Digit1", 49], + ["@", "Digit2", 50], + ["#", "Digit3", 51], + ["$", "Digit4", 52], + ["%", "Digit5", 53], + ["^", "Digit6", 54], + ["&", "Digit7", 55], + ["*", "Digit8", 56], + ["(", "Digit9", 57], + [")", "Digit0", 48], + ["<", "Comma", 188], + [">", "Period", 190], + ["?", "Slash", 191], + [":", "Semicolon", 59], + ["\"", "Quote", 222], + ["{", "BracketLeft", 219], + ["}", "BracketRight", 221], + ["~", "Backquote", 192], + ["|", "Backslash", 220], + ["_", "Minus", 173], + ["+", "Equal", 61], + ]; + let allShiftKeyData = miscShiftKeyData.concat(uppers); + + // __dispatchAndListen(target, eventObject)__. + // Dispatch the given event to the target object. + // Return a promise that resolves to the event when + // that event is received by an event listener. + let dispatchAndListen = function (target, eventObject) { + let eventType = eventObject.type; + return new Promise(function (resolve, reject) { + let listenFunction = function (event) { + target.removeEventListener(eventType, listenFunction); + resolve(event); + }; + target.addEventListener(eventType, listenFunction); + target.dispatchEvent(eventObject); + }); + }; + + // Run tests asynchronously. + spawnTask(function* () { + for (let keyData of [allKeyData, allShiftKeyData]) { + for (let resistFingerprinting of [false, true]) { + let expectedShiftKey = keyData === allShiftKeyData && resistFingerprinting; + yield pushPref("privacy.resistFingerprinting", resistFingerprinting); + for (let [keyName, code, keyCode] of keyData) { + let keyboardEvent = new KeyboardEvent("keydown", { key : keyName, altKey : true, location : 2 }); + let receivedEvent = yield dispatchAndListen(document.body, keyboardEvent); + let expectedKeyCode = resistFingerprinting ? keyCode : 0; + is(receivedEvent.keyCode, expectedKeyCode, + "Event.keyCode should be " + expectedKeyCode); + is(receivedEvent.shiftKey, expectedShiftKey, + "Event.shiftKey should be " + expectedShiftKey); + if (expectedShiftKey) { + ok(!receivedEvent.altKey, + "Alt should be suppressed for fake shift keys."); + } + if (resistFingerprinting) { + let expectedCode = code; + is(receivedEvent.code, expectedCode, + "Event.code should be " + expectedCode); + ok(receivedEvent.location === 0 || receivedEvent.location === 1, + "Event.location should be 0 or 1."); + } + } + } + } + SimpleTest.finish(); + }); + +</script> +</body> +</html>
1 0
0 0
[tor-browser/tor-browser-45.1.0esr-6.0-1] Bug 18886: Hide pocket menu items when Pocket is disabled
by gk@torproject.org 17 May '16

17 May '16
commit 320de5db6d53f53aadfad785ce31826b3080e890 Author: Arthur Edelstein <arthuredelstein(a)gmail.com> Date: Fri May 13 21:42:18 2016 -0700 Bug 18886: Hide pocket menu items when Pocket is disabled If the user toggles the value of "browser.pocket.enabled", then menu items (and pocket button) will be affected only after browser restart. --- browser/base/content/browser-places.js | 9 ++++++++- browser/base/content/nsContextMenu.js | 4 +++- browser/modules/ReaderParent.jsm | 7 +++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js index 7e3ddcc..45a3af6 100644 --- a/browser/base/content/browser-places.js +++ b/browser/base/content/browser-places.js @@ -1553,7 +1553,14 @@ var BookmarkingUI = { }, updatePocketItemVisibility: function BUI_updatePocketItemVisibility(prefix) { - let hidden = !CustomizableUI.getPlacementOfWidget("pocket-button"); + // When the pocket button has been placed on the navigation bar or + // on the hamburger menu, then Pocket can be considered "active" and + // we should show the pocket menu item in various places. + // If, on the other hand, the pocket button is not present because + // the user has moved it out of the nav bar, or the browser started + // up with "browser.pocket.enabled" set to false, then we + // should not show the pocket menu items. + let hidden = document.getElementById("pocket-button") == null; document.getElementById(prefix + "pocket").hidden = hidden; document.getElementById(prefix + "pocketSeparator").hidden = hidden; }, diff --git a/browser/base/content/nsContextMenu.js b/browser/base/content/nsContextMenu.js index 463809f..be42f80 100644 --- a/browser/base/content/nsContextMenu.js +++ b/browser/base/content/nsContextMenu.js @@ -225,7 +225,9 @@ nsContextMenu.prototype = { this.isContentSelected || this.onImage || this.onCanvas || this.onVideo || this.onAudio); let targetURI = (this.onSaveableLink || this.onPlainTextLink) ? this.linkURI : this.browser.currentURI; - let canPocket = CustomizableUI.getPlacementOfWidget("pocket-button") && + // Pocket is only "active" if the pocket button is present on the + // navigation bar or hamburger menu. + let canPocket = (document.getElementById("pocket-button") !== null) && window.pktApi && window.pktApi.isUserLoggedIn(); canPocket = canPocket && (targetURI.schemeIs("http") || targetURI.schemeIs("https") || (targetURI.schemeIs("about") && ReaderMode.getOriginalUrl(targetURI.spec))); diff --git a/browser/modules/ReaderParent.jsm b/browser/modules/ReaderParent.jsm index 0860989..4df8210 100644 --- a/browser/modules/ReaderParent.jsm +++ b/browser/modules/ReaderParent.jsm @@ -79,8 +79,11 @@ var ReaderParent = { break; case "Reader:PocketEnabledGet": { - let pocketPlacement = CustomizableUI.getPlacementOfWidget("pocket-button"); - let isPocketEnabled = pocketPlacement && pocketPlacement.area; + // Only when the pocket button is present on the navigation bar or + // the hamburger menu, should Pocket be considered "active". + let doc = message.target.ownerDocument; + let isPocketEnabled = (doc !== null) && + (doc.getElementById("pocket-button") !== null); message.target.messageManager.sendAsyncMessage("Reader:PocketEnabledData", { enabled: !!isPocketEnabled}); break; }
1 0
0 0
[tor-browser/tor-browser-45.1.0esr-6.0-1] Bug 18619: If indexedDB disabled, use in-memory db for asyncStorage.js
by gk@torproject.org 17 May '16

17 May '16
commit 847b5368b573508a66c7ba38a2148fe36289fe23 Author: Arthur Edelstein <arthuredelstein(a)gmail.com> Date: Mon May 16 11:00:16 2016 -0700 Bug 18619: If indexedDB disabled, use in-memory db for asyncStorage.js --- devtools/shared/async-storage.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/devtools/shared/async-storage.js b/devtools/shared/async-storage.js index 7bd05b6..4eb2889 100644 --- a/devtools/shared/async-storage.js +++ b/devtools/shared/async-storage.js @@ -42,10 +42,37 @@ const {Cc, Ci, Cu, Cr} = require("chrome"); const {indexedDB} = require("sdk/indexed-db"); const Promise = require("promise"); +const prefs = require("sdk/preferences/service"); + +// Substitute memory-only "database" when "dom.indexedDB.enabled" is false. +// Match the API and behavior of the indexedDB-based version. +const memoryDB = function () { + let dbMap = new Map(); + return { + getItem : k => { + let value = dbMap.get(k); + // Match the behavior of indexedDB-based implementation + // when an item is not present. + if (value === undefined) { + value = null; + } + return Promise.resolve(value); + }, + setItem : (k, v) => Promise.resolve(dbMap.set(k, v)), + removeItem : k => Promise.resolve(dbMap.delete(k)), + clear : () => Promise.resolve(dbMap.clear()), + length : () => Promise.resolve(dbMap.size), + key : n => Promise.resolve(Array.from(dbMap.keys())[n]) + }; +}; module.exports = (function() { "use strict"; + if (!prefs.get('dom.indexedDB.enabled', true)) { + return memoryDB(); + } + var DBNAME = "devtools-async-storage"; var DBVERSION = 1; var STORENAME = "keyvaluepairs";
1 0
0 0
[tor-browser/tor-browser-45.1.0esr-6.0-1] fixup! TB4: Tor Browser's Firefox preference overrides.
by gk@torproject.org 17 May '16

17 May '16
commit d7657bf45be5e942a6d522c118d0b2e55c483ad6 Author: Kathy Brade <brade(a)pearlcrescent.com> Date: Mon May 16 16:32:19 2016 -0400 fixup! TB4: Tor Browser's Firefox preference overrides. Disable monitoring the connected state of Tor Browser users (bug 18945). --- browser/app/profile/000-tor-browser.js | 1 + 1 file changed, 1 insertion(+) diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js index bd24118..91542b7 100644 --- a/browser/app/profile/000-tor-browser.js +++ b/browser/app/profile/000-tor-browser.js @@ -230,6 +230,7 @@ pref("network.http.pipelining.read-timeout", 60000); // Hacked pref: Now means "Attempt to pipeline at least this many requests together" pref("network.http.pipelining.max-optimistic-requests", 3); pref("security.ssl.disable_session_identifiers", true); +pref("network.manage-offline-status", false); // As a "defense in depth" measure, configure an empty push server URL (the // DOM Push features are disabled by default via other prefs).
1 0
0 0
[tor-browser/tor-browser-45.1.0esr-6.0-1] Bug 1246614 - Check if system add-ons directory exists before trying to clean it. r=mossop
by gk@torproject.org 17 May '16

17 May '16
commit ecf19e655e6f6b94c311f3c69e56fea31bdb4185 Author: Frank-Rainer Grahl <frgrahl(a)gmx.net> Date: Sun Feb 21 05:45:00 2016 +0100 Bug 1246614 - Check if system add-ons directory exists before trying to clean it. r=mossop --HG-- extra : rebase_source : 44545607f4434a8ad03cdc59306e02517056d42c --- toolkit/mozapps/extensions/internal/XPIProvider.jsm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm index 94c33ea..ca51ae5 100644 --- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm +++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm @@ -8023,6 +8023,12 @@ Object.assign(SystemAddonInstallLocation.prototype, { * to cleanup again next time. */ cleanDirectories: Task.async(function*() { + + // System add-ons directory does not exist + if (!(yield OS.File.exists(this._baseDir.path))) { + return; + } + let iterator; try { iterator = new OS.File.DirectoryIterator(this._baseDir.path);
1 0
0 0
[tor-launcher/master] Bug 18947: not starting on OS X if put into /Applications
by gk@torproject.org 17 May '16

17 May '16
commit 7ee11f5d012773445cc21a86bb1e8d423b15093d Author: Kathy Brade <brade(a)pearlcrescent.com> Date: Mon May 16 10:48:51 2016 -0400 Bug 18947: not starting on OS X if put into /Applications Display a better error message if tor exits and Tor Launcher was never able to establish a connection to the control port (pointing users to a possible error in their torrc may help them find and fix the startup problem themselves). --- src/chrome/locale/en/torlauncher.properties | 1 + src/components/tl-process.js | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/chrome/locale/en/torlauncher.properties b/src/chrome/locale/en/torlauncher.properties index 6b471a3..24bb4d6 100644 --- a/src/chrome/locale/en/torlauncher.properties +++ b/src/chrome/locale/en/torlauncher.properties @@ -3,6 +3,7 @@ torlauncher.error_title=Tor Launcher +torlauncher.tor_exited_during_startup=Tor exited during startup. This might be due to an error in your torrc file, a bug in Tor or another program on your system, or faulty hardware. Until you fix the underlying problem and restart Tor, Tor Browser will not start. torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team. torlauncher.tor_exited2=Restarting Tor will not close your browser tabs. torlauncher.tor_controlconn_failed=Could not connect to Tor control port. diff --git a/src/components/tl-process.js b/src/components/tl-process.js index 7daa31f..ba50310 100644 --- a/src/components/tl-process.js +++ b/src/components/tl-process.js @@ -150,8 +150,25 @@ TorProcessService.prototype = { this.mProtocolSvc.TorCleanupConnection(); - var s = TorLauncherUtil.getLocalizedString("tor_exited") + "\n\n" + let s; + if (!this.mDidConnectToTorControlPort) + { + // The "tor_exited_during_startup" property string was added in + // May 2016. If it is available, we use it; otherwise, we fall back + // to the older "tor_exited" message (below). Once this new string + // has been translated into all of the languages that we ship, we + // can simplify this code. + let key = "tor_exited_during_startup"; + s = TorLauncherUtil.getLocalizedString(key) + if (s == key) // No string found for key. + s = undefined; + } + + if (!s) + { + s = TorLauncherUtil.getLocalizedString("tor_exited") + "\n\n" + TorLauncherUtil.getLocalizedString("tor_exited2"); + } TorLauncherLogger.log(4, s); var defaultBtnLabel = TorLauncherUtil.getLocalizedString("restart_tor"); var cancelBtnLabel = "OK"; @@ -178,6 +195,7 @@ TorProcessService.prototype = var haveConnection = this.mProtocolSvc.TorHaveControlConnection(); if (haveConnection) { + this.mDidConnectToTorControlPort = true; this.mControlConnTimer = null; this.mTorProcessStatus = this.kStatusRunning; this.mProtocolSvc.TorStartEventMonitor(); @@ -282,6 +300,7 @@ TorProcessService.prototype = // Private Member Variables //////////////////////////////////////////////// mTorProcessStatus: 0, // kStatusUnknown + mDidConnectToTorControlPort: false, // Have we ever made a connection? mIsBootstrapDone: false, mBootstrapErrorOccurred: false, mIsQuitting: false,
1 0
0 0
[tor-browser-bundle/master] Bug 18904: Mac OS meek-http-helper profile not updated
by gk@torproject.org 16 May '16

16 May '16
commit 495885feb51d7f1faf6d4c0dc3dd8f47e9f1caa7 Author: Kathy Brade <brade(a)pearlcrescent.com> Date: Thu May 12 13:59:23 2016 -0400 Bug 18904: Mac OS meek-http-helper profile not updated When DATA_OUTSIDE_APP_DIR=1, add a meek-template-sha256sum.txt file to the meek-http-helper browser profile template. The meek-client-torbrowser program uses this file to automatically detect changes to the profile, e.g., after Tor Browser is updated. --- gitian/descriptors/mac/gitian-bundle.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gitian/descriptors/mac/gitian-bundle.yml b/gitian/descriptors/mac/gitian-bundle.yml index ff17520..1d200b5 100644 --- a/gitian/descriptors/mac/gitian-bundle.yml +++ b/gitian/descriptors/mac/gitian-bundle.yml @@ -181,6 +181,12 @@ script: | cat ~/build/torrc-defaults-appendix-mac >> $TORCONFIGPATH/torrc-defaults cat ~/build/bridge_prefs.js >> $EXTOVERRIDESPATH cat ~/build/meek-http-helper-user.js >> $MEEKPROFILEPATH/user.js + if [ "z$DATA_OUTSIDE_APP_DIR" = "z1" ]; then + # Create the meek-template-sha256sum.txt file by generating a list + # of hashes (one for each file within the meek-http-helper profile) and + # and then generating one final hash from the contents of the list. + sha256sum `find $MEEKPROFILEPATH -type f | sort` | sha256sum | sed -e 's/ *-$//' > $MEEKPROFILEPATH/meek-template-sha256sum.txt + fi fi # If not building a multi-lingual package, suppress the language prompt. if [ "z$MULTI_LINGUAL" != "z1" ]; then
1 0
0 0
[torbutton/master] Bug 18743: Pref to hide 'Sign in to Sync' button in hamburger menu
by gk@torproject.org 16 May '16

16 May '16
commit d127873b498fb83e4f608b82a8d382df25183dd3 Author: Arthur Edelstein <arthuredelstein(a)gmail.com> Date: Mon Apr 25 23:03:17 2016 -0700 Bug 18743: Pref to hide 'Sign in to Sync' button in hamburger menu --- src/chrome/content/torbutton.js | 16 ++++++++++++++++ src/defaults/preferences/preferences.js | 1 + 2 files changed, 17 insertions(+) diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js index a8a4ce6..a293c44 100644 --- a/src/chrome/content/torbutton.js +++ b/src/chrome/content/torbutton.js @@ -236,6 +236,9 @@ var torbutton_unique_pref_observer = case "extensions.torbutton.restrict_thirdparty": torbutton_update_thirdparty_prefs(); break; + case "extensions.torbutton.hide_sync_ui": + torbutton_update_sync_ui(); + break; case "gfx.font_rendering.opentype_svg.enabled": case "javascript.options.ion.content": case "javascript.options.typeinference": @@ -625,6 +628,7 @@ function torbutton_init() { torbutton_update_toolbutton(mode); torbutton_update_statusbar(mode); torbutton_notify_if_update_needed(); + torbutton_update_sync_ui(); createTorCircuitDisplay(m_tb_control_host, m_tb_control_port, m_tb_control_pass, "extensions.torbutton.display_circuit"); @@ -3566,4 +3570,16 @@ function torbutton_is_homepage_url(aURI) return (urls.indexOf(aURI.spec) >= 0); } +// Check if "extensions.torbutton.hide_sync_ui" is enabled, and if so, +// hide the "Sign in to Sync" button on the hamburger menu. +function torbutton_update_sync_ui() +{ + try { + document.getElementById("PanelUI-footer-fxa").style.display = + getBoolPref("extensions.torbutton.hide_sync_ui") ? "none" : ""; + } catch (e) { + torbutton_log(5, 'Error updating the Sync UI: ' + e); + } +} + //vim:set ts=4 diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js index 548f4ed..c958ec4 100644 --- a/src/defaults/preferences/preferences.js +++ b/src/defaults/preferences/preferences.js @@ -9,6 +9,7 @@ pref("extensions.torbutton.display_panel",true); pref("extensions.torbutton.panel_style",'text'); pref("extensions.torbutton(a)torproject.org.description", "chrome://torbutton/locale/torbutton.properties"); pref("extensions.torbutton.updateNeeded", false); +pref("extensions.torbutton.hide_sync_ui", true); // proxy prefs pref("extensions.torbutton.settings_method",'recommended');
1 0
0 0
[tor-browser/tor-browser-45.1.0esr-6.0-1] fixup! Bug 12827: Create preference to disable SVG.
by gk@torproject.org 16 May '16

16 May '16
commit 7ffe3230d2b6020394803784c140765e7c8e4b76 Author: Kathy Brade <brade(a)pearlcrescent.com> Date: Tue May 10 16:57:17 2016 -0400 fixup! Bug 12827: Create preference to disable SVG. When SVGs are disabled, do no load SVG images within the Page Info Media tab (bug 18770). --- image/ImageFactory.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/image/ImageFactory.cpp b/image/ImageFactory.cpp index 9298d74..ec20c78 100644 --- a/image/ImageFactory.cpp +++ b/image/ImageFactory.cpp @@ -98,8 +98,10 @@ ImageFactory::CreateImage(nsIRequest* aRequest, nsCOMPtr<nsIChannel> channel(do_QueryInterface(aRequest)); isBlocked = !NS_SVGEnabledForChannel(channel); if (!isBlocked && channel && !NS_SVGEnabledForChannel(nullptr)) { - // Special case for favicons: block this image load if SVGs are - // disallowed from content and if this image load originated from the + // This SVG was not blocked based on the channel but SVGs are + // disallowed from content. Check some special cases. + + // For favicons, block this SVG image load if it originated from the // favicon xul:image node within a tab. nsCOMPtr<nsILoadInfo> loadInfo; nsresult rv = channel->GetLoadInfo(getter_AddRefs(loadInfo)); @@ -111,6 +113,17 @@ ImageFactory::CreateImage(nsIRequest* aRequest, nsAutoString anonid; elem->GetAttribute(NS_LITERAL_STRING("anonid"), anonid); isBlocked = anonid.EqualsLiteral("tab-icon-image"); + + if (!isBlocked) { + // For the Page Info "Media" tab, block this SVG image load if + // it originated from a node within a chrome document that has + // an id of "thepreviewimage". + if (nsContentUtils::IsChromeDoc(node->OwnerDoc())) { + nsAutoString loadingID; + elem->GetId(loadingID); + isBlocked = loadingID.EqualsLiteral("thepreviewimage"); + } + } } } }
1 0
0 0
[tor-browser/tor-browser-45.1.0esr-6.0-1] Bug 18958: Spoof screen.orientation values
by gk@torproject.org 13 May '16

13 May '16
commit a086a5d0070821b1c4dfd2492bdc993c91353a2b Author: Arthur Edelstein <arthuredelstein(a)gmail.com> Date: Sun May 8 22:23:42 2016 -0700 Bug 18958: Spoof screen.orientation values Make sure that screen.orientation.angle -> 0 and screen.orientation.type -> "landscape-primary" Also refactors screen.mozOrientation. --- dom/base/ScreenOrientation.cpp | 29 +++++++++++++++++++++++++++-- dom/base/ScreenOrientation.h | 2 ++ dom/base/nsGlobalWindow.cpp | 7 ++++--- dom/base/nsScreen.cpp | 38 ++++++++++++++++++++------------------ 4 files changed, 53 insertions(+), 23 deletions(-) diff --git a/dom/base/ScreenOrientation.cpp b/dom/base/ScreenOrientation.cpp index 868a1d5..fdea67a 100644 --- a/dom/base/ScreenOrientation.cpp +++ b/dom/base/ScreenOrientation.cpp @@ -15,6 +15,7 @@ #include "mozilla/Preferences.h" #include "mozilla/dom/Promise.h" +#include "nsContentUtils.h" using namespace mozilla; using namespace mozilla::dom; @@ -403,18 +404,23 @@ ScreenOrientation::UnlockDeviceOrientation() OrientationType ScreenOrientation::DeviceType() const { - return mType; + return ShouldResistFingerprinting() ? OrientationType::Landscape_primary + : mType; } uint16_t ScreenOrientation::DeviceAngle() const { - return mAngle; + return ShouldResistFingerprinting() ? 0 : mAngle; } OrientationType ScreenOrientation::GetType(ErrorResult& aRv) const { + if (ShouldResistFingerprinting()) { + return OrientationType::Landscape_primary; + } + nsIDocument* doc = GetResponsibleDocument(); if (!doc) { aRv.Throw(NS_ERROR_UNEXPECTED); @@ -427,6 +433,10 @@ ScreenOrientation::GetType(ErrorResult& aRv) const uint16_t ScreenOrientation::GetAngle(ErrorResult& aRv) const { + if (ShouldResistFingerprinting()) { + return 0; + } + nsIDocument* doc = GetResponsibleDocument(); if (!doc) { aRv.Throw(NS_ERROR_UNEXPECTED); @@ -489,6 +499,10 @@ ScreenOrientation::GetResponsibleDocument() const void ScreenOrientation::Notify(const hal::ScreenConfiguration& aConfiguration) { + if (ShouldResistFingerprinting()) { + return; + } + nsIDocument* doc = GetResponsibleDocument(); if (!doc) { return; @@ -564,6 +578,17 @@ ScreenOrientation::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) return ScreenOrientationBinding::Wrap(aCx, this, aGivenProto); } +bool +ScreenOrientation::ShouldResistFingerprinting() const +{ + bool resist = false; + nsCOMPtr<nsPIDOMWindow> owner = GetOwner(); + if (owner) { + resist = nsContentUtils::ShouldResistFingerprinting(owner->GetDocShell()); + } + return resist; +} + NS_IMPL_ISUPPORTS(ScreenOrientation::VisibleEventListener, nsIDOMEventListener) NS_IMETHODIMP diff --git a/dom/base/ScreenOrientation.h b/dom/base/ScreenOrientation.h index afb5e77..a6e51c7 100644 --- a/dom/base/ScreenOrientation.h +++ b/dom/base/ScreenOrientation.h @@ -102,6 +102,8 @@ private: void DispatchChangeEvent(); + bool ShouldResistFingerprinting() const; + LockPermission GetLockOrientationPermission(bool aCheckSandbox) const; // Gets the responsible document as defined in the spec. diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp index ed42538..6dc06b1 100644 --- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -12820,8 +12820,8 @@ void nsGlobalWindow::EnableOrientationChangeListener() { MOZ_ASSERT(IsInnerWindow()); - - if (!mOrientationChangeObserver) { + if (!nsContentUtils::ShouldResistFingerprinting(mDocShell) + && !mOrientationChangeObserver) { mOrientationChangeObserver = new WindowOrientationObserver(this); } @@ -13671,7 +13671,8 @@ nsGlobalWindow::IsModalContentWindow(JSContext* aCx, JSObject* aGlobal) int16_t nsGlobalWindow::Orientation() const { - return WindowOrientationObserver::OrientationAngle(); + return nsContentUtils::ShouldResistFingerprinting(mDocShell) ? + 0 : WindowOrientationObserver::OrientationAngle(); } #endif diff --git a/dom/base/nsScreen.cpp b/dom/base/nsScreen.cpp index ad1642b..49c12eb 100644 --- a/dom/base/nsScreen.cpp +++ b/dom/base/nsScreen.cpp @@ -166,25 +166,21 @@ nsScreen::Orientation() const void nsScreen::GetMozOrientation(nsString& aOrientation) const { - if (ShouldResistFingerprinting()) { + switch (mScreenOrientation->DeviceType()) { + case OrientationType::Portrait_primary: + aOrientation.AssignLiteral("portrait-primary"); + break; + case OrientationType::Portrait_secondary: + aOrientation.AssignLiteral("portrait-secondary"); + break; + case OrientationType::Landscape_primary: aOrientation.AssignLiteral("landscape-primary"); - } else { - switch (mScreenOrientation->DeviceType()) { - case OrientationType::Portrait_primary: - aOrientation.AssignLiteral("portrait-primary"); - break; - case OrientationType::Portrait_secondary: - aOrientation.AssignLiteral("portrait-secondary"); - break; - case OrientationType::Landscape_primary: - aOrientation.AssignLiteral("landscape-primary"); - break; - case OrientationType::Landscape_secondary: - aOrientation.AssignLiteral("landscape-secondary"); - break; - default: - MOZ_CRASH("Unacceptable screen orientation type."); - } + break; + case OrientationType::Landscape_secondary: + aOrientation.AssignLiteral("landscape-secondary"); + break; + default: + MOZ_CRASH("Unacceptable screen orientation type."); } } @@ -236,6 +232,9 @@ bool nsScreen::MozLockOrientation(const Sequence<nsString>& aOrientations, ErrorResult& aRv) { + if (ShouldResistFingerprinting()) { + return false; + } ScreenOrientationInternal orientation = eScreenOrientation_None; for (uint32_t i = 0; i < aOrientations.Length(); ++i) { @@ -283,6 +282,9 @@ nsScreen::MozLockOrientation(const Sequence<nsString>& aOrientations, void nsScreen::MozUnlockOrientation() { + if (ShouldResistFingerprinting()) { + return; + } UpdateDocShellOrientationLock(GetOwner(), eScreenOrientation_None); mScreenOrientation->UnlockDeviceOrientation(); }
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 1662
  • 1663
  • 1664
  • 1665
  • 1666
  • 1667
  • 1668
  • ...
  • 1864
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.