summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhackademix2018-07-09 19:23:03 +0200
committerhackademix2018-07-09 19:29:23 +0200
commit7dfa2e640bcd5934831920139338b6bb656bcdc5 (patch)
treeedf9555fce31ec8f8463d19b998196f4efeaa4c9 /src
parent103324e5d2ea5ac2ea589a44b822a997ff503be3 (diff)
downloadnoscript-7dfa2e640bcd5934831920139338b6bb656bcdc5.tar.gz
noscript-7dfa2e640bcd5934831920139338b6bb656bcdc5.tar.xz
noscript-7dfa2e640bcd5934831920139338b6bb656bcdc5.zip
Added two library files (one, lib/restricted.js, missing from rc8 tag) and version bump.
Diffstat (limited to 'src')
-rw-r--r--src/lib/ContentMetaData.js30
-rw-r--r--src/lib/restricted.js29
-rw-r--r--src/manifest.json3
3 files changed, 61 insertions, 1 deletions
diff --git a/src/lib/ContentMetaData.js b/src/lib/ContentMetaData.js
new file mode 100644
index 0000000..c60d75e
--- /dev/null
+++ b/src/lib/ContentMetaData.js
@@ -0,0 +1,30 @@
+class ContentMetaData {
+ constructor(request, defaultCharset = "utf-8") {
+ this.defaultCharset = defaultCharset;
+ let {responseHeaders} = request;
+ for (let h of responseHeaders) {
+ if (/^\s*Content-(Type|Disposition)\s*$/i.test(h.name)) {
+ this[h.name.split("-")[1].trim().toLowerCase()] = h.value;
+ }
+ }
+ }
+
+ get charset() {
+ let charset = this.defaultCharset;
+ if (this.type) {
+ let m = this.type.match(/;\s*charset\s*=\s*(\S+)/);
+ if (m) {
+ charset = m[1];
+ }
+ }
+ Object.defineProperty(this, "charset", { value: charset, writable: false, configurable: true })
+ }
+
+ createDecoder() {
+ try {
+ return new TextDecoder(charset);
+ } catch (e) {
+ return new TextDecoder(this.defaultCharset);
+ }
+ }
+};
diff --git a/src/lib/restricted.js b/src/lib/restricted.js
new file mode 100644
index 0000000..ae85ba8
--- /dev/null
+++ b/src/lib/restricted.js
@@ -0,0 +1,29 @@
+{
+ // see https://bugzilla.mozilla.org/show_bug.cgi?id=1415644
+ let domains = [
+ "accounts-static.cdn.mozilla.net",
+ "accounts.firefox.com",
+ "addons.cdn.mozilla.net",
+ "addons.mozilla.org",
+ "api.accounts.firefox.com",
+ "content.cdn.mozilla.net",
+ "content.cdn.mozilla.net",
+ "discovery.addons.mozilla.org",
+ "input.mozilla.org",
+ "install.mozilla.org",
+ "oauth.accounts.firefox.com",
+ "profile.accounts.firefox.com",
+ "support.mozilla.org",
+ "sync.services.mozilla.com",
+ "testpilot.firefox.com",
+ ];
+
+ function isRestrictedURL(u) {
+ try {
+ if (typeof u === "string") u = new URL(u);
+ return u.protocol === "https:" && domains.includes(u.hostname);
+ } catch (e) {
+ return false;
+ }
+ }
+}
diff --git a/src/manifest.json b/src/manifest.json
index d592361..3caf671 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -8,7 +8,7 @@
"strict_min_version": "59.0"
}
},
- "version": "10.1.8.3rc8",
+ "version": "10.1.8.3rc9",
"description": "__MSG_Description__",
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'none'",
@@ -39,6 +39,7 @@
"lib/include.js",
"lib/punycode.js",
"lib/tld.js",
+ "lib/ContentMetaData.js",
"common/Policy.js",
"common/locale.js",
"common/Entities.js",