| Index: popup.js | 
| =================================================================== | 
| deleted file mode 100644 | 
| --- a/popup.js | 
| +++ /dev/null | 
| @@ -1,341 +0,0 @@ | 
| -/* | 
| - * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| - * Copyright (C) 2006-present 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"; | 
| - | 
| -let tab = null; | 
| - | 
| -function getPref(key, callback) | 
| -{ | 
| - browser.runtime.sendMessage({type: "prefs.get", key}, callback); | 
| -} | 
| - | 
| -function setPref(key, value, callback) | 
| -{ | 
| - browser.runtime.sendMessage({type: "prefs.set", key, value}, callback); | 
| -} | 
| - | 
| -function togglePref(key, callback) | 
| -{ | 
| - browser.runtime.sendMessage({type: "prefs.toggle", key}, callback); | 
| -} | 
| - | 
| -function isPageWhitelisted(callback) | 
| -{ | 
| - browser.runtime.sendMessage({type: "filters.isWhitelisted", tab}, callback); | 
| -} | 
| - | 
| -function whenPageReady() | 
| -{ | 
| - return new Promise(resolve => | 
| - { | 
| - function onMessage(message, sender) | 
| - { | 
| - if (message.type == "composer.ready" && sender.page && | 
| - sender.page.id == tab.id) | 
| - { | 
| - browser.runtime.onMessage.removeListener(onMessage); | 
| - resolve(); | 
| - } | 
| - } | 
| - | 
| - browser.runtime.onMessage.addListener(onMessage); | 
| - | 
| - browser.runtime.sendMessage({ | 
| - type: "composer.isPageReady", | 
| - pageId: tab.id | 
| - }, | 
| - ready => | 
| - { | 
| - if (ready) | 
| - { | 
| - browser.runtime.onMessage.removeListener(onMessage); | 
| - resolve(); | 
| - } | 
| - }); | 
| - }); | 
| -} | 
| - | 
| -function toggleEnabled() | 
| -{ | 
| - let disabled = document.body.classList.toggle("disabled"); | 
| - browser.runtime.sendMessage({ | 
| - type: disabled ? "filters.whitelist" : "filters.unwhitelist", | 
| - tab | 
| - }); | 
| -} | 
| - | 
| -function activateClickHide() | 
| -{ | 
| - document.body.classList.add("clickhide-active"); | 
| - browser.tabs.sendMessage(tab.id, { | 
| - type: "composer.content.startPickingElement" | 
| - }); | 
| - | 
| - // Close the popup after a few seconds, so user doesn't have to | 
| - activateClickHide.timeout = window.setTimeout(window.close, 5000); | 
| -} | 
| - | 
| -function cancelClickHide() | 
| -{ | 
| - if (activateClickHide.timeout) | 
| - { | 
| - window.clearTimeout(activateClickHide.timeout); | 
| - activateClickHide.timeout = null; | 
| - } | 
| - document.body.classList.remove("clickhide-active"); | 
| - browser.tabs.sendMessage(tab.id, {type: "composer.content.finished"}); | 
| -} | 
| - | 
| -function reportIssue() | 
| -{ | 
| - browser.tabs.create({ | 
| - url: browser.runtime.getURL("/issue-reporter.html?" + tab.id) | 
| - }).then(() => | 
| - { | 
| - window.close(); | 
| - }); | 
| -} | 
| - | 
| -function toggleCollapse(event) | 
| -{ | 
| - let collapser = event.currentTarget; | 
| - let collapsible = document.getElementById(collapser.dataset.collapsible); | 
| - collapsible.classList.toggle("collapsed"); | 
| - togglePref(collapser.dataset.option); | 
| -} | 
| - | 
| -function getDocLinks(notification) | 
| -{ | 
| - if (!notification.links) | 
| - return Promise.resolve([]); | 
| - | 
| - return Promise.all( | 
| - notification.links.map(link => | 
| - { | 
| - return new Promise((resolve, reject) => | 
| - { | 
| - browser.runtime.sendMessage({ | 
| - type: "app.get", | 
| - what: "doclink", | 
| - link | 
| - }, resolve); | 
| - }); | 
| - }) | 
| - ); | 
| -} | 
| - | 
| -function insertMessage(element, text, links) | 
| -{ | 
| - let match = /^(.*?)<(a|strong)>(.*?)<\/\2>(.*)$/.exec(text); | 
| - if (!match) | 
| - { | 
| - element.appendChild(document.createTextNode(text)); | 
| - return; | 
| - } | 
| - | 
| - let before = match[1]; | 
| - let tagName = match[2]; | 
| - let value = match[3]; | 
| - let after = match[4]; | 
| - | 
| - insertMessage(element, before, links); | 
| - | 
| - let newElement = document.createElement(tagName); | 
| - if (tagName == "a" && links && links.length) | 
| - newElement.href = links.shift(); | 
| - insertMessage(newElement, value, links); | 
| - element.appendChild(newElement); | 
| - | 
| - insertMessage(element, after, links); | 
| -} | 
| - | 
| -function updateStats() | 
| -{ | 
| - let statsPage = document.getElementById("stats-page"); | 
| - browser.runtime.sendMessage({ | 
| - type: "stats.getBlockedPerPage", | 
| - tab | 
| - }, | 
| - blockedPage => | 
| - { | 
| - ext.i18n.setElementText(statsPage, "stats_label_page", | 
| - [blockedPage.toLocaleString()]); | 
| - }); | 
| - | 
| - let statsTotal = document.getElementById("stats-total"); | 
| - getPref("blocked_total", blockedTotal => | 
| - { | 
| - ext.i18n.setElementText(statsTotal, "stats_label_total", | 
| - [blockedTotal.toLocaleString()]); | 
| - }); | 
| -} | 
| - | 
| -function toggleIconNumber() | 
| -{ | 
| - togglePref("show_statsinicon", showStatsInIcon => | 
| - { | 
| - document.getElementById("show-iconnumber").setAttribute( | 
| - "aria-checked", showStatsInIcon | 
| - ); | 
| - }); | 
| -} | 
| - | 
| -document.addEventListener("DOMContentLoaded", () => | 
| -{ | 
| - browser.tabs.query({active: true, lastFocusedWindow: true}, tabs => | 
| - { | 
| - if (tabs.length > 0) | 
| - tab = {id: tabs[0].id, url: tabs[0].url}; | 
| - | 
| - let urlProtocol = tab && tab.url && new URL(tab.url).protocol; | 
| - | 
| - // Mark page as 'local' to hide non-relevant elements | 
| - if (urlProtocol != "http:" && urlProtocol != "https:") | 
| - { | 
| - document.body.classList.add("local"); | 
| - document.body.classList.remove("nohtml"); | 
| - } | 
| - else | 
| - { | 
| - whenPageReady().then(() => | 
| - { | 
| - document.body.classList.remove("nohtml"); | 
| - }); | 
| - } | 
| - | 
| - // Ask content script whether clickhide is active. If so, show | 
| - // cancel button. If that isn't the case, ask background.html | 
| - // whether it has cached filters. If so, ask the user whether she | 
| - // wants those filters. Otherwise, we are in default state. | 
| - if (tab) | 
| - { | 
| - isPageWhitelisted(whitelisted => | 
| - { | 
| - if (whitelisted) | 
| - document.body.classList.add("disabled"); | 
| - }); | 
| - | 
| - browser.tabs.sendMessage(tab.id, { | 
| - type: "composer.content.getState" | 
| - }, | 
| - response => | 
| - { | 
| - if (response && response.active) | 
| - document.body.classList.add("clickhide-active"); | 
| - }); | 
| - } | 
| - | 
| - updateStats(); | 
| - document.getElementById("stats-container").removeAttribute("hidden"); | 
| - }); | 
| - | 
| - document.getElementById("enabled").addEventListener( | 
| - "click", toggleEnabled | 
| - ); | 
| - document.getElementById("clickhide").addEventListener( | 
| - "click", activateClickHide | 
| - ); | 
| - document.getElementById("clickhide-cancel").addEventListener( | 
| - "click", cancelClickHide | 
| - ); | 
| - document.getElementById("issueReporter").addEventListener( | 
| - "click", reportIssue | 
| - ); | 
| - document.getElementById("options").addEventListener("click", () => | 
| - { | 
| - browser.runtime.sendMessage({type: "app.open", what: "options"}); | 
| - window.close(); | 
| - }); | 
| - | 
| - // Set up collapsing of menu items | 
| - for (let collapser of document.getElementsByClassName("collapse")) | 
| - { | 
| - collapser.addEventListener("click", toggleCollapse); | 
| - getPref(collapser.dataset.option, value => | 
| - { | 
| - if (value) | 
| - { | 
| - document.getElementById( | 
| - collapser.dataset.collapsible | 
| - ).classList.remove("collapsed"); | 
| - } | 
| - }); | 
| - } | 
| - | 
| - let showIconNumber = document.getElementById("show-iconnumber"); | 
| - getPref("show_statsinicon", showStatsInIcon => | 
| - { | 
| - showIconNumber.setAttribute("aria-checked", showStatsInIcon); | 
| - }); | 
| - showIconNumber.addEventListener("click", toggleIconNumber); | 
| - document.querySelector("label[for='show-iconnumber']").addEventListener( | 
| - "click", toggleIconNumber | 
| - ); | 
| -}); | 
| - | 
| -window.addEventListener("load", () => | 
| -{ | 
| - browser.runtime.sendMessage({ | 
| - type: "notifications.get", | 
| - displayMethod: "popup" | 
| - }, notification => | 
| - { | 
| - if (!notification) | 
| - return; | 
| - | 
| - let titleElement = document.getElementById("notification-title"); | 
| - let messageElement = document.getElementById("notification-message"); | 
| - | 
| - titleElement.textContent = notification.texts.title; | 
| - | 
| - getDocLinks(notification).then(docLinks => | 
| - { | 
| - insertMessage(messageElement, notification.texts.message, docLinks); | 
| - | 
| - messageElement.addEventListener("click", event => | 
| - { | 
| - let link = event.target; | 
| - while (link && link != messageElement && link.localName != "a") | 
| - link = link.parentNode; | 
| - if (!link) | 
| - return; | 
| - event.preventDefault(); | 
| - event.stopPropagation(); | 
| - browser.tabs.create({url: link.href}); | 
| - }); | 
| - }); | 
| - | 
| - let notificationElement = document.getElementById("notification"); | 
| - notificationElement.className = notification.type; | 
| - notificationElement.hidden = false; | 
| - notificationElement.addEventListener("click", event => | 
| - { | 
| - if (event.target.id == "notification-close") | 
| - notificationElement.classList.add("closing"); | 
| - else if (event.target.id == "notification-optout" || | 
| - event.target.id == "notification-hide") | 
| - { | 
| - if (event.target.id == "notification-optout") | 
| - setPref("notifications_ignoredcategories", true); | 
| - | 
| - notificationElement.hidden = true; | 
| - browser.runtime.sendMessage({type: "notifications.clicked"}); | 
| - } | 
| - }, true); | 
| - }); | 
| -}); |