72 lines
1.6 KiB
JavaScript
72 lines
1.6 KiB
JavaScript
const enable = () => chrome.storage.local.get({
|
|
enabled: true
|
|
}, async prefs => {
|
|
await chrome.scripting.unregisterContentScripts();
|
|
|
|
if (prefs.enabled) {
|
|
const common = {
|
|
'matches': ['*://*/*'],
|
|
'allFrames': true,
|
|
'matchOriginAsFallback': true,
|
|
'runAt': 'document_start'
|
|
};
|
|
|
|
await chrome.scripting.registerContentScripts([{
|
|
...common,
|
|
'id': 'protected',
|
|
'js': ['/data/inject/isolated.js'],
|
|
'world': 'ISOLATED'
|
|
}, {
|
|
...common,
|
|
'id': 'unprotected',
|
|
'js': ['/data/inject/main.js'],
|
|
'world': 'MAIN'
|
|
}]);
|
|
}
|
|
});
|
|
chrome.runtime.onStartup.addListener(enable);
|
|
chrome.runtime.onInstalled.addListener(enable);
|
|
|
|
const policy = () => ({
|
|
ua: 'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
|
|
uad: true,
|
|
major: 100,
|
|
name: 'Google Chrome',
|
|
mobile: false,
|
|
platform: 'Windows',
|
|
architecture: 'x86',
|
|
bitness: '64',
|
|
platformVersion: '10.0.0'
|
|
});
|
|
|
|
// web navigation
|
|
const onCommitted = d => {
|
|
const p = policy(d);
|
|
|
|
if (p) {
|
|
chrome.scripting.executeScript({
|
|
target: {
|
|
tabId: d.tabId,
|
|
frameIds: [d.frameId]
|
|
},
|
|
injectImmediately: true,
|
|
func: p => {
|
|
/* global port */
|
|
if (typeof port === 'undefined') {
|
|
self.prefs = p;
|
|
}
|
|
else {
|
|
Object.assign(port.dataset, p);
|
|
}
|
|
},
|
|
args: [p]
|
|
});
|
|
}
|
|
};
|
|
chrome.storage.local.get({
|
|
enabled: true
|
|
}, prefs => {
|
|
if (prefs.enabled) {
|
|
chrome.webNavigation.onCommitted.addListener(onCommitted);
|
|
}
|
|
});
|