const CC = Components.classes; const CI = Components.interfaces; const CU = Components.utils; var HTTPSEverywhere = CC["@eff.org/https-everywhere;1"] .getService(CI.nsISupports).wrappedJSObject; CU.import("resource://gre/modules/Prompt.jsm"); var menuToggleId; var menuParentId; var menuRulesId; var menuDefaultsId; var aWindow = getWindow(); /* * Setup/Teardown for the UI */ function loadIntoWindow() { if (!aWindow) { return; } var enabled = HTTPSEverywhere.prefs.getBoolPref("globalEnabled"); addMenuItems(enabled); // When navigating away from a page, we want to clear the applicable list for // that page. There are a few different APIs to do this, but this is the one // that work on mobile. We trigger on pagehide rather than pageshow because we // want to capture subresources during load. var BrowserApp = aWindow.BrowserApp; BrowserApp.deck.addEventListener("pagehide", function(evt) { var browser = BrowserApp.getBrowserForDocument(evt.target); HTTPSEverywhere.resetApplicableList(browser); }, true); } function unloadFromWindow() { if (!aWindow) { return; } aWindow.NativeWindow.menu.remove(menuParentId); } /* * Add a menu item to toggle HTTPS Everywhere */ function addToggleItemToMenu(enabled) { if (menuToggleId) { aWindow.NativeWindow.menu.remove(menuToggleId); } var menuLabel = enabled ? "Disable" : "Enable"; menuToggleId = aWindow.NativeWindow.menu.add({ name: menuLabel, callback: function() { popupToggleMenu(aWindow, enabled); }, parent: menuParentId }); } function addRulesItemToMenu(enabled){ if (menuRulesId) { aWindow.NativeWindow.menu.remove(menuRulesId); } if (enabled) { menuRulesId = aWindow.NativeWindow.menu.add({ name: "Enable/disable rules", callback: function() { popupInfo.fill(); rulesPrompt.setMultiChoiceItems(popupInfo.ruleItems); rulesPrompt.show(function(data) { var db = data.button; if (db === -1) { return null; } // user didn't click the accept button for (var i=0; i