From 6e7918b6ccb69876d339a320091fdee811445395 Mon Sep 17 00:00:00 2001 From: Ruben Rodriguez Date: Mon, 20 Oct 2014 02:24:51 +0200 Subject: Generalize data directory --- .../spyblock@gnu.org/chrome/content/ui/firstRun.js | 253 +++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 data/extensions/spyblock@gnu.org/chrome/content/ui/firstRun.js (limited to 'data/extensions/spyblock@gnu.org/chrome/content/ui/firstRun.js') diff --git a/data/extensions/spyblock@gnu.org/chrome/content/ui/firstRun.js b/data/extensions/spyblock@gnu.org/chrome/content/ui/firstRun.js new file mode 100644 index 0000000..be2caa6 --- /dev/null +++ b/data/extensions/spyblock@gnu.org/chrome/content/ui/firstRun.js @@ -0,0 +1,253 @@ +/* + * This file is part of Adblock Plus , + * Copyright (C) 2006-2014 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 . + */ + +"use strict"; + +(function() +{ + // Load subscriptions for features + var featureSubscriptions = [ + { + feature: "malware", + homepage: "http://malwaredomains.com/", + title: "Malware Domains", + url: "https://easylist-downloads.adblockplus.org/malwaredomains_full.txt" + }, + { + feature: "social", + homepage: "https://www.fanboy.co.nz/", + title: "Fanboy's Social Blocking List", + url: "https://easylist-downloads.adblockplus.org/fanboy-social.txt" + }, + { + feature: "tracking", + homepage: "https://easylist.adblockplus.org/", + title: "EasyPrivacy", + url: "https://easylist-downloads.adblockplus.org/easyprivacy.txt" + } + ]; + + function onDOMLoaded() + { + var locale = require("utils").Utils.appLocale; + document.documentElement.setAttribute("lang", locale); + + // Set up URLs + var donateLink = E("donate"); + donateLink.href = Utils.getDocLink("donate"); + + var contributors = E("contributors"); + contributors.href = Utils.getDocLink("contributors"); + + setLinks("acceptableAdsExplanation", Utils.getDocLink("acceptable_ads_criteria"), openFilters); + setLinks("share-headline", Utils.getDocLink("contribute")); + + if (typeof backgroundPage != "undefined") + { + // Show warning if data corruption was detected + if (backgroundPage.seenDataCorruption) + { + E("dataCorruptionWarning").removeAttribute("hidden"); + setLinks("dataCorruptionWarning", Utils.getDocLink("knownIssuesChrome_filterstorage")); + } + + // Show warning if filterlists settings were reinitialized + if (backgroundPage.filterlistsReinitialized) + { + E("filterlistsReinitializedWarning").removeAttribute("hidden"); + setLinks("filterlistsReinitializedWarning", openFilters); + } + } + + // Show warning if Safari version isn't supported + var info = require("info"); + if (info.platform == "safari" && ( + Services.vc.compare(info.platformVersion, "6.0") < 0 || // beforeload breaks websites in Safari 5 + Services.vc.compare(info.platformVersion, "6.1") == 0 || // extensions are broken in 6.1 and 7.0 + Services.vc.compare(info.platformVersion, "7.0") == 0 + )) + E("legacySafariWarning").removeAttribute("hidden"); + + // Set up feature buttons linked to subscriptions + featureSubscriptions.forEach(setToggleSubscriptionButton); + var filterListener = function(action) + { + if (/^subscription\.(added|removed|disabled)$/.test(action)) + { + for (var i = 0; i < featureSubscriptions.length; i++) + { + var featureSubscription = featureSubscriptions[i]; + updateToggleButton(featureSubscription.feature, isSubscriptionEnabled(featureSubscription)); + } + } + } + FilterNotifier.addListener(filterListener); + window.addEventListener("unload", function(event) + { + FilterNotifier.removeListener(filterListener); + }, false); + + initSocialLinks(); + } + + function isSubscriptionEnabled(featureSubscription) + { + return featureSubscription.url in FilterStorage.knownSubscriptions + && !Subscription.fromURL(featureSubscription.url).disabled; + } + + function setToggleSubscriptionButton(featureSubscription) + { + var feature = featureSubscription.feature; + + var element = E("toggle-" + feature); + updateToggleButton(feature, isSubscriptionEnabled(featureSubscription)); + element.addEventListener("click", function(event) + { + var subscription = Subscription.fromURL(featureSubscription.url); + if (isSubscriptionEnabled(featureSubscription)) + FilterStorage.removeSubscription(subscription); + else + { + subscription.disabled = false; + subscription.title = featureSubscription.title; + subscription.homepage = featureSubscription.homepage; + FilterStorage.addSubscription(subscription); + if (!subscription.lastDownload) + Synchronizer.execute(subscription); + } + }, false); + } + + function openSharePopup(url) + { + var iframe = E("share-popup"); + var glassPane = E("glass-pane"); + var popupMessageReceived = false; + + var popupMessageListener = function(event) + { + var originFilter = Filter.fromText("||adblockplus.org^"); + if (!originFilter.matches(event.origin, "OTHER", null, null)) + return; + + var width = event.data.width; + var height = event.data.height; + iframe.width = width; + iframe.height = height; + iframe.style.marginTop = -height/2 + "px"; + iframe.style.marginLeft = -width/2 + "px"; + popupMessageReceived = true; + window.removeEventListener("message", popupMessageListener); + }; + // Firefox requires last parameter to be true to be triggered by unprivileged pages + window.addEventListener("message", popupMessageListener, false, true); + + var popupLoadListener = function() + { + if (popupMessageReceived) + { + iframe.className = "visible"; + + var popupCloseListener = function() + { + iframe.className = glassPane.className = ""; + document.removeEventListener("click", popupCloseListener); + }; + document.addEventListener("click", popupCloseListener, false); + } + else + { + glassPane.className = ""; + window.removeEventListener("message", popupMessageListener); + } + + iframe.removeEventListener("load", popupLoadListener); + }; + iframe.addEventListener("load", popupLoadListener, false); + + iframe.src = url; + glassPane.className = "visible"; + } + + function initSocialLinks() + { + var networks = ["twitter", "facebook", "gplus"]; + networks.forEach(function(network) + { + var link = E("share-" + network); + link.addEventListener("click", onSocialLinkClick, false); + }); + } + + function onSocialLinkClick(event) + { + // Don't open the share page if the sharing script would be blocked + var filter = defaultMatcher.matchesAny(event.target.getAttribute("data-script"), "SCRIPT", "adblockplus.org", true); + if (!(filter instanceof BlockingFilter)) + { + event.preventDefault(); + openSharePopup(Utils.getDocLink(event.target.id)); + } + } + + function setLinks(id) + { + var element = E(id); + if (!element) + { + return; + } + + var links = element.getElementsByTagName("a"); + + for (var i = 0; i < links.length; i++) + { + if (typeof arguments[i + 1] == "string") + { + links[i].href = arguments[i + 1]; + links[i].setAttribute("target", "_blank"); + } + else if (typeof arguments[i + 1] == "function") + { + links[i].href = "javascript:void(0);"; + links[i].addEventListener("click", arguments[i + 1], false); + } + } + } + + function openFilters() + { + if (typeof UI != "undefined") + UI.openFiltersDialog(); + else + { + backgroundPage.openOptions(); + } + } + + function updateToggleButton(feature, isEnabled) + { + var button = E("toggle-" + feature); + if (isEnabled) + button.classList.remove("off"); + else + button.classList.add("off"); + } + + document.addEventListener("DOMContentLoaded", onDOMLoaded, false); +})(); -- cgit v1.2.3