diff --git a/platform/firefox/vapi-background.js b/platform/firefox/vapi-background.js index 2df36486a..c3a1f7456 100644 --- a/platform/firefox/vapi-background.js +++ b/platform/firefox/vapi-background.js @@ -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 ) { diff --git a/platform/firefox/vapi-common.js b/platform/firefox/vapi-common.js index 28b25d6d9..c84d2813e 100644 --- a/platform/firefox/vapi-common.js +++ b/platform/firefox/vapi-common.js @@ -120,21 +120,35 @@ vAPI.closePopup = function() { // This storage is optional, but it is nice to have, for a more polished user // experience. -Object.defineProperty(vAPI, 'localStorage', { - get: function() { - if ( this._localStorage ) { - return this._localStorage; +vAPI.localStorage = { + PB: Services.prefs.getBranch('extensions.' + location.host + '.'), + str: Components.classes['@mozilla.org/supports-string;1'] + .createInstance(Components.interfaces.nsISupportsString), + getItem: function(key) { + try { + return this.PB.getComplexValue( + key, + Components.interfaces.nsISupportsString + ).data; + } catch (ex) { + return null; } - - this._localStorage = Services.domStorageManager.getLocalStorageForPrincipal( - Services.scriptSecurityManager.getCodebasePrincipal( - Services.io.newURI('http://ublock.raymondhill.net/', null, null) - ), - '' + }, + setItem: function(key, value) { + this.str.data = value; + this.PB.setComplexValue( + key, + Components.interfaces.nsISupportsString, + this.str ); - return this._localStorage; + }, + removeItem: function(key) { + this.PB.clearUserPref(key); + }, + clear: function() { + this.PB.deleteBranch(''); } -}); +}; /******************************************************************************/ diff --git a/src/js/subscriber.js b/src/js/subscriber.js index b98b4f46b..c1c6e61c7 100644 --- a/src/js/subscriber.js +++ b/src/js/subscriber.js @@ -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; }