/** * Myext main content script run in all frames * * Copyright (C) 2021 Wojtek Kosior * * Dual-licensed under: * - 0BSD license * - GPLv3 or (at your option) any later version */ "use strict"; (() => { const handle_page_actions = window.handle_page_actions; const url_item = window.url_item; const gen_unique = window.gen_unique; var url_re = /^([^#]*)((#[^#]*)(#.*)?)?$/; var match = url_re.exec(document.URL); var base_url = match[1]; var first_target = match[3]; var second_target = match[4]; // TODO: can be refactored *a little bit* with policy_smuggler.js let url = url_item(document.URL); let unique = gen_unique(url); let nonce = unique.substring(1); var block = true; if (first_target !== undefined && first_target === unique) { block = false; console.log(["allowing", document.URL]); if (second_target !== undefined) window.location.href = base_url + second_target; else history.replaceState(null, "", base_url); } else { console.log(["not allowing", document.URL]); } function handle_mutation(mutations, observer) { if (document.readyState === 'complete') { console.log("complete"); observer.disconnect(); return; } for (let mutation of mutations) { for (let node of mutation.addedNodes) { /* * Modifying