Bug 1455379 - ignore key elements without a key attribute, r?bz,gandalf
MozReview-Commit-ID: 4vv4CKp5v9V
--- 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,