Bug 856140 - Sync our document.registerElement implementation to the current version of the spec. r=mrbkap

This commit is contained in:
William Chen
2014-02-23 13:01:26 -08:00
parent c7b77b6eb3
commit a18f868583
31 changed files with 2010 additions and 232 deletions

View File

@@ -563,6 +563,12 @@ FragmentOrElement::nsDOMSlots::Traverse(nsCycleCollectionTraversalCallback &cb,
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mClassList");
cb.NoteXPCOMChild(mClassList.get());
if (mCustomElementData) {
for (uint32_t i = 0; i < mCustomElementData->mCallbackQueue.Length(); i++) {
mCustomElementData->mCallbackQueue[i]->Traverse(cb);
}
}
}
void
@@ -582,6 +588,7 @@ FragmentOrElement::nsDOMSlots::Unlink(bool aIsXUL)
mContainingShadow = nullptr;
mChildrenList = nullptr;
mUndoManager = nullptr;
mCustomElementData = nullptr;
if (mClassList) {
mClassList->DropReference();
mClassList = nullptr;
@@ -1013,6 +1020,24 @@ FragmentOrElement::SetXBLInsertionParent(nsIContent* aContent)
slots->mXBLInsertionParent = aContent;
}
CustomElementData*
FragmentOrElement::GetCustomElementData() const
{
nsDOMSlots *slots = GetExistingDOMSlots();
if (slots) {
return slots->mCustomElementData;
}
return nullptr;
}
void
FragmentOrElement::SetCustomElementData(CustomElementData* aData)
{
nsDOMSlots *slots = DOMSlots();
MOZ_ASSERT(!slots->mCustomElementData, "Custom element data may not be changed once set.");
slots->mCustomElementData = aData;
}
nsresult
FragmentOrElement::InsertChildAt(nsIContent* aKid,
uint32_t aIndex,