// -*- Mode: js2; tab-width: 2; indent-tabs-mode: nil; js2-basic-offset: 2; js2-skip-preprocessor-directives: t; -*- /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var SanitizeUI = { _sanitizer: null, _privDataElement: null, get _privData() { if (this._privDataElement === null) { this._privDataElement = document.getElementById("prefs-privdata"); } return this._privDataElement; }, init: function () { this._sanitizer = new Sanitizer(); this._privData.addEventListener("CheckboxStateChange", this, true); }, _clearNotificationTimeout: null, onSanitize: function onSanitize() { let button = document.getElementById("prefs-clear-data"); let clearNotificationDeck = document.getElementById("clear-notification"); let clearNotificationEmpty = document.getElementById("clear-notification-empty"); let clearNotificationClearing = document.getElementById("clear-notification-clearing"); let clearNotificationDone = document.getElementById("clear-notification-done"); let allCheckboxes = SanitizeUI._privData.querySelectorAll("checkbox"); let allSelected = SanitizeUI._privData.querySelectorAll( "#prefs-privdata-history[checked], " + "#prefs-privdata-other[checked] + #prefs-privdata-subitems .privdata-subitem-item[checked]"); // disable button and checkboxes temporarily to indicate something is happening button.disabled = true; for (let checkbox of allCheckboxes) { checkbox.disabled = true; } clearNotificationDeck.selectedPanel = clearNotificationClearing; document.getElementById("clearprivacythrobber").enabled = true; // Run asynchronously to let UI update setTimeout(function() { for (let item of allSelected) { let itemName = item.getAttribute("itemName"); try { SanitizeUI._sanitizer.clearItem(itemName); } catch(e) { Components.utils.reportError("Error sanitizing " + itemName + ": " + e); } } button.disabled = false; for (let checkbox of allCheckboxes) { checkbox.disabled = false; } clearNotificationDeck.selectedPanel = clearNotificationDone; document.getElementById("clearprivacythrobber").enabled = false; // Clear notifications after 4 seconds clearTimeout(SanitizeUI._clearNotificationTimeout); SanitizeUI._clearNotificationTimeout = setTimeout(function() { clearNotificationDeck.selectedPanel = clearNotificationEmpty; }, 4000); }, 0); }, /* Disable the clear button when nothing is selected */ _onCheckboxChange: function _onCheckboxChange() { let anySelected = SanitizeUI._privData.querySelector( "#prefs-privdata-history[checked], " + "#prefs-privdata-other[checked] + #prefs-privdata-subitems .privdata-subitem-item[checked]"); let clearButton = document.getElementById("prefs-clear-data"); clearButton.disabled = !anySelected; }, handleEvent: function (aEvent) { switch (aEvent.type) { case "CheckboxStateChange": this._onCheckboxChange(); break; } }, };