mirror of https://github.com/gorhill/uBlock.git
Firefox platform: minor code review; defer non-critical tasks to later at launch
This commit is contained in:
parent
4df7028bbc
commit
a72769f8ba
|
@ -53,9 +53,9 @@ var deferUntil = function(testFn, mainFn, details) {
|
||||||
details = {};
|
details = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
var now = 0;
|
var now = 0,
|
||||||
var next = details.next || 200;
|
next = details.next || 200,
|
||||||
var until = details.until || 2000;
|
until = details.until || 2000;
|
||||||
|
|
||||||
var check = function() {
|
var check = function() {
|
||||||
if ( testFn() === true || now >= until ) {
|
if ( testFn() === true || now >= until ) {
|
||||||
|
@ -69,7 +69,7 @@ var deferUntil = function(testFn, mainFn, details) {
|
||||||
if ( 'sync' in details && details.sync === true ) {
|
if ( 'sync' in details && details.sync === true ) {
|
||||||
check();
|
check();
|
||||||
} else {
|
} else {
|
||||||
vAPI.setTimeout(check, 1);
|
vAPI.setTimeout(check, details.first || 1);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3342,7 +3342,8 @@ vAPI.contextMenu = (function() {
|
||||||
}
|
}
|
||||||
deferUntil(
|
deferUntil(
|
||||||
canRegister.bind(null, win),
|
canRegister.bind(null, win),
|
||||||
register.bind(null, win)
|
register.bind(null, win),
|
||||||
|
{ first: 4000 }
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3380,8 +3381,10 @@ vAPI.contextMenu = (function() {
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// Keyboard shortcut have to be hardcoded, as they are declaratively created
|
// Keyboard shortcuts have to be hardcoded, as they are declaratively created
|
||||||
// with the browser.commands API.
|
// in the manifest.json file on webext API, and only a listener has to be
|
||||||
|
// installed with the browser.commands API.
|
||||||
|
//
|
||||||
// Assuming only one client listener is installed.
|
// Assuming only one client listener is installed.
|
||||||
|
|
||||||
// Shortcuts can be customized in `about:config` using
|
// Shortcuts can be customized in `about:config` using
|
||||||
|
@ -3399,7 +3402,7 @@ vAPI.commands = (function() {
|
||||||
|
|
||||||
var commandHandler = function(ev) {
|
var commandHandler = function(ev) {
|
||||||
if ( typeof clientListener !== 'function' ) { return; }
|
if ( typeof clientListener !== 'function' ) { return; }
|
||||||
var match = /^uBlock0-key-([a-z-]+)$/.exec(ev.target.id);
|
var match = /^uBlock0Key-([a-z-]+)$/.exec(ev.target.id);
|
||||||
if ( match === null ) { return; }
|
if ( match === null ) { return; }
|
||||||
clientListener(match[1]);
|
clientListener(match[1]);
|
||||||
};
|
};
|
||||||
|
@ -3412,7 +3415,7 @@ vAPI.commands = (function() {
|
||||||
if ( canRegister(window) !== true ) { return; }
|
if ( canRegister(window) !== true ) { return; }
|
||||||
|
|
||||||
var doc = window.document,
|
var doc = window.document,
|
||||||
myKeyset = doc.getElementById('uBlock0-keyset');
|
myKeyset = doc.getElementById('uBlock0Keyset');
|
||||||
// Already registered?
|
// Already registered?
|
||||||
if ( myKeyset !== null ) { return; }
|
if ( myKeyset !== null ) { return; }
|
||||||
|
|
||||||
|
@ -3421,7 +3424,7 @@ vAPI.commands = (function() {
|
||||||
if ( keysetHolder === null ) { return; }
|
if ( keysetHolder === null ) { return; }
|
||||||
|
|
||||||
myKeyset = doc.createElement('keyset');
|
myKeyset = doc.createElement('keyset');
|
||||||
myKeyset.setAttribute('id', 'uBlock0-keyset');
|
myKeyset.setAttribute('id', 'uBlock0Keyset');
|
||||||
|
|
||||||
var myKey, shortcut, parts, modifier, key;
|
var myKey, shortcut, parts, modifier, key;
|
||||||
for ( var command of commands ) {
|
for ( var command of commands ) {
|
||||||
|
@ -3433,11 +3436,12 @@ vAPI.commands = (function() {
|
||||||
key = parts[3] || '';
|
key = parts[3] || '';
|
||||||
if ( key === '' ) { continue; }
|
if ( key === '' ) { continue; }
|
||||||
myKey = doc.createElement('key');
|
myKey = doc.createElement('key');
|
||||||
myKey.setAttribute('id', 'uBlock0-key-' + command.id);
|
myKey.setAttribute('id', 'uBlock0Key-' + command.id);
|
||||||
if ( modifier !== '' ) {
|
if ( modifier !== '' ) {
|
||||||
myKey.setAttribute('modifiers', parts[2]);
|
myKey.setAttribute('modifiers', parts[2]);
|
||||||
}
|
}
|
||||||
myKey.setAttribute('key', key);
|
myKey.setAttribute('key', key);
|
||||||
|
// https://stackoverflow.com/a/16786770
|
||||||
myKey.setAttribute('oncommand', ';');
|
myKey.setAttribute('oncommand', ';');
|
||||||
myKeyset.appendChild(myKey);
|
myKeyset.appendChild(myKey);
|
||||||
}
|
}
|
||||||
|
@ -3448,12 +3452,16 @@ vAPI.commands = (function() {
|
||||||
|
|
||||||
var registerAsync = function(win) {
|
var registerAsync = function(win) {
|
||||||
if ( vAPI.fennec ) { return; }
|
if ( vAPI.fennec ) { return; }
|
||||||
deferUntil(canRegister.bind(null, win), register.bind(null, win));
|
deferUntil(
|
||||||
|
canRegister.bind(null, win),
|
||||||
|
register.bind(null, win),
|
||||||
|
{ first: 4000 }
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
var unregister = function(window) {
|
var unregister = function(window) {
|
||||||
var doc = window.document,
|
var doc = window.document,
|
||||||
myKeyset = doc.getElementById('uBlock0-keyset');
|
myKeyset = doc.getElementById('uBlock0Keyset');
|
||||||
if ( myKeyset === null ) { return; }
|
if ( myKeyset === null ) { return; }
|
||||||
myKeyset.removeEventListener('command', commandHandler);
|
myKeyset.removeEventListener('command', commandHandler);
|
||||||
myKeyset.parentNode.removeChild(myKeyset);
|
myKeyset.parentNode.removeChild(myKeyset);
|
||||||
|
@ -3545,7 +3553,7 @@ var optionsObserver = (function() {
|
||||||
var register = function() {
|
var register = function() {
|
||||||
Services.obs.addObserver(observer, 'addon-options-displayed', false);
|
Services.obs.addObserver(observer, 'addon-options-displayed', false);
|
||||||
cleanupTasks.push(unregister);
|
cleanupTasks.push(unregister);
|
||||||
deferUntil(canInit, init, { next: 463 });
|
deferUntil(canInit, init, { first: 4000 });
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
Loading…
Reference in New Issue