Project

General

Profile

« Previous | Next » 

Revision cf838016

Added by koszko over 1 year ago

restore chromium support

View differences:

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