1
0
mirror of https://github.com/gorhill/uBlock.git synced 2024-07-08 12:57:57 +02:00

abp:subscribe fixes

Test a[href^="abp:"], since the protocol probably not used for anything
else, also "a", because ABP checks only anchors, and these links are made
only for ABP.

Also, the event target is not always the link, so at least some parents
should be tested as well.
This commit is contained in:
Deathamns 2015-03-16 10:37:55 +01:00
parent 5ae7687e56
commit ebf840c35d
3 changed files with 15 additions and 14 deletions

View File

@ -455,11 +455,9 @@ vAPI.tabs.getTabId = function(target) {
if ( vAPI.fennec ) {
if ( target.browser ) {
// target is a tab
return target.browser.loadContext.DOMWindowID;
target = target.browser;
}
return target.loadContext.DOMWindowID;
return -1;
}
if ( target.linkedPanel ) {

View File

@ -127,7 +127,8 @@ vAPI.localStorage = {
getItem: function(key) {
try {
return this.PB.getComplexValue(
key, Components.interfaces.nsISupportsString
key,
Components.interfaces.nsISupportsString
).data;
} catch (ex) {
return null;

View File

@ -37,7 +37,7 @@
// https://github.com/gorhill/uBlock/issues/464
if ( document instanceof HTMLDocument === false ) {
//console.debug('contentscript-start.js > not a HTLMDocument');
return false;
return;
}
// Because in case
@ -52,7 +52,7 @@ if ( !vAPI ) {
// The links look like this:
// abp:subscribe?location=https://easylist-downloads.adblockplus.org/easyprivacy.txt[...]
if ( document.querySelector('[href^="abp:subscribe?"]') === null ) {
if ( document.querySelector('a[href^="abp:"]') === null ) {
return;
}
@ -66,14 +66,16 @@ var onAbpLinkClicked = function(ev) {
if ( ev.button !== 0 ) {
return;
}
var receiver = ev.target;
if ( receiver === null ) {
return;
}
if ( receiver.tagName.toLowerCase() !== 'a' ) {
return;
}
var href = receiver.getAttribute('href') || '';
var target = ev.target;
var limit = 3;
var href = '';
do {
if ( target instanceof HTMLAnchorElement ) {
href = target.href;
break;
}
target = target.parentNode;
} while ( target && --limit );
if ( href === '' ) {
return;
}