summaryrefslogtreecommitdiff
path: root/src/bg
diff options
context:
space:
mode:
Diffstat (limited to 'src/bg')
-rw-r--r--src/bg/Defaults.js1
-rw-r--r--src/bg/RequestGuard.js2
-rw-r--r--src/bg/Settings.js20
3 files changed, 17 insertions, 6 deletions
diff --git a/src/bg/Defaults.js b/src/bg/Defaults.js
index e30380b..f1b9a18 100644
--- a/src/bg/Defaults.js
+++ b/src/bg/Defaults.js
@@ -12,6 +12,7 @@ var Defaults = {
sync: {
global: false,
xss: true,
+ cascadeRestrictions : false,
xssScanRequestBody: true,
xssBlockUnscannedPOST: false,
overrideTorBrowserPolicy: false, // note: Settings.update() on reset will flip this to true
diff --git a/src/bg/RequestGuard.js b/src/bg/RequestGuard.js
index 2f590dc..e7be814 100644
--- a/src/bg/RequestGuard.js
+++ b/src/bg/RequestGuard.js
@@ -326,7 +326,7 @@ var RequestGuard = (() => {
capabilities = perms.capabilities;
} else {
capabilities = perms.capabilities;
- if (frameAncestors.length > 0) {
+ if (frameAncestors.length > 0 && ns.sync.cascadeRestrictions) {
// cascade top document's restrictions to subframes
let topUrl = frameAncestors.pop().url;
let topPerms = policy.get(topUrl, topUrl).perms;
diff --git a/src/bg/Settings.js b/src/bg/Settings.js
index 3efc4ad..c0af149 100644
--- a/src/bg/Settings.js
+++ b/src/bg/Settings.js
@@ -91,6 +91,7 @@ var Settings = {
if (isTorBrowser) {
// Tor Browser-specific settings
ns.defaults.local.isTorBrowser = true; // prevents reset from forgetting
+ ns.defaults.sync.cascadeRestrictions = true; // we want this to be the default even on reset
if (!this.gotTorBrowserInit) {
// First initialization message from the Tor Browser
this.gotTorBrowserInit = true;
@@ -105,11 +106,20 @@ var Settings = {
} else {
reloadOptionsUI = true;
}
- if (!settings.local) settings.local = {};
- settings.local.isTorBrowser = true;
- if (!settings.sync) settings.sync = {};
- settings.sync.xssScanRequestBody = false;
- settings.sync.xssBlockUnscannedPOST = true;
+
+ let torBrowserSettings = {
+ local: {
+ isTorBrowser: true,
+ },
+ sync: {
+ cascadeRestrictions: true,
+ xssScanRequestBody: false,
+ xssBlockUnscannedPOST: true,
+ }
+ }
+ for (let [storage, prefs] of Object.entries(torBrowserSettings)) {
+ settings[storage] = Object.assign(settings[storage] || {}, prefs);
+ }
}
if (settings.sync === null) {