|
|
|
@ -134,28 +134,44 @@ vAPI.tabs.registerListeners = function() {
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// The chrome.webRequest.onBeforeRequest() won't be called for everything
|
|
|
|
|
// else than `http`/`https`. Thus, in such case, we will bind the tab as
|
|
|
|
|
// early as possible in order to increase the likelihood of a context
|
|
|
|
|
// properly setup if network requests are fired from within the tab.
|
|
|
|
|
// Example: Chromium + case #6 at
|
|
|
|
|
// http://raymondhill.net/ublock/popup.html
|
|
|
|
|
var reGoodForWebRequestAPI = /^https?:\/\//;
|
|
|
|
|
|
|
|
|
|
var onCreatedNavigationTarget = function(details) {
|
|
|
|
|
//console.debug('onCreatedNavigationTarget: popup candidate', details.tabId);
|
|
|
|
|
//console.debug('onCreatedNavigationTarget: popup candidate tab id %d = "%s"', details.tabId, details.url);
|
|
|
|
|
if ( reGoodForWebRequestAPI.test(details.url) === false ) {
|
|
|
|
|
details.frameId = 0;
|
|
|
|
|
onNavigationClient(details);
|
|
|
|
|
}
|
|
|
|
|
popupCandidateCreate(details);
|
|
|
|
|
popupCandidateTest(details);
|
|
|
|
|
if ( popupCandidateTest(details) === true ) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var onBeforeNavigate = function(details) {
|
|
|
|
|
if ( details.frameId === 0 ) {
|
|
|
|
|
//console.debug('onBeforeNavigate: popup candidate', details.tabId);
|
|
|
|
|
popupCandidateTest(details);
|
|
|
|
|
if ( details.frameId !== 0 ) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//console.debug('onBeforeNavigate: popup candidate tab id %d = "%s"', details.tabId, details.url);
|
|
|
|
|
popupCandidateTest(details);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var onCommitted = function(details) {
|
|
|
|
|
if ( details.frameId === 0 ) {
|
|
|
|
|
//console.debug('onCommitted: popup candidate', details.tabId);
|
|
|
|
|
if ( popupCandidateTest(details) === true ) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
popupCandidateDestroy(details);
|
|
|
|
|
if ( details.frameId !== 0 ) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
onNavigationClient(details);
|
|
|
|
|
//console.debug('onCommitted: popup candidate tab id %d = "%s"', details.tabId, details.url);
|
|
|
|
|
if ( popupCandidateTest(details) === true ) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
popupCandidateDestroy(details);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
chrome.webNavigation.onCreatedNavigationTarget.addListener(onCreatedNavigationTarget);
|
|
|
|
|