[Pkg-mozext-commits] [noscript] 01/05: Imported Upstream version 2.6.9.36
David Prévot
taffit at moszumanska.debian.org
Sat Aug 29 20:45:18 UTC 2015
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository noscript.
commit a6d7cdda28ff26666db0d1dc7cd25576e27a6998
Author: David Prévot <david at tilapin.org>
Date: Sat Aug 29 16:16:09 2015 -0400
Imported Upstream version 2.6.9.36
---
META-INF/manifest.mf | 42 ++
META-INF/mozilla.rsa | Bin 0 -> 4196 bytes
META-INF/mozilla.sf | 4 +
.../content/noscript/ClearClickHandler.js | 474 ++++++++++-----------
chrome/noscript.jar!/content/noscript/Policy.js | 8 +-
.../content/noscript/RequestWatchdog.js | 4 +-
.../content/noscript/ScriptSurrogate.js | 4 +-
chrome/noscript.jar!/content/noscript/about.xul | 6 +-
chrome/noscript.jar!/content/noscript/checkShort | 78 ++++
.../content/noscript/noscriptOptions.js | 245 ++++++-----
.../content/noscript/noscriptOptions.xul | 133 +++---
.../content/noscript/parentProcess.js | 7 +-
.../locale/bg-BG/noscript/noscript.dtd | 2 +-
.../locale/ca-AD/noscript/noscript.dtd | 2 +-
.../locale/cs-CZ/noscript/noscript.dtd | 2 +-
.../locale/cy-GB/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/da/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/de/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/el/noscript/noscript.dtd | 2 +-
.../locale/en-GB/noscript/noscript.dtd | 2 +-
.../locale/en-US/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/eo/noscript/noscript.dtd | 2 +-
.../locale/es-AR/noscript/noscript.dtd | 2 +-
.../locale/es-CL/noscript/noscript.dtd | 2 +-
.../locale/es-ES/noscript/noscript.dtd | 2 +-
.../locale/et-EE/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/eu/noscript/noscript.dtd | 2 +-
.../locale/fa-IR/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/fi/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/fr/noscript/noscript.dtd | 2 +-
.../locale/gl-ES/noscript/noscript.dtd | 2 +-
.../locale/he-IL/noscript/noscript.dtd | 2 +-
.../locale/hr-HR/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/hsb/noscript/noscript.dtd | 2 +-
.../locale/hu-HU/noscript/noscript.dtd | 2 +-
.../locale/id-ID/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/it/noscript/noscript.dtd | 2 +-
.../locale/ja-JP/noscript/noscript.dtd | 2 +-
.../locale/kk-KZ/noscript/noscript.dtd | 2 +-
.../locale/km-KH/noscript/noscript.dtd | 2 +-
.../locale/ko-KR/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/lt/noscript/noscript.dtd | 2 +-
.../locale/mk-MK/noscript/noscript.dtd | 2 +-
.../locale/ms-MY/noscript/noscript.dtd | 2 +-
.../locale/nb-NO/noscript/noscript.dtd | 2 +-
.../locale/nb-NO/noscript/noscript.properties | 2 +-
.../noscript.jar!/locale/nl/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/pl/noscript/noscript.dtd | 2 +-
.../locale/pt-BR/noscript/noscript.dtd | 2 +-
.../locale/pt-PT/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/ro/noscript/noscript.dtd | 2 +-
.../locale/sk-SK/noscript/noscript.dtd | 2 +-
.../locale/sl-SI/noscript/noscript.dtd | 2 +-
.../locale/sr-RS/noscript/noscript.dtd | 2 +-
.../locale/sv-SE/noscript/noscript.dtd | 2 +-
.../locale/te-IN/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/th/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/tr/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/vi/noscript/noscript.dtd | 2 +-
.../locale/zh-CN/noscript/noscript.dtd | 2 +-
.../locale/zh-TW/noscript/noscript.dtd | 2 +-
components/noscriptService.js | 65 +--
defaults/preferences/noscript.js | 2 +-
install.rdf | 2 +-
64 files changed, 655 insertions(+), 517 deletions(-)
diff --git a/META-INF/manifest.mf b/META-INF/manifest.mf
new file mode 100644
index 0000000..98b57fb
--- /dev/null
+++ b/META-INF/manifest.mf
@@ -0,0 +1,42 @@
+Manifest-Version: 1.0
+
+Name: install.rdf
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /ghvAqqw+HxJ1Dt2uH5ppg==
+SHA1-Digest: to+1+BHzGvC+7a4BT3q7G8eOreY=
+
+Name: chrome.manifest
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZVyhJVfGhrNs/GewLvbBeg==
+SHA1-Digest: jnO5QkpHGECCjBYP8ObGcSwMzKk=
+
+Name: GPL.txt
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Xc3+JfIRGapUNeq50CVq9w==
+SHA1-Digest: QuhZ5zOu5fE5tq1vLDOP3bdCSKQ=
+
+Name: mozilla.cfg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: QN7VUFbn7i4XfCTfQhZogA==
+SHA1-Digest: f47dmcoACYEBc7bQRVnwCaMAqGA=
+
+Name: NoScript_License.txt
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: CYkluXWIXUk6QpUjqxcMtA==
+SHA1-Digest: 624YpFdNjCFbDE7kLhN+vbF9hgM=
+
+Name: chrome/noscript.jar
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: WuHZbTiONyCDtwyuJgQ6NQ==
+SHA1-Digest: GR2xL5eEc8uSCLozRc0SNbtOsHM=
+
+Name: components/noscriptService.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qRRcKH/hNzMOs7bVvskQ7w==
+SHA1-Digest: CwB3+ivcbpwoEzmnvmHSpdYHbYw=
+
+Name: defaults/preferences/noscript.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JakeBayg2z7n764WYEcjaA==
+SHA1-Digest: fedHoNVF2ZI8MMoYOD7PsdWSNoo=
+
diff --git a/META-INF/mozilla.rsa b/META-INF/mozilla.rsa
new file mode 100644
index 0000000..8fffb19
Binary files /dev/null and b/META-INF/mozilla.rsa differ
diff --git a/META-INF/mozilla.sf b/META-INF/mozilla.sf
new file mode 100644
index 0000000..8cfbc57
--- /dev/null
+++ b/META-INF/mozilla.sf
@@ -0,0 +1,4 @@
+Signature-Version: 1.0
+MD5-Digest-Manifest: OpI2rMuIpzxiu1dJHLTTyg==
+SHA1-Digest-Manifest: oduuMXDFECyRcYPV7hW4xyiWjlw=
+
diff --git a/chrome/noscript.jar!/content/noscript/ClearClickHandler.js b/chrome/noscript.jar!/content/noscript/ClearClickHandler.js
index cca307f..a5e087c 100644
--- a/chrome/noscript.jar!/content/noscript/ClearClickHandler.js
+++ b/chrome/noscript.jar!/content/noscript/ClearClickHandler.js
@@ -6,9 +6,9 @@ function ClearClickHandler(ns) {
}
ClearClickHandler.prototype = {
-
+
uiEvents: ["mousedown", "mouseup", "click", "dblclick", "drop", "keydown", "keypress", "keyup", "blur"],
-
+
rapidFire: {
events: ["keydown", "mousedown", "mouseover"],
quarantine: 800,
@@ -16,10 +16,10 @@ ClearClickHandler.prototype = {
ts: 0,
mouse: false,
lastOver: { x: 0, y: 0, site: '', ts: 0 },
-
+
check: function(ev, site, ts) {
const type = ev.type;
-
+
let mouse = false, over = false;
switch(type[0]) {
case 'c': case 'm':
@@ -27,22 +27,22 @@ ClearClickHandler.prototype = {
over = type === "mouseover";
case 'k':
break;
-
+
default:
return false;
}
-
+
// ns.log(ev.type + " " + ev.target + "@" + site + " <- " + this.site + " -- " + ev.timeStamp)
-
+
let lo = this.lastOver;
-
+
if (this.mouse === mouse) {
if (site !== this.site) {
let contentRx = /^(?:(?:ht|f)tps?|data|javascript|feed):/i;
if (contentRx.test(this.site) &&
(contentRx.test(site) || !contentRx.test(ev.target.ownerDocument.defaultView.top.location.href))
) {
-
+
if (lo.site && lo.site !== site && (ts - lo.ts) < this.quarantine) {
let d = ev.target.ownerDocument;
let w = d.defaultView;
@@ -58,22 +58,22 @@ ClearClickHandler.prototype = {
}
lo.site = '';
}
-
+
if (over) {
if (ts - lo.ts < this.quarantine) return false;
} else {
if (ts - this.ts < this.quarantine) {
if (!lo.site) this.ts = ts - this.quarantine / 2;
return ns.getPref("clearClick.rapidFireCheck");
- }
+ }
}
-
+
}
}
} else this.mouse = mouse;
-
+
this.site = site;
-
+
if (over) {
if (!ev.target.contentWindow) {
lo.site = site;
@@ -91,24 +91,24 @@ ClearClickHandler.prototype = {
return false;
}
},
-
+
install: function(browser) {
-
+
var doc = browser.ownerDocument;
if (!("__ClearClick__" in doc)) {
doc.__ClearClick__ = true;
for each(let et in this.rapidFire.events)
doc.addEventListener(et, this, true);
}
-
+
var ceh = browser.docShell.chromeEventHandler;
var l = this._listener;
for each(var et in this.uiEvents) ceh.addEventListener(et, this, true);
},
-
-
+
+
exceptions: null,
-
+
sameSiteParents: function(w) {
const ns = this.ns;
var site = ns.getSite(w.location.href);
@@ -125,21 +125,21 @@ ClearClickHandler.prototype = {
if (ns.consoleDump & LOG_CLEARCLICK) ns.dump("ClearClick skipping, same site parents for " + site);
return true;
},
-
+
appliesHere: function(url) {
const ns = this.ns;
return ns.appliesHere(ns.clearClick, url) &&
!(this.exceptions && this.exceptions.test(url));
},
-
+
checkSubexception: function(url) {
return this.subexceptions && this.subexceptions.test(url);
},
-
+
_whitelist: {},
whitelistLen: 0,
isWhitelisted: function(w) {
-
+
var l = this._whitelist[w.location.href];
if (!l) return false;
@@ -149,7 +149,7 @@ ClearClickHandler.prototype = {
}
return l.indexOf(pp.join(" ")) > -1;
},
-
+
whitelist: function(w) {
if (this.isWhitelisted(w)) return;
var u = w.location.href;
@@ -158,63 +158,63 @@ ClearClickHandler.prototype = {
for(var p = w.parent; p != w; w = p, p = w.parent) {
pp.push(p.location.href);
}
-
+
var l;
if (u in this._whitelist) l = this._whitelist[u];
else {
l = this._whitelist[u] = [];
this.whitelistLen++;
}
-
+
l.push(pp.join(" "));
},
resetWhitelist: function() {
this._whitelist = {};
this.whitelistLen = 0;
},
-
+
isEmbed: function(o) (o instanceof Ci.nsIDOMHTMLObjectElement || o instanceof Ci.nsIDOMHTMLEmbedElement)
&& !o.contentDocument && ns.getExpando(o, "site") != ns.getSite(o.ownerDocument.documentURI),
-
+
swallowEvent: function(ev) {
ev.cancelBubble = true;
ev.stopPropagation();
ev.preventDefault();
},
-
+
_zoom: 1,
-
-
+
+
getBox: function(o, d, w) {
if (!d) d = o.ownerDocument;
if (!w) w = d.defaultView;
var c = o.getBoundingClientRect();
var x = c.left, y = c.top; // this is relative to the view port, just like mozInnerScreen*
-
+
return {
x: x + w.scrollX, y: y + w.scrollY, // add scroll* to make it absolute
width: c.width, height: c.height,
screenX: w.mozInnerScreenX + x, screenY: w.mozInnerScreenY + y
}
},
-
-
+
+
getBG: function(w) {
var bg = w.document.body && w.getComputedStyle(w.document.body, '').backgroundColor || "#fff";
return bg == "transparent" ? w != w.parent && this.getBG(w.parent) || "#fff" : bg;
},
-
+
_constrain: function(box, axys, dim, max, vp, center) {
var d;
var scr = "screen" + axys.toUpperCase();
// trim bounds to take in account fancy overlay borders
var l = box[dim];
var n = box[axys];
-
+
if (vp.frame && center && l < vp[dim]) { // expand to viewport if possible
l = vp[dim];
}
-
+
if (l > 6) {
var bStart = Math.floor(l * .1) // 20% border
var bEnd = bStart;
@@ -222,11 +222,11 @@ ClearClickHandler.prototype = {
bStart = center - n;
} else if (l + n - center < bEnd) {
bEnd = l + n - center;
- }
+ }
box[dim] = (l -= (bStart + bEnd));
box[axys] = (n += bStart);
box[scr] += bStart;
-
+
}
if (l > max) {
@@ -234,7 +234,7 @@ ClearClickHandler.prototype = {
if (center) {
var halfMax = Math.round(max / 2);
var nn = center - halfMax;
- if (nn > n && center + halfMax > n + l) nn = (n + l) - max;
+ if (nn > n && center + halfMax > n + l) nn = (n + l) - max;
box[axys] = nn;
box[scr] += (nn - n);
n = nn;
@@ -248,14 +248,14 @@ ClearClickHandler.prototype = {
: (n + l) > (vpn + vp[dim])
? (vpn + vp[dim]) - (n + l)
: 0;
-
+
if (d) {
n = (box[axys] += d);
box[scr] += d;
}
},
-
+
get canvas() {
delete this.__proto__.canvas;
const impl = Cc["@mozilla.org/xul/xul-document;1"].createInstance(Ci.nsIDOMDocument).implementation;
@@ -263,34 +263,24 @@ ClearClickHandler.prototype = {
? impl.createHTMLDocument("")
: impl.createDocument(
HTML_NS, "html", impl.createDocumentType(
- "html", "-//W3C//DTD HTML 4.01 Transitional//EN", "http://www.w3.org/TR/html4/loose.dtd"
+ "html", "-//W3C//DTD HTML 4.01 Transitional//EN", "http://www.w3.org/TR/html4/loose.dtd"
))
).createElementNS(HTML_NS, "canvas");
},
-
- _semanticContainers: [Ci.nsIDOMHTMLParagraphElement, Ci.nsIDOMHTMLQuoteElement,
- Ci.nsIDOMHTMLUListElement, Ci.nsIDOMHTMLOListElement, Ci.nsIDOMHTMLDirectoryElement,
- Ci.nsIDOMHTMLPreElement, Ci.nsIDOMHTMLTableElement ]
- ,
- isSemanticContainer: function(o) {
- let scc = this._semanticContainers;
- for (let j = scc.length; j-- > 0;)
- if (o instanceof scc[j])
- return o.ownerDocument.URL.indexOf("view-source") !== 0;
-
- return false;
- },
-
+
+ _semanticContainersRx: /^(?:p|quote|ul|ol|dir|pre|table)$/i,
+ isSemanticContainer: function(o) this._semanticContainersRx.test(o.tagName) && o.ownerDocument.URL.indexOf("view-source") !== 0,
+
forLog: function(o) {
return o.tagName + "/" + (o.tabIndex || 0);
},
-
+
handleEvent: function(ev) {
-
+
const o = ev.target;
const d = o.ownerDocument;
if (!d) return;
-
+
if (d === ev.currentTarget || // chrome source, see rapidFire installation
ev.button || // right or middle click
ev.keyCode && // special keys, e.g. for UI navigation
@@ -300,16 +290,16 @@ ClearClickHandler.prototype = {
// this.ns.log("Reset global event tracking");
if (d === ev.currentTarget || ev.keyCode) return;
}
-
-
+
+
const w = d.defaultView;
if (!w) return;
-
+
const ns = this.ns;
-
+
const top = w.top;
const topURL = top.document.documentURI;
-
+
var isEmbed;
var ts = Date.now();
@@ -320,22 +310,22 @@ ClearClickHandler.prototype = {
" in " + (ts - this.rapidFire.ts) + "ms)", true);
return;
}
-
+
if (ev.type === "mouseover") return;
-
- if (!("__clearClickUnlocked" in top))
+
+ if (!("__clearClickUnlocked" in top))
top.__clearClickUnlocked = !this.appliesHere(topURL);
-
+
if (top.__clearClickUnlocked) return;
-
+
if (!("__clearClickUnlocked" in o)) {
- o.__clearClickUnlocked =
+ o.__clearClickUnlocked =
o === d.documentElement || o === d.body || // key event on empty region
this.isSemanticContainer(o) ||
!(isEmbed = this.isEmbed(o)) && // plugin embedding?
- (w == top ||
- ("__clearClickUnlocked" in w
+ (w == top ||
+ ("__clearClickUnlocked" in w
? w.__clearClickUnlocked
: (w.__clearClickUnlocked = this.isWhitelisted(w))
) ||
@@ -345,14 +335,14 @@ ClearClickHandler.prototype = {
ns.getPluginExtras(o) && ns.getPref("confirmUnblock") || // Just enabled from NS placeholder after prompt?
this.checkSubexception(isEmbed && (o.src || o.data) || w.location.href)
}
-
+
if (o.__clearClickUnlocked || w.__clearClickUnlocked) return;
var p = ns.getExpando(o, "clearClickProps", {});
var verbose = ns.consoleDump & LOG_CLEARCLICK;
var etype = ev.type;
if (verbose) ns.dump(o.tagName + ", " + etype + ", " + p.toSource());
-
+
var obstructed, ctx, primaryEvent;
try {
if (etype == "blur") {
@@ -363,7 +353,7 @@ ClearClickHandler.prototype = {
return;
}
if (p.unlocked) return;
-
+
ctx = /mouse|drop/.test(etype)
&& { x: ev.pageX, y: ev.pageY, debug: ev.ctrlKey && ev.button == 1 && ns.getPref("clearClick.debug") }
|| {};
@@ -376,10 +366,10 @@ ClearClickHandler.prototype = {
((ctx.box = this.getBox(ev.target, d, w)).screenX * ctx.box.screenY != 0) ||
// allow infra-document drag operations and tabulations
etype != "blur" && top.__clearClickDoc == d && (top.__clearClickProps.unlocked || top.__clearClickProps.lastEtype == "blur");
-
+
obstructed = (primaryEvent || !("obstructed" in p))
? p.obstructed = this.checkObstruction(o, ctx)
- : p.obstructed; // cache for non-primary events
+ : p.obstructed; // cache for non-primary events
} catch(e) {
ns.dump(e);
obstructed = true;
@@ -388,21 +378,21 @@ ClearClickHandler.prototype = {
top.__clearClickProps = p;
top.__clearClickDoc = d;
}
-
+
var quarantine = ts - (p.ts || 0);
-
+
if (verbose) ns.dump("ClearClick: " + ev.target.tagName + " " + etype +
- "(s:{" + ev.screenX + "," + ev.screenY + "}, p:{" + ev.pageX + "," + ev.pageY + "}, c:{" + ev.clientX + "," + ev.clientY +
+ "(s:{" + ev.screenX + "," + ev.screenY + "}, p:{" + ev.pageX + "," + ev.pageY + "}, c:{" + ev.clientX + "," + ev.clientY +
", w:" + ev.which + "}) - obstructed: " + obstructed + ", check time: " + (Date.now() - ts) + ", quarantine: " + quarantine +
", primary: " + primaryEvent + ", ccp:" + (top.__clearClickProps && top.__clearClickProps.toSource()));
-
+
var unlocked = !obstructed && primaryEvent && quarantine > 3000;
-
+
if (unlocked) {
if (verbose) ns.dump("ClearClick: unlocking " + ev.target.tagName + " " + etype);
p.unlocked = true;
} else {
-
+
this.swallowEvent(ev);
ns.log("[NoScript ClearClick] Swallowed event " + etype + " on " + this.forLog(o) + " at " + w.location.href, true);
var docShell = DOM.getDocShellForWindow(w);
@@ -438,7 +428,7 @@ ClearClickHandler.prototype = {
}
}
},
-
+
findParentForm: function(o) {
var ftype = Ci.nsIDOMHTMLFormElement;
while((o = o.parentNode)) {
@@ -446,14 +436,14 @@ ClearClickHandler.prototype = {
}
return null;
},
-
-
+
+
rndColor: function() {
var c = Math.round(Math.random() * 0xffffff).toString(16);
- return "#" + ("000000".substring(c.length)) + c;
+ return "#" + ("000000".substring(c.length)) + c;
},
-
-
+
+
maxWidth: 350,
maxHeight: 200,
minWidth: 160,
@@ -461,20 +451,20 @@ ClearClickHandler.prototype = {
_NO_SCROLLBARS: {w: 0, h: 0},
computeScrollbarSizes: function(window, dElem, body) {
var fw = window.innerWidth, fh = window.innerHeight;
-
+
if (body && body.ownerDocument.compatMode == "BackCompat") {
dElem = body;
}
-
+
var dw = dElem.clientWidth, dh = dElem.clientHeight;
var w = Math.min(fw, dw), h = Math.min(fh, dh);
-
+
var zoom = window.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindowUtils).screenPixelsPerCSSPixel;
return { w: (fw - w) * zoom, h: (fh - h) * zoom };
},
-
+
checkObstruction: function(o, ctx) {
var d = o.ownerDocument;
var w = d.defaultView;
@@ -484,30 +474,30 @@ ClearClickHandler.prototype = {
w = d.defaultView;
ctx.isEmbed = true;
}
-
+
var dElem = d.documentElement;
-
+
var top = w.top;
var browser = DOM.findBrowserForNode(top);
-
+
if (!browser) return false; // some extensions, e.g. FoxTab, cause this
-
+
var c = this.canvas;
var gfx = c.getContext("2d");
-
+
var bg = this.getBG(w);
var bgStyle;
var box, rootBox, curtain, woi;
-
+
var frame, frameClass, objClass;
-
+
var docPatcher = new DocPatcher(this.ns, o, w);
-
+
var sheet = null;
-
+
var img1 = null, img2 = null, tmpImg = null;
-
+
function Snapshot(w, x, y) {
gfx.drawWindow(w, Math.round(x), Math.round(y), c.width, c.height, bg);
if (woi && w == top && rootBox) {
@@ -517,12 +507,12 @@ ClearClickHandler.prototype = {
}
this.imageData = gfx.getImageData(0, 0, c.width, c.height);
}
-
+
Snapshot.prototype = {
THRESHOLD: ns.getPref("clearClick.threshold") / 100,
resembles: function(other) {
if (other === null) return false;
-
+
let buf1 = this.imageData.data;
let buf2 = other.imageData.data;
let diff = 0, eq = 0;
@@ -559,7 +549,7 @@ ClearClickHandler.prototype = {
return c.toDataURL();
}
}
-
+
function compareSnapshots(x1, y1, x2, y2) {
img1 = null;
try {
@@ -580,22 +570,22 @@ ClearClickHandler.prototype = {
docPatcher.clean(false);
}
img2 = tmpImg = new Snapshot(top, x2, y2);
- return ret && !img1.resembles(img2);
+ return ret && !img1.resembles(img2);
}
var sd = this._NO_SCROLLBARS;
try {
-
+
docPatcher.linkAlertHack(true);
docPatcher.fbPresenceHack(true);
docPatcher.abpTabsHack(true);
docPatcher.trafficLightHack(true);
try {
docPatcher.opaque(true);
-
+
var fbPresence; // hack for Facebooks's fixed positioned widget
-
+
if (ctx.isEmbed) { // objects and embeds
if (this.ns.getPref("clearClick.plugins", true)) {
objClass = new ClassyObj(o);
@@ -606,48 +596,48 @@ ClearClickHandler.prototype = {
DOM.addClass(o, "__noscriptOpaqued__");
}
}
-
+
if ((frame = w.frameElement)) {
frameClass = new ClassyObj(frame);
DOM.removeClass(frame, "__noscriptScrolling__");
sd = this.computeScrollbarSizes(w, dElem, d.body);
-
+
}
-
+
let clientHeight = w.innerHeight - sd.h;
let clientWidth = w.innerWidth - sd.w;
// print(dElem.clientWidth + "," + dElem.clientHeight + " - " + w.innerWidth + "," + w.innerHeight);
-
+
if (!ctx.isEmbed) {
curtain = d.createElementNS(HTML_NS, "div");
with (curtain.style) {
top = left = "0px";
-
+
width = (clientWidth + w.scrollX) + "px";
height = (clientHeight + w.scrollY) + "px";
-
+
padding = margin = borderWidth = MozOutlineWidth = "0px";
position = "absolute";
zIndex = DOM.maxZIndex;
-
+
background = this.rndColor();
}
- }
-
+ }
+
let maxWidth = Math.max(Math.min(this.maxWidth, clientWidth), sd.w ? 0 : Math.min(this.minWidth, dElem.offsetWidth), 8);
let maxHeight = Math.max(Math.min(this.maxHeight, clientHeight), sd.h ? 0 : Math.min(this.minHeight, dElem.offsetHeight, 8));
-
+
for (;;) {
box = this.getBox(o, d, w);
if (box.width > 0 && box.height > 0) break;
o = o.parentNode;
if (!o) return false;
}
-
+
// expand to parent form if needed
var form = o.form;
if (frame && !ctx.isEmbed && (form || (form = this.findParentForm(o)))) {
-
+
let formBox = this.getBox(form, d, w);
if (!(formBox.width && formBox.height)) { // some idiots put <form> as first child of <table> :(
formBox = this.getBox(form.offsetParent || form.parentNode, d, w);
@@ -655,16 +645,16 @@ ClearClickHandler.prototype = {
formBox = this.getBox(form.parentNode.offsetParent || o.offsetParent, d, w);
}
}
-
+
if (formBox.width && formBox.height) {
// form has layout, recenter to show as much as possible
ctx.x = ctx.x || box.x + box.width; // use mouse coordinates or
- ctx.y = ctx.y || box.y + box.height; // rightmost widget position
-
+ ctx.y = ctx.y || box.y + box.height; // rightmost widget position
+
box = formBox; // the form is our new reference
-
+
var delta;
-
+
// move inside the viewport if needed
if (box.x < 0) {
box.screenX -= box.x;
@@ -674,14 +664,14 @@ ClearClickHandler.prototype = {
box.screenY -= box.y;
box.y = 0;
}
-
+
// is our center out of the form?
- if (box.x + Math.min(box.width, maxWidth) < ctx.x) {
+ if (box.x + Math.min(box.width, maxWidth) < ctx.x) {
box.width = Math.min(box.width, maxWidth);
delta = ctx.x + 4 - box.width - box.x;
box.x += delta;
box.screenX += delta;
-
+
}
if (box.y + Math.min(box.height, maxHeight) < ctx.y) {
box.height = Math.min(box.height, maxHeight);
@@ -689,51 +679,51 @@ ClearClickHandler.prototype = {
box.y += delta;
box.screenY += delta;
}
-
+
// recenter to the form
ctx.x = box.x + box.width / 2;
ctx.y = box.y + box.height / 2;
-
+
o = form;
}
}
-
+
bgStyle = dElem.style.background;
dElem.style.background = bg;
-
+
// clip, slide in viewport and trim
-
- var vp = {
- x: w.scrollX,
- y: w.scrollY + 3, // 3 pixels grace for box shadows cast from above a frame, like in the FB header
- width: Math.max(w.innerWidth - sd.w, 32),
+
+ var vp = {
+ x: w.scrollX,
+ y: w.scrollY + 3, // 3 pixels grace for box shadows cast from above a frame, like in the FB header
+ width: Math.max(w.innerWidth - sd.w, 32),
height: Math.max(w.innerHeight - sd.h - 3, 16), // Facebook like buttons are 20 pixel high
frame: frame
};
-
+
var rtlOffset = 0;
-
+
if (ctx.isEmbed) { // check in-page vieport
vp.frame = null;
vp.x = Math.max(vp.x, box.x);
vp.y = Math.max(vp.y, box.y);
vp.width = Math.min(vp.width, box.width);
vp.height = Math.min(vp.height, box.height);
-
+
for(let ancestor = o; ancestor = ancestor.parentNode;) {
-
+
if ((ancestor.offsetWidth < box.width || ancestor.offsetHeight < box.height) &&
w.getComputedStyle(ancestor, '').overflow != "visible") {
-
+
// check if we're being fooled by some super-zoomed applet
if (box.width / 4 <= ancestor.offsetWidth && box.height / 4 <= ancestor.offsetHeight) {
let ancestorBox = this.getBox(ancestor, d, w);
-
+
if (box.x < ancestorBox.x) {
box.x = ancestorBox.x;
box.screenX = ancestorBox.screenX;
}
- if (box.y < ancestorBox.y) {
+ if (box.y < ancestorBox.y) {
box.y = ancestorBox.y;
box.screenY = ancestorBox.screenY;
}
@@ -744,15 +734,15 @@ ClearClickHandler.prototype = {
}
}
} else {
-
+
// correct x offsets according to left scrollbars if needed
try {
var adaptiveScrollerSide = false;
- switch(this.ns.prefService.getIntPref("layout.scrollbar.side")) {
+ switch(this.ns.prefService.getIntPref("layout.scrollbar.side")) {
case 1:
adaptiveScrollerSide = true;
case 0:
- if (!adaptiveScrollerSide && this.ns.prefService.getIntPref("bidi.direction") != 2)
+ if (!adaptiveScrollerSide && this.ns.prefService.getIntPref("bidi.direction") != 2)
break;
case 3:
vp.x += this._scrollerCorrect(w, adaptiveScrollerSide);
@@ -761,11 +751,11 @@ ClearClickHandler.prototype = {
} catch(e) {
if (ns.consoleDump & LOG_CLEARCLICK) ns.dump(e);
}
-
+
}
-
+
// clip viewport intersecting with scrolling parents
-
+
const CLIP_MIN = 64;
var clip = this._clip(o.parentNode, frame ? this.getBox(frame) : box);
if (clip.h != 0) {
@@ -782,50 +772,50 @@ ClearClickHandler.prototype = {
}
vp.x += clip.x;
vp.y += clip.y;
-
+
// Fit in viewport
-
+
box.oX = box.x;
box.oY = box.y;
box.oW = box.width;
box.oH = box.height;
-
+
// print("Fitting " + box.toSource() + " in " + vp.toSource() + " - ctx " + ctx.x + ", " + ctx.y + " - max " + maxWidth + ", " + maxHeight);
-
+
this._constrain(box, "x", "width", maxWidth, vp, ctx.x);
this._constrain(box, "y", "height", maxHeight, vp, ctx.y);
- // print(box.toSource());
-
-
-
+ // print(box.toSource());
+
+
+
c.width = box.width;
c.height = box.height;
-
+
woi = this.findWindowedRects(ctx.isEmbed ? o : w.frameElement);
-
+
if (this.ns.consoleDump & LOG_CLEARCLICK) this.ns.dump("Snapshot at " + box.toSource() + " + " + w.pageXOffset + ", " + w.pageYOffset);
-
+
if (curtain && frame) {
dElem.appendChild(curtain);
}
img1 = new Snapshot(w, box.x, box.y);
-
+
} finally {
docPatcher.clean(false);
}
-
+
var rootElement = top.document.documentElement;
rootBox = this.getBox(rootElement, top.document, top);
-
-
+
+
var offsetY = (box.screenY - rootBox.screenY);
var offsetX = (box.screenX - rootBox.screenX) + rtlOffset;
-
+
var ret = true;
var tmpImg;
-
+
const offs = ctx.isEmbed ? [0] : [0, -1, 1, -2, 2, -3, -3];
checkImage:
@@ -839,7 +829,7 @@ ClearClickHandler.prototype = {
if (!img2) img2 = tmpImg;
}
}
-
+
if (ret && !curtain && ctx.isEmbed) {
curtain = d.createElementNS(HTML_NS, "div");
if (docPatcher) curtain.className = docPatcher.shownCS;
@@ -856,7 +846,7 @@ ClearClickHandler.prototype = {
ret = compareSnapshots(box.x, box.y, offsetX, offsetY);
}
-
+
if (ret && ctx.isEmbed && ("x" in ctx) && c.width > this.minWidth && c.height > this.minHeight) {
c.width = this.minWidth;
c.height = this.minHeight;
@@ -874,32 +864,32 @@ ClearClickHandler.prototype = {
if (!ret) break;
}
}
-
+
if (ctx.debug || this.checkCursor(ctx.isEmbed ? o : frame)) {
ret = true;
img2 = tmpImg;
}
-
+
if (ret) {
-
+
if (curtain) {
if (ctx.debug) {
-
+
if (docPatcher.cleanSheet) {
curtain.id = "curtain_" + DOM.rndId();
docPatcher.cleanSheet += " #" + curtain.id + " { opacity: .4 !important }";
}
-
+
curtain.style.opacity = ".4"
-
+
} else {
curtain.parentNode.removeChild(curtain);
curtain = null;
}
compareSnapshots(box.x, box.y, offsetX, offsetY);
}
-
+
ctx.img =
{
src: img1.toURL(),
@@ -908,28 +898,28 @@ ClearClickHandler.prototype = {
height: c.height
}
}
-
+
} finally {
if (ctx.isEmbed) docPatcher.blankPositioned(false);
-
-
+
+
if (curtain && curtain.parentNode) curtain.parentNode.removeChild(curtain);
if (typeof(bgStyle) == "string") dElem.style.background = bgStyle;
-
+
docPatcher.opaque(false);
docPatcher.trafficLightHack(false);
docPatcher.abpTabsHack(false);
docPatcher.fbPresenceHack(false);
docPatcher.linkAlertHack(false);
-
+
if (objClass) objClass.reset();
if (frameClass) frameClass.reset();
}
-
+
return ret;
-
+
},
-
+
checkCursor: function(o) {
let w = o.ownerDocument.defaultView;
for(; o && o instanceof Ci.nsIDOMHTMLElement; o = o.parentNode) {
@@ -938,14 +928,14 @@ ClearClickHandler.prototype = {
if (cursor === "none" || cursor.indexOf("url(") !== -1) return true;
} catch (e) {}
}
- return w.frameElement && this.checkCursor(w.frameElement);
- },
-
+ return w.frameElement && this.checkCursor(w.frameElement);
+ },
+
_clip: function(parent, box) {
const MIN = 64;
-
+
// backtrack all the overflow~="auto|scroll" parent elements and clip
-
+
var pw = parent.ownerDocument.defaultView;
var current, cbox;
@@ -955,16 +945,16 @@ ClearClickHandler.prototype = {
var by = box.screenY;
var bw = box.width;
var bh = box.height;
-
+
const ELEMENT = Ci.nsIDOMElement;
-
+
while(parent) {
-
- current = parent;
+
+ current = parent;
switch (pw.getComputedStyle(current, '').overflow) {
case "auto" : case "scroll":
cbox = this.getBox(current);
-
+
d = cbox.screenY - by;
if (d > 0) {
dy += d;
@@ -978,7 +968,7 @@ ClearClickHandler.prototype = {
dw -= d;
bx += d;
bw -= d;
-
+
}
d = by + bh - (cbox.screenY + current.clientHeight);
if (d > 0) {
@@ -1000,22 +990,22 @@ ClearClickHandler.prototype = {
parent = pw.frameElement;
if (parent) pw = parent.ownerDocument.defaultView;
}
-
+
return { x: dx, y: dy, w: dw, h: dh };
},
-
+
_scrollerCorrect: function(w, adaptive) {
return (adaptive && w.getComputedStyle(w.document.body || w.document.documentElement, '').direction != 'rtl')
? 0
: w.innerWidth - w.document.documentElement.clientWidth;
},
-
+
_offsetParents: function(p) {
let pp = [];
for (; p; p = p.offsetParent) pp.push(p);
return pp;
},
-
+
get _ignoreWindowedZ() {
delete this.__proto__._ignoreWindowedZ;
return this.__proto__._ignoreWindowedZ = ns.geckoVersionCheck("10.0") < 0;
@@ -1023,7 +1013,7 @@ ClearClickHandler.prototype = {
findWindowedRects: function(el) {
const tags = ["object", "embed"];
var woi = null;
-
+
while(el) {
let d = el.ownerDocument;
let w = d.defaultView;
@@ -1040,11 +1030,11 @@ ClearClickHandler.prototype = {
if (p1 != p2) {
let s1 = w.getComputedStyle(p1, '');
let s2 = w.getComputedStyle(p2, '');
-
+
if (s2.display != 'none' && s2.visibility != 'hidden' &&
(this._ignoreWindowedZ ||
(s2.position != 'static' &&
- (s1.position == 'static' ||
+ (s1.position == 'static' ||
(parseInt(s1.zIndex, 10) || 0) <= (parseInt(s2.zIndex, 10) || 0)))
)
) {
@@ -1099,7 +1089,7 @@ DocPatcher.prototype = {
for(; o && o.hasAttribute; o = o.parentNode) res.push(new ClassyObj(o));
return res;
},
-
+
getRect: function(o, d) {
return (this.getRect = ("getBoundingClientRect" in o)
? function(o) { return o.getBoundingClientRect() }
@@ -1110,11 +1100,11 @@ DocPatcher.prototype = {
left: x,
top: y,
right: x + o.width,
- bottom: y + o.height
+ bottom: y + o.height
};
})(o, d)
},
-
+
collectPositioned: function(d) {
var t = Date.now();
const w = d.defaultView;
@@ -1126,54 +1116,54 @@ DocPatcher.prototype = {
const bottom = r.bottom;
const left = r.left;
const right = r.right;
-
+
var c = '', b = null;
var hasPos = false;
const posn = [];
-
+
const tw = d.createTreeWalker(d, Ci.nsIDOMNodeFilter.SHOW_ELEMENT, null, false);
for (var n = null; (n = tw.nextNode());) {
b = n.getBoundingClientRect();
if (b.bottom < top || b.top > bottom ||
b.right < left || b.left > right)
continue;
-
+
s = w.getComputedStyle(n, '');
p = s.position;
if (p == "absolute" || p == "fixed") {
c = " __noscriptPositioned__";
n.__noscriptPos = hasPos = true;
posn.push(n);
- } else {
+ } else {
hasPos = hasPos && n.parentNode.__noscriptPos;
if (!hasPos) continue;
c = '';
n.__noscriptPos = true;
posn.push(n);
}
-
+
if (s.backgroundImage != "none" || s.backgroundColor != "transparent") {
c += " __noscriptBlank__";
};
-
-
+
+
if (c) {
res.push(n = new ClassyObj(n));
n.append(c);
}
}
-
+
for each(n in posn) n.__noscriptPos = false;
-
+
if(ns.consoleDump & LOG_CLEARCLICK) ns.dump("DocPatcher.collectPositioned(): " + (Date.now() - t));
return res;
},
-
+
collectOpaqued: function(o, oo) {
if (!oo) oo = { opacity: 1, res: [] };
-
+
var w = o.ownerDocument.defaultView;
-
+
var opacity;
var co = null;
for(; o && o.hasAttribute; o = o.parentNode) {
@@ -1183,23 +1173,23 @@ DocPatcher.prototype = {
oo.res.push(new ClassyObj(o));
}
}
-
+
o = w.frameElement;
return o ? this.collectOpaqued(o, oo) : oo.res;
},
-
+
forceVisible: function(co) { // TODO: I cause too much reflow, please CHECK ME!
- co.append(this.shownCS);
+ co.append(this.shownCS);
},
-
+
forceOpaque: function(co) {
co.append(" __noscriptJustOpaqued__");
},
-
+
resetClass: function(co) {
co.reset();
},
-
+
_ancestors: null,
_cleanSheetHandle: null,
clean: function(toggle) {
@@ -1215,7 +1205,7 @@ DocPatcher.prototype = {
this.removeSheet(this._cleanSheetHandle);
}
},
-
+
_positioned: null,
_blankSheetHandle: null,
blankSheet: ".__noscriptPositioned__ * { color: white !important; border-color: white !important; }",
@@ -1228,7 +1218,7 @@ DocPatcher.prototype = {
this.removeSheet(this._blankSheetHandle);
}
},
-
+
_opaqued: null,
opaque: function(toggle) {
if (toggle) {
@@ -1238,7 +1228,7 @@ DocPatcher.prototype = {
this._opaqued.forEach(this.resetClass);
}
},
-
+
applySheet: function(sheetHandle) {
this.ns.updateStyleSheet(sheetHandle, true);
@@ -1247,11 +1237,11 @@ DocPatcher.prototype = {
removeSheet: function(sheetHandle) {
this.ns.updateStyleSheet(sheetHandle, false);
},
-
+
trafficLightHack: function(toggle) {
const ID = "tll_hui_container";
if (!(toggle && this.top.document.getElementById(ID))) return;
-
+
delete this.__proto__.trafficLightHack;
try {
Cc["@mozilla.org/chrome/chrome-registry;1"]
@@ -1274,16 +1264,16 @@ DocPatcher.prototype = {
return;
}
if (w.getComputedStyle(c, '').visibility !== "visible") return;
-
+
for each(let n in Array.push(c, c.getElementsByTagName("*"))) {
if (n.getBoundingClientRect().bottom > 50) return;
}
c.style.visibility = "hidden";
- this._trafficLightHackToggle = true;
+ this._trafficLightHackToggle = true;
}
this.trafficLightHack(toggle);
},
-
+
_linkAlertBox: null,
linkAlertHack: function(toggle) {
try {
@@ -1309,7 +1299,7 @@ DocPatcher.prototype = {
}
} catch (e) {}
},
-
+
_fbPresence: null,
fbPresenceHack: function(toggle) {
if (toggle) {
@@ -1319,7 +1309,7 @@ DocPatcher.prototype = {
if (fbPresence) {
fbPresence._ccVisibility = fbPresence.style.visibility;
fbPresence.style.visibility = "hidden";
- this._fbPresence = fbPresence;
+ this._fbPresence = fbPresence;
}
}
} catch(e) {}
@@ -1327,7 +1317,7 @@ DocPatcher.prototype = {
this._fbPresence.style.visibility = this._fbPresence._ccVisibility;
}
},
-
+
_abpTabs: null,
get _abpTabsObj() {
delete this.__proto__._abpTabsObj;
@@ -1346,7 +1336,7 @@ DocPatcher.prototype = {
}
return this.__proto__._abpTabsObj = tobj;
},
-
+
abpTabsHack: function(toggle) {
let visibleClass, hiddenClass;
try {
@@ -1367,7 +1357,7 @@ DocPatcher.prototype = {
if (toggle) {
let tabs = [];
for each(let c in visibleClasses) {
-
+
Array.forEach(document.getElementsByClassName(c), function(t) {
let co = new ClassyObj(t);
t.className = hiddenClass;
@@ -1385,7 +1375,7 @@ DocPatcher.prototype = {
}
}
: DUMMY_FUNC;
- this.abpTabsHack(toggle);
+ this.abpTabsHack(toggle);
}
};
@@ -1396,4 +1386,4 @@ DocPatcher.prototype = {
} catch(e) {
ns.dump(e.message + ":" + e.stack + " setting " + p + "\n");
}
-});
\ No newline at end of file
+});
diff --git a/chrome/noscript.jar!/content/noscript/Policy.js b/chrome/noscript.jar!/content/noscript/Policy.js
index eacfc1f..d3ef648 100644
--- a/chrome/noscript.jar!/content/noscript/Policy.js
+++ b/chrome/noscript.jar!/content/noscript/Policy.js
@@ -799,17 +799,13 @@ const MainContentPolicy = {
? this.isJSEnabled(originSite, win)
: jsRx.test(originURL); // if we've got such an origin, parent should be trusted
+ if (locationSite && this.checkShorthands(locationSite)) this.autoTemp(locationSite);
+
let locationOK = locationSite
? this.isJSEnabled(locationSite, win)
: jsRx.test(locationURL) && originOK // use origin for javascript: or data:
;
- if (!locationOK && locationSite && this.ignorePorts && this.portRx.test(locationSite)) {
- if (this.isJSEnabled(locationSite.replace(this.portRx, ''))) {
- locationOK = this.autoTemp(locationSite);
- }
- }
-
forbid = !(locationOK && (originOK ||
!this.getPref(blockThisFrame
? "forbidIFramesParentTrustCheck" : "forbidActiveContentParentTrustCheck",
diff --git a/chrome/noscript.jar!/content/noscript/RequestWatchdog.js b/chrome/noscript.jar!/content/noscript/RequestWatchdog.js
index 4e0f19a..5d7f487 100644
--- a/chrome/noscript.jar!/content/noscript/RequestWatchdog.js
+++ b/chrome/noscript.jar!/content/noscript/RequestWatchdog.js
@@ -487,7 +487,7 @@ RequestWatchdog.prototype = {
if(!trustedTarget) {
window = window || abeReq.window;
if(ns.autoAllow) {
- if (window && window == window.top) {
+ if (window && window == window.top || channel.loadInfo && channel.loadInfo.contentPolicyType === 6) {
targetSite = ns.getQuickSite(originalSpec, ns.autoAllow);
if(targetSite && !ns.isJSEnabled(targetSite, window)) {
ns.autoTemp(targetSite);
@@ -1407,7 +1407,7 @@ var InjectionChecker = {
),
_dotRx: /\./g,
- _removeDotsRx: /^openid\.[\w.-]+(?==)|(?:[?&#\/]|^)[\w.-]+(?=[\/\?&#]|$)|[\w\.]*\.(?:\b[A-Z]+|\d|[a-z][$_])[\w.-]*|=[a-z.-]+\.(?:com|net|org|biz|info|xxx|[a-z]{2})(?:[;&/]|$)/g,
+ _removeDotsRx: /^openid\.[\w.-]+(?==)|(?:[?&#\/]|^)[\w.-]+(?=[\/\?&#]|$)|[\w\.]*\.(?:\b[A-Z]+|\w*\d|[a-z][$_])[\w.-]*|=[a-z.-]+\.(?:com|net|org|biz|info|xxx|[a-z]{2})(?:[;&/]|$)/g,
_removeDots: function(p) p.replace(InjectionChecker._dotRx, '|'),
_arrayAccessRx: /\s*\[\d+\]/g,
_riskyOperatorsRx: /[+-]{2}\s*(?:\/[*/][\s\S]+)?(?:\w+(?:\/[*/][\s\S]+)?[[.]|location)|(?:\]|\.\s*(?:\/[*/][\s\S]+)?\w+|location)\s*(?:\/[*/][\s\S]+)?([+-]{2}|[+*\/<>~-]+\s*(?:\/[*/][\s\S]+)?=)/, // inc/dec/self-modifying assignments on DOM props
diff --git a/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js b/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
index 4741907..ccd282f 100644
--- a/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
+++ b/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
@@ -269,11 +269,11 @@ var ScriptSurrogate = {
_preamble: function(s) {
delete this._preamble;
- return (this._preamble = (typeof Proxy === "function"
+ return (this._preamble = (ns.geckoVersionCheck("37") >= 0
? function(s) s.indexOf("$S(") !== -1
? "{let $S; {let nsmHandler={get:function(t,n)n in t?t[n]:function()t.__noSuchMethod__(n,Array.prototype.slice.call(arguments))};$S=function(o)new Proxy(o||{},nsmHandler);}\n" + s + "\n}"
: s
- : function(s) "function $S(o)o|{};\n" + s
+ : function(s) "{let $S = function(o){return o||{};};\n" + s + "\n}"
))(s);
},
diff --git a/chrome/noscript.jar!/content/noscript/about.xul b/chrome/noscript.jar!/content/noscript/about.xul
index 9d62897..7f787cb 100644
--- a/chrome/noscript.jar!/content/noscript/about.xul
+++ b/chrome/noscript.jar!/content/noscript/about.xul
@@ -48,7 +48,7 @@ function about_onload() {
var str = getString("aboutTitle",["NoScript"]);
if(str) document.title = str;
- str = getString("version", ["2.6.9.34"]);
+ str = getString("version", ["2.6.9.36"]);
if(str) document.getElementById("extensionVersion").setAttribute("value", str);
setString("extensionDescription",null,"extensions.{73a6fe31-595d-460b-a920-fcc0f8843232}.description");
@@ -86,7 +86,7 @@ function about_open(url, features) {
<hbox id="headBox" align="end">
<vbox flex="1">
<label value="NoScript" id="extensionName" crop="right"/>
-<label value="Version 2.6.9.34" id="extensionVersion" crop="right"/>
+<label value="Version 2.6.9.36" id="extensionVersion" crop="right"/>
</vbox>
<vbox flex="1" align="end">
<hbox align="end">
@@ -164,7 +164,7 @@ function about_open(url, features) {
<hbox>
<label id="license" class="text-link" tooltiptext="Read end-user license" onclick="about_open('chrome://noscript/content/NoScript_License.txt')">License</label>
<spacer flex="1"/>
-<label id="changelog" class="text-link" align="center" tooltiptext="See Changelog" onclick="about_open('https://noscript.net/changelog#2.6.9.34')">Changelog</label>
+<label id="changelog" class="text-link" align="center" tooltiptext="See Changelog" onclick="about_open('https://noscript.net/changelog#2.6.9.36')">Changelog</label>
<spacer flex="1"/>
<label id="extensionHomepage" class="text-link" tooltiptext="Visit Extension Home Page" onclick="about_open('https://noscript.net')">https://noscript.net</label>
</hbox>
diff --git a/chrome/noscript.jar!/content/noscript/checkShort b/chrome/noscript.jar!/content/noscript/checkShort
new file mode 100644
index 0000000..0d58038
--- /dev/null
+++ b/chrome/noscript.jar!/content/noscript/checkShort
@@ -0,0 +1,78 @@
+var WinScript = ("blockScriptForGlobal" in Cu) ?
+{
+ supported: true,
+ block: function(window) {
+ if (window._blockScriptForGlobal) return;
+ try {
+ Cu.blockScriptForGlobal(window);
+ if (!("_blockScriptForGlobal" in window)) {
+ this.patchStyle(window.document);
+ }
+ } catch (e) {
+ if (!this._childDo("block", window)) throw e;
+ }
+ window._blockScriptForGlobal = true;
+ },
+ unblock: function(window) {
+ if (!window._blockScriptForGlobal) return;
+ try {
+ Cu.unblockScriptForGlobal(window);
+ } catch (e) {
+ if (this._childDo("unblock", window)) throw e;
+ }
+ window._blockScriptForGlobal = false;
+ },
+ isBlocked: function(window) {
+ return window._blockScriptForGlobal;
+ },
+ isDecided: function(window) {
+ return "_blockScriptForGlobal" in window;
+ },
+ get _childDo() {
+ delete this._childDo;
+ return (this._childDo = IPC.parent && IPC.parent.mm && ("isCrossProcessWrapper" in Cu) ?
+ function(verb, window) {
+ if (Cu.isCrossProcessWrapper(window)) {
+ IPC.parent.mm.broadcastAsyncMessage("NoScript:WinScript", verb, { window: window });
+ return true;
+ }
+ return false;
+ }
+ : function() { return false; }
+ );
+ }
+}
+:
+{
+ supported: false,
+ __noSuchMethod__: function() {},
+};
+
+WinScript._domUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
+WinScript.patchStyle = function(doc) {
+ let ss = this._domUtils.getAllStyleSheets(doc);
+ // reverse loop because the preference stylesheet is almost always the last one
+ for (let j = ss.length; j-- > 0;) {
+ let s = ss[j];
+ switch(s.href) {
+ case "about:PreferenceStyleSheet":
+ {
+ let rules = s.cssRules;
+ // skip 1st & 2nd, as they are HTML & SVG namespaces
+ for (let j = 2, len = rules.length; j < len; j++) {
+ let r = rules[j];
+ if (r.cssText === "noscript { display: none ! important; }") {
+ s.deleteRule(j);
+ return;
+ }
+ }
+ }
+ break;
+ case "resource://gre-resources/noscript.css":
+ doc.defaultView.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIDOMWindowUtils)
+ .loadSheetUsingURIString("data:text/css,noscript { display: inline !important }", 0);
+ return;
+ }
+ }
+};
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOptions.js b/chrome/noscript.jar!/content/noscript/noscriptOptions.js
index 84b307f..91696c7 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptOptions.js
+++ b/chrome/noscript.jar!/content/noscript/noscriptOptions.js
@@ -3,23 +3,23 @@
var ns = noscriptUtil.service;
var nsopt = {
-
+
dom2: /^(?:http[s]?|file):\/\/([^\.\?\/#,;:\\\@]+(:?\.[^\.\?\/#,;:\\\@]+$|$))/,
utils: null,
whitelistURLs: [],
init: function() {
- if(ns.uninstalling) { // this should never happen!
+ if(ns.uninstalling) { // this should never happen!
window.close();
return;
}
-
+
ns.optionsDialogRef = Components.utils.getWeakReference(window);
-
+
this.utils = new UIUtils(ns);
this.utils.resumeTabSelections();
-
+
abeOpts.init();
var locked = ns.locked;
@@ -29,12 +29,12 @@ var nsopt = {
}
// forbid <a ping>
var pingCbx = $("mozopt-browser.send_pings");
- if(pingCbx.getAttribute("label").indexOf("Allow ") == 0) {
+ if(pingCbx.getAttribute("label").indexOf("Allow ") == 0) {
pingCbx.setAttribute("label", noscriptUtil.getString("allowLocal", ["<a ping...>"]));
$("opt-noping")
.setAttribute("label", noscriptUtil.getString("forbidLocal", ["<a ping...>"]));
}
-
+
this.trustedSites = ns.jsPolicySites.clone();
this.untrustedSites = ns.untrustedSites.clone();
this.tempSites = ns.tempSites.clone();
@@ -42,9 +42,9 @@ var nsopt = {
this.urlListDisplay.boxObject.QueryInterface(Ci.nsITreeBoxObject);
this.populateUrlList();
-
+
this.jsglobal.checked = ns.jsEnabled;
-
+
this.utils.visitCheckboxes(function(prefName, inverse, checkbox, mozilla) {
try {
var val = mozilla ? ns.prefService.getBoolPref(prefName) : ns.getPref(prefName);
@@ -55,29 +55,29 @@ var nsopt = {
} catch(ex) {}
}
);
-
+
this.utils.visitTextboxes(function(prefName, box) {
- box.value = ns.getPref(prefName);
+ box.value = ns.getPref(prefName);
});
-
+
$("opt-showPermanent").setAttribute("label", noscriptUtil.getString("allowLocal", ["[...]"]));
$("opt-showTemp").setAttribute("label", noscriptUtil.getString("allowTemp", ["[...]"]));
$("opt-showDistrust").setAttribute("label", noscriptUtil.getString("distrust", ["[...]"]));
$("opt-showGlobal").setAttribute("label", noscriptUtil.getString("allowGlobal"));
-
+
var notifyHideLabels = noscriptUtil.getString("notifyHide").split("%S");
$("opt-notify.hide").setAttribute("label", notifyHideLabels[0]);
$("notifyDelayLabel").setAttribute("value", notifyHideLabels[1]);
$("notifyDelay").value = ns.getPref("notify.hideDelay", 5);
-
+
this.soundChooser.setSample(ns.getPref("sound.block"));
-
+
this.autoAllowGroup = new ConditionalGroup(ns, "autoAllow", 1);
this.toggleGroup = new ConditionalGroup(ns, "toolbarToggle", 3);
-
+
var val = ns.getPref("allowHttpsOnly", 0);
$("sel-allowHttpsOnly").selectedIndex = (val < 0 || val > 2) ? 0 : val;
-
+
var shortcut = ns.getPref("keys.toggle");
if(shortcut) {
shortcut = shortcut.replace(/VK_([^\.]*).*/g, "$1").replace(/\s+/g, '+').replace(/_/g, ' ');
@@ -85,62 +85,65 @@ var nsopt = {
shortcutLabel.value = "(" + shortcut + ")";
shortcutLabel.removeAttribute("hidden");
}
-
+
this.utils.syncGroup($("opt-secureCookies"));
-
+
this.xssEx = new RegExpController(
- "xssEx",
+ "xssEx",
ns.rxParsers.multi,
ns.getPref("filterXExceptions"));
-
+
// hide incompatible options
let browserWin = ns.dom.mostRecentBrowserWindow;
-
+
if (browserWin) {
if (!browserWin.document.getElementById("noscript-statusIcon"))
$("opt-statusIcon").setAttribute("hidden", "true");
-
+
if(browserWin.noscriptOverlay && !browserWin.noscriptOverlay.getNotificationBox())
$("fx-notifications").setAttribute("hidden", "true");
}
-
+
["clearClick"].forEach(function(c) {
var pref = ns.getPref(c);
- Array.forEach($(c + "Opts").getElementsByTagName("checkbox"), function(cbx) {
+ Array.forEach($(c + "Opts").getElementsByTagName("checkbox"), function(cbx) {
cbx.setAttribute("checked", !(pref & parseInt(cbx.getAttribute("value"))) ? "false" : "true");
});
});
-
-
+
+
if (!ns.placesSupported)
$("opt-placesPrefs").setAttribute("hidden", "true");
-
+
if (!ns.supportsCAPS) {
$("opt-allowClipboard").setAttribute("collapsed", "true");
}
-
+
this.initExtraButtons();
-
+
this.addButton.setAttribute("enabled", "false");
this.removeButton.setAttribute("enabled", "false");
-
+
this.toggleHoverUI();
-
-
+
+
window.sizeToContent();
},
-
+
+ dispose: function() {
+ abeOpts.dispose();
+ },
initExtraButtons: function() {
this.utils.moveButtonsDown("donateButton", "", "importConfButton", "exportConfButton");
},
-
-
+
+
donate: function() {
noscriptUtil.openDonate("options");
},
-
+
importConf: function() {
this.chooseFile(
this.buttonToTitle("importConfButton"),
@@ -158,20 +161,20 @@ var nsopt = {
function(f) {
ns.writeFile(f, ns.serializeConf(true));
}
- );
+ );
},
-
+
reset: function() {
-
- if(!noscriptUtil.prompter.confirm(window,
+
+ if(!noscriptUtil.prompter.confirm(window,
noscriptUtil.getString("reset.title"),
noscriptUtil.getString("reset.warning"))
) return;
-
+
ns.resetDefaults();
this.reload();
},
-
+
reload: function() {
this.utils.persistTabSelections();
var op = top.opener;
@@ -182,7 +185,7 @@ var nsopt = {
}
window.close();
},
-
+
save: function() {
/*
if (!$("abeRuleset-errors").hidden) {
@@ -194,7 +197,7 @@ var nsopt = {
p.BUTTON_TITLE_DONT_SAVE * p.BUTTON_POS_1 +
p.BUTTON_POS_1_DEFAULT,
null, null, null, null, {}) === 1
- )
+ )
return false;
}
*/
@@ -203,14 +206,14 @@ var nsopt = {
if(checkbox.getAttribute("collapsed")!="true") {
const checked = checkbox.getAttribute("checked") == "true";
const requestedVal = inverse ? !checked : checked;
-
+
if(mozilla) {
try {
ns.prefService.setBoolPref(prefName, requestedVal);
} catch(ex) {}
return;
}
-
+
const prevVal = ns.getPref(prefName);
if(requestedVal != prevVal) {
ns.setPref(prefName, requestedVal);
@@ -218,14 +221,14 @@ var nsopt = {
}
}
);
-
-
+
+
this.utils.visitTextboxes(function(prefName, box) {
if (box.value != ns.getPref(prefName)) {
ns.setPref(prefName, box.value);
}
});
-
+
["clearClick"].forEach(function(c) {
var pref = 0;
Array.forEach($(c + "Opts").getElementsByTagName("checkbox"), function(cbx) {
@@ -233,35 +236,35 @@ var nsopt = {
});
ns.setPref(c, pref);
});
-
-
- ns.setPref("notify.hideDelay", parseInt($("notifyDelay").value) ||
+
+
+ ns.setPref("notify.hideDelay", parseInt($("notifyDelay").value) ||
ns.getPref("notify.hideDelay", 5));
ns.setPref("sound.block", this.soundChooser.getSample());
-
+
this.autoAllowGroup.persist();
-
+
if (!(ns.getPref("hoverUI.excludeToggling") && $("opt-hoverUI").checked)) {
this.toggleGroup.persist();
}
-
+
ns.setPref("allowHttpsOnly", $("sel-allowHttpsOnly").selectedIndex);
-
+
var exVal = this.xssEx.getValue();
- if(this.xssEx.validate() || !/\S/.test(exVal))
+ if(this.xssEx.validate() || !/\S/.test(exVal))
ns.setPref("filterXExceptions", exVal);
-
+
if (this.tempRevoked) {
ns.resetAllowedObjects();
}
-
+
var global = this.jsglobal.getAttribute("checked") == "true";
var untrustedSites = this.untrustedSites;
var trustedSites = this.trustedSites;
var tempSites = this.tempSites;
var gTempSites = this.gTempSites;
-
+
ns.safeCapsOp(function(ns) {
if(ns.untrustedSites.sitesString != untrustedSites.sitesString
|| ns.jsPolicySites.sitesString != trustedSites.sitesString
@@ -282,7 +285,7 @@ var nsopt = {
});
return true;
},
-
+
urlListChanged: function(dontUpdate) {
const selectedItems = noscriptTreeCc.getSelectedItems(this.urlListDisplay, this.whitelistURLs);
var removeDisabled = true;
@@ -291,15 +294,15 @@ var nsopt = {
removeDisabled = false;
break;
}
- }
+ }
this.removeButton.setAttribute("disabled", removeDisabled);
$("revokeButton")
- .setAttribute("disabled", this.tempRevoked ||
+ .setAttribute("disabled", this.tempRevoked ||
!(this.tempSites.sitesString || this.gTempSites.sitesString || ns.objectWhitelistLen));
if (!dontUpdate) nsWhitelistTreeView.updateTree();
this.urlChanged();
},
-
+
openInfo: function(ev) {
if (ev.button === 1) {
setTimeout(function() {
@@ -318,7 +321,7 @@ var nsopt = {
copyUrlListSel: function() {
noscriptTreeCc.doCopy(this.urlListDisplay, "", " ");
},
-
+
urlChanged: function() {
var url = this.urlText.value;
if(url.match(/\s/)) url = this.urlText.value = url.replace(/\s/g,'');
@@ -333,7 +336,7 @@ var nsopt = {
}
this.addButton.setAttribute("disabled", !addEnabled);
},
-
+
notifyHideDelay: {
onInput: function(txt) {
if(/\D/.test(txt.value)) txt.value = txt.value.replace(/\D/, "");
@@ -342,7 +345,7 @@ var nsopt = {
txt.value = parseInt(txt.value) || ns.getPref("notify.hideDelay", 5);
}
},
-
+
ensureVisible: function(site) {
for(var j = nsWhitelistTreeView.rowCount; j-- > 0;) {
if(nsWhitelistTreeView.getCellText(j) == site) {
@@ -364,11 +367,11 @@ var nsopt = {
for(j = 0, len = sites.length; j < len; j++) {
site = sites[j];
// skip protocol + 2nd level domain URLs
- if((match = site.match(dom2)) && policy.matches(item = match[1]))
+ if((match = site.match(dom2)) && policy.matches(item = match[1]))
continue;
-
+
item = {value:site};
- if(ns.isMandatory(site)) {
+ if(ns.isMandatory(site)) {
item.mandatory = true;
}
item.temp = site in tempMap;
@@ -383,22 +386,22 @@ var nsopt = {
this.trustedSites.add(site);
this.tempSites.remove(site, true, true); // see noscriptService#eraseTemp()
this.gTempSites.remove(site, true, true);
-
+
this.untrustedSites.remove(site, false, !ns.mustCascadeTrust(site, false));
this.populateUrlList();
this.ensureVisible(site);
this.addButton.setAttribute("disabled", "true");
},
-
+
remove: function() {
const ul = this.urlListDisplay;
const selectedItems = noscriptTreeCc.getSelectedItems(ul, this.whitelistURLs);
var visIdx = ul.boxObject.getFirstVisibleRow();
var lastIdx = visIdx + ul.boxObject.getPageLength();
-
-
-
-
+
+
+
+
var removed = [];
for(var j = selectedItems.length; j-- > 0;) {
if(!ns.isMandatory(site = selectedItems[j].value)) {
@@ -406,11 +409,11 @@ var nsopt = {
}
}
if (!removed.length) return;
-
+
this.trustedSites.remove(removed, true); // keepUp
this.tempSites.remove(removed, true, true); // see noscriptService#eraseTemp()
this.gTempSites.remove(removed, true, true);
-
+
this.populateUrlList();
},
@@ -430,28 +433,28 @@ var nsopt = {
this.tempRevoked = true;
this.populateUrlList();
},
-
+
_soundChooser: null,
get soundChooser() {
- return this._soundChooser ||
- (this._soundChooser =
+ return this._soundChooser ||
+ (this._soundChooser =
new SoundChooser(
- "sampleURL",
+ "sampleURL",
this.buttonToTitle("sampleChooseButton"),
ns,
"chrome://noscript/skin/block.wav"
));
},
-
-
+
+
chooseFile: function(title, mode, callback) {
try {
const IFP = Ci.nsIFilePicker;
const fp = Cc["@mozilla.org/filepicker;1"].createInstance(IFP);
-
+
fp.init(window, title, IFP["mode" + mode]);
-
- try {
+
+ try {
fp.displayDirectory = ns.prefs.getComplexValue("exportDir", Ci.nsILocalFile);
} catch (e) {
fp.displayDirectory = Cc["@mozilla.org/file/directory_service;1"]
@@ -460,7 +463,7 @@ var nsopt = {
}
fp.defaultExtension = "txt";
const ret = fp.show();
- if(ret == IFP.returnOK ||
+ if(ret == IFP.returnOK ||
ret == IFP.returnReplace) {
callback.call(nsopt, fp.file);
}
@@ -471,8 +474,8 @@ var nsopt = {
noscriptUtil.prompter.alert(window, title, ex.toString());
}
},
-
-
+
+
importExport: function(op) {
this.chooseFile(
this.buttonToTitle(op + "Button"),
@@ -480,7 +483,7 @@ var nsopt = {
this[op + "List"]
);
},
-
+
importList: function(file) {
var all = ns.readFile(file).replace(/\s+/g, "\n");
var untrustedPos = all.indexOf("[UNTRUSTED]");
@@ -494,21 +497,21 @@ var nsopt = {
this.populateUrlList();
return null;
},
-
+
exportList: function(file) {
var list = ns.getPermanentSites(this.trustedSites, this.tempSites);
list.remove(ns.mandatorySites.sitesList, true, true);
- ns.writeFile(file, list.sitesList.join("\n") +
+ ns.writeFile(file, list.sitesList.join("\n") +
"\n[UNTRUSTED]\n" +
this.untrustedSites.sitesList.join("\n")
);
return null;
},
-
+
buttonToTitle: function(btid) {
return "NoScript - " + $(btid).getAttribute("label");
},
-
+
toggleHoverUI: function(cbx) {
if (ns.getPref("hoverUI.excludeToggling")) {
let cbx = $("cbx-toolbarToggle");
@@ -527,7 +530,7 @@ var nsopt = {
}
}
}
-
+
}
var ABE = ns.ABE;
@@ -537,17 +540,23 @@ var abeOpts = {
_map: {__proto__: null},
errors: false,
QueryInterface: ns.wan.QueryInterface, // dirty hack, we share the same observer ifaces
-
+
init: function() {
this.list = $("abeRulesets-list");
this.populate();
-
+
this.updateWAN(ns.wan.ip);
const OS = ns.os;
OS.addObserver(this, ns.wan.IP_CHANGE_TOPIC, true);
OS.addObserver(this, ABE.RULES_CHANGED_TOPIC, true);
},
-
+
+ dispose: function() {
+ const OS = ns.os;
+ OS.removeObserver(this, ns.wan.IP_CHANGE_TOPIC);
+ OS.removeObserver(this, ABE.RULES_CHANGED_TOPIC);
+ },
+
observe: function(subject, topic, data) {
if (topic === ns.wan.IP_CHANGE_TOPIC) this.updateWAN(data);
else if (topic === ABE.RULES_CHANGED_TOPIC) {
@@ -555,11 +564,11 @@ var abeOpts = {
this.errors = false;
}
},
-
+
updateWAN: function(ip) {
$("opt-ABE.wanIpAsLocal").label = ns.getString("ABE.wanIpAsLocal", [ip || "???"]);
},
-
+
reset: function() {
ABE.resetDefaults();
},
@@ -568,9 +577,9 @@ var abeOpts = {
},
changed: function(i) {
let current = i || this.list.selectedItem;
-
+
if (current && this.dirty) {
-
+
let name = current.value;
let source = $("abeRuleset-text-container").selectedPanel.value;
let ruleset = ABE.createRuleset(name, source);
@@ -593,7 +602,7 @@ var abeOpts = {
ABE.storeRuleset(name, source);
}
},
-
+
_populating: false,
populate: function() {
if (this._populating) return;
@@ -639,14 +648,14 @@ var abeOpts = {
$("abeRuleset-text-container").appendChild(textbox);
}
}
- this._map = map;
+ this._map = map;
l.selectedItem = selItem;
this.sync();
} finally {
this._populating = false;
}
},
-
+
selected: function(i) {
if (this.dirty) {
let selIndex = this.list.selectedIndex;
@@ -656,13 +665,13 @@ var abeOpts = {
if (!this._populating) this.sync();
this.dirty = null;
},
-
+
select: function(rs) {
var name = rs && rs.name || rs;
if (!name) return;
var l = this.list;
if (l.selectedItem && l.selectedItem.value == name) return;
-
+
for(var j = l.getRowCount(), i; j-- > 0;) {
i = l.getItemAtIndex(j);
if (i.value == name) {
@@ -671,26 +680,26 @@ var abeOpts = {
}
}
},
-
+
sync: function() {
var selItem = this.list.selectedItem;
-
+
var rs = null;
if (selItem) {
this.selectedRS = rs = this._map[selItem.value];
} else {
this.selectedRS = null;
}
-
+
$("abeEnable-button").disabled = ! ($("abeDisable-button").disabled = !rs || rs.disabled);
$("abeRefresh-button").disabled = this.list.getRowCount() == 0;
$("abeRuleset-text-container").setAttribute("selectedIndex", this.list.selectedIndex);
-
+
var text = $("abeRuleset-text-container").selectedPanel;
text.className = selItem && selItem.className || '';
text.disabled = !selItem || selItem.disabled;
text.value = rs && rs.source;
-
+
text = $("abeRuleset-errors");
if (rs && rs.errors) {
this.ShowHideABEError(false);
@@ -701,17 +710,17 @@ var abeOpts = {
text.value = "";
}
},
-
+
refresh: function() {
ABE.refresh();
},
-
+
ShowHideABEError: function(hidden) {
for each (let n in document.getElementsByClassName("abe-error-element")) {
n.hidden = hidden;
}
},
-
+
toggle: function(enabled) {
var selItem = this.list.selectedItem;
var rs = this.selectedRS;
@@ -724,7 +733,7 @@ var abeOpts = {
ns.setPref("ABE.disabledRulesetNames", ABE.disabledRulesetNames);
this.sync();
}
-
+
}
var nsWhitelistTreeView = {
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOptions.xul b/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
index 6c52122..23cd4c1 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
+++ b/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
@@ -4,49 +4,50 @@
<?xml-stylesheet href="chrome://noscript/skin/options.css" type="text/css"?>
<!DOCTYPE dialog SYSTEM "chrome://noscript/locale/noscript.dtd">
-<dialog id="noscriptOptions"
+<dialog id="noscriptOptions"
onload="nsopt.init()"
+ onunload="nsopt.dispose()"
ondialogaccept="return nsopt.save()"
-
+
title="&noscriptOptionsLong;"
buttons="extra2,accept,cancel"
-
+
buttonlabelextra2="&noscriptReset;"
- buttonaccesskeyextra2="&noscriptReset.accesskey;"
+ buttonaccesskeyextra2="&noscriptReset.accesskey;"
ondialogextra2="nsopt.reset()"
-
+
ondialoghelp="noscriptUtil.openHelp('options')"
-
+
spacerflex="1"
persist="screenX screenY"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
+
<script type="application/x-javascript;version=1.8" src="noscript.js" />
<script type="application/x-javascript;version=1.8" src="iaUI.js" />
<script type="application/x-javascript;version=1.8" src="tree-copy.js" />
<script type="application/x-javascript;version=1.8" src="noscriptOptions.js" />
-
+
<vbox style="width: &noscriptOptionsWidth;">
<tabbox id="nsopt-tabsMain">
<tabs>
-
+
<tab label="&noscriptGeneral;" id="nsopt-tabGeneral"/>
<tab label="&noscriptWhitelist;" id="nsopt-tabWhitelist"/>
<tab label="&noscriptEmbeddings;" id="nsopt-tabEmbeddings"/>
<tab label="&noscriptAppearance;" id="nsopt-tabAppearance"/>
<tab label="&noscriptNotifications;" id="nsopt-tabNotifications"/>
<tab label="&noscriptAdvanced;" id="nsopt-tabAdvanced"/>
-
+
</tabs>
<tabpanels>
-
+
<tabpanel><!-- General -->
-
+
<vbox flex="1">
<groupbox class="ia-indent">
<caption><checkbox id="cbx-autoAllow" label="&noscriptAutoAllowTopLevel;"/></caption>
- <radiogroup id="sel-autoAllow">
+ <radiogroup id="sel-autoAllow">
<radio label="&noscriptFullAddr;" value="1" selected="true"/>
<radio label="&noscriptFullDom;" value="2"/>
<radio label="&noscriptBaseDom;" value="3"/>
@@ -58,14 +59,14 @@
<checkbox id="cbx-toolbarToggle" label="&noscriptToolbarToggle;"/>
<label control="sel-toolbarToggle" id="toolbarToggle-shortcut" class="ia-indent" hidden="true"/>
</caption>
-
- <radiogroup id="sel-toolbarToggle">
+
+ <radiogroup id="sel-toolbarToggle">
<radio label="&noscriptFullAddr;" value="1"/>
<radio label="&noscriptFullDom;" value="2"/>
<radio label="&noscriptBaseDom;" value="3" selected="true"/>
</radiogroup>
</groupbox>
-
+
<checkbox id="opt-autoReload" label="&noscriptAutoReload;" />
<vbox class="ia-indent">
@@ -74,23 +75,23 @@
<separator class="thin"/>
<checkbox id="opt-allowBookmarks" label="&noscriptAllowViaBookmarks;" />
<checkbox id="opt-placesPrefs" label="&noscriptBookmarkSync;" />
-
+
<spacer flex="1" />
<button id="importConfButton" label="&noscriptImport;" hidden="true" oncommand="nsopt.importConf()" />
<button id="exportConfButton" label="&noscriptExport;" hidden="true" oncommand="nsopt.exportConf()" />
<button id="donateButton" label="&noscriptDonate;" accesskey="&noscriptDonate.accesskey;" hidden="true" oncommand="nsopt.donate();" />
</vbox>
</tabpanel><!-- END General -->
-
+
<tabpanel><!-- Whitelist -->
<vbox flex="1">
<description style="white-space: normal; width: 33em" id="permissionsText">&noscriptPermissionsText;</description>
<separator class="thin"/>
<label control="urlText" value="&noscriptWebAddress;"/>
<hbox align="center">
- <textbox id="urlText" flex="1" oninput="nsopt.urlChanged()"/>
- <button disabled="false" id="addButton" label="&noscriptAllow;"
- accesskey="&noscriptAllow.accesskey;"
+ <textbox id="urlText" flex="1" oninput="nsopt.urlChanged()"/>
+ <button disabled="false" id="addButton" label="&noscriptAllow;"
+ accesskey="&noscriptAllow.accesskey;"
oncommand="nsopt.allow()"/>
</hbox>
@@ -114,15 +115,15 @@
<button id="removeButton" disabled="true" label="&noscriptRemoveSelected;" oncommand="nsopt.remove()"/>
<button id="revokeButton" disabled="true" label="&noscriptRevokeTemp;" accesskey="&noscriptRevokeTemp.accesskey;" oncommand="nsopt.revokeTemp()"/>
<spacer flex="1" />
- <button id="importButton" label="&noscriptImport;" accesskey="&noscriptImport.accesskey;"
+ <button id="importButton" label="&noscriptImport;" accesskey="&noscriptImport.accesskey;"
oncommand="nsopt.importExport('import')"/>
- <button id="exportButton" label="&noscriptExport;" accesskey="&noscriptExport.accesskey;"
+ <button id="exportButton" label="&noscriptExport;" accesskey="&noscriptExport.accesskey;"
oncommand="nsopt.importExport('export')"/>
</hbox>
<checkbox id="jsglobal" label="&noscriptGloballyEnabled;" />
</vbox>
</tabpanel><!-- END Whitelist -->
-
+
<tabpanel><!-- Embeddings -->
<vbox flex="1">
<label class="header" value="&noscriptAdditionalRestrictions;" />
@@ -145,7 +146,7 @@
<separator class="thin" />
<checkbox id="opt-contentBlocker" label="&noscriptContentBlocker;" class="header" />
<checkbox id="opt-alwaysBlockUntrustedContent" label="&noscriptAlwaysBlockUntrustedContent;" />
-
+
<separator class="thin" />
<checkbox id="opt-forbidWebGL" label="&noscriptForbidWebGL;" />
<separator class="thin" />
@@ -153,23 +154,23 @@
<checkbox id="invopt-showUntrustedPlaceholder" label="&noscriptNoUntrustedPlaceholder;" />
<checkbox id="opt-confirmUnblock" label="&noscriptConfirmUnblock;" />
<checkbox id="opt-collapseObject" label="&noscriptCollapseBlockedObjects;" />
-
+
<hbox>
-
+
<spacer flex="1" />
</hbox>
</vbox>
</tabpanel>
-
+
<tabpanel><!-- Appearance -->
<vbox flex="1">
-
+
<label class="header" value="&noscriptShow;"/>
<checkbox id="opt-statusIcon" label="&noscriptStatusIcon;" />
<checkbox id="opt-statusLabel" label="&noscriptStatusLabel;" />
<checkbox id="opt-ctxMenu" label="&noscriptCtxMenu;" />
-
+
<separator />
<hbox>
<vbox flex="1">
@@ -203,7 +204,7 @@
</vbox>
</tabpanel><!-- END Appearance -->
-
+
<tabpanel><!-- Notifications -->
<vbox flex="1">
<vbox id="fx-notifications">
@@ -225,26 +226,26 @@
<separator class="thin" />
<hbox align="center">
<checkbox id="opt-xss.notify" label="&noscriptXss;" /><!-- TODO: accesskey -->
- <label class="text-link" style="font-weight: bold" value="?"
+ <label class="text-link" style="font-weight: bold" value="?"
onclick="noscriptUtil.openFaq('xss')"
tooltiptext="&noscriptXssFaq;" />
</hbox>
-
-
+
+
<checkbox id="opt-forbidMetaRefresh.notify" label="&noscriptNotifyMeta;" accesskey="&noscriptNotifyMeta.accesskey;"/>
-
+
<checkbox id="opt-ABE.notify" label="&ABE;"/><!-- TODO: accesskey -->
</vbox>
-
+
<checkbox id="opt-clearClick.prompt" label="&noscriptClearClickTitle;"/>
-
+
<groupbox class="ia-indent">
<caption><checkbox id="opt-sound" label="&noscriptSound;" /></caption>
-
+
<hbox>
<textbox id="sampleURL" readonly="true" flex="1" />
- <button id="sampleChooseButton" label="&noscriptSound.choose;"
- accesskey="&noscriptSound.choose.accesskey;"
+ <button id="sampleChooseButton" label="&noscriptSound.choose;"
+ accesskey="&noscriptSound.choose.accesskey;"
oncommand="nsopt.soundChooser.choose()" />
</hbox>
<hbox align="right">
@@ -254,13 +255,13 @@
<button label="&noscriptSound.reset;" accesskey="&noscriptSound.reset.accesskey;"
oncommand="nsopt.soundChooser.setSample(null)" />
</hbox>
-
+
</groupbox>
<checkbox id="opt-firstRunRedirection" label="&noscriptShowReleaseNotes;"/>
</vbox>
</tabpanel><!-- END Notifications -->
-
+
<tabpanel><!-- Advanced -->
<vbox flex="1">
<hbox><description style="white-space: normal">&noscriptReloadWarn;</description></hbox>
@@ -277,7 +278,7 @@
<tabpanel>
<vbox flex="1">
<label class="header" value="&noscriptAdditionalRestrictions;" />
-
+
<checkbox id="opt-forbidBookmarklets" label="&noscriptForbidBookmarklets;" />
<checkbox id="opt-noping" label="&noscriptForbidPing;" />
<separator class="thin"/>
@@ -286,37 +287,37 @@
<checkbox id="opt-forbidXSLT" label="&noscriptForbidXSLT;" />
<separator class="thin"/>
<checkbox id="opt-fixLinks" label="&noscriptFixLinks;" />
-
+
<separator class="thin"/>
<checkbox id="opt-restrictSubdocScripting" label="&noscriptRestrictSubdocScripting;" />
-
+
<separator />
- <label class="text-link header"
+ <label class="text-link header"
onclick="document.getElementById('nsopt-tabsMain').selectedTab = document.getElementById('nsopt-tabEmbeddings')"
value="&noscriptEmbeddings;" />
</vbox>
</tabpanel><!-- END additional restrictions -->
-
+
<tabpanel><!-- Additional Permissions -->
<vbox flex="1">
<label class="header" value="&noscriptAdditionalPermissions;" />
<checkbox id="opt-nselForce" label="&noscriptNselForce;" />
<checkbox id="mozopt-browser.send_pings" label="&noscriptAllowPing;" />
-
+
<separator class="thin" />
<checkbox id="opt-allowClipboard" label="&noscriptAllowClipboard;" />
<checkbox id="opt-allowLocalLinks" label="&noscriptAllowLocalLinks;" />
-
+
<separator class="thin" />
<checkbox id="opt-cascadePermissions" label="&noscriptCascadePermissions;" />
</vbox>
</tabpanel><!-- END Additional Permissions -->
-
+
<tabpanel><!-- XSS -->
<vbox flex="1">
- <label class="text-link header"
+ <label class="text-link header"
onclick="noscriptUtil.openFaq('xss')" value="&noscriptXssFaq;"
accesskey="&noscriptXssFaq.accesskey;"
/>
@@ -325,33 +326,33 @@
<separator class="thin" />
<label control="xssEx-regexp" class="header" value="&noscriptXssExceptions;" />
<description control="xssEx-regexp" style="white-space: normal">&noscriptXssExceptions.description;</description>
- <textbox id="xssEx-regexp" multiline="true" flex="1" />
+ <textbox id="xssEx-regexp" multiline="true" flex="1" />
<hbox align="center">
<label control="xssEx-sample" value="&noscriptMatchSample;" />
<textbox id="xssEx-sample" flex="1" value="https://www.google.com/search?q=test" />
</hbox>
</vbox>
</tabpanel>
-
+
<tabpanel><!-- HTTPS -->
<vbox flex="1">
<label class="text-link header"
accesskey="&noscriptHttpsFaq.accesskey;"
onclick="noscriptUtil.openFaq('https')"
value="&noscriptHttpsFaq;"/>
-
+
<tabbox id="nsopt-tabsHttps" flex="1">
<tabs>
<tab label=" &noscriptHttps.behavior; " id="nsopt-tabHttpsBehavior" />
<tab label=" &noscriptHttps.cookies; " id="nsopt-tabHttpsCookies"/>
<tab label=" &noscriptPermissions; " id="nsopt-tabHttpsPermissions"/>
-
+
</tabs>
-
+
<tabpanels flex="1">
<tabpanel>
<vbox flex="1">
-
+
<description control="opt-httpsForced" style="white-space: normal">&noscriptHttpsForced;</description>
<textbox id="opt-httpsForced" multiline="true" flex="1" />
<description control="opt-httpsForcedExceptions" style="white-space: normal">&noscriptHttpsForcedExceptions;</description>
@@ -364,7 +365,7 @@
<caption><checkbox id="opt-secureCookies" label="&noscriptSecureCookies;" oncommand="nsopt.utils.syncGroup(this)" /></caption>
<description control="opt-secureCookiesForced" style="white-space: normal">&noscriptSecureCookiesForced;</description>
<textbox id="opt-secureCookiesForced" multiline="true" flex="1" />
-
+
<description control="opt-secureCookiesExceptions" style="white-space: normal">&noscriptSecureCookiesExceptions;</description>
<textbox id="opt-secureCookiesExceptions" multiline="true" flex="1" />
</groupbox>
@@ -411,7 +412,7 @@
<vbox >
<label control="abeRulesets-list" value="&ABE.rulesets.label;" />
<hbox flex="1">
- <listbox id="abeRulesets-list"
+ <listbox id="abeRulesets-list"
onselect="abeOpts.selected(this)"
ondblclick="abeOpts.edit(this)"
flex="1"
@@ -430,7 +431,7 @@
readonly="true" multiline="true" rows="2" hidden="true" value="" />
</vbox>
</hbox>
-
+
</vbox>
<hbox align="center">
<button id="abeRefresh-button" label="&ABE.refresh.label;" accesskey="&ABE.refresh.accesskey;" oncommand="abeOpts.refresh()" />
@@ -442,7 +443,7 @@
</hbox>
</vbox>
</tabpanel><!-- End ABE -->
-
+
<tabpanel><!-- ClearClick -->
<vbox flex="1">
@@ -452,16 +453,16 @@
<checkbox id="cc2" value="2" label="&noscriptTrustedPagesAdj;"/>
</vbox>
</vbox>
-
+
</tabpanel><!-- End ClearClick -->
-
+
</tabpanels>
-
-
+
+
</tabbox>
</vbox>
</tabpanel>
-
+
</tabpanels>
</tabbox>
</vbox>
diff --git a/chrome/noscript.jar!/content/noscript/parentProcess.js b/chrome/noscript.jar!/content/noscript/parentProcess.js
index 508529e..2dfaf16 100644
--- a/chrome/noscript.jar!/content/noscript/parentProcess.js
+++ b/chrome/noscript.jar!/content/noscript/parentProcess.js
@@ -26,13 +26,18 @@ IPC.parent = {
globalMM.removeDelayedFrameScript("chrome://noscript/content/frameScript.js");
let mm = this.mm;
if (mm) {
- mm.removeWeakMessageListener("NoScript:mustBlockJS");
+ mm.removeWeakMessageListener("NoScript:mustBlockJS", this);
mm.removeDelayedProcessScript("chrome://noscript/content/processScript.js");
}
}
},
receiveMessage: function(m) {
+ ns.onContentInit();
+ this.receiveMessage = this._receiveMessageReal;
+ return this.receiveMessage(m);
+ },
+ _receiveMessageReal: function(m) {
switch(m.name) {
case "NoScript:mustBlockJS":
return ns.mustBlockJS(m.objects.window, m.data.site, WinScript);
diff --git a/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd b/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
index 98a2195..a7b44cf 100644
--- a/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Настройки…">
<!ENTITY noscriptOptions.accesskey "Н">
<!ENTITY noscriptOptionsLong "Настройки на NoScript">
-<!ENTITY noscriptAbout "За NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "За NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Можете да зададете в кои уеб-сайтове е позволено да се използват скриптовете. Напишете адреса или домейна (например "http://www.site.com" или "site.com") на сайта, който искате да разрешите и натиснете Разреши.">
<!ENTITY noscriptWebAddress "Адрес на уеб-сайта:">
<!ENTITY noscriptAllow "Разреши">
diff --git a/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
index 22ab2ed..81f872b 100644
--- a/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opcions...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opcions de NoScript">
-<!ENTITY noscriptAbout "Quant a NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Quant a NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Podeu especificar quins llocs web poden executar seqüències. El tipus d'adreça o el domini (p.ex. "http://www.site.com" o "site.com") del lloc al qual voleu donar permissos i feu clic a Permet.">
<!ENTITY noscriptWebAddress "Adreça del lloc web:">
<!ENTITY noscriptAllow "Permet">
diff --git a/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd b/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
index dac0215..ba5d9f2 100644
--- a/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Nastavení...">
<!ENTITY noscriptOptions.accesskey "N">
<!ENTITY noscriptOptionsLong "Nastavení NoScript">
-<!ENTITY noscriptAbout "O rozšíření NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "O rozšíření NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Můžete si zvolit, které webové stránky mají povoleno spouštět skripty. Zadejte adresu (např. http://www.site.com nebo site.com) na které se nachází stránka, pro kterou chcete skripty povolit a klepněte na Povolit.">
<!ENTITY noscriptWebAddress "Adresa webové stránky:">
<!ENTITY noscriptAllow "Povolit">
diff --git a/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd b/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
index cf2dc24..264e752 100644
--- a/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opsiynau">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opsiynau NoScript">
-<!ENTITY noscriptAbout "Yngylch NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Yngylch NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Cewch enwi pa wefannau sy'n cael rhedeg sgriptiau. Teipiwch gyfeiriad neu barth (e.e. "http://www.site.com" neu "site.com") y safle rydych eisiau ei ganiatau ac wedyn cliciwch Caniatau.">
<!ENTITY noscriptWebAddress "Cyfeiriad wefan">
<!ENTITY noscriptAllow "Caniatau">
diff --git a/chrome/noscript.jar!/locale/da/noscript/noscript.dtd b/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
index 59f22c4..a745758 100644
--- a/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Indstillinger…">
<!ENTITY noscriptOptions.accesskey "I">
<!ENTITY noscriptOptionsLong "NoScript Indstillinger">
-<!ENTITY noscriptAbout "Om NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Om NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Du kan angive hvilke websteder der må udføre scripts. Indtast adresse eller domæne (f.eks. "http://www.site.com" eller "site.com") på det websted du ønsker at tillade og klik på Tillad.">
<!ENTITY noscriptWebAddress "Webstedets adresse:">
<!ENTITY noscriptAllow "Tillad">
diff --git a/chrome/noscript.jar!/locale/de/noscript/noscript.dtd b/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
index f34596a..5619702 100644
--- a/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Einstellungen…">
<!ENTITY noscriptOptions.accesskey "E">
<!ENTITY noscriptOptionsLong "NoScript - Einstellungen">
-<!ENTITY noscriptAbout "Über NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "Über NoScript 2.6.9.36…">
<!ENTITY noscriptPermissionsText "Sie können festlegen, welchen Websites Sie das Ausführen von Skripten erlauben möchten. Geben Sie bitte die exakte Adresse oder die Domain der Website ein (z.B. "http://www.site.com" oder "site.com"), für die Sie dies zulassen möchten, und klicken Sie dann auf "Erlauben".">
<!ENTITY noscriptWebAddress "Adresse der Website:">
<!ENTITY noscriptAllow "Erlauben">
diff --git a/chrome/noscript.jar!/locale/el/noscript/noscript.dtd b/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
index c238ff5..2d37b4e 100644
--- a/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Επιλογές">
<!ENTITY noscriptOptions.accesskey "Ε">
<!ENTITY noscriptOptionsLong "Επιλογές NoScript">
-<!ENTITY noscriptAbout "Περί NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Περί NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Μπορείτε να καθορίσετε για ποιους ιστότοπους θα επιτρέπεται η εκτέλεση σεναρίων εντολών. Πληκτρολογήστε τη διεύθυνση τομέα (πχ. "http://www.site.com" or "site.com") του ιστότοπου που θέλετε και μετά κάντε κλικ στο «Να επιτρέπεται»">
<!ENTITY noscriptWebAddress "Διεύθυνση ιστότοπου">
<!ENTITY noscriptAllow "Να επιτρέπεται">
diff --git a/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd b/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
index 5b1c1f5..136014b 100644
--- a/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Options…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "About NoScript 2.6.9.36…">
<!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
<!ENTITY noscriptWebAddress "Address of web site:">
<!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd b/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
index 0d33259..f8bffae 100644
--- a/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Options…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "About NoScript 2.6.9.36…">
<!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
<!ENTITY noscriptWebAddress "Address of web site:">
<!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd b/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
index 9f76842..2781c0a 100644
--- a/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opcioj…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opcioj de NoScript">
-<!ENTITY noscriptAbout "Pri NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "Pri NoScript 2.6.9.36…">
<!ENTITY noscriptPermissionsText "Vi povas specifi, kiuj ttt-ejoj rajtu plenumigi skriptojn. Entajpu la adreson aŭ la domajnonomon (ekz. “http://www.retejo.org” aŭ “retejo.org”) de la ttt-ejo, kiun vi volas rajtigi, kaj poste alklaku “Rajtigi”.">
<!ENTITY noscriptWebAddress "Adreso de retpaĝaro:">
<!ENTITY noscriptAllow "Rajtigi">
diff --git a/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
index d790a54..628e156 100644
--- a/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opciones…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opciones de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Acerca de NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Puede especificar a cuáles sitios web le permitirá ejecutar scripts. Escriba la dirección o el dominio (por ejemplo, "http://www.sitio.com" o "sitio.com") del sitio y luego haga clic en Permitir.">
<!ENTITY noscriptWebAddress "Dirección del sitio web:">
<!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
index bc15d11..7beec12 100644
--- a/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Options…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opciones de NoScript">
-<!ENTITY noscriptAbout "About NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "About NoScript 2.6.9.36…">
<!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
<!ENTITY noscriptWebAddress "Address of web site:">
<!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
index c1f610e..caca1f6 100644
--- a/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opciones…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Configuración de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Acerca de NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Aquí puede especificar las páginas web a las que va a permitir ejecutar código JavaScript. Escriba la dirección de la web que quiera incluir (ej. "http://www.paginaweb.com" o "paginaweb.com") y después pulse "Permitir".">
<!ENTITY noscriptWebAddress "Dirección de la página web:">
<!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd b/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
index d9bd69b..bc90ea3 100644
--- a/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Sätted…">
<!ENTITY noscriptOptions.accesskey "S">
<!ENTITY noscriptOptionsLong "NoScripti sätted">
-<!ENTITY noscriptAbout "Täpsemalt lisast NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "Täpsemalt lisast NoScript 2.6.9.36…">
<!ENTITY noscriptPermissionsText "Sa saad määrata, millistel veebilehtedel lubatakse skripte käivitada. Kirjuta veebilehe aadress või domeeni, mida soovid lubada (nt "http://www.site.com" või "site.com") ja klõpsa Luba nuppu">
<!ENTITY noscriptWebAddress "Veebilehe aadress:">
<!ENTITY noscriptAllow "Luba">
diff --git a/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd b/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
index 0c1c182..1cf56ae 100644
--- a/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Aukerak:">
<!ENTITY noscriptOptions.accesskey "A">
<!ENTITY noscriptOptionsLong "NoScript aukerak">
-<!ENTITY noscriptAbout "NoScript 2.6.9.34-eri buruz:">
+<!ENTITY noscriptAbout "NoScript 2.6.9.36-eri buruz:">
<!ENTITY noscriptPermissionsText "Zein webgunek script-ak exekuta ditzakeen zehaztu dezakezu. Idatzi script-ak erabiltzea onartzea nahi duzun domeinuaren izena (adib. "http://www.gunea.org" or "gunea.org") eta Onartu sakatu.">
<!ENTITY noscriptWebAddress "Webgunearen helbidea:">
<!ENTITY noscriptAllow "Onartu">
diff --git a/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
index 531316d..e57e343 100644
--- a/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "تنظیمات...">
<!ENTITY noscriptOptions.accesskey "ت">
<!ENTITY noscriptOptionsLong "تنظیمات NoScript">
-<!ENTITY noscriptAbout "درباره NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "درباره NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "شما می توانید سایت هایی را که اجازه اجرای اسکریپت دارند را مشخص کنید.آدرس سایت یا نام دامنه را وارد کنید.(به عنوان مثال "http://www.site.com" یا "site.com")">
<!ENTITY noscriptWebAddress "آدرس وب سایت :">
<!ENTITY noscriptAllow "اجازه دادن">
diff --git a/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
index 4016ffc..4266930 100644
--- a/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Asetukset…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript asetukset">
-<!ENTITY noscriptAbout "Tietoja NoScript 2.6.9.34istä…">
+<!ENTITY noscriptAbout "Tietoja NoScript 2.6.9.36istä…">
<!ENTITY noscriptPermissionsText "Voit määrittää verkkosivut joiden sallitaan suorittaa scriptejä. Kirjoita verkko-osoite tai verkkonimi (esim. "http://www.site.com" tai "site.com") jonka haluat sallia ja paina Salli.">
<!ENTITY noscriptWebAddress "Verkkosivun osoite:">
<!ENTITY noscriptAllow "Salli">
diff --git a/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
index d2831e4..e333a39 100644
--- a/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Options">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Options de NoScript">
-<!ENTITY noscriptAbout "À propos de NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "À propos de NoScript 2.6.9.36…">
<!ENTITY noscriptPermissionsText "Il est possible de spécifier quels sites Web sont autorisés à exécuter des scripts. Saisissez l'adresse exacte du site que vous désirez autoriser puis cliquez sur Autoriser.">
<!ENTITY noscriptWebAddress "Adresse du site Web :">
<!ENTITY noscriptAllow "Autoriser">
diff --git a/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd b/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
index 6827fa8..239ce73 100644
--- a/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opcións...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opcións de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Acerca de NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Podes especificar que páxinas web poden executar scripts. Teclea o enderezo ou o dominio (por exemplo "http://www.paxina.com" ou "paxina.com") do sitio que queres autorizar e despois preme en "Permitir".">
<!ENTITY noscriptWebAddress "Enderezo web:">
<!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd b/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
index 86d6e2c..ee285f6 100644
--- a/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "הגדרות...">
<!ENTITY noscriptOptions.accesskey "">
<!ENTITY noscriptOptionsLong "NoScript הגדרות של">
-<!ENTITY noscriptAbout "אודות NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "אודות NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "ציין אילו אתרים יכולים לקבל היתר להפעלת קבצי Script. הקלד את כתובת האתר או את שם התחום (כגון: "http://www.site.com" או "site.com") ולאחר מכן לחץ על התר.">
<!ENTITY noscriptWebAddress "כתובת/תחום:">
<!ENTITY noscriptAllow "התר">
diff --git a/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
index a667eff..661c4be 100644
--- a/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opcije...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript Opcije">
-<!ENTITY noscriptAbout "O NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "O NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Možete odrediti koje web stranice imaju dopuštenje za izvođenje skripti. Upišite adresu ili domenu (npr. "http://www.stranica.hr" ili "stranica.hr") stranice kojoj želite dopustiti i kliknite na Dopusti.">
<!ENTITY noscriptWebAddress "Adresa web stranice:">
<!ENTITY noscriptAllow "Dopusti">
diff --git a/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
index a9076bb..defcc92 100644
--- a/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opcije…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opcije NoScript">
-<!ENTITY noscriptAbout "Wo NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "Wo NoScript 2.6.9.36…">
<!ENTITY noscriptPermissionsText "Móžeće podać, kotre websydła smědźa skripty wuwjesć. Zapisajće adresu abo domenu (na př. "http://www.site.com" abo "site.com") websydła, kotremuž chceće to dowolić a klikńće potom na "Dowolić".">
<!ENTITY noscriptWebAddress "Adresa websydła:">
<!ENTITY noscriptAllow "Dowolić">
diff --git a/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
index 08891d0..c233c9f 100644
--- a/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Beállítások…">
<!ENTITY noscriptOptions.accesskey "B">
<!ENTITY noscriptOptionsLong "A NoScript beállításai">
-<!ENTITY noscriptAbout "A NoScript 2.6.9.34 névjegye">
+<!ENTITY noscriptAbout "A NoScript 2.6.9.36 névjegye">
<!ENTITY noscriptPermissionsText "Megadhatja, hogy mely webhelyek számára engedélyezi a parancsfájlok futtatását. Írja be az engedélyezni kívánt webhely címét vagy tartomány nevét (pl. "http://www.webhely.hu" vagy "webhely.hu"), majd kattintson az Engedélyezés gombra.">
<!ENTITY noscriptWebAddress "A webhely címe:">
<!ENTITY noscriptAllow "Engedélyezés">
diff --git a/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd b/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
index 9fe11c1..47deae7 100644
--- a/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Pilihan...">
<!ENTITY noscriptOptions.accesskey "P">
<!ENTITY noscriptOptionsLong "Pilihan NoScript">
-<!ENTITY noscriptAbout "Tentang NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Tentang NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Anda dapat menentukan situs web mana yang diijinkan menjalankan naskah. Masukkan alamat atau domain (contoh: "http://www.site.com" atau "site.com") yang akan diberi ijin kemudian klik Ijinkan.">
<!ENTITY noscriptWebAddress "Alamat situs web:">
<!ENTITY noscriptAllow "Ijinkan">
diff --git a/chrome/noscript.jar!/locale/it/noscript/noscript.dtd b/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
index 4484278..fcd743d 100644
--- a/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opzioni…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opzioni NoScript">
-<!ENTITY noscriptAbout "Informazioni su NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "Informazioni su NoScript 2.6.9.36…">
<!ENTITY noscriptPermissionsText "Qui si possono indicare i siti per i quali l'esecuzione degli script è consentita. Digitare l'indirizzo o il dominio (es. "http://www.sito.com" oppure "sito.com") e fare clic su Permetti.">
<!ENTITY noscriptWebAddress "Indirizzo del sito:">
<!ENTITY noscriptAllow "Permetti">
diff --git a/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
index 594761c..8437c20 100644
--- a/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "オプション...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript オプション">
-<!ENTITY noscriptAbout "NoScript 2.6.9.34について...">
+<!ENTITY noscriptAbout "NoScript 2.6.9.36について...">
<!ENTITY noscriptPermissionsText "JavaScriptを許可するサイトを指定する事ができます。許可したいサイトのアドレスかドメインを入力して、ボタンを押してください。(例: "http://www.site.com" または "site.com")">
<!ENTITY noscriptWebAddress "ウェブサイトのアドレス:">
<!ENTITY noscriptAllow "許可する">
diff --git a/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd b/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
index f0013f1..d73bbdf 100644
--- a/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Баптаулары">
<!ENTITY noscriptOptions.accesskey "Б">
<!ENTITY noscriptOptionsLong "NoScript баптаулары">
-<!ENTITY noscriptAbout "NoScript 2.6.9.34 туралы...">
+<!ENTITY noscriptAbout "NoScript 2.6.9.36 туралы...">
<!ENTITY noscriptPermissionsText "Қай сайттарға JavaScript орындауға рұқсат екенін көрсете аласыз. Рұқсат етілетін сайттың домен адресін енгізіңіз (мысалы, "http://www.site.com" немесе "site.com"), содан кейін Рұқсат ету басыңыз.">
<!ENTITY noscriptWebAddress "Веб-сайт адресі:">
<!ENTITY noscriptAllow "Рұқсат ету">
diff --git a/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd b/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
index 90c8810..e8c7897 100644
--- a/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Options...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "About NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
<!ENTITY noscriptWebAddress "Address of web site:">
<!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
index e58efe4..13d3784 100644
--- a/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "옵션...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript 옵션">
-<!ENTITY noscriptAbout "NoScript 2.6.9.34 정보...">
+<!ENTITY noscriptAbout "NoScript 2.6.9.36 정보...">
<!ENTITY noscriptPermissionsText "스크립트 실행을 허용할 웹 사이트를 지정할 수 있습니다. 스크립트를 허용할 사이트의 주소나 도메인 (예를 들면, "http://www.site.com" 또는 "site.com")을 입력한 후 [허용] 버튼을 클릭합니다.">
<!ENTITY noscriptWebAddress "웹 사이트 주소">
<!ENTITY noscriptAllow "허용">
diff --git a/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd b/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
index 0c08517..9d01b46 100644
--- a/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Nuostatos...">
<!ENTITY noscriptOptions.accesskey "N">
<!ENTITY noscriptOptionsLong "NoScript nuostatos">
-<!ENTITY noscriptAbout "Apie NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Apie NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Jūs galite nurodyti, kurioms interneto svetainėms suteikiamas leidimas vykdyti programinius kodus. Įveskite adresą arba domeną (pvz., "http://www.svetaine.lt" arba "svetaine.lt") svetainės, kuriai norite suteikti leidimą ir spauskite Leisti.">
<!ENTITY noscriptWebAddress "Interneto svetainės adresas:">
<!ENTITY noscriptAllow "Leisti">
diff --git a/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd b/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
index b280356..e2bff73 100644
--- a/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Опции...">
<!ENTITY noscriptOptions.accesskey "О">
<!ENTITY noscriptOptionsLong "NoScript Опции">
-<!ENTITY noscriptAbout "За NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "За NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Можете да ги назначите страните, на кои што скриптите ќе бидат дозволени. Напишете ја дозволената адреса (на пример http://www.site.com или site.com) и кликнете „Дозволи“">
<!ENTITY noscriptWebAddress "Адреса на дозволената веб страна:">
<!ENTITY noscriptAllow "Дозволи">
diff --git a/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
index 66e8a47..d1bb22b 100644
--- a/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Tetapan...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Tetapan NoScript">
-<!ENTITY noscriptAbout "Tentang NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Tentang NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Anda boleh menentukan laman web yang anda benarkan skripnya diproses. Taipkan alamat atau domain(contoh:"http://www.tapak.com" atau "tapak.com") laman web yang diingini dan klik Benarkan">
<!ENTITY noscriptWebAddress "Alamat laman web:">
<!ENTITY noscriptAllow "Benarkan">
diff --git a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd b/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
index e1632ec..b01fb59 100644
--- a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Innstillinger">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript Innstillinger">
-<!ENTITY noscriptAbout "Om NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Om NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Du kan spesifisere hvilke websider som har tillatelse til å kjøre scritper. Skriv inn adresse, eller domene (F.eks: "http://www.side.no", eller "side.no") du ønsker å gi tillatelse til, og klikk Tillat.">
<!ENTITY noscriptWebAddress "Webadresse:">
<!ENTITY noscriptAllow "Tillat">
diff --git a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.properties b/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.properties
index d44c382..46bdf34 100644
--- a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.properties
+++ b/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.properties
@@ -14,7 +14,7 @@ confirm=Er du sikker?
alwaysAsk=Alltid spør om bekreftelse
notifyHide=Gjem etter %S sekunder
trust=Stol på %S
-distrust=Mer %S som usikker
+distrust=Merk %S som usikker
untrustedOrigin=en usikker opprinnelse
xss.notify.generic=NoScript filtrerte en potensiell kryss-side skriptingsforsøk (XSS) fra %S. Tekniske detaljer har blitt logget til Konsoll.
xss.notify.showConsole=Vis Konsoll
diff --git a/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd b/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
index 9860044..cd31375 100644
--- a/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opties...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript opties">
-<!ENTITY noscriptAbout "Over NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Over NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Webadressen in deze lijst hebben toestemming om JavaScript te gebruiken. Type het adres of domein in (bijv. "http://www.site.com" of "site.com") van de door u toegestane site; klik daarna op Toestaan.">
<!ENTITY noscriptWebAddress "Webadres:">
<!ENTITY noscriptAllow "Toestaan">
diff --git a/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
index 1cd8036..9e091f0 100644
--- a/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Ustawienia">
<!ENTITY noscriptOptions.accesskey "U">
<!ENTITY noscriptOptionsLong "NoScript – ustawienia">
-<!ENTITY noscriptAbout "NoScript 2.6.9.34 – informacje">
+<!ENTITY noscriptAbout "NoScript 2.6.9.36 – informacje">
<!ENTITY noscriptPermissionsText "Tutaj można określić witryny internetowe, które będą mogły uruchamiać skrypty. Proszę wprowadzić adres lub domenę witryny (np: „http://www.witryna.pl” lub „witryna.pl”) i nacisnąć przycisk Pozwól.">
<!ENTITY noscriptWebAddress "Adres witryny:">
<!ENTITY noscriptAllow "Pozwól">
diff --git a/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
index 01e4bf5..dfb7bbc 100644
--- a/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opções">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opções do NoScript">
-<!ENTITY noscriptAbout "Sobre o NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "Sobre o NoScript 2.6.9.36…">
<!ENTITY noscriptPermissionsText "Você pode especificar os sites que podem executar JavaScripts. Escreva o endereço ou o domínio (ex "http://www.site.com" ou "site.com") do site que deseja permitir e depois clique em Permitir.">
<!ENTITY noscriptWebAddress "Endereço:">
<!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
index a8db47c..54893d1 100644
--- a/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opções">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opções do NoScript">
-<!ENTITY noscriptAbout "Sobre o NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Sobre o NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Pode especificar os sítios que podem executar scripts. Escreva o endereço ou o domínio (ex: "http://www.sitio.com" ou "sitio.com") do sítio que deseja permitir e depois pressione em Permitir.">
<!ENTITY noscriptWebAddress "Endereço:">
<!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
index cb34a37..83dfb66 100644
--- a/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opțiuni...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opțiuni NoScript">
-<!ENTITY noscriptAbout "Despre NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Despre NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Puteți specifica saiturile cărora li se permite să execute scripturi. Scrieți adresa sau domeniul paginii (exemplu: „http://www.sait.ro“ sau „sait.ro“), apoi apăsați pe butonul „Permite“.">
<!ENTITY noscriptWebAddress "Adresă sait:">
<!ENTITY noscriptAllow "Permite">
diff --git a/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
index 58451fe..250bc30 100644
--- a/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Možnosti...">
<!ENTITY noscriptOptions.accesskey "M">
<!ENTITY noscriptOptionsLong "NoScript – Možnosti">
-<!ENTITY noscriptAbout "O rozšírení NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "O rozšírení NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Môžete určiť, ktoré webové stránky majú povolené spúšťať JavaScript. Zadajte adresu alebo doménu (napríklad "http://www.site.com" alebo "site.com") stránky, ktorú chcete povoliť, a potom kliknite na tlačidlo Povoliť.">
<!ENTITY noscriptWebAddress "Adresa webovej stránky:">
<!ENTITY noscriptAllow "Povoliť">
diff --git a/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
index 38bccd4..b0fc717 100644
--- a/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Možnosti...">
<!ENTITY noscriptOptions.accesskey "M">
<!ENTITY noscriptOptionsLong "NoScript Možnosti">
-<!ENTITY noscriptAbout "O NoScript 2.6.9.34 programu...">
+<!ENTITY noscriptAbout "O NoScript 2.6.9.36 programu...">
<!ENTITY noscriptPermissionsText "Določite lahko na katerih straneh bo izvajanje skript dovoljeno. Vnesite naslov ali domeno (pr. "http://www.domena.com" or "domena.com") strani, na kateri želite omogočiti izvajanje skript in kliknite Dovoli.">
<!ENTITY noscriptWebAddress "Naslov strani:">
<!ENTITY noscriptAllow "Dovoli">
diff --git a/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
index 872c4da..9f526fb 100644
--- a/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Подешавања...">
<!ENTITY noscriptOptions.accesskey "П">
<!ENTITY noscriptOptionsLong "NoScript подешавања">
-<!ENTITY noscriptAbout "О NoScript 2.6.9.34-у">
+<!ENTITY noscriptAbout "О NoScript 2.6.9.36-у">
<!ENTITY noscriptPermissionsText "Можете да наведете којим веб странама је дозвољено да извршавају скриптове. Унесите адресу или домен (нпр. "http://www.site.com" или "site.com") стране којој желите да дате дозволу и онда кликните Дозволи.">
<!ENTITY noscriptWebAddress "Адреса веб стране:">
<!ENTITY noscriptAllow "Дозволи">
diff --git a/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
index 06607d0..80b3647 100644
--- a/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Alternativ...">
<!ENTITY noscriptOptions.accesskey "A">
<!ENTITY noscriptOptionsLong "NoScript-alternativ">
-<!ENTITY noscriptAbout "Om NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Om NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Ange vilka webbplatser som får köra skript. Skriv webbadressen eller domänen (t ex. "http://www.webbplats.se" eller "webbplats.se") för den webbplats där skript ska tillåtas. Klicka sedan på "Tillåt".">
<!ENTITY noscriptWebAddress "Sidans adress:">
<!ENTITY noscriptAllow "Tillåt">
diff --git a/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd b/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
index 1e1105e..3999305 100644
--- a/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Options…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "About NoScript 2.6.9.36…">
<!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
<!ENTITY noscriptWebAddress "Address of web site:">
<!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/th/noscript/noscript.dtd b/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
index 97d8efd..fc846d8 100644
--- a/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "ตัวเลือก...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "ตัวเลือก NoScript">
-<!ENTITY noscriptAbout "เกี่ยวกับ NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "เกี่ยวกับ NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "คุณสามารถกำหนดเว็บไซต์ที่จะอนุญาตดำเนินการสคริปต์ พิมพ์ที่อยู่หรือโดเมน (เช่น "http://www.site.com" หรือ "site.com") ของไซต์ที่คุณต้องการอนุญาตและคลิกอนุญาต">
<!ENTITY noscriptWebAddress "ที่อยู่เว็บไซต์:">
<!ENTITY noscriptAllow "อนุญาต">
diff --git a/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd b/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
index e982863..93d62c3 100644
--- a/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Seçenekler">
<!ENTITY noscriptOptions.accesskey "S">
<!ENTITY noscriptOptionsLong "NoScript Seçenekleri">
-<!ENTITY noscriptAbout "NoScript 2.6.9.34 Hakkında">
+<!ENTITY noscriptAbout "NoScript 2.6.9.36 Hakkında">
<!ENTITY noscriptPermissionsText "Hangi web sayfalarında JavaScript'e izni vereceğinizi kolayca seçebilirsiniz. Lütfen adresi tam olarak girin ve 'İzin ver' düğmesine tıklayarak sayfanın JavaScript kullanmasına izin verin.">
<!ENTITY noscriptWebAddress "Site adresi:">
<!ENTITY noscriptAllow "İzin ver">
diff --git a/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd b/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
index 29a1753..3e10390 100644
--- a/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Tùy chọn">
<!ENTITY noscriptOptions.accesskey "y">
<!ENTITY noscriptOptionsLong "Tùy chọn cho NoScript">
-<!ENTITY noscriptAbout "Thông tin về NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Thông tin về NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "Bạn có thể chỉ định trang web nào được phép chạy script. Gõ địa chỉ hay tên miền (v.d. "http://www.nhaccodien.com" hay "nhaccodien.com") của trang mà bạn muốn cho phép, rồi nhấn Cho phép.">
<!ENTITY noscriptWebAddress "Địa chỉ của trang web:">
<!ENTITY noscriptAllow "Cho phép">
diff --git a/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd b/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
index 40b2d56..6ed89e6 100644
--- a/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "选项...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript 选项">
-<!ENTITY noscriptAbout "关于 NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "关于 NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "您可以指定允许执行脚本的网站。请输入您想要允许的网站地址或域名(例如: “http://www.site.com”或者“site.com”)然后单击“允许”。">
<!ENTITY noscriptWebAddress "网站地址:">
<!ENTITY noscriptAllow "允许">
diff --git a/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd b/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
index 0275809..1937149 100644
--- a/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "選項…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript 選項">
-<!ENTITY noscriptAbout "關於 NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "關於 NoScript 2.6.9.36">
<!ENTITY noscriptPermissionsText "您可以指定允許執行 JavaScript 的網站。輸入您要允許的網址或網域(例如 "http://www.site.com" 或 "site.com"),然後按下允許.">
<!ENTITY noscriptWebAddress "網址:">
<!ENTITY noscriptAllow "允許">
diff --git a/components/noscriptService.js b/components/noscriptService.js
index fc53072..c0221b8 100644
--- a/components/noscriptService.js
+++ b/components/noscriptService.js
@@ -1,5 +1,5 @@
// const TIME0 = Date.now();
-const VERSION = "2.6.9.34";
+const VERSION = "2.6.9.36";
const SERVICE_CTRID = "@maone.net/noscript-service;1";
const SERVICE_ID = "{31aec909-8e86-4397-9380-63a59e0c5ff5}";
const EXTENSION_ID = "{73a6fe31-595d-460b-a920-fcc0f8843232}";
@@ -1722,6 +1722,9 @@ var ns = {
updateExtraPerm: function(prefName, baseName, names) {
+ if (prefName === "allowLocalLinks") {
+ ns.log("allowLocalLinks: " + new Error().stack)
+ }
var cpName;
var enabled = this.getPref(prefName, false);
this[prefName] = enabled;
@@ -1890,7 +1893,6 @@ var ns = {
this._batchPrefs = true;
for each(var p in [
"autoAllow",
- "allowClipboard", "allowLocalLinks",
"allowedMimeRegExp", "hideOnUnloadRegExp", "requireReloadRegExp",
"consoleDump", "consoleLog", "contentBlocker", "alwaysShowObjectSources",
"docShellJSBlocking",
@@ -1930,9 +1932,6 @@ var ns = {
}
this._batchPrefs = false;
-
-
-
this.setupJSCaps();
// locking management
@@ -1977,6 +1976,13 @@ var ns = {
},
+ onContentInit: function() {
+ this._batchPrefs = true;
+ ["allowClipboard", "allowLocalLinks"].forEach(function(p) this.syncPrefs(this.pref, p), this);
+ this._batchPrefs = false;
+ this.setupJSCaps();
+ },
+
_initE10s: function() {
INCLUDE("parentProcess");
},
@@ -1984,7 +1990,6 @@ var ns = {
if (IPC.parent) IPC.parent.dispose();
},
-
dispose: function() {
try {
if(!this._inited) return;
@@ -2075,6 +2080,14 @@ var ns = {
"!about:packet-save": "about:pocket-saved",
"!about:pocket-signup": "about:pocket-signup",
"google.com": "ajax.googleapis.com maps.googleapis.com"
+ },
+ "2.6.9.35rc1": {
+ "!about:pocket-save": "about:pocket-saved",
+ "!about:pocket-signup": "about:pocket-signup",
+ "google.com": "ajax.googleapis.com maps.googleapis.com"
+ },
+ "2.6.9.36rc1": {
+ "netflix.com": "https://*.nflxvideo.net"
}
};
@@ -2432,26 +2445,26 @@ var ns = {
if (!policy) policy = this.jsPolicySites;
- let map = policy.sitesMap;
+ if (this.ignorePorts && policy.matches(site.replace(/:\d+$/, '')))
+ return true;
- if (this.portRx.test(site)) {
- let portRx = this.portRx;
- if (this.ignorePorts && policy.matches(site.replace(/:\d+$/, '')))
- return true;
+ let map = policy.sitesMap;
+ let portRx = this.portRx;
+ let hasPort = portRx.test(site);
- // port matching, with "0" as port wildcard and * as nth level host wildcard
- let key = site.replace(portRx, ":0");
- if (key in map || site in map) return true;
- var keys = site.split(".");
- if (keys.length > 1) {
- let prefix = keys[0].match(/^https?:\/\//i)[0] + "*.";
- while (keys.length > 2) {
- keys.shift();
- key = prefix + keys.join(".");
- if (key in map || key.replace(portRx, ":0") in map) return true;
- }
+ // port matching, with "0" as port wildcard and * as nth level host wildcard
+ let key = hasPort ? site.replace(portRx, ":0") : site;
+ if (key in map || site in map) return true;
+ var keys = site.split(".");
+ if (keys.length > 1) {
+ let prefix = keys[0].match(/^https?:\/\//i)[0] + "*.";
+ while (keys.length > 2) {
+ keys.shift();
+ key = prefix + keys.join(".");
+ if (key in map || hasPort && key.replace(portRx, ":0") in map) return true;
}
}
+
// check IP leftmost portion up to 2nd byte (e.g. [http://]192.168 or [http://]10.0.0)
let m = site.match(this._ipShorthandRx);
return m && (m[2] in map || m[3] in map || (m[1] + m[2]) in map || (m[1] + m[3]) in map);
@@ -3006,6 +3019,7 @@ var ns = {
}
}
prefString = prefString.replace(/,/g, ' ').replace(/\s+/g, ' ').replace(/^\s+/, '').replace(/\s+$/, '');
+
} catch(ex) {
prefString = POLICY_NAME;
}
@@ -3451,9 +3465,8 @@ var ns = {
) return false;
let locationSite = this.getSite(locationURL);
- if (this.ignorePorts && this.portRx.test(locationSite) &&
- this.isJSEnabled(locationSite.replace(this.portRx, '')) && this.autoTemp(locationSite))
- return false;
+ if (!this.isJSEnabled(locationSite) && this.checkShorthands(locationSite))
+ this.autoTemp(locationSite);
var win = aContext && aContext.defaultView;
if(win) this.getExpando(win.top.document, "codeSites", []).push(locationSite);
@@ -7089,7 +7102,7 @@ var ns = {
var checkInterval = this.getPref("subscription.checkInterval", 24) * 60000;
var now = Date.now();
if (lastCheck + checkInterval > now) {
- this.delayExec(checkSubscriptions, lastCheck + checkInterval - now + 1000);
+ this.delayExec(this.checkSubscriptions, lastCheck + checkInterval - now + 1000);
return;
}
diff --git a/defaults/preferences/noscript.js b/defaults/preferences/noscript.js
index 6067e70..fd52179 100644
--- a/defaults/preferences/noscript.js
+++ b/defaults/preferences/noscript.js
@@ -271,7 +271,7 @@ pref("noscript.surrogate.ga.sources", "*.google-analytics.com");
pref("noscript.surrogate.ga.replacement", "(function(){var _0=$S(function()_0),_u=function(){};_0.__noSuchMethod__=_0;('ga'in window)||(ga=_u);with(window)urchinTracker=_u,_gaq=$S({__noSuchMethod__:_0,push:function(f){if(typeof f=='function')f();else if(f&&f.shift&&f[0]in this)this[f.shift()].apply(this,f)},_set:function(a,b){if(typeof b=='function')b()},_link:function(h){if(h)location.href=h},_linkByPost:function(f){if(f&&f.submit)f.submit();return true},_getLinkerUrl:function(u){return [...]
pref("noscript.surrogate.glinks.replacement", "['focus','mouseover','mousedown','click'].forEach(function(et){addEventListener(et,function(e){var a=e.target,href=a.href&&a.getAttribute&&a.getAttribute('href');if(href&&/^(?:http|\/url)/.test(href)&&!a._href){a._href=a.href=a.href.replace(/.*\/url.*[?&](?:url|q)=(http[^&]+).*/,function(a,b)decodeURIComponent(b));do{if(/\brwt\(/.test(a.getAttribute('onmousedown')))a.removeAttribute('onmousedown')}while((a=a.parentElement))}},true)})");
pref("noscript.surrogate.glinks.sources", "!@^https?://[^/]+google\\..*/search");
-pref("noscript.surrogate.googletag.replacement", "googletag=$S({__noSuchMethod__:function()this,slots:{},cmd:$S({__noSuchMethod__:function()this, push:function(f){return f()}})}); let _renderedAds=new Proxy({},{ get:function(a,b){ return b in a ? a[b] : {size: [728,90]}; }, set:function(a,b,c) {a[b]=c} }); let _adsRenderedInfo=new Proxy({ get:function(n) { return _renderedAds[n]; } },{get:function(x,c){ return c in x ? x[c] : function(){}; },set:function(x,c,v){ }}); Object.definePropert [...]
+pref("noscript.surrogate.googletag.replacement", "if(typeof googletag==='undefined'){googletag=$S({__noSuchMethod__:function()this,slots:{},cmd:$S({__noSuchMethod__:function()this, push:function(f){return f()}})});}let _renderedAds=new Proxy({},{ get:function(a,b){ return b in a ? a[b] : {size: [728,90]}; }, set:function(a,b,c) {a[b]=c} }); let _adsRenderedInfo=new Proxy({ get:function(n) { return _renderedAds[n]; } },{get:function(x,c){ return c in x ? x[c] : function(){}; },set:functio [...]
pref("noscript.surrogate.googletag.sources", ".googletagservices.com");
pref("noscript.surrogate.gravatar.sources", ".gravatar.com");
pref("noscript.surrogate.gravatar.replacement", "Gravatar=$S({my_hash:'', profile_cb:function(){}, init:function(){}, __noSuchMethod__:function(){}})");
diff --git a/install.rdf b/install.rdf
index 3666ac5..b8f73e5 100644
--- a/install.rdf
+++ b/install.rdf
@@ -5,7 +5,7 @@
<em:id>{73a6fe31-595d-460b-a920-fcc0f8843232}</em:id>
<em:name>NoScript</em:name>
- <em:version>2.6.9.34</em:version>
+ <em:version>2.6.9.36</em:version>
<em:description>Extra protection for your Firefox: NoScript allows JavaScript, Java (and other plugins) only for trusted domains of your choice (e.g. your home-banking web site). This whitelist based pre-emptive blocking approach prevents exploitation of security vulnerabilities (known and even unknown!) with no loss of functionality... Experts will agree: Firefox is really safer with NoScript :-)</em:description>
<em:creator>Giorgio Maone</em:creator>
<em:type>2</em:type>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/noscript.git
More information about the Pkg-mozext-commits
mailing list