fixup! use executeScript for early data injection

This commit is contained in:
tophf 2020-12-19 12:33:35 +03:00
parent 14c4dbcfed
commit c78b9ade06
2 changed files with 11 additions and 8 deletions

View File

@ -5,6 +5,7 @@ define(require => {
const {API, msg} = require('/js/msg');
const styleManager = require('./style-manager');
require('./background-api');
require('./style-via-webrequest');
// These are loaded conditionally.
// Each item uses `require` individually so IDE can jump to the source and track usage.
@ -15,8 +16,6 @@ define(require => {
require(['./browser-cmd-hotkeys']),
!FIREFOX &&
require(['./content-scripts']),
!FIREFOX &&
require(['./style-via-webrequest']),
chrome.contextMenus &&
require(['./context-menus']),
styleManager.ready,

View File

@ -2,6 +2,7 @@
define(async require => {
const {API} = require('/js/msg');
const {CHROME} = require('/js/toolbox');
const prefs = require('/js/prefs');
const idCSP = 'patchCsp';
@ -12,6 +13,11 @@ define(async require => {
/** @type {Object<string,StylesToPass>} */
const stylesToPass = {};
const state = {};
const injectedCode = CHROME && `${data => {
if (self.INJECTED !== 1) { // storing data only if apply.js hasn't run yet
window[Symbol.for('styles')] = data;
}
}}`;
toggle();
prefs.subscribe([idXHR, idOFF, idCSP], toggle);
@ -38,8 +44,10 @@ define(async require => {
xhr && chrome.webRequest.OnHeadersReceivedOptions.EXTRA_HEADERS,
].filter(Boolean));
}
if (!off) {
if (CHROME ? !off : xhr || csp) {
chrome.webRequest.onBeforeRequest.addListener(prepareStyles, reqFilter);
}
if (CHROME && !off) {
chrome.webNavigation.onCommitted.addListener(injectData, {url: [{urlPrefix: 'http'}]});
}
state.csp = csp;
@ -63,11 +71,7 @@ define(async require => {
chrome.tabs.executeScript(req.tabId, {
frameId: req.frameId,
runAt: 'document_start',
code: `(${data => {
if (self.INJECTED !== 1) { // storing data only if apply.js hasn't run yet
window[Symbol.for('styles')] = data;
}
}})(${str})`,
code: `(${injectedCode})(${str})`,
});
if (!state.xhr) cleanUp(req);
}