Bug 1455379 - ignore key elements without a key attribute, r?bz,gandalf draft
authorGijs Kruitbosch <gijskruitbosch@gmail.com>
Fri, 20 Apr 2018 12:48:20 +0100
changeset 786112 a083099209028e6d394b7a87fd6706038e1d8a7d
parent 785586 cc0d7de218cb0c260c8ba0cf6637845ad2222f49
push id107398
push userbmo:gijskruitbosch+bugs@gmail.com
push dateSat, 21 Apr 2018 10:12:52 +0000
reviewersbz, gandalf
bugs1455379
milestone61.0a1
Bug 1455379 - ignore key elements without a key attribute, r?bz,gandalf MozReview-Commit-ID: 4vv4CKp5v9V
dom/xbl/nsXBLWindowKeyHandler.cpp
--- a/dom/xbl/nsXBLWindowKeyHandler.cpp
+++ b/dom/xbl/nsXBLWindowKeyHandler.cpp
@@ -201,23 +201,24 @@ BuildHandlerChain(nsIContent* aContent, 
       continue;
     }
 
     Element* keyElement = key->AsElement();
     // Check whether the key element has empty value at key/char attribute.
     // Such element is used by localizers for alternative shortcut key
     // definition on the locale. See bug 426501.
     nsAutoString valKey, valCharCode, valKeyCode;
-    bool attrExists =
-      keyElement->GetAttr(kNameSpaceID_None, nsGkAtoms::key, valKey) ||
+    // Hopefully at least one of the attributes is set:
+    keyElement->GetAttr(kNameSpaceID_None, nsGkAtoms::key, valKey) ||
       keyElement->GetAttr(kNameSpaceID_None, nsGkAtoms::charcode, valCharCode) ||
       keyElement->GetAttr(kNameSpaceID_None, nsGkAtoms::keycode, valKeyCode);
-    if (attrExists &&
-        valKey.IsEmpty() && valCharCode.IsEmpty() && valKeyCode.IsEmpty())
+    // If not, ignore this key element.
+    if (valKey.IsEmpty() && valCharCode.IsEmpty() && valKeyCode.IsEmpty()) {
       continue;
+    }
 
     // reserved="pref" is the default for <key> elements.
     XBLReservedKey reserved = XBLReservedKey_Unset;
     if (keyElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::reserved,
                                 nsGkAtoms::_true, eCaseMatters)) {
       reserved = XBLReservedKey_True;
     } else if (keyElement->AttrValueIs(kNameSpaceID_None,
                                        nsGkAtoms::reserved,