summaryrefslogtreecommitdiff
path: root/data/extensions/jsr@javascriptrestrictor/document_start.js
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2023-09-27 00:53:30 -0400
committerMark H Weaver <mhw@netris.org>2023-09-27 14:34:35 -0400
commitfa5c0b073214191e6996ba0b5bc8e61560ff822c (patch)
tree38e7133195616f4a4da6c8fe46ab2c77c5a6e9e2 /data/extensions/jsr@javascriptrestrictor/document_start.js
parentd167f676a167b1392a4e29f14ddf25613468680b (diff)
Update the JShelter extension to 0.15.2.
Diffstat (limited to 'data/extensions/jsr@javascriptrestrictor/document_start.js')
-rw-r--r--data/extensions/jsr@javascriptrestrictor/document_start.js28
1 files changed, 26 insertions, 2 deletions
diff --git a/data/extensions/jsr@javascriptrestrictor/document_start.js b/data/extensions/jsr@javascriptrestrictor/document_start.js
index 71d3119..62e4a64 100644
--- a/data/extensions/jsr@javascriptrestrictor/document_start.js
+++ b/data/extensions/jsr@javascriptrestrictor/document_start.js
@@ -5,6 +5,7 @@
* \author Copyright (C) 2021 Matus Svancar
* \author Copyright (C) 2021 Giorgio Maone
* \author Copyright (C) 2021 Marek Salon
+ * \author Copyright (C) 2023 Martin Zmitko
*
* \license SPDX-License-Identifier: GPL-3.0-or-later
*/
@@ -25,10 +26,9 @@
var wrappersPort;
var pageConfiguration = null;
-function configureInjection({currentLevel, code, wrappers, domainHash, sessionHash}) {
+function configureInjection({currentLevel, fpdWrappers, domainHash}) {
if (pageConfiguration) return; // one shot
pageConfiguration = {currentLevel};
- if (!code) return true; // nothing to wrap, bail out!
if(browser.extension.inIncognitoContext){
// Redefine the domainHash for incognito context:
// Compute the SHA256 hash of the original hash so that the incognito hash is:
@@ -39,6 +39,24 @@ function configureInjection({currentLevel, code, wrappers, domainHash, sessionHa
hash.update(JSON.stringify(domainHash));
domainHash = hash.hex();
}
+ // Append argument reporting setting to JSS wrapper definitions
+ fp_append_reporting_to_jss_wrappers(fpdWrappers);
+ // Generate wrapping code
+ var code = wrap_code(currentLevel.wrappers);
+ // Generate FPD wrapping code
+ if (fpdWrappers) {
+ if (!code) {
+ code = fp_generate_wrapping_code(fpdWrappers);
+ }
+ else {
+ code = fp_update_wrapping_code(code, currentLevel.wrappers, fpdWrappers);
+ }
+ }
+ // Insert farbling WASM module into wrapped code if enabled, only when farbling is actually used
+ if (currentLevel.wasm && (currentLevel.audiobuffer === 1 || currentLevel.htmlcanvaselement === 1)) {
+ code = insert_wasm_code(code);
+ }
+
var aleaCode = `(() => {
var domainHash = ${JSON.stringify(domainHash)};
${crc16}
@@ -67,6 +85,12 @@ function configureInjection({currentLevel, code, wrappers, domainHash, sessionHa
return false;
}
+/**
+ * See https://pagure.io/JShelter/paper2022/c/a7e7e88edecfa19c3a52542b553bf1dc9b4388a9?branch=cnil,
+ * https://pagure.io/JShelter/webextension/issue/70 and
+ * https://pagure.io/JShelter/webextension/issue/46#comment-793783
+ * for more information on the early injection mechanism.
+ */
if ("configuration" in window) {
configureInjection(configuration);
} else {