summaryrefslogtreecommitdiff
path: root/data/extensions/spyblock@gnu.org/lib/child/elemHideEmulation.js
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/spyblock@gnu.org/lib/child/elemHideEmulation.js')
-rw-r--r--data/extensions/spyblock@gnu.org/lib/child/elemHideEmulation.js118
1 files changed, 0 insertions, 118 deletions
diff --git a/data/extensions/spyblock@gnu.org/lib/child/elemHideEmulation.js b/data/extensions/spyblock@gnu.org/lib/child/elemHideEmulation.js
deleted file mode 100644
index 7c4ee17..0000000
--- a/data/extensions/spyblock@gnu.org/lib/child/elemHideEmulation.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/>.
- */
-
-"use strict";
-
-(function()
-{
- let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
-
- let {port} = require("messaging");
- let {getFrames, isPrivate} = require("child/utils");
- let {RequestNotifier} = require("child/requestNotifier");
-
- function getFilters(window, callback)
- {
- let message = {
- frames: getFrames(window),
- payload: {
- type: "filters.get",
- what: "elemhideemulation"
- }
- };
- port.emitWithResponse("ext_message", message).then(callback);
- }
-
- function addUserCSS(window, cssCode)
- {
- let uri = Services.io.newURI("data:text/css," + encodeURIComponent(cssCode),
- null, null);
- let utils = window.QueryInterface(Ci.nsIInterfaceRequestor)
- .getInterface(Ci.nsIDOMWindowUtils);
- utils.loadSheet(uri, Ci.nsIDOMWindowUtils.USER_SHEET);
- }
-
- function initElemHideEmulation()
- {
- let scope = Object.assign({}, require("common"));
- Services.scriptloader.loadSubScript(
- "chrome://adblockplus/content/elemHideEmulation.js", scope);
-
- let onContentWindow = (subject, topic, data) =>
- {
- if (!(subject instanceof Ci.nsIDOMWindow))
- return;
-
- let onReady = event =>
- {
- subject.removeEventListener("load", onReady);
- let handler = new scope.ElemHideEmulation(
- subject, getFilters.bind(null, subject), (selectors, filters) =>
- {
- if (selectors.length == 0)
- return;
-
- addUserCSS(subject, selectors.map(
- selector => selector + "{display: none !important;}"
- ).join("\n"));
-
- if (!isPrivate(subject))
- port.emit("addHits", filters);
-
- let docDomain = null;
- try
- {
- // We are calling getFrames() here because it will consider
- // "inheritance" for about:blank and data: frames.
- docDomain = new URL(getFrames(subject)[0].location).hostname;
- }
- catch (e)
- {
- // Invalid URL?
- }
-
- for (let i = 0; i < filters.length; i++)
- {
- RequestNotifier.addNodeData(subject.document, subject.top, {
- contentType: "ELEMHIDE",
- docDomain: docDomain,
- thirdParty: false,
- location: "##" + selectors[i],
- filter: filters[i],
- filterType: "elemhideemulation"
- });
- }
- }
- );
-
- handler.apply();
- };
-
- subject.addEventListener("load", onReady);
- };
-
- Services.obs.addObserver(onContentWindow, "content-document-global-created",
- false);
- onShutdown.add(() =>
- {
- Services.obs.removeObserver(onContentWindow,
- "content-document-global-created");
- });
- }
-
- initElemHideEmulation();
-})();