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 ( vAPI.fennec ) {
if ( target.browser ) { if ( target.browser ) {
// target is a tab // target is a tab
return target.browser.loadContext.DOMWindowID; target = target.browser;
} }
return target.loadContext.DOMWindowID; return target.loadContext.DOMWindowID;
return -1;
} }
if ( target.linkedPanel ) { if ( target.linkedPanel ) {

View File

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

View File

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