diff options
author | Ruben Rodriguez <ruben@gnu.org> | 2018-09-13 20:39:48 -0400 |
---|---|---|
committer | Ruben Rodriguez <ruben@gnu.org> | 2018-09-13 21:02:13 -0400 |
commit | d26b319fd6f98517cc3421f10bf18698b953e4d2 (patch) | |
tree | bc70c4e472a2eaf514d411dba5067d530e5bbea9 /data/extensions/spyblock@gnu.org/lib/child/subscribeLinks.js | |
parent | c3b304c51a3386ea09527a479a883253ea35243a (diff) |
Updated extensions list for v60
Diffstat (limited to 'data/extensions/spyblock@gnu.org/lib/child/subscribeLinks.js')
-rw-r--r-- | data/extensions/spyblock@gnu.org/lib/child/subscribeLinks.js | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/data/extensions/spyblock@gnu.org/lib/child/subscribeLinks.js b/data/extensions/spyblock@gnu.org/lib/child/subscribeLinks.js deleted file mode 100644 index a2e729d..0000000 --- a/data/extensions/spyblock@gnu.org/lib/child/subscribeLinks.js +++ /dev/null @@ -1,118 +0,0 @@ -/* - * This file is part of Adblock Plus <https://adblockplus.org/>, - * Copyright (C) 2006-2017 eyeo GmbH - * - * Adblock Plus is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Adblock Plus is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. - */ - -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); - -let {port} = require("messaging"); - -Services.obs.addObserver(onContentWindow, "content-document-global-created", - false); -onShutdown.add(() => -{ - Services.obs.removeObserver(onContentWindow, - "content-document-global-created"); -}); - -function onContentWindow(subject, topic, data) -{ - if (subject instanceof Ci.nsIDOMWindow && subject.top == subject) - { - let eventTarget = subject.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIWebNavigation) - .QueryInterface(Ci.nsIDocShell) - .chromeEventHandler; - if (eventTarget) - eventTarget.addEventListener("click", onClick, true); - } -} - -function onClick(event) -{ - if (onShutdown.done) - return; - - // Ignore right-clicks - if (event.button == 2) - return; - - // Search the link associated with the click - let link = event.target; - while (!(link instanceof Ci.nsIDOMHTMLAnchorElement)) - { - link = link.parentNode; - - if (!link) - return; - } - - let queryString = null; - if (link.protocol == "http:" || link.protocol == "https:") - { - if (link.host == "subscribe.adblockplus.org" && link.pathname == "/") - queryString = link.search.substr(1); - } - else - { - // Firefox doesn't populate the "search" property for links with - // non-standard URL schemes so we need to extract the query string - // manually - let match = /^abp:\/*subscribe\/*\?(.*)/i.exec(link.href); - if (match) - queryString = match[1]; - } - - if (!queryString) - return; - - // This is our link - make sure the browser doesn't handle it - event.preventDefault(); - event.stopPropagation(); - - // Decode URL parameters - let title = null; - let url = null; - let mainSubscriptionTitle = null; - let mainSubscriptionURL = null; - for (let param of queryString.split("&")) - { - let parts = param.split("=", 2); - if (parts.length != 2 || !/\S/.test(parts[1])) - continue; - switch (parts[0]) - { - case "title": - title = decodeURIComponent(parts[1]); - break; - case "location": - url = decodeURIComponent(parts[1]); - break; - case "requiresTitle": - mainSubscriptionTitle = decodeURIComponent(parts[1]); - break; - case "requiresLocation": - mainSubscriptionURL = decodeURIComponent(parts[1]); - break; - } - } - - port.emit("subscribeLinkClick", { - title: title, - url: url, - mainSubscriptionTitle: mainSubscriptionTitle, - mainSubscriptionURL: mainSubscriptionURL - }); -} |