| Index: lib/typoCollector.js |
| =================================================================== |
| deleted file mode 100644 |
| --- a/lib/typoCollector.js |
| +++ /dev/null |
| @@ -1,224 +0,0 @@ |
| -/* |
| - * This file is part of the URL Fixer, |
| - * Copyright (C) 2006-2016 Eyeo GmbH |
| - * |
| - * URL Fixer 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. |
| - * |
| - * URL Fixer 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 URL Fixer. If not, see <http://www.gnu.org/licenses/>. |
| - */ |
| - |
| -Cu.import("resource://gre/modules/Services.jsm"); |
| - |
| -let {Prefs} = require("prefs"); |
| -let {WindowObserver} = require("windowObserver"); |
| - |
| -let DOMAIN_TYPED = 1; |
| -let DOMAIN_TYPO = 2; |
| -let DOMAIN_CORRECTION = 3; |
| -let DOMAIN_FALSE_POSITIVE = 4; |
| - |
| -let domains = null; |
| -let timer = null; |
| - |
| -// Initialize and make sure to react to pref changes |
| -if (Prefs.domainOptIn) |
| - startCollection(); |
| -Prefs.addListener(function(name) |
| -{ |
| - if (name != "domainOptIn") |
| - return; |
| - if (Prefs.domainOptIn) |
| - { |
| - Prefs.domainOptInAsk = true; |
| - startCollection(); |
| - } |
| - else |
| - stopCollection(); |
| -}); |
| - |
| -// Make sure to intercept TypedItCollectorInit event from web pages |
| -new WindowObserver({ |
| - applyToWindow: function(window) |
| - { |
| - if (window.document.documentElement.getAttribute("windowtype") != "navigator:browser") |
| - return; |
| - |
| - window.document.addEventListener("TypedItCollectorInit", initWebUI, false, true); |
| - }, |
| - |
| - removeFromWindow: function(window) |
| - { |
| - if (window.document.documentElement.getAttribute("windowtype") != "navigator:browser") |
| - return; |
| - |
| - window.document.removeEventListener("TypedItCollectorInit", initWebUI, false, true); |
| - } |
| -}); |
| - |
| -exports.onBrowserInitialized = onBrowserInitialized; |
| -function onBrowserInitialized(window) |
| -{ |
| - // Don't do anything on Fennec. |
| - if ("Browser" in window || "BrowserApp" in window) |
| - return; |
| - |
| - if (Prefs.counter < 5) |
| - Prefs.counter++; |
| - else if (!Prefs.domainOptInAsk && !Prefs.domainOptIn) |
| - window.openDialog("chrome://url-fixer/content/typedItOptIn.xul", "typedItOptIn", "chrome,dialog,centerscreen,titlebar"); |
| -} |
| - |
| -exports.processTypedDomain = processTypedDomain; |
| -function processTypedDomain(domain) |
| -{ |
| - if (domains && !privateBrowsingEnabled()) |
| - domains[domain] = DOMAIN_TYPED; |
| -} |
| - |
| -exports.processDomainCorrection = processDomainCorrection; |
| -function processDomainCorrection(domainFrom, domainTo) |
| -{ |
| - if (domains && !privateBrowsingEnabled()) |
| - { |
| - domains[domainFrom] = DOMAIN_TYPO; |
| - domains[domainTo] = DOMAIN_CORRECTION; |
| - } |
| -} |
| - |
| -exports.processFalsePositive = processFalsePositive; |
| -function processFalsePositive(domainFrom, domainTo) |
| -{ |
| - if (domains && !privateBrowsingEnabled()) |
| - { |
| - domains[domainFrom] = DOMAIN_FALSE_POSITIVE; |
| - domains[domainTo] = DOMAIN_TYPED; |
| - } |
| -} |
| - |
| -exports.processUserCorrection = processUserCorrection; |
| -function processUserCorrection(domainFrom, domainTo) |
| -{ |
| - if (domains && !privateBrowsingEnabled()) |
| - { |
| - domains[domainFrom] = DOMAIN_TYPO; |
| - domains[domainTo] = DOMAIN_CORRECTION; |
| - } |
| -} |
| - |
| -exports.openDisclosurePage = openDisclosurePage; |
| -function openDisclosurePage() |
| -{ |
| - let window = Services.wm.getMostRecentWindow("navigator:browser"); |
| - if (!window) |
| - return; |
| - |
| - let url = "http://urlfixer.org/data/"; |
| - if ("Browser" in window && typeof window.Browser.addTab != 'undefined') |
| - window.Browser.addTab(url, true); |
| - else if ("gBrowser" in window) |
| - window.gBrowser.loadOneTab(url, {inBackground: false}); |
| -} |
| - |
| -function startCollection() |
| -{ |
| - if (domains) |
| - return; |
| - |
| - onShutdown.add(stopCollection); |
| - |
| - domains = {}; |
| - |
| - // Send data every 60 minutes |
| - timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); |
| - timer.initWithCallback(sendAnonymousData, 1000 * 60 * 60, Ci.nsITimer.TYPE_REPEATING_SLACK); |
| -} |
| - |
| -function stopCollection() |
| -{ |
| - if (!domains) |
| - return; |
| - |
| - onShutdown.remove(stopCollection); |
| - domains = null; |
| - |
| - try |
| - { |
| - timer.cancel(); |
| - } |
| - catch (e) |
| - { |
| - Cu.reportError(e); |
| - } |
| - timer = null; |
| -} |
| - |
| -function privateBrowsingEnabled() |
| -{ |
| - if (!("service" in privateBrowsingEnabled)) |
| - privateBrowsingEnabled.service = Cc["@mozilla.org/privatebrowsing;1"].getService(Ci.nsIPrivateBrowsingService); |
| - |
| - return privateBrowsingEnabled.service.privateBrowsingEnabled; |
| -} |
| - |
| -function sendAnonymousData() |
| -{ |
| - if (!Prefs.domainOptIn || privateBrowsingEnabled()) |
| - return; |
| - |
| - let postData = JSON.stringify(domains); |
| - if (postData == JSON.stringify({})) |
| - return; |
| - |
| - let savedDomains = domains; |
| - domains = {}; |
| - |
| - let request = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest); |
| - request.open("POST", "http://urlfixer.org/submitData"); |
| - request.setRequestHeader("Content-Type", "application/json"); |
| - request.addEventListener("load", function(event) |
| - { |
| - if (event.target.status != 200) |
| - for (var i in savedDomains) |
| - domains[i] = savedDomains[i]; |
| - }, false); |
| - request.send(postData); |
| -} |
| - |
| -function initWebUI(event) |
| -{ |
| - if (Prefs.domainOptIn) |
| - return; |
| - |
| - let container = event.target; |
| - let source = container.ownerDocument.defaultView.location.hostname; |
| - if (!/(^|\.)urlfixer\.org$/.test(source)) |
| - return; |
| - |
| - let button = container.getElementsByClassName("allowButton")[0]; |
| - let message = container.getElementsByClassName("confirmationMessage")[0]; |
| - |
| - if (!button || !message) |
| - return; |
| - |
| - button.addEventListener("click", function(event) |
| - { |
| - if (!event.isTrusted) |
| - return; |
| - |
| - Prefs.domainOptInAsk = true; |
| - Prefs.domainOptIn = true; |
| - button.style.display = "none"; |
| - message.style.display = ""; |
| - }, false); |
| - |
| - message.style.display = "none"; |
| - container.style.display = ""; |
| -} |