Bug 1415353: Don't allow creating shadow roots for elements with XBL bindings. r?smaug draft
authorEmilio Cobos Álvarez <emilio@crisal.io>
Wed, 08 Nov 2017 14:09:33 +0100
changeset 694959 9722f0d7e6790745158893de88894dfa120622f9
parent 694958 4271beecee26fbdb3f8a6f7c671d8a77976fdbdd
child 739469 6db4612acccf8c695fcab249d1aaba1b9dcd0118
push id88283
push userbmo:emilio@crisal.io
push dateWed, 08 Nov 2017 13:10:41 +0000
reviewerssmaug
bugs1415353
milestone58.0a1
Bug 1415353: Don't allow creating shadow roots for elements with XBL bindings. r?smaug It breaks all sorts of invariants. MozReview-Commit-ID: IGUDp91q0sF
dom/base/Element.cpp
--- a/dom/base/Element.cpp
+++ b/dom/base/Element.cpp
@@ -1209,17 +1209,17 @@ Element::CreateShadowRoot(ErrorResult& a
 
 already_AddRefed<ShadowRoot>
 Element::AttachShadowInternal(bool aClosed, ErrorResult& aError)
 {
   /**
    * 3. If context object is a shadow host, then throw
    *    an "InvalidStateError" DOMException.
    */
-  if (GetShadowRoot()) {
+  if (GetShadowRoot() || GetXBLBinding()) {
     aError.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
     return nullptr;
   }
 
   nsAutoScriptBlocker scriptBlocker;
 
   RefPtr<mozilla::dom::NodeInfo> nodeInfo;
   nodeInfo = mNodeInfo->NodeInfoManager()->GetNodeInfo(