|
|
@ -19,7 +19,7 @@ |
|
|
|
Home: https://github.com/gorhill/uBlock
|
|
|
|
*/ |
|
|
|
|
|
|
|
/* global self */ |
|
|
|
/* global self, µBlock */ |
|
|
|
|
|
|
|
// For background page
|
|
|
|
|
|
|
@ -394,6 +394,57 @@ vAPI.lastError = function() { |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|
|
|
|
|
// This is called only once, when everything has been loaded in memory after
|
|
|
|
// the extension was launched. It can be used to inject content scripts
|
|
|
|
// in already opened web pages, to remove whatever nuisance could make it to
|
|
|
|
// the web pages before uBlock was ready.
|
|
|
|
|
|
|
|
vAPI.onLoadAllCompleted = function() { |
|
|
|
// http://code.google.com/p/chromium/issues/detail?id=410868#c11
|
|
|
|
// Need to be sure to access `vAPI.lastError()` to prevent
|
|
|
|
// spurious warnings in the console.
|
|
|
|
var scriptDone = function() { |
|
|
|
vAPI.lastError(); |
|
|
|
}; |
|
|
|
var scriptEnd = function(tabId) { |
|
|
|
if ( vAPI.lastError() ) { |
|
|
|
return; |
|
|
|
} |
|
|
|
vAPI.tabs.injectScript(tabId, { |
|
|
|
file: 'js/contentscript-end.js', |
|
|
|
allFrames: true, |
|
|
|
runAt: 'document_idle' |
|
|
|
}, scriptDone); |
|
|
|
}; |
|
|
|
var scriptStart = function(tabId) { |
|
|
|
vAPI.tabs.injectScript(tabId, { |
|
|
|
file: 'js/vapi-client.js', |
|
|
|
allFrames: true, |
|
|
|
runAt: 'document_start' |
|
|
|
}, function(){ }); |
|
|
|
vAPI.tabs.injectScript(tabId, { |
|
|
|
file: 'js/contentscript-start.js', |
|
|
|
allFrames: true, |
|
|
|
runAt: 'document_idle' |
|
|
|
}, function(){ scriptEnd(tabId); }); |
|
|
|
}; |
|
|
|
var bindToTabs = function(tabs) { |
|
|
|
var µb = µBlock; |
|
|
|
var i = tabs.length, tab; |
|
|
|
while ( i-- ) { |
|
|
|
tab = tabs[i]; |
|
|
|
µb.bindTabToPageStats(tab.id, tab.url); |
|
|
|
// https://github.com/gorhill/uBlock/issues/129
|
|
|
|
scriptStart(tab.id); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
chrome.tabs.query({ url: 'http://*/*' }, bindToTabs); |
|
|
|
chrome.tabs.query({ url: 'https://*/*' }, bindToTabs); |
|
|
|
}; |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
/******************************************************************************/ |