fixup! use executeScript for early data injection
This commit is contained in:
parent
14c4dbcfed
commit
c78b9ade06
|
@ -5,6 +5,7 @@ define(require => {
|
||||||
const {API, msg} = require('/js/msg');
|
const {API, msg} = require('/js/msg');
|
||||||
const styleManager = require('./style-manager');
|
const styleManager = require('./style-manager');
|
||||||
require('./background-api');
|
require('./background-api');
|
||||||
|
require('./style-via-webrequest');
|
||||||
|
|
||||||
// These are loaded conditionally.
|
// These are loaded conditionally.
|
||||||
// Each item uses `require` individually so IDE can jump to the source and track usage.
|
// 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']),
|
require(['./browser-cmd-hotkeys']),
|
||||||
!FIREFOX &&
|
!FIREFOX &&
|
||||||
require(['./content-scripts']),
|
require(['./content-scripts']),
|
||||||
!FIREFOX &&
|
|
||||||
require(['./style-via-webrequest']),
|
|
||||||
chrome.contextMenus &&
|
chrome.contextMenus &&
|
||||||
require(['./context-menus']),
|
require(['./context-menus']),
|
||||||
styleManager.ready,
|
styleManager.ready,
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
define(async require => {
|
define(async require => {
|
||||||
const {API} = require('/js/msg');
|
const {API} = require('/js/msg');
|
||||||
|
const {CHROME} = require('/js/toolbox');
|
||||||
const prefs = require('/js/prefs');
|
const prefs = require('/js/prefs');
|
||||||
|
|
||||||
const idCSP = 'patchCsp';
|
const idCSP = 'patchCsp';
|
||||||
|
@ -12,6 +13,11 @@ define(async require => {
|
||||||
/** @type {Object<string,StylesToPass>} */
|
/** @type {Object<string,StylesToPass>} */
|
||||||
const stylesToPass = {};
|
const stylesToPass = {};
|
||||||
const state = {};
|
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();
|
toggle();
|
||||||
prefs.subscribe([idXHR, idOFF, idCSP], toggle);
|
prefs.subscribe([idXHR, idOFF, idCSP], toggle);
|
||||||
|
@ -38,8 +44,10 @@ define(async require => {
|
||||||
xhr && chrome.webRequest.OnHeadersReceivedOptions.EXTRA_HEADERS,
|
xhr && chrome.webRequest.OnHeadersReceivedOptions.EXTRA_HEADERS,
|
||||||
].filter(Boolean));
|
].filter(Boolean));
|
||||||
}
|
}
|
||||||
if (!off) {
|
if (CHROME ? !off : xhr || csp) {
|
||||||
chrome.webRequest.onBeforeRequest.addListener(prepareStyles, reqFilter);
|
chrome.webRequest.onBeforeRequest.addListener(prepareStyles, reqFilter);
|
||||||
|
}
|
||||||
|
if (CHROME && !off) {
|
||||||
chrome.webNavigation.onCommitted.addListener(injectData, {url: [{urlPrefix: 'http'}]});
|
chrome.webNavigation.onCommitted.addListener(injectData, {url: [{urlPrefix: 'http'}]});
|
||||||
}
|
}
|
||||||
state.csp = csp;
|
state.csp = csp;
|
||||||
|
@ -63,11 +71,7 @@ define(async require => {
|
||||||
chrome.tabs.executeScript(req.tabId, {
|
chrome.tabs.executeScript(req.tabId, {
|
||||||
frameId: req.frameId,
|
frameId: req.frameId,
|
||||||
runAt: 'document_start',
|
runAt: 'document_start',
|
||||||
code: `(${data => {
|
code: `(${injectedCode})(${str})`,
|
||||||
if (self.INJECTED !== 1) { // storing data only if apply.js hasn't run yet
|
|
||||||
window[Symbol.for('styles')] = data;
|
|
||||||
}
|
|
||||||
}})(${str})`,
|
|
||||||
});
|
});
|
||||||
if (!state.xhr) cleanUp(req);
|
if (!state.xhr) cleanUp(req);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user