[Pkg-mozext-commits] [noscript] 01/04: Imported Upstream version 2.6.8.30~rc3

David Prévot taffit at moszumanska.debian.org
Wed Jun 25 20:11:47 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository noscript.

commit 1efc0b9779dda676bedc055724f60414ff93ad68
Author: David Prévot <taffit at debian.org>
Date:   Wed Jun 25 15:49:29 2014 -0400

    Imported Upstream version 2.6.8.30~rc3
---
 chrome/noscript.jar!/content/noscript/Bug.js       |  21 ++++
 chrome/noscript.jar!/content/noscript/CSP.js       |  25 ++++
 .../content/noscript/DocShellScript.js             |  26 ++++
 chrome/noscript.jar!/content/noscript/JSURL.js     |   3 +-
 chrome/noscript.jar!/content/noscript/Policy.js    |  39 +++++-
 .../content/noscript/RequestWatchdog.js            |   5 +-
 chrome/noscript.jar!/content/noscript/WinScript.js |  34 ++----
 chrome/noscript.jar!/content/noscript/about.xul    |   6 +-
 .../content/noscript/noscriptOptions.xul           |  10 +-
 .../content/noscript/noscriptOverlay.js            |  35 ++++--
 .../noscript.jar!/locale/ar/noscript/noscript.dtd  |   2 +
 .../locale/be-BY/noscript/noscript.dtd             |   2 +
 .../locale/bg-BG/noscript/noscript.dtd             |   4 +-
 .../locale/bn-IN/noscript/noscript.dtd             |   2 +
 .../locale/ca-AD/noscript/noscript.dtd             |   4 +-
 .../locale/cs-CZ/noscript/noscript.dtd             |   4 +-
 .../locale/cy-GB/noscript/noscript.dtd             |   4 +-
 .../noscript.jar!/locale/da/noscript/noscript.dtd  |   4 +-
 .../noscript.jar!/locale/de/noscript/noscript.dtd  |   4 +-
 .../noscript.jar!/locale/el/noscript/noscript.dtd  |   4 +-
 .../locale/en-GB/noscript/noscript.dtd             |   4 +-
 .../locale/en-US/noscript/noscript.dtd             |   4 +-
 .../noscript.jar!/locale/eo/noscript/noscript.dtd  |   4 +-
 .../locale/es-AR/noscript/noscript.dtd             |   4 +-
 .../locale/es-CL/noscript/noscript.dtd             |   4 +-
 .../locale/es-ES/noscript/noscript.dtd             |   4 +-
 .../locale/et-EE/noscript/noscript.dtd             |   4 +-
 .../noscript.jar!/locale/eu/noscript/noscript.dtd  |   4 +-
 .../locale/fa-IR/noscript/noscript.dtd             |   4 +-
 .../noscript.jar!/locale/fi/noscript/noscript.dtd  |   4 +-
 .../noscript.jar!/locale/fr/noscript/noscript.dtd  |   4 +-
 .../locale/gl-ES/noscript/noscript.dtd             |   4 +-
 .../locale/he-IL/noscript/noscript.dtd             |   4 +-
 .../locale/hr-HR/noscript/noscript.dtd             |   4 +-
 .../noscript.jar!/locale/hsb/noscript/noscript.dtd |   4 +-
 .../locale/hu-HU/noscript/noscript.dtd             |   4 +-
 .../locale/id-ID/noscript/noscript.dtd             |   4 +-
 .../noscript.jar!/locale/it/noscript/noscript.dtd  |   4 +-
 .../locale/ja-JP/noscript/noscript.dtd             |   4 +-
 .../locale/kk-KZ/noscript/noscript.dtd             |   4 +-
 .../locale/km-KH/noscript/noscript.dtd             |   4 +-
 .../locale/ko-KR/noscript/noscript.dtd             |   4 +-
 .../noscript.jar!/locale/lt/noscript/noscript.dtd  |   4 +-
 .../locale/mk-MK/noscript/noscript.dtd             |   4 +-
 .../locale/ms-MY/noscript/noscript.dtd             |   4 +-
 .../locale/nb-NO/noscript/noscript.dtd             |   4 +-
 .../noscript.jar!/locale/nl/noscript/noscript.dtd  |   4 +-
 .../noscript.jar!/locale/pl/noscript/noscript.dtd  |   4 +-
 .../locale/pt-BR/noscript/noscript.dtd             |   4 +-
 .../locale/pt-PT/noscript/noscript.dtd             |   4 +-
 .../noscript.jar!/locale/ro/noscript/noscript.dtd  |   4 +-
 .../locale/ru-RU/noscript/noscript.dtd             |   2 +
 .../locale/sk-SK/noscript/noscript.dtd             |   4 +-
 .../locale/sl-SI/noscript/noscript.dtd             |   4 +-
 .../locale/sr-RS/noscript/noscript.dtd             |   4 +-
 .../noscript.jar!/locale/sr/noscript/noscript.dtd  |   2 +
 .../locale/sv-SE/noscript/noscript.dtd             |   4 +-
 .../locale/te-IN/noscript/noscript.dtd             |   4 +-
 .../noscript.jar!/locale/th/noscript/noscript.dtd  |   4 +-
 .../noscript.jar!/locale/tr/noscript/noscript.dtd  |   4 +-
 .../noscript.jar!/locale/uk/noscript/noscript.dtd  |   2 +
 .../noscript.jar!/locale/vi/noscript/noscript.dtd  |   4 +-
 .../locale/zh-CN/noscript/noscript.dtd             |   4 +-
 .../locale/zh-TW/noscript/noscript.dtd             |   4 +-
 components/noscriptService.js                      | 131 ++++++++++++---------
 install.rdf                                        |   2 +-
 66 files changed, 392 insertions(+), 149 deletions(-)

diff --git a/chrome/noscript.jar!/content/noscript/Bug.js b/chrome/noscript.jar!/content/noscript/Bug.js
new file mode 100644
index 0000000..5531a30
--- /dev/null
+++ b/chrome/noscript.jar!/content/noscript/Bug.js
@@ -0,0 +1,21 @@
+var Bug = {
+  
+};
+
+{
+  let lazy = {
+    $677643: "8.0",
+    $677050: ["6.0", "18.0"], 
+    $771655: "20",
+    $789773: "19",
+  }
+  for (let b in lazy) {
+    let v = lazy[b];
+    Bug.__defineGetter__(b, function() {
+      delete this[b];
+      return this[b] = (typeof v[0] === "object")
+       ? ns.geckoVersionCheck(v[0]) >= 0 && ns.geckoVersionCheck(v[1]) < 0 
+       : ns.geckoVersionCheck(v) < 0;
+    });
+  }
+}
\ No newline at end of file
diff --git a/chrome/noscript.jar!/content/noscript/CSP.js b/chrome/noscript.jar!/content/noscript/CSP.js
new file mode 100644
index 0000000..c4b9c78
--- /dev/null
+++ b/chrome/noscript.jar!/content/noscript/CSP.js
@@ -0,0 +1,25 @@
+var CSP = {
+  HEADER_NAME: "Content-Security-Policy",
+  HEADER_VALUE: "script-src 'none'",
+  
+  block: function(window) {
+    window._blockedByCSP = true;
+    let doc = window.document;
+    if (doc.documentElement === null) return;
+    let meta = doc.createElement("meta");
+    meta.setAttribute("http-equiv", this.HEADER_NAME);
+    meta.setAttribute("content", this.HEADER_VALUE);
+    doc.documentElement.appendChild(meta);
+    doc.removeChild(meta);
+  },
+  isBlocked: function(window) window && window._blockedByCSP,
+  observe: function(subject, topic, data) {
+    let window = subject.defaultView;
+    if (this.isBlocked(window)) {
+       this.block(window);
+    }
+  },
+  QueryInterface: xpcom_generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference])
+}
+
+OS.addObserver(CSP, "document-element-inserted", true);
\ No newline at end of file
diff --git a/chrome/noscript.jar!/content/noscript/DocShellScript.js b/chrome/noscript.jar!/content/noscript/DocShellScript.js
new file mode 100644
index 0000000..fb18853
--- /dev/null
+++ b/chrome/noscript.jar!/content/noscript/DocShellScript.js
@@ -0,0 +1,26 @@
+var DocShellScript = {
+   
+  block: function(window) {
+    window._blockedByDocShell = true;
+
+    let docShell = DOM.getDocShellForWindow(window);
+    if (!docShell.allowJavascript) return;
+    window._restoreDocShellScript = true;
+    docShell.allowJavascript = false;
+    window.addEventListener("pagehide", function(e) {
+      docShell.allowJavascript = true;
+    }, true);
+    window.addEventListener("pageshow", function(e) {
+      docShell.allowJavascript = false;
+    }, true);
+  },
+  
+  unblock: function(window) {
+    if (window._blockedByDocShell) {
+      window._blockedByDocShell = false;
+      if ("_restoreDocShellScript" in window)
+        DOM.getDocShellForWindow(window).allowJavascript = window._restoreDocShellScript;
+    }
+  },
+  isBlocked: function(window) window && window._blockedByDocShell,
+}
\ No newline at end of file
diff --git a/chrome/noscript.jar!/content/noscript/JSURL.js b/chrome/noscript.jar!/content/noscript/JSURL.js
index d9b09da..5fa3a41 100644
--- a/chrome/noscript.jar!/content/noscript/JSURL.js
+++ b/chrome/noscript.jar!/content/noscript/JSURL.js
@@ -60,7 +60,8 @@ var JSURL = {
   
   _run: function(document, code) {
     var w = document.defaultView;
-    var s =  new Cu.Sandbox(document.nodePrincipal, {
+    var p = document.nodePrincipal;
+    var s =  new Cu.Sandbox(CSP.isBlocked(w) ? [p] : p, {
         sandboxName: "NoScript::JSURL@" + document.documentURI,
         sandboxPrototype: w,
         wantXrays: false,
diff --git a/chrome/noscript.jar!/content/noscript/Policy.js b/chrome/noscript.jar!/content/noscript/Policy.js
index 0a73ddf..433d8ee 100644
--- a/chrome/noscript.jar!/content/noscript/Policy.js
+++ b/chrome/noscript.jar!/content/noscript/Policy.js
@@ -298,7 +298,13 @@ const MainContentPolicy = {
       unwrappedLocation = IOUtil.unwrapURL(aContentLocation);
       scheme = unwrappedLocation.scheme;
       
-    
+      if (scheme === "file") {
+        let principal =  aContext && (aContext.nodePrincipal ||
+                                      aContext.document && aContext.document.nodePrincipal);
+        if (!ns.checkLocalLinks(unwrappedLocation, principal, true)) {
+          return this.reject("Local File Link", arguments);
+        }
+      }
       
       var isHTTP = scheme === "http" || scheme === "https";
       
@@ -314,7 +320,7 @@ const MainContentPolicy = {
         }
         
         if (aRequestOrigin &&
-            !(aContentType === 4 && this._bug677643)
+            !(aContentType === 4 && Bug.$677643)
             ) {
           
           HTTPS.forceURI(unwrappedLocation, null, aContext);
@@ -380,7 +386,16 @@ const MainContentPolicy = {
             return CP_OK;
             
           return this.reject("Ping", arguments);
+        
+         case 17: // CSP report, avoid exfiltration on untrusted resources
+          if (this.jsEnabled ||
+              this.isJSEnabled(this.getSite(aContentLocation.spec)) &&
+              aRequestOrigin && this.isJSEnabled(this.getSite(aRequestOrigin.spec))
+            )
+            return CP_OK;
             
+          return this.reject("CSP report", arguments);
+        
         case 2:
           forbid = isScript = true;
           break;
@@ -628,7 +643,8 @@ const MainContentPolicy = {
        
         let scriptElement;
         if (aContentType === 2) { // "real" JavaScript include
-          if (originSite && !this.isJSEnabled(originSite) &&
+          if (!this.cascadePermissions &&
+              originSite && !this.isJSEnabled(originSite) &&
               isHTTP && httpOrigin) {
             // JavaScript-disabled page with script inclusion
             this.syncUI(contentDocument);
@@ -662,9 +678,15 @@ const MainContentPolicy = {
           }
         } else isScript = scriptElement = false;
 
-        if (forbid) forbid = !this.isJSEnabled(locationSite);
-        if (forbid && this.ignorePorts && /:\d+$/.test(locationSite))
-          forbid = !(this.isJSEnabled(locationSite.replace(/:\d+$/, '')) && this.autoTemp(locationSite));
+        if (forbid) {
+          if (this.cascadePermissions) {
+            forbid = untrusted;
+          } else {
+            forbid = !this.isJSEnabled(locationSite);
+            if (forbid && this.ignorePorts && /:\d+$/.test(locationSite))
+              forbid = !(this.isJSEnabled(locationSite.replace(/:\d+$/, '')) && this.autoTemp(locationSite));
+          }
+        }
 
         if ((untrusted || forbid) && scheme !== "data") {
           if (scriptElement) {
@@ -783,6 +805,11 @@ const MainContentPolicy = {
       
       if (forbid) forbid = !(aContentLocation.schemeIs("file") && aRequestOrigin && aRequestOrigin.schemeIs("resource")); // fire.fm work around
       
+      if (forbid && this.cascadePermissions && !this.contentBlocker) {
+        let principal = aContext.ownerDocument && aContext.ownerDocument.defaultView.top.document.nodePrincipal;
+        forbid = untrusted || !this.isJSEnabled(this.getSite(principal.origin)); 
+      }
+      
       if (forbid) {
         
         if (!originSite) originSite = this.getSite(originURL || (originURL = aRequestOrigin && aRequestOrigin.spec || ""));
diff --git a/chrome/noscript.jar!/content/noscript/RequestWatchdog.js b/chrome/noscript.jar!/content/noscript/RequestWatchdog.js
index 825b6ff..3964fe4 100644
--- a/chrome/noscript.jar!/content/noscript/RequestWatchdog.js
+++ b/chrome/noscript.jar!/content/noscript/RequestWatchdog.js
@@ -100,9 +100,6 @@ RequestWatchdog.prototype = {
     }
   },
   
-  _bug677050: ns.geckoVersionCheck("6.0") >= 0 &&
-    ns.geckoVersionCheck("18.0") < 0, // fixed by http-on-modify-request made asynchronous in Gecko 18
-  
   onHttpStart: function(channel) {
     
     const loadFlags = channel.loadFlags;
@@ -119,7 +116,7 @@ RequestWatchdog.prototype = {
       let context = ph && ph.context;
       if (context) {
         isDoc = !(context instanceof Ci.nsIDOMHTMLEmbedElement || /^application\/x-/i.test(ph.mimeType));
-        if (isDoc && this._bug677050 && !(loadFlags & channel.LOAD_REPLACE) && (context instanceof Ci.nsIDOMHTMLObjectElement)) {
+        if (isDoc && Bug.$677050 && !(loadFlags & channel.LOAD_REPLACE) && (context instanceof Ci.nsIDOMHTMLObjectElement)) {
           (new ChannelReplacement(channel)).replace();
           return null;
         }
diff --git a/chrome/noscript.jar!/content/noscript/WinScript.js b/chrome/noscript.jar!/content/noscript/WinScript.js
index 52b92bc..fddc96a 100644
--- a/chrome/noscript.jar!/content/noscript/WinScript.js
+++ b/chrome/noscript.jar!/content/noscript/WinScript.js
@@ -6,8 +6,6 @@ var WinScript = ("blockScriptForGlobal" in Cu)
     if (window._blockScriptForGlobal) return;
     Cu.blockScriptForGlobal(window);
     window._blockScriptForGlobal = true;
-    // work-around for https://bugzilla.mozilla.org/show_bug.cgi?id=958962
-    this._patchStyle(window.document);
   },
   unblock: function(window) {
     if (!window._blockScriptForGlobal) return;
@@ -17,31 +15,21 @@ var WinScript = ("blockScriptForGlobal" in Cu)
   isBlocked: function(window) {
     return window._blockScriptForGlobal;
   },
-  _domUtils: Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils),
-  _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];
-      if(s.href === "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);
-                  break;
-              }
-          }
-          break;
-      }
-    }
- },
 
 }
 :
 {
   supported: false,
   __noSuchMethod__: function() {},
-
+  block: function(window) {
+    let ds = DOM.getDocShellForWindow(window)
+  },
+  unblock: function(window) {
+    if (!window._blockScriptForGlobal) return;
+    Cu.unblockScriptForGlobal(window);
+    window._blockScriptForGlobal = false;
+  },
+  isBlocked: function(window) {
+    return window._blockScriptForGlobal;
+  },
 };
diff --git a/chrome/noscript.jar!/content/noscript/about.xul b/chrome/noscript.jar!/content/noscript/about.xul
index 7b02a8f..26cea35 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.8.29"]);
+  str = getString("version", ["2.6.8.30rc3"]);
   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.8.29" id="extensionVersion" crop="right"/>
+<label value="Version 2.6.8.30rc3" 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('http://noscript.net/changelog#2.6.8.29')">Changelog</label>
+<label id="changelog" class="text-link" align="center" tooltiptext="See Changelog" onclick="about_open('http://noscript.net/changelog#2.6.8.30rc3')">Changelog</label>
 <spacer flex="1"/>
 <label id="extensionHomepage" class="text-link" tooltiptext="Visit Extension Home Page" onclick="about_open('http://noscript.net')">http://noscript.net</label>
 </hbox>
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOptions.xul b/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
index 3b8cd88..378a73b 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
+++ b/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
@@ -258,7 +258,7 @@
         <tab class="noscript-xss" label=" &noscriptXss; " id="nsopt-tabXss"/>
         <tab class="noscript-https" label=" &noscriptHttps; " id="nsopt-tabHttps"/>
         <tab class="noscript-abe" label="&ABE;" id="nsopt-tabABE"/>
-	<tab class="noscript-clearclick" label="ClearClick" id="nsopt-tabClearClick"/>
+				<tab class="noscript-clearclick" label="ClearClick" id="nsopt-tabClearClick"/>
       </tabs>
       <tabpanels flex="1">
           <tabpanel>
@@ -273,6 +273,10 @@
                 <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" 
               onclick="document.getElementById('nsopt-tabsMain').selectedTab = document.getElementById('nsopt-tabEmbeddings')"
@@ -290,7 +294,9 @@
               <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 -->
         
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOverlay.js b/chrome/noscript.jar!/content/noscript/noscriptOverlay.js
index 5d650ed..ab8ae31 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptOverlay.js
+++ b/chrome/noscript.jar!/content/noscript/noscriptOverlay.js
@@ -481,7 +481,8 @@ return noscriptUtil.service ? {
     
     const global = ns.jsEnabled;
     const blockUntrusted = global && ns.alwaysBlockUntrustedContent;
-
+    const cascadePermissions = ns.cascadePermissions;
+    
     var seps = { insert: null, stop: null, global: null, untrusted: null };
     {
       let allSeps = popup.getElementsByTagName("menuseparator");
@@ -849,7 +850,12 @@ return noscriptUtil.service ? {
       while (scount-- > 0) {
         menuSite = menuSites[scount];
         
+        
+        
         untrusted = !enabled && (blockUntrusted || ns.isUntrusted(menuSite));
+        
+          let cascaded = cascadePermissions && !isTop;
+        
         if (untrusted) {
           untrustedCount++;
           showInMain = true;
@@ -857,7 +863,7 @@ return noscriptUtil.service ? {
         else if (!enabled)
           unknownCount++;
         
-        parent = (untrusted && showUntrusted) ? untrustedFrag : mainFrag;
+        parent = showUntrusted && untrusted ? untrustedFrag : mainFrag;
         if (!parent) continue;
                 
         domain = isTop && docJSBlocked ? "[ " + menuSite + " ]" : menuSite;
@@ -889,17 +895,19 @@ return noscriptUtil.service ? {
     
         node.setAttribute("class", cssClass + (enabled ? " noscript-forbid" : " noscript-allow"));
         
-        if ((showPermanent || enabled) && !(global && enabled) && showInMain) 
+        if ((showPermanent || enabled) && !((global || cascaded) && enabled) &&
+            showInMain && !(cascaded && parent !== untrustedFrag)) 
           parent.appendChild(node);
       
         if (!disabled) {
-          if (showTemp && !(enabled || blurred) && showInMain) {
+          if (showTemp && !(enabled || blurred || cascaded) && showInMain) {
             extraNode = node.cloneNode(false);
             extraNode.setAttribute("label", this.getString("allowTemp", [domain]));
             extraNode.setAttribute("class", cssClass + " noscript-temp noscript-allow");
             parent.appendChild(extraNode);
           }
-          if (((showUntrusted && untrustedMenu || showDistrust) && !(domain in jsPSs.sitesMap) ||
+          if (((showUntrusted && untrustedMenu || showDistrust) && 
+                (cascaded || !(domain in jsPSs.sitesMap)) ||
                 blockUntrusted && (showUntrusted || showDistrust)
                 ) && !untrusted) {
             parent = (showUntrusted && !blockUntrusted ? untrustedFrag : mainFrag);
@@ -927,7 +935,9 @@ return noscriptUtil.service ? {
     
     // temp allow all this page
     if (!(tempMenuItem.hidden = !(unknownCount && ns.getPref("showTempAllowPage", true)))) {
-      tempMenuItem.setAttribute("tooltiptext", this.allowPage(false, true, sites).join(", "));
+      let allowable = this.allowPage(false, true, sites);
+      if (allowable.length) tempMenuItem.setAttribute("tooltiptext", allowable.join(", "));
+      else tempMenuItem.hidden = true;
     }
 
     
@@ -937,7 +947,9 @@ return noscriptUtil.service ? {
       tempMenuItem.parentNode.insertBefore(node, tempMenuItem);
     }
     if (!(node.hidden = unknownCount == 0 || !ns.getPref("showAllowPage", true))) {
-      node.setAttribute("tooltiptext", this.allowPage(true, true, sites).join(", "));
+       let allowable = this.allowPage(true, true, sites);
+      if (allowable.length) node.setAttribute("tooltiptext", allowable.join(", "));
+      else node.hidden = true;
     }
     
     // "allow page" accelerators
@@ -1168,8 +1180,13 @@ return noscriptUtil.service ? {
     const level = ns.getPref("allowPageLevel", 0) || ns.preferredSiteLevel;
     const trusted = ns.jsPolicySites;
     const tempToPerm = permanent === -1;
-    var site;
+    
+    const topSite = sites.topSite;
+    const cascade = topSite && ns.cascadePermissions;
+    
     for (let j = sites.length; j-- > 0;) {
+      let site = sites[j];
+      if (cascade && topSite !== site)  continue;
       if (tempToPerm) {
         site = trusted.matches(sites[j]);
         if (!(site && ns.isTemp(site)) || ns.isUntrusted(site)) continue;
@@ -2712,6 +2729,8 @@ return noscriptUtil.service ? {
   Hacks: {
     allowLocalLinks: function() {
       let ns = noscriptOverlay.ns;
+      if (ns.geckoVersionCheck("30") >= 0) return;
+      
       if ("urlSecurityCheck" in window) {
         let usc = window.urlSecurityCheck;
         window.urlSecurityCheck = function(aURL, aPrincipal, aFlags) {
diff --git a/chrome/noscript.jar!/locale/ar/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ar/noscript/noscript.dtd
index c8af3a0..fd80f1d 100644
--- a/chrome/noscript.jar!/locale/ar/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ar/noscript/noscript.dtd
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "فتح قائمة الإذِن عندما يحوم المؤشّر فوق رمز نوسكريبت">
 <!ENTITY noscriptDonate "التبرع">
 <!ENTITY noscriptDonate.accesskey "ت">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/be-BY/noscript/noscript.dtd b/chrome/noscript.jar!/locale/be-BY/noscript/noscript.dtd
index cd911f9..56669a9 100644
--- a/chrome/noscript.jar!/locale/be-BY/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/be-BY/noscript/noscript.dtd
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd b/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
index 85b4a80..b7e29d9 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.8.29">
+<!ENTITY noscriptAbout "За NoScript 2.6.8.30rc3">
 <!ENTITY noscriptPermissionsText "Можете да зададете в кои уеб-сайтове е позволено да се използват скриптовете. Напишете адреса или домейна (например "http://www.site.com" или "site.com") на сайта, който искате да разрешите и натиснете Разреши.">
 <!ENTITY noscriptWebAddress "Адрес на уеб-сайта:">
 <!ENTITY noscriptAllow "Разреши">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/bn-IN/noscript/noscript.dtd b/chrome/noscript.jar!/locale/bn-IN/noscript/noscript.dtd
index 137391c..75defa7 100644
--- a/chrome/noscript.jar!/locale/bn-IN/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/bn-IN/noscript/noscript.dtd
@@ -184,3 +184,5 @@
 <!ENTITY noscriptDonate.accesskey "o">
 <!ENTITY noscriptForbidWebGL "WebGL প্রতিষেধ করুন">
 <!ENTITY noscriptTruncateTitle "Truncate document titles">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
index 7716c0f..78be6c9 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.8.29">
+<!ENTITY noscriptAbout "Quant a NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd b/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
index c459f1f..58a7a5c 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.8.29">
+<!ENTITY noscriptAbout "O rozšíření NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd b/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
index c2b742c..a046375 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.8.29">
+<!ENTITY noscriptAbout "Yngylch NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/da/noscript/noscript.dtd b/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
index 8ed2e10..19f6f48 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.8.29">
+<!ENTITY noscriptAbout "Om NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Åbn tilladelsesmenuen når musen holdes over NoScript-ikonet">
 <!ENTITY noscriptDonate "Donér">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/de/noscript/noscript.dtd b/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
index 20c05b0..2b58722 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.8.29…">
+<!ENTITY noscriptAbout "Über NoScript 2.6.8.30rc3…">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Berechtigungen-Menü öffnen beim Überfahren des NoScript-Symbols mit dem Mauszeiger">
 <!ENTITY noscriptDonate "Spenden">
 <!ENTITY noscriptDonate.accesskey "S">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/el/noscript/noscript.dtd b/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
index 9fba0b4..538f975 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.8.29">
+<!ENTITY noscriptAbout "Περί NoScript 2.6.8.30rc3">
 <!ENTITY noscriptPermissionsText "Μπορείτε να καθορίσετε για ποιους ιστότοπους θα επιτρέπεται η εκτέλεση σεναρίων εντολών. Πληκτρολογήστε τη διεύθυνση τομέα (πχ. "http://www.site.com" or "site.com") του ιστότοπου που θέλετε και μετά κάντε κλικ στο «Να επιτρέπεται»">
 <!ENTITY noscriptWebAddress "Διεύθυνση ιστότοπου">
 <!ENTITY noscriptAllow "Να επιτρέπεται">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Άνοιγμα του μενού αδειοδοτήσεων όταν περνάει το ποντίκι πάνω από το εικονίδιο του NoScript">
 <!ENTITY noscriptDonate "Δωρεά">
 <!ENTITY noscriptDonate.accesskey "ω">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd b/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
index 46d61b3..21e899e 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.8.29…">
+<!ENTITY noscriptAbout "About NoScript 2.6.8.30rc3…">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
 <!ENTITY noscriptForbidWebGL "Forbid WebGL">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd b/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
index 918afad..34ccd4f 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.8.29…">
+<!ENTITY noscriptAbout "About NoScript 2.6.8.30rc3…">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd b/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
index 3acce13..3870e20 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.8.29…">
+<!ENTITY noscriptAbout "Pri NoScript 2.6.8.30rc3…">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Aperigi la rajtigmenuon kiam la musmontrilo estas sur bildsimbolo de NoScript">
 <!ENTITY noscriptDonate "Donaci">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
index f70d980..f8f4672 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.8.29">
+<!ENTITY noscriptAbout "Acerca de NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
index cd2af87..b74ed85 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.8.29…">
+<!ENTITY noscriptAbout "About NoScript 2.6.8.30rc3…">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
index b652f87..46c258d 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.8.29">
+<!ENTITY noscriptAbout "Acerca de NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Abrir menú de permisos cuando el ratón se sitúa sobre el icono de NosScript">
 <!ENTITY noscriptDonate "Donar">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd b/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
index e08d34d..de79c40 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.8.29…">
+<!ENTITY noscriptAbout "Täpsemalt lisast NoScript 2.6.8.30rc3…">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Hiire viimine NoScript ikooni peale avab õiguste menüü">
 <!ENTITY noscriptDonate "Anneta">
 <!ENTITY noscriptDonate.accesskey "n">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd b/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
index 798c0de..0ec1c50 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.8.29-eri buruz:">
+<!ENTITY noscriptAbout "NoScript 2.6.8.30rc3-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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
index ad9c662..9fbdb96 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.8.29">
+<!ENTITY noscriptAbout "درباره NoScript 2.6.8.30rc3">
 <!ENTITY noscriptPermissionsText "شما می توانید سایت هایی را که اجازه اجرای اسکریپت دارند را مشخص کنید.آدرس سایت یا نام دامنه را وارد کنید.(به عنوان مثال "http://www.site.com" یا "site.com")">
 <!ENTITY noscriptWebAddress "آدرس وب سایت :">
 <!ENTITY noscriptAllow "اجازه دادن">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
index 25b9199..825335c 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.8.29istä…">
+<!ENTITY noscriptAbout "Tietoja NoScript 2.6.8.30rc3istä…">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Avaa oikeudet valikko kun hiiri osoittaa NoScript kuvaketta">
 <!ENTITY noscriptDonate "Lahjoita">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
index 2fc9ef6..1eb736b 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.8.29…">
+<!ENTITY noscriptAbout "À propos de NoScript 2.6.8.30rc3…">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Ouvrir le menu des permissions lorsque la souris survole l'icône de NoScript.">
 <!ENTITY noscriptDonate "Donner">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd b/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
index b2f7761..9a8f04a 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.8.29">
+<!ENTITY noscriptAbout "Acerca de NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd b/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
index 2474c93..d173e34 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.8.29">
+<!ENTITY noscriptAbout "אודות NoScript 2.6.8.30rc3">
 <!ENTITY noscriptPermissionsText "ציין אילו אתרים יכולים לקבל היתר להפעלת קבצי Script. הקלד את כתובת האתר או את שם התחום (כגון: "http://www.site.com" או "site.com") ולאחר מכן לחץ על התר.">
 <!ENTITY noscriptWebAddress "כתובת/תחום:">
 <!ENTITY noscriptAllow "התר">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "פתח את תפריט ההרשאות בעת הצבת מצביע העכבר מעל הסמל של NoScript">
 <!ENTITY noscriptDonate "תרום">
 <!ENTITY noscriptDonate.accesskey "">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
index eadb37b..940e89c 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.8.29">
+<!ENTITY noscriptAbout "O NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Otvoriti meni dopustenja u slucaju mouseover-a nad NoScript ikonom">
 <!ENTITY noscriptDonate "Donacija">
 <!ENTITY noscriptDonate.accesskey "d">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
index 6192c42..73728f2 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.8.29…">
+<!ENTITY noscriptAbout "Wo NoScript 2.6.8.30rc3…">
 <!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ć">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Meni prawow wočinić, hdyž pokazowak myše je nad NoScriptowym wobrazom">
 <!ENTITY noscriptDonate "Darić">
 <!ENTITY noscriptDonate.accesskey "a">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
index 093320e..0f669e1 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.8.29 névjegye">
+<!ENTITY noscriptAbout "A NoScript 2.6.8.30rc3 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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Hozzáférések menü megnyitása, ha az egér kurzora a NoScript ikon felett van">
 <!ENTITY noscriptDonate "Hozzájárulás">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd b/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
index bfc026e..c41936f 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.8.29">
+<!ENTITY noscriptAbout "Tentang NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/it/noscript/noscript.dtd b/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
index 0747cc4..c94a7c2 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.8.29…">
+<!ENTITY noscriptAbout "Informazioni su NoScript 2.6.8.30rc3…">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Apri il menù dei permessi quando il mouse sorvola l'icona di NoScript">
 <!ENTITY noscriptDonate "Donazione">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
index 4efbede..50c1370 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.8.29について...">
+<!ENTITY noscriptAbout "NoScript 2.6.8.30rc3について...">
 <!ENTITY noscriptPermissionsText "JavaScriptを許可するサイトを指定する事ができます。許可したいサイトのアドレスかドメインを入力して、ボタンを押してください。(例: "http://www.site.com" または "site.com")">
 <!ENTITY noscriptWebAddress "ウェブサイトのアドレス:">
 <!ENTITY noscriptAllow "許可する">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "NoScriptアイコンの上にマウスを移動した時にアクセス許可メニューを開く">
 <!ENTITY noscriptDonate "寄付">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd b/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
index 2cda904..d94af26 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.8.29 туралы...">
+<!ENTITY noscriptAbout "NoScript 2.6.8.30rc3 туралы...">
 <!ENTITY noscriptPermissionsText "Қай сайттарға JavaScript орындауға рұқсат екенін көрсете аласыз. Рұқсат етілетін сайттың домен адресін енгізіңіз (мысалы, "http://www.site.com" немесе "site.com"), содан кейін Рұқсат ету басыңыз.">
 <!ENTITY noscriptWebAddress "Веб-сайт адресі:">
 <!ENTITY noscriptAllow "Рұқсат ету">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Тышқан NoScript таңбашасынан өткен кезде рұқсаттар мәзірін ашу">
 <!ENTITY noscriptDonate "Ақшалай көмектесу">
 <!ENTITY noscriptDonate.accesskey "ш">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd b/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
index f22d050..4ea1e2a 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.8.29">
+<!ENTITY noscriptAbout "About NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
index 7cefc83..f92f405 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.8.29 정보...">
+<!ENTITY noscriptAbout "NoScript 2.6.8.30rc3 정보...">
 <!ENTITY noscriptPermissionsText "스크립트 실행을 허용할 웹 사이트를 지정할 수 있습니다. 스크립트를 허용할 사이트의 주소나 도메인 (예를 들면, "http://www.site.com" 또는 "site.com")을 입력한 후 [허용] 버튼을 클릭합니다.">
 <!ENTITY noscriptWebAddress "웹 사이트 주소">
 <!ENTITY noscriptAllow "허용">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd b/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
index c2ea60f..7d847df 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.8.29">
+<!ENTITY noscriptAbout "Apie NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscriptDonate "Paaukoti">
 <!ENTITY noscriptDonate.accesskey "o">
 <!ENTITY noscriptForbidWebGL "Forbid WebGL">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd b/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
index 374e4e2..7c2202a 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.8.29">
+<!ENTITY noscriptAbout "За NoScript 2.6.8.30rc3">
 <!ENTITY noscriptPermissionsText "Можете да ги назначите страните, на кои што скриптите ќе бидат дозволени. Напишете ја дозволената адреса (на пример http://www.site.com или site.com) и кликнете „Дозволи“">
 <!ENTITY noscriptWebAddress "Адреса на дозволената веб страна:">
 <!ENTITY noscriptAllow "Дозволи">
@@ -184,3 +184,5 @@
 <!ENTITY noscriptPreset.medium "Classic (Whitelist + Web Security)">
 <!ENTITY noscriptPreset.high "Fortress (Full lockdown)">
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
index 0730af5..9be59e6 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.8.29">
+<!ENTITY noscriptAbout "Tentang NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Buka menu keizinan apabila tetikus hover pada ikon NoScript">
 <!ENTITY noscriptDonate "Derma">
 <!ENTITY noscriptDonate.accesskey "D">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd b/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
index ac06730..2c964e2 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.8.29">
+<!ENTITY noscriptAbout "Om NoScript 2.6.8.30rc3">
 <!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 &quotside.no") du ønsker å gi tillatelse til, og klikk Tillat.">
 <!ENTITY noscriptWebAddress "Webadresse:">
 <!ENTITY noscriptAllow "Tillat">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd b/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
index 8c8e9f3..328b6df 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.8.29">
+<!ENTITY noscriptAbout "Over NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Toestemmingen menu openen als muis over NoScript pictogram wordt geplaatst">
 <!ENTITY noscriptDonate "Doneren">
 <!ENTITY noscriptDonate.accesskey "D">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
index e0d082b..f3162a4 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.8.29 – informacje">
+<!ENTITY noscriptAbout "NoScript 2.6.8.30rc3 – 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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Otwórz menu ustawień po umieszczeniu wskaźnika myszy nad ikoną NoScript">
 <!ENTITY noscriptDonate "Dotacje">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
index 10357fc..61852b7 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.8.29…">
+<!ENTITY noscriptAbout "Sobre o NoScript 2.6.8.30rc3…">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Abrir o menu de permissões quando o mouse passar sobre o ícone do NoScript">
 <!ENTITY noscriptDonate "Doar">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
index 6dfcea0..9edc578 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.8.29">
+<!ENTITY noscriptAbout "Sobre o NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Abra o menu de permissões quando o rato passa sobre o ícone do NoScript">
 <!ENTITY noscriptDonate "Doar">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
index fce5206..3580471 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.8.29">
+<!ENTITY noscriptAbout "Despre NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Afișează meniul permisiunilor când mausul survolează pictograma NoScript">
 <!ENTITY noscriptDonate "Donați">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/ru-RU/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ru-RU/noscript/noscript.dtd
index 1df18bd..6d4bf0a 100644
--- a/chrome/noscript.jar!/locale/ru-RU/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ru-RU/noscript/noscript.dtd
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Открывать меню разрешению при наведении мыши на значок">
 <!ENTITY noscriptDonate "Пожертвовать">
 <!ENTITY noscriptDonate.accesskey "в">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
index 906d1ec..763b880 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.8.29">
+<!ENTITY noscriptAbout "O rozšírení NoScript 2.6.8.30rc3">
 <!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ť">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Otvoriť ponuku povolení po presunutí myši nad ikonu rozšírenia NoScript">
 <!ENTITY noscriptDonate "Prispieť">
 <!ENTITY noscriptDonate.accesskey "P">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
index 8f24c84..74e27ec 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.8.29 programu...">
+<!ENTITY noscriptAbout "O NoScript 2.6.8.30rc3 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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Odpri menu z dovoljenji, ko kurzor preleti NoScript ikono">
 <!ENTITY noscriptDonate "Doniraj">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
index fabfaf5..2bd1a8b 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.8.29-у">
+<!ENTITY noscriptAbout "О NoScript 2.6.8.30rc3-у">
 <!ENTITY noscriptPermissionsText "Можете да наведете којим веб странама је дозвољено да извршавају скриптове. Унесите адресу или домен (нпр. "http://www.site.com" или "site.com") стране којој желите да дате дозволу и онда кликните Дозволи.">
 <!ENTITY noscriptWebAddress "Адреса веб стране:">
 <!ENTITY noscriptAllow "Дозволи">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/sr/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sr/noscript/noscript.dtd
index ff9036b..f6eea43 100644
--- a/chrome/noscript.jar!/locale/sr/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sr/noscript/noscript.dtd
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Отвори мени за дозволе при преласку мишем преко иконице носкрипта">
 <!ENTITY noscriptDonate "Донирај">
 <!ENTITY noscriptDonate.accesskey "Д">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
index aa1eaaa..16e8ef3 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.8.29">
+<!ENTITY noscriptAbout "Om NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Öppna behörighetsmenyn när muspekaren är över NoScript ikon">
 <!ENTITY noscriptDonate "Donera">
 <!ENTITY noscriptDonate.accesskey "O">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd b/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
index 866be44..48c8455 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.8.29…">
+<!ENTITY noscriptAbout "About NoScript 2.6.8.30rc3…">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/th/noscript/noscript.dtd b/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
index 75dd9e4..4c0f136 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.8.29">
+<!ENTITY noscriptAbout "เกี่ยวกับ NoScript 2.6.8.30rc3">
 <!ENTITY noscriptPermissionsText "คุณสามารถกำหนดเว็บไซต์ที่จะอนุญาตดำเนินการสคริปต์ พิมพ์ที่อยู่หรือโดเมน (เช่น "http://www.site.com" หรือ "site.com") ของไซต์ที่คุณต้องการอนุญาตและคลิกอนุญาต">
 <!ENTITY noscriptWebAddress "ที่อยู่เว็บไซต์:">
 <!ENTITY noscriptAllow "อนุญาต">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd b/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
index b892927..6121a86 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.8.29 Hakkında">
+<!ENTITY noscriptAbout "NoScript 2.6.8.30rc3 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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Fare ile NoScript ikonu üzerine gidince izinler listesini aç">
 <!ENTITY noscriptDonate "Bağış Yap">
 <!ENTITY noscriptDonate.accesskey "B">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/uk/noscript/noscript.dtd b/chrome/noscript.jar!/locale/uk/noscript/noscript.dtd
index dd1ed20..8f77541 100644
--- a/chrome/noscript.jar!/locale/uk/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/uk/noscript/noscript.dtd
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd b/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
index 8dfbe1f..f1c605d 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.8.29">
+<!ENTITY noscriptAbout "Thông tin về NoScript 2.6.8.30rc3">
 <!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">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "Open permissions menu when mouse hovers over NoScript's icon">
 <!ENTITY noscriptDonate "Donate">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd b/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
index 21d0631..e81420e 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.8.29">
+<!ENTITY noscriptAbout "关于 NoScript 2.6.8.30rc3">
 <!ENTITY noscriptPermissionsText "您可以指定允许执行脚本的网站。请输入您想要允许的网站地址或域名(例如: “http://www.site.com”或者“site.com”)然后单击“允许”。">
 <!ENTITY noscriptWebAddress "网站地址:">
 <!ENTITY noscriptAllow "允许">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "当鼠标划过 NoScript 图标时打开许可菜单">
 <!ENTITY noscriptDonate "捐助">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd b/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
index 2f8e008..3ff6387 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.8.29">
+<!ENTITY noscriptAbout "關於 NoScript 2.6.8.30rc3">
 <!ENTITY noscriptPermissionsText "您可以指定允許執行 JavaScript 的網站。輸入您要允許的網址或網域(例如 "http://www.site.com" 或 "site.com"),然後按下允許.">
 <!ENTITY noscriptWebAddress "網址:">
 <!ENTITY noscriptAllow "允許">
@@ -184,3 +184,5 @@
 <!ENTITY noscript.hoverUI "當滑鼠移至 NoScript's 圖示時開啟權限選單">
 <!ENTITY noscriptDonate "贊助">
 <!ENTITY noscriptDonate.accesskey "o">
+<!ENTITY noscriptCascadePermissions "Cascade top document's permissions to 3rd party scripts">
+<!ENTITY noscriptRestrictSubdocScripting "Block scripting in whitelisted subdocuments of non-whitelisted pages">
diff --git a/components/noscriptService.js b/components/noscriptService.js
index 16e8b8b..f025113 100644
--- a/components/noscriptService.js
+++ b/components/noscriptService.js
@@ -5,7 +5,7 @@ const Cc = Components.classes;
 const Cu = Components.utils;
 const Cr = Components.results;
 
-const VERSION = "2.6.8.29";
+const VERSION = "2.6.8.30rc3";
 const SERVICE_CTRID = "@maone.net/noscript-service;1";
 const SERVICE_ID = "{31aec909-8e86-4397-9380-63a59e0c5ff5}";
 const EXTENSION_ID = "{73a6fe31-595d-460b-a920-fcc0f8843232}";
@@ -1249,6 +1249,9 @@ var Thread = {
 
 
 LAZY_INCLUDE(
+  "Bug",
+  "CSP",
+  "DocShellScript",
   "DNS",
   "HTTPS",
   "ScriptSurrogate",
@@ -1615,11 +1618,13 @@ var ns = {
       case "allowHttpsOnly":
       case "removeSMILKeySniffer":
       case  "restrictSubdocScripting":
-      case  "cascadePermissions":
         this[name] = this.getPref(name, this[name]);  
       break;
       
-      
+      case  "cascadePermissions":
+        this[name] = this.geckoVersionCheck("24") >= 0 && this.getPref(name, this[name]);  
+      break;
+    
       case "fakeScriptLoadEvents.enabled":   
       case "fakeScriptLoadEvents.onlyRequireJS":
       case "fakeScriptLoadEvents.exceptions":
@@ -1700,7 +1705,6 @@ var ns = {
       break;
       case "allowLocalLinks":
         this.updateExtraPerm(name, "checkloaduri", ["enabled"]);
-        this[name] = this.getPref(name, false);
       break;
       case "nselForce":
       case "nselNever":
@@ -1775,6 +1779,7 @@ var ns = {
   updateExtraPerm: function(prefName, baseName, names) {
     var cpName;
     var enabled = this.getPref(prefName, false);
+    this[prefName] = enabled;
     for (var j = names.length; j-- > 0;) {
       cpName = this.POLICY_NAME + "." + baseName + "." + names[j];
       try {
@@ -1787,6 +1792,9 @@ var ns = {
         }
       } catch(ex) {}
     }
+    if (!this._batchPrefs) {
+      this.setupJSCaps();
+    }
   },
   
   updateCssPref: function(name) {
@@ -1933,7 +1941,8 @@ var ns = {
     this.mandatorySites.sitesString = this.getPref("mandatory", "chrome: about: resource:");
     
     this.captureExternalProtocols();
-     
+    
+    this._batchPrefs = true;
     for each(var p in [
       "autoAllow",
       "allowClipboard", "allowLocalLinks",
@@ -1974,7 +1983,7 @@ var ns = {
         dump("[NoScript init error] " + e.message + ":" + e.stack + " setting " + p + "\n");
       }
     }
-    
+    this._batchPrefs = false;
 
     
     
@@ -2447,20 +2456,20 @@ var ns = {
     delete this.supportsCAPS;
     return this.supportsCAPS = !WinScript.supported;
   },
+  get usingCAPS() {
+    return this.supportsCAPS && !this.cascadePermissions;
+  },
   globalJS: false,
   get jsEnabled() {
-    this.__defineGetter__("jsEnabled",
-        WinScript.supported
-          ? function() this.mozJSEnabled && this.globalJS
-          : function() {
-            if (!this.mozJSEnabled) return false;
-            try {
-              return this.caps.getCharPref("default.javascript.enabled") !== "noAccess";
-            } catch(ex) {
-              return this.jsEnabled = this.globalJS;
-            }
-          }
-        );
+    if (!this.usingCAPS) return this.mozJSEnabled && this.globalJS;
+    
+    if (!this.mozJSEnabled) return false;
+    try {
+      return this.caps.getCharPref("default.javascript.enabled") !== "noAccess";
+    } catch(ex) {
+      return this.jsEnabled = this.globalJS;
+    }
+       
     return this.jsEnabled;
   }
 ,
@@ -2473,7 +2482,7 @@ var ns = {
       this.caps.clearUserPref(prefName);
     } catch(e) {}
     if (this.supportsCAPS)
-      this.defaultCaps.setCharPref(prefName, enabled ? "allAccess" : "noAccess");
+      this.defaultCaps.setCharPref(prefName, enabled || !this.usingCAPS ? "allAccess" : "noAccess");
     
     this.setPref("global", enabled);
     if (enabled) {
@@ -2927,7 +2936,7 @@ var ns = {
     
     if (!this.supportsCAPS) {
       this.resetJSCaps();
-      return;
+      if (!(this.allowLocalLinks || this.allowClipboard)) return;
     }
     
     this._editingPolicies = true;
@@ -2987,8 +2996,9 @@ var ns = {
     }
     try {
       let POLICY_NAME = this.POLICY_NAME;
+      let exclusive = this.getPref("excaps", true) && (this.supportsCAPS  || this.allowLocalLinks || this.allowClipboard);
       let prefString = SiteUtils.splitString(
-        this.getPref("excaps", true) ? this.getPref("policynames", "") : this.caps.getCharPref("policynames")
+       exclusive ? this.getPref("policynames", "") : this.caps.getCharPref("policynames")
       ).filter(function(s) s && s !== POLICY_NAME).join(" ");
       
       if (prefString) {
@@ -3336,13 +3346,6 @@ var ns = {
   geckoVersionCheck: function(v) this.versionComparator.compare(this.geckoVersion, v),
   
   
-  _bug453825: true,
-  _bug472495: true,
-  get _bug677643() {
-    delete this._bug677643;
-    return this._bug677643 = this.geckoVersionCheck('8.0') < 0;
-  },
-
   cpConsoleFilter: [2, 5, 6, 7, 15],
   cpDump: function(msg, aContentType, aContentLocation, aRequestOrigin, aContext, aMimeTypeGuess, aInternalCall) {
     this.dump("Content " + msg + " -- type: " + aContentType + ", location: " + (aContentLocation && aContentLocation.spec) + 
@@ -6074,35 +6077,55 @@ var ns = {
   
   onWindowCreated: function(window, site) {
     this.beforeScripting(window, site);
-
-    return (this.onWindowCreated =
-            WinScript.supported
-              ? this._onWindowCreatedReal
-              : function(){}
-          ).apply(this, arguments);
+    (this.onWindowCreated = this._onWindowCreatedReal).apply(this, arguments);
   },
   
+  isBrowserOrigin: function(origin) /^(?:\[System Principal\]$|moz-safe-about:)/.test(origin),
+  
   _onWindowCreatedReal: function(window, site) {
-
     let origin = window.document.nodePrincipal.origin;
-    if (/^(?:\[System Principal\]$|moz-safe-about:)/.test(origin)) return;
+    if (this.isBrowserOrigin(origin)) return;
     let blockIt;
-    
+    let blocker = WinScript.supported ? WinScript : DocShellScript;
     site = this.getSite(origin || site);
     if ((this.cascadePermissions || this.restrictSubdocScripting) && window.top !== window) {
       if (this.cascadePermissions) {
-        blockIt = WinScript.isBlocked(window.top) || this.isUntrusted(site);
-      } else if (this.restrictSubdocScripting && WinScript.isBlocked(window.parent)) {
+        blockIt = blocker.isBlocked(window.top) || this.isUntrusted(site);
+      } else if (this.restrictSubdocScripting && blocker.isBlocked(window.parent)) {
         blockIt = true;
       }
     } 
      
-    if (typeof blockIt === "undefined") blockIt = site && !this.isJSEnabled(site);
+    if (typeof blockIt === "undefined")
+      blockIt = site && (this.usingCAPS && !this.restrictSubdocScripting ? this.isUntrusted(site) : !this.isJSEnabled(site));
     
-    if (blockIt) WinScript.block(window);
-  },
-  
- 
+    if (blockIt) {
+      blocker.block(window);
+    } else {
+      blocker.unblock(window);
+    }
+  },
+  
+  _domUtils: Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils),
+  _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];
+      if(s.href === "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);
+                  break;
+              }
+          }
+          break;
+      }
+    }
+ },
   
   beforeScripting: function(subj, url) { // early stub
     if (!this.httpStarted) {
@@ -6327,10 +6350,8 @@ var ns = {
         if ((stateFlags & WP_STATE_START_DOC) == WP_STATE_START_DOC) {
           if (!(req instanceof Ci.nsIHttpChannel) && (
                 // prevent about:newTab breakage
-                req.name == "about:blank" && !IOUtil.extractInternalReferrer(req) ||
-                // work around for https://bugzilla.mozilla.org/show_bug.cgi?id=771655
-                req.URI.schemeIs("data") ||
-                // work around for https://bugzilla.mozilla.org/show_bug.cgi?id=789773
+                req.name == "about:blank" && !IOUtil.extractInternalReferrer(req) && Bug.$771655 ||
+                req.URI.schemeIs("data") &&  Bug.$789773 ||
                 req.URI.equals(DOM.browserWinURI)
               )
             ) return;
@@ -6715,15 +6736,19 @@ var ns = {
     return href || "";
   },
   
-  checkLocalLink: function(url, principal) {
-    if (!(this.allowLocalLinks && WinScript.supported)) return false; 
+  
+  checkLocalLink: function(url, principal, fromPolicy) {
+    
+    if (!this.allowLocalLinks || this.supportsCAPS && !fromPolicy)
+      return fromPolicy;
+    
     if (url instanceof Ci.nsIURI) {
-      if (!url.schemeIs("file")) return false;
+      if (!url.schemeIs("file")) return fromPolicy;
       url = url.spec;
-    } else if (typeof url !== "string" || url.indexOf("file:///") !== 0) return false;
+    } else if (typeof url !== "string" || url.indexOf("file:///") !== 0) return fromPolicy;
     let site = principal.URI ? principal.URI.spec : principal.origin;
     
-    if (!/^(ht|f)tps?:/.test(site)) return false;
+    if (!/^(ht|f)tps?:/.test(site)) return fromPolicy;
     
     let [to, from] = [ AddressMatcher.create(this.getPref("allowLocalLinks." + n, ""))
                         for each (n in ["to", "from"]) ];
diff --git a/install.rdf b/install.rdf
index 9c110a0..b77444f 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.8.29</em:version>
+   <em:version>2.6.8.30rc3</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