mirror of
https://github.com/gorhill/uBlock.git
synced 2024-10-06 09:37:12 +02:00
Minor code review of scriptlets
This commit is contained in:
parent
0ad456e905
commit
b699691e40
@ -51,6 +51,7 @@ function safeSelf() {
|
|||||||
'RegExp': self.RegExp,
|
'RegExp': self.RegExp,
|
||||||
'RegExp_test': self.RegExp.prototype.test,
|
'RegExp_test': self.RegExp.prototype.test,
|
||||||
'RegExp_exec': self.RegExp.prototype.exec,
|
'RegExp_exec': self.RegExp.prototype.exec,
|
||||||
|
'XMLHttpRequest': self.XMLHttpRequest,
|
||||||
'addEventListener': self.EventTarget.prototype.addEventListener,
|
'addEventListener': self.EventTarget.prototype.addEventListener,
|
||||||
'removeEventListener': self.EventTarget.prototype.removeEventListener,
|
'removeEventListener': self.EventTarget.prototype.removeEventListener,
|
||||||
'fetch': self.fetch,
|
'fetch': self.fetch,
|
||||||
@ -294,18 +295,24 @@ function abortCurrentScriptCore(
|
|||||||
return text;
|
return text;
|
||||||
};
|
};
|
||||||
const validate = ( ) => {
|
const validate = ( ) => {
|
||||||
if ( debug ) { debugger; } // jshint ignore: line
|
|
||||||
const e = document.currentScript;
|
const e = document.currentScript;
|
||||||
if ( e instanceof HTMLScriptElement === false ) { return; }
|
if ( e instanceof HTMLScriptElement === false ) { return; }
|
||||||
if ( e === thisScript ) { return; }
|
if ( e === thisScript ) { return; }
|
||||||
if ( context !== '' && reContext.test(e.src) === false ) { return; }
|
if ( context !== '' && reContext.test(e.src) === false ) {
|
||||||
|
if ( debug === 'nomatch' || debug === 'all' ) { debugger; } // jshint ignore: line
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( log && e.src !== '' ) { safe.uboLog(`matched src: ${e.src}`); }
|
if ( log && e.src !== '' ) { safe.uboLog(`matched src: ${e.src}`); }
|
||||||
const scriptText = getScriptText(e);
|
const scriptText = getScriptText(e);
|
||||||
if ( reNeedle.test(scriptText) === false ) { return; }
|
if ( reNeedle.test(scriptText) === false ) {
|
||||||
|
if ( debug === 'nomatch' || debug === 'all' ) { debugger; } // jshint ignore: line
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( log ) { safe.uboLog(`matched script text: ${scriptText}`); }
|
if ( log ) { safe.uboLog(`matched script text: ${scriptText}`); }
|
||||||
|
if ( debug === 'match' || debug === 'all' ) { debugger; } // jshint ignore: line
|
||||||
throw new ReferenceError(exceptionToken);
|
throw new ReferenceError(exceptionToken);
|
||||||
};
|
};
|
||||||
if ( debug ) { debugger; } // jshint ignore: line
|
if ( debug === 'install' ) { debugger; } // jshint ignore: line
|
||||||
try {
|
try {
|
||||||
Object.defineProperty(owner, prop, {
|
Object.defineProperty(owner, prop, {
|
||||||
get: function() {
|
get: function() {
|
||||||
@ -1931,6 +1938,7 @@ builtinScriptlets.push({
|
|||||||
dependencies: [
|
dependencies: [
|
||||||
'match-object-properties.fn',
|
'match-object-properties.fn',
|
||||||
'parse-properties-to-match.fn',
|
'parse-properties-to-match.fn',
|
||||||
|
'safe-self.fn',
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
function noXhrIf(
|
function noXhrIf(
|
||||||
@ -1938,6 +1946,7 @@ function noXhrIf(
|
|||||||
directive = ''
|
directive = ''
|
||||||
) {
|
) {
|
||||||
if ( typeof propsToMatch !== 'string' ) { return; }
|
if ( typeof propsToMatch !== 'string' ) { return; }
|
||||||
|
const safe = safeSelf();
|
||||||
const xhrInstances = new WeakMap();
|
const xhrInstances = new WeakMap();
|
||||||
const propNeedles = parsePropertiesToMatch(propsToMatch, 'url');
|
const propNeedles = parsePropertiesToMatch(propsToMatch, 'url');
|
||||||
const log = propNeedles.size === 0 ? console.log.bind(console) : undefined;
|
const log = propNeedles.size === 0 ? console.log.bind(console) : undefined;
|
||||||
@ -1961,7 +1970,7 @@ function noXhrIf(
|
|||||||
if ( warSecret !== undefined ) {
|
if ( warSecret !== undefined ) {
|
||||||
fullpath.push('?secret=', warSecret);
|
fullpath.push('?secret=', warSecret);
|
||||||
}
|
}
|
||||||
const warXHR = new XMLHttpRequest();
|
const warXHR = new safe.XMLHttpRequest();
|
||||||
warXHR.responseType = 'text';
|
warXHR.responseType = 'text';
|
||||||
warXHR.onloadend = ev => {
|
warXHR.onloadend = ev => {
|
||||||
resolve(ev.target.responseText || '');
|
resolve(ev.target.responseText || '');
|
||||||
|
Loading…
Reference in New Issue
Block a user