Revision cf838016
Added by koszko over 1 year ago
content/content.js | ||
---|---|---|
45 | 45 |
|
46 | 46 |
#FROM common/browser.js IMPORT browser |
47 | 47 |
#FROM common/misc.js IMPORT is_privileged_url |
48 |
#FROM common/policy.js IMPORT decide_policy |
|
48 |
#FROM common/policy.js IMPORT decide_policy, fallback_policy
|
|
49 | 49 |
#FROM content/policy_enforcing.js IMPORT enforce_blocking |
50 | 50 |
|
51 |
#IF CHROMIUM && MV2 |
|
52 |
function synchronously_get_policy(url) |
|
53 |
{ |
|
54 |
const encoded_url = encodeURIComponent(url); |
|
55 |
const request_url = `${browser.runtime.getURL("dummy")}?url=${encoded_url}`; |
|
56 |
|
|
57 |
try { |
|
58 |
var xhttp = new XMLHttpRequest(); |
|
59 |
xhttp.open("GET", request_url, false); |
|
60 |
xhttp.send(); |
|
61 |
} catch(e) { |
|
62 |
console.error("Failure to synchronously fetch policy for url.", e); |
|
63 |
return fallback_policy(); |
|
64 |
} |
|
65 |
|
|
66 |
try { |
|
67 |
const policy = /^[^?]*\?settings=(.*)$/.exec(xhttp.responseURL)[1]; |
|
68 |
return JSON.parse(decodeURIComponent(policy)); |
|
69 |
} catch(e) { |
|
70 |
console.error("Failure to process synchronously fetched policy for url.", e); |
|
71 |
return fallback_policy() |
|
72 |
} |
|
73 |
} |
|
74 |
#ENDIF |
|
75 |
|
|
51 | 76 |
let already_run = false, resolve_page_info, |
52 | 77 |
page_info_prom = new Promise(cb => resolve_page_info = cb); |
53 | 78 |
|
... | ... | |
60 | 85 |
return true; |
61 | 86 |
} |
62 | 87 |
|
88 |
#IF MOZILLA || MV3 |
|
63 | 89 |
globalThis.haketilo_content_script_main = async function() { |
90 |
#ELSE |
|
91 |
async function main() { |
|
92 |
#ENDIF |
|
64 | 93 |
if (already_run) |
65 | 94 |
return; |
66 | 95 |
|
... | ... | |
72 | 101 |
browser.runtime.onMessage.addListener(on_page_info_request); |
73 | 102 |
repo_query_cacher.start(); |
74 | 103 |
|
75 |
const policy = decide_policy(globalThis.haketilo_pattern_tree, |
|
76 |
document.URL, |
|
77 |
globalThis.haketilo_default_allow, |
|
78 |
globalThis.haketilo_secret); |
|
104 |
#IF MOZILLA || MV3 |
|
105 |
try { |
|
106 |
var policy = decide_policy(globalThis.haketilo_pattern_tree, |
|
107 |
document.URL, |
|
108 |
globalThis.haketilo_default_allow, |
|
109 |
globalThis.haketilo_secret); |
|
110 |
} catch(e) { |
|
111 |
console.error(e); |
|
112 |
var policy = fallback_policy(); |
|
113 |
} |
|
114 |
#ELSE |
|
115 |
const policy = synchronously_get_policy(document.URL); |
|
116 |
#ENDIF |
|
117 |
|
|
79 | 118 |
const page_info = Object.assign({url: document.URL}, policy); |
80 | 119 |
["csp", "nonce"].forEach(prop => delete page_info[prop]); |
81 | 120 |
|
... | ... | |
108 | 147 |
resolve_page_info(page_info); |
109 | 148 |
} |
110 | 149 |
|
150 |
#IF MOZILLA || MV3 |
|
111 | 151 |
function main() { |
112 | 152 |
if (globalThis.haketilo_pattern_tree !== undefined) |
113 | 153 |
globalThis.haketilo_content_script_main(); |
114 | 154 |
} |
155 |
#ENDIF |
|
115 | 156 |
|
116 | 157 |
#IF !UNIT_TEST |
117 | 158 |
main(); |
Also available in: Unified diff
restore chromium support