summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhackademix2019-12-23 23:34:22 +0100
committerhackademix2019-12-23 23:34:22 +0100
commit1b8d1c784c0698905660ddd5bfa5f5c856a429e4 (patch)
treec6407c86902f812394a198d3cd2eb752a771ff2d /src
parent08f25091e84b50553b80d9f659417e8d26b37866 (diff)
downloadnoscript-1b8d1c784c0698905660ddd5bfa5f5c856a429e4.tar.gz
noscript-1b8d1c784c0698905660ddd5bfa5f5c856a429e4.tar.xz
noscript-1b8d1c784c0698905660ddd5bfa5f5c856a429e4.zip
[Chromium] Fixed no permissions given on first page load in a session.
Diffstat (limited to 'src')
-rw-r--r--src/lib/SyncMessage.js35
1 files changed, 29 insertions, 6 deletions
diff --git a/src/lib/SyncMessage.js b/src/lib/SyncMessage.js
index b622afe..c889b2c 100644
--- a/src/lib/SyncMessage.js
+++ b/src/lib/SyncMessage.js
@@ -252,12 +252,35 @@
url += `&msg=${encodeURIComponent(JSON.stringify(msg))}`; // adding the payload
let r = new XMLHttpRequest();
let result;
- try {
- r.open("GET", url, false);
- r.send(null);
- result = JSON.parse(r.responseText);
- } catch(e) {
- console.error(`syncMessage error in ${document.URL}: ${e.message} (response ${r.responseText})`);
+ let key = `${ENDPOINT_PREFIX}`;
+ let reloaded = sessionStorage.getItem(key) === "reloaded";
+ if (reloaded) {
+ sessionStorage.removeItem(key);
+ console.log("Syncmessage attempt aftert reloading page.");
+ }
+ for (let attempts = 3; attempts-- > 0;) {
+ try {
+ r.open("GET", url, false);
+ r.send(null);
+ result = JSON.parse(r.responseText);
+ break;
+ } catch(e) {
+ console.error(`syncMessage error in ${document.URL}: ${e.message} (response ${r.responseText}, remaining attempts ${attempts})`);
+ if (attempts === 0) {
+ if (reloaded) {
+ console.log("Already reloaded, giving up.")
+ break;
+ }
+ sessionStorage.setItem(key, "reloaded");
+ if (sessionStorage.getItem(key)) {
+ stop();
+ location.reload();
+ return {};
+ } else {
+ console.error(`Cannot set sessionStorage item ${key}`);
+ }
+ }
+ }
}
if (callback) callback(result);
return result;