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 = ""; |
-} |