summaryrefslogtreecommitdiff
path: root/src/content
diff options
context:
space:
mode:
Diffstat (limited to 'src/content')
-rw-r--r--src/content/staticNS.js33
1 files changed, 31 insertions, 2 deletions
diff --git a/src/content/staticNS.js b/src/content/staticNS.js
index bf91972..3102756 100644
--- a/src/content/staticNS.js
+++ b/src/content/staticNS.js
@@ -34,18 +34,47 @@
},
fetchPolicy() {
+ debug(`Fetching policy from document %s, readyState %s, content %s`,
+ document.URL, document.readyState, document.documentElement.outerHTML);
+
let url = document.URL;
+
+ if (url.startsWith("file:")) {
+ let cookie = "noscript.startupFileReloaded=true";
+ if (!document.cookie.split(/\s*;\s*/).includes(cookie)) {
+ stop();
+ setTimeout(() => {
+ document.cookie = cookie;
+ location.reload();
+ }, 10)
+ }
+ }
+
let policy = browser.runtime.sendSyncMessage(
- {id: "fetchPolicy", url, contextUrl: document.URL});
+ {id: "fetchPolicy", url, contextUrl: url});
+
+ debug("Fetched %o, readyState %s", policy, document.readyState);
if (!policy) {
- debug(`No answer to fetchPolicy message. This should not be happening.`);
+ debug("Could not fetch policy!");
+ if (url.startsWith("file:") && !sessionStorage.__noScriptFallbackReload__) {
+ sessionStorage.__noScriptFallbackReload__ = "true";
+ location.reload();
+ } else {
+ // let's try asynchronously
+ (async () => {
+ this.setup(await Messages.send("fetchPolicy", {url, contextUrl: url}));
+ })();
+ }
return false;
+ } else if (policy.fallback) {
+ location.reload();
}
this.setup(policy);
return true;
},
setup(policy) {
+ debug("%s, %s, %o", document.URL, document.readyState, policy);
this.policy = policy;
if (!policy.permissions || policy.unrestricted) {