[Pkg-mozext-commits] [requestpolicy] 26/257: [ref] classicmenu: use `addEventListener`

David Prévot taffit at moszumanska.debian.org
Thu Jan 28 03:19:53 UTC 2016


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository requestpolicy.

commit fe32ec5c9c541042e9589be605f1abed29d1e1b4
Author: Martin Kimmerle <dev at 256k.de>
Date:   Sun Aug 9 13:08:22 2015 +0200

    [ref] classicmenu: use `addEventListener`
---
 src/content/ui/classicmenu.js | 78 +++++++++++++++++++++++++++++--------------
 src/content/ui/menu.js        |  5 ---
 src/content/ui/overlay.js     |  6 ++--
 3 files changed, 55 insertions(+), 34 deletions(-)

diff --git a/src/content/ui/classicmenu.js b/src/content/ui/classicmenu.js
index a03ca79..3dfb9a5 100644
--- a/src/content/ui/classicmenu.js
+++ b/src/content/ui/classicmenu.js
@@ -39,16 +39,36 @@ rpcontinued.classicmenu = (function() {
   }());
   let {rpPrefBranch} = ScriptLoader.importModule("lib/prefs");
   let {StringUtils} = ScriptLoader.importModule("lib/utils/strings");
+  let {DOMUtils} = ScriptLoader.importModule("lib/utils/dom");
 
 
   /**
   * Reloads the current document if the user's preferences indicate it should
   * be reloaded.
   */
-  self._conditionallyReloadDocument = function() {
+  function conditionallyReloadDocument() {
     if (rpPrefBranch.getBoolPref("autoReload")) {
       content.document.location.reload(false);
     }
+  }
+
+
+  /**
+   * Removes all menu items and removes all event listeners.
+   */
+  self.emptyMenu = function (menu) {
+    var menuitems = menu.getElementsByTagName("menuitem");
+    for (let item of menuitems) {
+      if (!item.hasOwnProperty("rpListener")) {
+        Logger.warning(Logger.TYPE_ERROR, "There's a menuitem without " +
+                       "listener!");
+        continue;
+      }
+
+      item.removeEventListener("command", item.rpListener, false);
+      delete item.rpListener;
+    }
+    DOMUtils.removeChildren(menu);
   };
 
 
@@ -58,12 +78,15 @@ rpcontinued.classicmenu = (function() {
     return separator;
   };
 
-  self.addMenuItem = function(menu, label, oncommand) {
+  self.addMenuItem = function(menu, label, aCallback) {
     var menuItem = document.createElement("menuitem");
     menuItem.setAttribute("label", label);
-    oncommand = oncommand +
-        " rpcontinued.classicmenu._conditionallyReloadDocument();";
-    menuItem.setAttribute("oncommand", oncommand);
+    var listener = function () {
+      aCallback();
+      conditionallyReloadDocument();
+    };
+    menuItem.addEventListener("command", listener, false);
+    menuItem.rpListener = listener;
     // menuItem.setAttribute("tooltiptext", node.getAttribute("tooltiptext"));
     menu.insertBefore(menuItem, menu.firstChild);
     return menuItem;
@@ -72,18 +95,20 @@ rpcontinued.classicmenu = (function() {
 
   self.addMenuItemTemporarilyAllowOrigin = function(menu, originHost) {
     var label = StringUtils.$str("allowOriginTemporarily", [originHost]);
-    var command = "rpcontinued.overlay.temporarilyAllowOrigin('"
-        + rpcontinued.menu._sanitizeJsFunctionArg(originHost) + "');";
-    var item = self.addMenuItem(menu, label, command);
+    var callback = function () {
+      rpcontinued.overlay.temporarilyAllowOrigin(originHost);
+    };
+    var item = self.addMenuItem(menu, label, callback);
     item.setAttribute("class", "rpcontinuedTemporary");
     return item;
   };
 
   self.addMenuItemAllowOrigin = function(menu, originHost) {
     var label = StringUtils.$str("allowOrigin", [originHost]);
-    var command = "rpcontinued.overlay.allowOrigin('"
-        + rpcontinued.menu._sanitizeJsFunctionArg(originHost) + "');";
-    return self.addMenuItem(menu, label, command);
+    var callback = function () {
+      rpcontinued.overlay.allowOrigin(originHost);
+    };
+    return self.addMenuItem(menu, label, callback);
   };
 
 
@@ -91,10 +116,11 @@ rpcontinued.classicmenu = (function() {
                                                      destHost) {
     var label = StringUtils.$str("allowOriginToDestinationTemporarily",
                                  [originHost, destHost]);
-    var command = "rpcontinued.overlay.temporarilyAllowOriginToDestination('"
-        + rpcontinued.menu._sanitizeJsFunctionArg(originHost) + "', '"
-        + rpcontinued.menu._sanitizeJsFunctionArg(destHost) + "');";
-    var item = self.addMenuItem(menu, label, command);
+    var callback = function () {
+      rpcontinued.overlay.temporarilyAllowOriginToDestination(originHost,
+                                                              destHost);
+    };
+    var item = self.addMenuItem(menu, label, callback);
     item.setAttribute("class", "rpcontinuedTemporary");
     return item;
   };
@@ -102,10 +128,10 @@ rpcontinued.classicmenu = (function() {
   self.addMenuItemAllowOriginToDest = function(menu, originHost, destHost) {
     var label = StringUtils.$str("allowOriginToDestination",
                                  [originHost, destHost]);
-    var command = "rpcontinued.overlay.allowOriginToDestination('"
-        + rpcontinued.menu._sanitizeJsFunctionArg(originHost) + "', '"
-        + rpcontinued.menu._sanitizeJsFunctionArg(destHost) + "');";
-    var item = self.addMenuItem(menu, label, command);
+    var callback = function () {
+      rpcontinued.overlay.allowOriginToDestination(originHost, destHost);
+    };
+    var item = self.addMenuItem(menu, label, callback);
     item.setAttribute("class", "rpcontinuedAllowOriginToDest");
     return item;
   };
@@ -113,18 +139,20 @@ rpcontinued.classicmenu = (function() {
 
   self.addMenuItemTemporarilyAllowDest = function(menu, destHost) {
     var label = StringUtils.$str("allowDestinationTemporarily", [destHost]);
-    var command = "rpcontinued.overlay.temporarilyAllowDestination('"
-        + rpcontinued.menu._sanitizeJsFunctionArg(destHost) + "');";
-    var item = self.addMenuItem(menu, label, command);
+    var callback = function () {
+      rpcontinued.overlay.temporarilyAllowDestination(destHost);
+    };
+    var item = self.addMenuItem(menu, label, callback);
     item.setAttribute("class", "rpcontinuedTemporary");
     return item;
   };
 
   self.addMenuItemAllowDest = function(menu, destHost) {
     var label = StringUtils.$str("allowDestination", [destHost]);
-    var command = "rpcontinued.overlay.allowDestination('"
-        + rpcontinued.menu._sanitizeJsFunctionArg(destHost) + "');";
-    return self.addMenuItem(menu, label, command);
+    var callback = function () {
+      rpcontinued.overlay.allowDestination(destHost);
+    };
+    return self.addMenuItem(menu, label, callback);
   };
 
   return self;
diff --git a/src/content/ui/menu.js b/src/content/ui/menu.js
index bb58cd6..c53eb99 100644
--- a/src/content/ui/menu.js
+++ b/src/content/ui/menu.js
@@ -824,11 +824,6 @@ rpcontinued.menu = (function() {
     return guiOrigins;
   };
 
-  self._sanitizeJsFunctionArg = function(str) {
-    // strip single quotes and backslashes
-    return str.replace(/['\\]/g, "");
-  };
-
   self._isIPAddressOrSingleName = function(hostname) {
     return DomainUtil.isIPAddress(hostname) ||
         hostname.indexOf(".") == -1;
diff --git a/src/content/ui/overlay.js b/src/content/ui/overlay.js
index d5e1785..08b4ee1 100644
--- a/src/content/ui/overlay.js
+++ b/src/content/ui/overlay.js
@@ -49,7 +49,6 @@ rpcontinued.overlay = (function() {
   let {PolicyManager} = iMod("lib/policy-manager");
   let {DomainUtil} = iMod("lib/utils/domains");
   let {StringUtils} = iMod("lib/utils/strings");
-  let {DOMUtils} = iMod("lib/utils/dom");
   let {WindowUtils} = iMod("lib/utils/windows");
   let {Utils} = iMod("lib/utils");
   let {C} = iMod("lib/utils/constants");
@@ -474,7 +473,8 @@ rpcontinued.overlay = (function() {
 
     var addRuleMenuName = "rpcontinuedRedirectAddRuleMenu";
     var addRulePopup = $id(addRuleMenuName);
-    DOMUtils.removeChildren(addRulePopup);
+    var cm = rpcontinued.classicmenu;
+    cm.emptyMenu(addRulePopup);
 
     let m = rpcontinued.menu;
     var originBaseDomain = DomainUtil.getBaseDomain(redirectOriginUri);
@@ -490,8 +490,6 @@ rpcontinued.overlay = (function() {
 
     let mayPermRulesBeAdded = WindowUtils.mayPermanentRulesBeAdded(window);
 
-    let cm = rpcontinued.classicmenu;
-
     if (destBaseDomain !== null) {
       cm.addMenuItemTemporarilyAllowDest(addRulePopup, dest);
       if (mayPermRulesBeAdded) {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/requestpolicy.git



More information about the Pkg-mozext-commits mailing list