зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1593119 - unifdef MOZ_XBL r=bzbarsky
This was generated with: ``` rg -l -g '*.{cpp,h}' MOZ_XBL . | while read FILE ; do echo $FILE unifdef -m -UMOZ_XBL $FILE done ``` After this, I manually removed the directive in nsContentUtils.cpp due to: unifdef: ./dom/base/nsContentUtils.cpp: 4630: Unterminated string literal unifdef: Output may be truncated Differential Revision: https://phabricator.services.mozilla.com/D51337 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
8786a2504a
Коммит
f19f38776b
|
@ -9,9 +9,6 @@
|
||||||
#ifndef mozilla_dom_BindContext_h__
|
#ifndef mozilla_dom_BindContext_h__
|
||||||
#define mozilla_dom_BindContext_h__
|
#define mozilla_dom_BindContext_h__
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsXBLBinding.h"
|
|
||||||
#endif
|
|
||||||
#include "mozilla/Attributes.h"
|
#include "mozilla/Attributes.h"
|
||||||
#include "mozilla/AutoRestore.h"
|
#include "mozilla/AutoRestore.h"
|
||||||
#include "mozilla/dom/Document.h"
|
#include "mozilla/dom/Document.h"
|
||||||
|
@ -99,18 +96,6 @@ struct MOZ_STACK_CLASS BindContext final {
|
||||||
MOZ_ASSERT(mInComposedDoc, "Binding NAC in a disconnected subtree?");
|
MOZ_ASSERT(mInComposedDoc, "Binding NAC in a disconnected subtree?");
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// This is meant to be used to bind XBL anonymous content.
|
|
||||||
BindContext(nsXBLBinding& aBinding, Element& aParentElement)
|
|
||||||
: mDoc(*aParentElement.OwnerDoc()),
|
|
||||||
mBindingParent(aBinding.GetBoundElement()),
|
|
||||||
mInComposedDoc(aParentElement.IsInComposedDoc()),
|
|
||||||
mInUncomposedDoc(aParentElement.IsInUncomposedDoc()),
|
|
||||||
mSubtreeRootChanges(true),
|
|
||||||
mCollectingDisplayedNodeDataDuringLoad(
|
|
||||||
ShouldCollectDisplayedNodeDataDuringLoad(mInComposedDoc, mDoc,
|
|
||||||
aParentElement)) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool CollectingDisplayedNodeDataDuringLoad() const {
|
bool CollectingDisplayedNodeDataDuringLoad() const {
|
||||||
return mCollectingDisplayedNodeDataDuringLoad;
|
return mCollectingDisplayedNodeDataDuringLoad;
|
||||||
|
|
|
@ -29,9 +29,6 @@
|
||||||
#include "nsChangeHint.h"
|
#include "nsChangeHint.h"
|
||||||
#include "nsCOMArray.h"
|
#include "nsCOMArray.h"
|
||||||
#include "mozilla/dom/DirectionalityUtils.h"
|
#include "mozilla/dom/DirectionalityUtils.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
#endif
|
|
||||||
#include "nsCCUncollectableMarker.h"
|
#include "nsCCUncollectableMarker.h"
|
||||||
#include "mozAutoDocUpdate.h"
|
#include "mozAutoDocUpdate.h"
|
||||||
#include "nsTextNode.h"
|
#include "nsTextNode.h"
|
||||||
|
@ -515,9 +512,6 @@ void CharacterData::UnbindFromTree(bool aNullParent) {
|
||||||
|
|
||||||
HandleShadowDOMRelatedRemovalSteps(aNullParent);
|
HandleShadowDOMRelatedRemovalSteps(aNullParent);
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
Document* document = GetComposedDoc();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (aNullParent) {
|
if (aNullParent) {
|
||||||
if (IsRootOfNativeAnonymousSubtree()) {
|
if (IsRootOfNativeAnonymousSubtree()) {
|
||||||
|
@ -540,18 +534,6 @@ void CharacterData::UnbindFromTree(bool aNullParent) {
|
||||||
SetSubtreeRootPointer(aNullParent ? this : mParent->SubtreeRoot());
|
SetSubtreeRootPointer(aNullParent ? this : mParent->SubtreeRoot());
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
if (document && !GetContainingShadow()) {
|
|
||||||
// Notify XBL- & nsIAnonymousContentCreator-generated
|
|
||||||
// anonymous content that the document is changing.
|
|
||||||
// Unlike XBL, bindings for web components shadow DOM
|
|
||||||
// do not get uninstalled.
|
|
||||||
if (HasFlag(NODE_MAY_BE_IN_BINDING_MNGR)) {
|
|
||||||
nsContentUtils::AddScriptRunner(new RemoveFromBindingManagerRunnable(
|
|
||||||
document->BindingManager(), this, document));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
nsExtendedContentSlots* slots = GetExistingExtendedContentSlots();
|
nsExtendedContentSlots* slots = GetExistingExtendedContentSlots();
|
||||||
if (slots) {
|
if (slots) {
|
||||||
|
|
|
@ -169,9 +169,6 @@ class CharacterData : public nsIContent {
|
||||||
void DumpContent(FILE* out, int32_t aIndent, bool aDumpAll) const override {}
|
void DumpContent(FILE* out, int32_t aIndent, bool aDumpAll) const override {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsXBLBinding* DoGetXBLBinding() const final { return nullptr; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool IsNodeOfType(uint32_t aFlags) const override { return false; }
|
bool IsNodeOfType(uint32_t aFlags) const override { return false; }
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,6 @@
|
||||||
#include "nsContentUtils.h"
|
#include "nsContentUtils.h"
|
||||||
#include "mozilla/dom/Document.h"
|
#include "mozilla/dom/Document.h"
|
||||||
#include "mozilla/dom/HTMLSlotElement.h"
|
#include "mozilla/dom/HTMLSlotElement.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "mozilla/dom/XBLChildrenElement.h"
|
|
||||||
#endif
|
|
||||||
#include "mozilla/dom/ShadowRoot.h"
|
#include "mozilla/dom/ShadowRoot.h"
|
||||||
#include "nsIAnonymousContentCreator.h"
|
#include "nsIAnonymousContentCreator.h"
|
||||||
#include "nsIFrame.h"
|
#include "nsIFrame.h"
|
||||||
|
@ -48,17 +45,7 @@ nsIContent* ExplicitChildIterator::GetNextChild() {
|
||||||
return mChild;
|
return mChild;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
MOZ_ASSERT(mChild->IsActiveChildrenElement());
|
|
||||||
auto* childrenElement = static_cast<XBLChildrenElement*>(mChild);
|
|
||||||
if (mIndexInInserted < childrenElement->InsertedChildrenLength()) {
|
|
||||||
return childrenElement->InsertedChild(mIndexInInserted++);
|
|
||||||
}
|
|
||||||
mIndexInInserted = 0;
|
|
||||||
mChild = mChild->GetNextSibling();
|
|
||||||
#else
|
|
||||||
MOZ_ASSERT_UNREACHABLE("This needs to be revisited");
|
MOZ_ASSERT_UNREACHABLE("This needs to be revisited");
|
||||||
#endif
|
|
||||||
} else if (mDefaultChild) {
|
} else if (mDefaultChild) {
|
||||||
// If we're already in default content, check if there are more nodes there
|
// If we're already in default content, check if there are more nodes there
|
||||||
MOZ_ASSERT(mChild);
|
MOZ_ASSERT(mChild);
|
||||||
|
@ -94,30 +81,7 @@ nsIContent* ExplicitChildIterator::GetNextChild() {
|
||||||
// content.
|
// content.
|
||||||
while (mChild) {
|
while (mChild) {
|
||||||
if (mChild->IsActiveChildrenElement()) {
|
if (mChild->IsActiveChildrenElement()) {
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// If the current child being iterated is a content insertion point
|
|
||||||
// then the iterator needs to return the nodes distributed into
|
|
||||||
// the content insertion point.
|
|
||||||
auto* childrenElement = static_cast<XBLChildrenElement*>(mChild);
|
|
||||||
if (childrenElement->HasInsertedChildren()) {
|
|
||||||
// Iterate through elements projected on insertion point.
|
|
||||||
mIndexInInserted = 1;
|
|
||||||
return childrenElement->InsertedChild(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Insertion points inside fallback/default content
|
|
||||||
// are considered inactive and do not get assigned nodes.
|
|
||||||
mDefaultChild = mChild->GetFirstChild();
|
|
||||||
if (mDefaultChild) {
|
|
||||||
return mDefaultChild;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we have an insertion point with no assigned nodes and
|
|
||||||
// no default content, move on to the next node.
|
|
||||||
mChild = mChild->GetNextSibling();
|
|
||||||
#else
|
|
||||||
MOZ_ASSERT_UNREACHABLE("This needs to be revisited");
|
MOZ_ASSERT_UNREACHABLE("This needs to be revisited");
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
// mChild is not an insertion point, thus it is the next node to
|
// mChild is not an insertion point, thus it is the next node to
|
||||||
// return from this iterator.
|
// return from this iterator.
|
||||||
|
@ -144,16 +108,6 @@ void FlattenedChildIterator::Init(bool aIgnoreXBL) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsXBLBinding* binding =
|
|
||||||
mParent->OwnerDoc()->BindingManager()->GetBindingWithContent(mParent);
|
|
||||||
|
|
||||||
if (binding) {
|
|
||||||
MOZ_ASSERT(binding->GetAnonymousContent());
|
|
||||||
mParent = binding->GetAnonymousContent();
|
|
||||||
mXBLInvolved = Some(true);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FlattenedChildIterator::ComputeWhetherXBLIsInvolved() const {
|
bool FlattenedChildIterator::ComputeWhetherXBLIsInvolved() const {
|
||||||
|
@ -211,13 +165,7 @@ nsIContent* ExplicitChildIterator::Get() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mIndexInInserted) {
|
if (mIndexInInserted) {
|
||||||
#ifdef MOZ_XBL
|
|
||||||
MOZ_ASSERT(mChild->IsActiveChildrenElement());
|
|
||||||
auto* childrenElement = static_cast<XBLChildrenElement*>(mChild);
|
|
||||||
return childrenElement->InsertedChild(mIndexInInserted - 1);
|
|
||||||
#else
|
|
||||||
MOZ_ASSERT_UNREACHABLE("This needs to be revisited");
|
MOZ_ASSERT_UNREACHABLE("This needs to be revisited");
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return mDefaultChild ? mDefaultChild : mChild;
|
return mDefaultChild ? mDefaultChild : mChild;
|
||||||
|
@ -240,18 +188,7 @@ nsIContent* ExplicitChildIterator::GetPreviousChild() {
|
||||||
return mChild;
|
return mChild;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// NB: mIndexInInserted points one past the last returned child so we need
|
|
||||||
// to look *two* indices back in order to return the previous child.
|
|
||||||
MOZ_ASSERT(mChild->IsActiveChildrenElement());
|
|
||||||
auto* childrenElement = static_cast<XBLChildrenElement*>(mChild);
|
|
||||||
if (--mIndexInInserted) {
|
|
||||||
return childrenElement->InsertedChild(mIndexInInserted - 1);
|
|
||||||
}
|
|
||||||
mChild = mChild->GetPreviousSibling();
|
|
||||||
#else
|
|
||||||
MOZ_ASSERT_UNREACHABLE("This needs to be revisited");
|
MOZ_ASSERT_UNREACHABLE("This needs to be revisited");
|
||||||
#endif
|
|
||||||
} else if (mDefaultChild) {
|
} else if (mDefaultChild) {
|
||||||
// If we're already in default content, check if there are more nodes there
|
// If we're already in default content, check if there are more nodes there
|
||||||
mDefaultChild = mDefaultChild->GetPreviousSibling();
|
mDefaultChild = mDefaultChild->GetPreviousSibling();
|
||||||
|
@ -284,25 +221,7 @@ nsIContent* ExplicitChildIterator::GetPreviousChild() {
|
||||||
// content.
|
// content.
|
||||||
while (mChild) {
|
while (mChild) {
|
||||||
if (mChild->IsActiveChildrenElement()) {
|
if (mChild->IsActiveChildrenElement()) {
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// If the current child being iterated is a content insertion point
|
|
||||||
// then the iterator needs to return the nodes distributed into
|
|
||||||
// the content insertion point.
|
|
||||||
auto* childrenElement = static_cast<XBLChildrenElement*>(mChild);
|
|
||||||
if (childrenElement->HasInsertedChildren()) {
|
|
||||||
mIndexInInserted = childrenElement->InsertedChildrenLength();
|
|
||||||
return childrenElement->InsertedChild(mIndexInInserted - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
mDefaultChild = mChild->GetLastChild();
|
|
||||||
if (mDefaultChild) {
|
|
||||||
return mDefaultChild;
|
|
||||||
}
|
|
||||||
|
|
||||||
mChild = mChild->GetPreviousSibling();
|
|
||||||
#else
|
|
||||||
MOZ_ASSERT_UNREACHABLE("This needs to be revisited");
|
MOZ_ASSERT_UNREACHABLE("This needs to be revisited");
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
// mChild is not an insertion point, thus it is the next node to
|
// mChild is not an insertion point, thus it is the next node to
|
||||||
// return from this iterator.
|
// return from this iterator.
|
||||||
|
|
|
@ -179,9 +179,6 @@
|
||||||
#include "nsContentCreatorFunctions.h"
|
#include "nsContentCreatorFunctions.h"
|
||||||
|
|
||||||
#include "nsIScriptContext.h"
|
#include "nsIScriptContext.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
#endif
|
|
||||||
#include "nsHTMLDocument.h"
|
#include "nsHTMLDocument.h"
|
||||||
#include "nsIRequest.h"
|
#include "nsIRequest.h"
|
||||||
#include "mozilla/dom/BlobURLProtocolHandler.h"
|
#include "mozilla/dom/BlobURLProtocolHandler.h"
|
||||||
|
@ -1948,14 +1945,6 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INTERNAL(Document)
|
||||||
return NS_SUCCESS_INTERRUPTED_TRAVERSE;
|
return NS_SUCCESS_INTERRUPTED_TRAVERSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
if (tmp->mMaybeEndOutermostXBLUpdateRunner) {
|
|
||||||
// The cached runnable keeps a reference to the document object..
|
|
||||||
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(
|
|
||||||
cb, "mMaybeEndOutermostXBLUpdateRunner.mObj");
|
|
||||||
cb.NoteXPCOMChild(ToSupports(tmp));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
tmp->mExternalResourceMap.Traverse(&cb);
|
tmp->mExternalResourceMap.Traverse(&cb);
|
||||||
|
|
||||||
|
@ -2085,9 +2074,6 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(Document)
|
||||||
|
|
||||||
tmp->mCachedRootElement = nullptr; // Avoid a dangling pointer
|
tmp->mCachedRootElement = nullptr; // Avoid a dangling pointer
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK(mDisplayDocument)
|
NS_IMPL_CYCLE_COLLECTION_UNLINK(mDisplayDocument)
|
||||||
#ifdef MOZ_XBL
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK(mMaybeEndOutermostXBLUpdateRunner)
|
|
||||||
#endif
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK(mDOMImplementation)
|
NS_IMPL_CYCLE_COLLECTION_UNLINK(mDOMImplementation)
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK(mImageMaps)
|
NS_IMPL_CYCLE_COLLECTION_UNLINK(mImageMaps)
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK(mCachedEncoder)
|
NS_IMPL_CYCLE_COLLECTION_UNLINK(mCachedEncoder)
|
||||||
|
@ -5913,22 +5899,6 @@ static inline void AssertNoStaleServoDataIn(nsINode& aSubtreeRoot) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
MOZ_ASSERT(!element->HasServoData());
|
MOZ_ASSERT(!element->HasServoData());
|
||||||
# ifdef MOZ_XBL
|
|
||||||
if (nsXBLBinding* binding = element->GetXBLBinding()) {
|
|
||||||
if (nsXBLBinding* bindingWithContent = binding->GetBindingWithContent()) {
|
|
||||||
nsIContent* content = bindingWithContent->GetAnonymousContent();
|
|
||||||
// Need to do this instead of just AssertNoStaleServoDataIn(*content),
|
|
||||||
// because the parent of the children of the <content> element isn't the
|
|
||||||
// <content> element, but the bound element, and that confuses
|
|
||||||
// GetNextNode a lot.
|
|
||||||
MOZ_ASSERT(!content->AsElement()->HasServoData());
|
|
||||||
for (nsINode* child = content->GetFirstChild(); child;
|
|
||||||
child = child->GetNextSibling()) {
|
|
||||||
AssertNoStaleServoDataIn(*child);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -6924,25 +6894,6 @@ bool Document::RemoveObserver(nsIDocumentObserver* aObserver) {
|
||||||
return mObservers.Contains(aObserver);
|
return mObservers.Contains(aObserver);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
void Document::MaybeEndOutermostXBLUpdate() {
|
|
||||||
// Only call BindingManager()->EndOutermostUpdate() when
|
|
||||||
// we're not in an update and it is safe to run scripts.
|
|
||||||
if (mUpdateNestLevel == 0 && mInXBLUpdate) {
|
|
||||||
if (nsContentUtils::IsSafeToRunScript()) {
|
|
||||||
mInXBLUpdate = false;
|
|
||||||
BindingManager()->EndOutermostUpdate();
|
|
||||||
} else if (!mInDestructor) {
|
|
||||||
if (!mMaybeEndOutermostXBLUpdateRunner) {
|
|
||||||
mMaybeEndOutermostXBLUpdateRunner =
|
|
||||||
NewRunnableMethod("Document::MaybeEndOutermostXBLUpdate", this,
|
|
||||||
&Document::MaybeEndOutermostXBLUpdate);
|
|
||||||
}
|
|
||||||
nsContentUtils::AddScriptRunner(mMaybeEndOutermostXBLUpdateRunner);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void Document::BeginUpdate() {
|
void Document::BeginUpdate() {
|
||||||
// If the document is going away, then it's probably okay to do things to it
|
// If the document is going away, then it's probably okay to do things to it
|
||||||
|
@ -6956,12 +6907,6 @@ void Document::BeginUpdate() {
|
||||||
mDocGroup->ValidateAccess();
|
mDocGroup->ValidateAccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
if (mUpdateNestLevel == 0 && !mInXBLUpdate) {
|
|
||||||
mInXBLUpdate = true;
|
|
||||||
BindingManager()->BeginOutermostUpdate();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
++mUpdateNestLevel;
|
++mUpdateNestLevel;
|
||||||
nsContentUtils::AddScriptBlocker();
|
nsContentUtils::AddScriptBlocker();
|
||||||
|
@ -6978,11 +6923,6 @@ void Document::EndUpdate() {
|
||||||
|
|
||||||
--mUpdateNestLevel;
|
--mUpdateNestLevel;
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// This set of updates may have created XBL bindings. Let the
|
|
||||||
// binding manager know we're done.
|
|
||||||
MaybeEndOutermostXBLUpdate();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
MaybeInitializeFinalizeFrameLoaders();
|
MaybeInitializeFinalizeFrameLoaders();
|
||||||
if (mXULBroadcastManager) {
|
if (mXULBroadcastManager) {
|
||||||
|
@ -7874,77 +7814,21 @@ Element* Document::GetBindingParent(nsINode& aNode) {
|
||||||
return bindingParent ? bindingParent->AsElement() : nullptr;
|
return bindingParent ? bindingParent->AsElement() : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
static Element* GetElementByAttribute(Element* aElement, nsAtom* aAttrName,
|
|
||||||
const nsAString& aAttrValue,
|
|
||||||
bool aUniversalMatch) {
|
|
||||||
if (aUniversalMatch ? aElement->HasAttr(kNameSpaceID_None, aAttrName)
|
|
||||||
: aElement->AttrValueIs(kNameSpaceID_None, aAttrName,
|
|
||||||
aAttrValue, eCaseMatters)) {
|
|
||||||
return aElement;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (nsIContent* child = aElement->GetFirstChild(); child;
|
|
||||||
child = child->GetNextSibling()) {
|
|
||||||
if (!child->IsElement()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
Element* matchedElement = GetElementByAttribute(
|
|
||||||
child->AsElement(), aAttrName, aAttrValue, aUniversalMatch);
|
|
||||||
if (matchedElement) return matchedElement;
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Element* Document::GetAnonymousElementByAttribute(
|
Element* Document::GetAnonymousElementByAttribute(
|
||||||
nsIContent* aElement, nsAtom* aAttrName,
|
nsIContent* aElement, nsAtom* aAttrName,
|
||||||
const nsAString& aAttrValue) const {
|
const nsAString& aAttrValue) const {
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsINodeList* nodeList = BindingManager()->GetAnonymousNodesFor(aElement);
|
|
||||||
if (!nodeList) return nullptr;
|
|
||||||
|
|
||||||
uint32_t length = nodeList->Length();
|
|
||||||
|
|
||||||
bool universalMatch = aAttrValue.EqualsLiteral("*");
|
|
||||||
|
|
||||||
for (uint32_t i = 0; i < length; ++i) {
|
|
||||||
Element* current = Element::FromNode(nodeList->Item(i));
|
|
||||||
if (!current) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
Element* matchedElm =
|
|
||||||
GetElementByAttribute(current, aAttrName, aAttrValue, universalMatch);
|
|
||||||
if (matchedElm) return matchedElm;
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
#else
|
|
||||||
return nullptr;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Element* Document::GetAnonymousElementByAttribute(Element& aElement,
|
Element* Document::GetAnonymousElementByAttribute(Element& aElement,
|
||||||
const nsAString& aAttrName,
|
const nsAString& aAttrName,
|
||||||
const nsAString& aAttrValue) {
|
const nsAString& aAttrValue) {
|
||||||
#ifdef MOZ_XBL
|
|
||||||
RefPtr<nsAtom> attribute = NS_Atomize(aAttrName);
|
|
||||||
|
|
||||||
return GetAnonymousElementByAttribute(&aElement, attribute, aAttrValue);
|
|
||||||
#else
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nsINodeList* Document::GetAnonymousNodes(Element& aElement) {
|
nsINodeList* Document::GetAnonymousNodes(Element& aElement) {
|
||||||
#ifdef MOZ_XBL
|
|
||||||
return BindingManager()->GetAnonymousNodesFor(&aElement);
|
|
||||||
#else
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
already_AddRefed<nsRange> Document::CreateRange(ErrorResult& rv) {
|
already_AddRefed<nsRange> Document::CreateRange(ErrorResult& rv) {
|
||||||
|
@ -9303,15 +9187,6 @@ nsINode* Document::AdoptNode(nsINode& aAdoptedNode, ErrorResult& rv) {
|
||||||
} else {
|
} else {
|
||||||
MOZ_ASSERT(!adoptedNode->IsInUncomposedDoc());
|
MOZ_ASSERT(!adoptedNode->IsInUncomposedDoc());
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// If we're adopting a node that's not in a document, it might still
|
|
||||||
// have a binding applied. Remove the binding from the element now
|
|
||||||
// that it's getting adopted into a new document.
|
|
||||||
// TODO Fully tear down the binding.
|
|
||||||
if (Element* element = Element::FromNode(adoptedNode)) {
|
|
||||||
element->SetXBLBinding(nullptr);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -14199,14 +14074,6 @@ void Document::AddSizeOfNodeTree(nsINode& aNode, nsWindowSizes& aWindowSizes) {
|
||||||
AddSizeOfNodeTree(*shadow, aWindowSizes);
|
AddSizeOfNodeTree(*shadow, aWindowSizes);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
for (nsXBLBinding* binding = element->GetXBLBinding(); binding;
|
|
||||||
binding = binding->GetBaseBinding()) {
|
|
||||||
if (nsIContent* anonContent = binding->GetAnonymousContent()) {
|
|
||||||
AddSizeOfNodeTree(*anonContent, aWindowSizes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,9 +85,6 @@ class ElementCreationOptionsOrString;
|
||||||
|
|
||||||
class gfxUserFontSet;
|
class gfxUserFontSet;
|
||||||
class imgIRequest;
|
class imgIRequest;
|
||||||
#ifdef MOZ_XBL
|
|
||||||
class nsBindingManager;
|
|
||||||
#endif
|
|
||||||
class nsCachableElementsByNameNodeList;
|
class nsCachableElementsByNameNodeList;
|
||||||
class nsCommandManager;
|
class nsCommandManager;
|
||||||
class nsContentList;
|
class nsContentList;
|
||||||
|
@ -1813,9 +1810,6 @@ class Document : public nsINode,
|
||||||
|
|
||||||
void DoUnblockOnload();
|
void DoUnblockOnload();
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
void MaybeEndOutermostXBLUpdate();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void RetrieveRelevantHeaders(nsIChannel* aChannel);
|
void RetrieveRelevantHeaders(nsIChannel* aChannel);
|
||||||
|
|
||||||
|
@ -2394,11 +2388,6 @@ class Document : public nsINode,
|
||||||
DoUpdateSVGUseElementShadowTrees();
|
DoUpdateSVGUseElementShadowTrees();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsBindingManager* BindingManager() const {
|
|
||||||
return mNodeInfoManager->GetBindingManager();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Only to be used inside Gecko, you can't really do anything with the
|
* Only to be used inside Gecko, you can't really do anything with the
|
||||||
|
@ -5294,9 +5283,6 @@ class Document : public nsINode,
|
||||||
|
|
||||||
RefPtr<EventListenerManager> mListenerManager;
|
RefPtr<EventListenerManager> mListenerManager;
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsCOMPtr<nsIRunnable> mMaybeEndOutermostXBLUpdateRunner;
|
|
||||||
#endif
|
|
||||||
nsCOMPtr<nsIRequest> mOnloadBlocker;
|
nsCOMPtr<nsIRequest> mOnloadBlocker;
|
||||||
|
|
||||||
nsTArray<RefPtr<StyleSheet>> mAdditionalSheets[AdditionalSheetTypeCount];
|
nsTArray<RefPtr<StyleSheet>> mAdditionalSheets[AdditionalSheetTypeCount];
|
||||||
|
|
|
@ -95,12 +95,6 @@
|
||||||
# include "nsRange.h"
|
# include "nsRange.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsXBLPrototypeBinding.h"
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
# include "nsXBLBinding.h"
|
|
||||||
# include "nsXBLService.h"
|
|
||||||
#endif
|
|
||||||
#include "nsPIDOMWindow.h"
|
#include "nsPIDOMWindow.h"
|
||||||
#include "mozilla/dom/DOMRect.h"
|
#include "mozilla/dom/DOMRect.h"
|
||||||
#include "nsSVGUtils.h"
|
#include "nsSVGUtils.h"
|
||||||
|
@ -268,13 +262,7 @@ Element::QueryInterface(REFNSIID aIID, void** aInstancePtr) {
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if MOZ_XBL
|
|
||||||
// Give the binding manager a chance to get an interface for this element.
|
|
||||||
return OwnerDoc()->BindingManager()->GetBindingImplementation(this, aIID,
|
|
||||||
aInstancePtr);
|
|
||||||
#else
|
|
||||||
return NS_NOINTERFACE;
|
return NS_NOINTERFACE;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EventStates Element::IntrinsicState() const {
|
EventStates Element::IntrinsicState() const {
|
||||||
|
@ -383,47 +371,6 @@ void Element::SetTabIndex(int32_t aTabIndex, mozilla::ErrorResult& aError) {
|
||||||
SetAttr(nsGkAtoms::tabindex, value, aError);
|
SetAttr(nsGkAtoms::tabindex, value, aError);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
void Element::SetXBLBinding(nsXBLBinding* aBinding,
|
|
||||||
nsBindingManager* aOldBindingManager) {
|
|
||||||
nsBindingManager* bindingManager;
|
|
||||||
if (aOldBindingManager) {
|
|
||||||
MOZ_ASSERT(!aBinding,
|
|
||||||
"aOldBindingManager should only be provided "
|
|
||||||
"when removing a binding.");
|
|
||||||
bindingManager = aOldBindingManager;
|
|
||||||
} else {
|
|
||||||
bindingManager = OwnerDoc()->BindingManager();
|
|
||||||
}
|
|
||||||
|
|
||||||
// After this point, aBinding will be the most-derived binding for aContent.
|
|
||||||
// If we already have a binding for aContent, make sure to
|
|
||||||
// remove it from the attached stack. Otherwise we might end up firing its
|
|
||||||
// constructor twice (if aBinding inherits from it) or firing its constructor
|
|
||||||
// after aContent has been deleted (if aBinding is null and the content node
|
|
||||||
// dies before we process mAttachedStack).
|
|
||||||
RefPtr<nsXBLBinding> oldBinding = GetXBLBinding();
|
|
||||||
if (oldBinding) {
|
|
||||||
bindingManager->RemoveFromAttachedQueue(oldBinding);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (aBinding) {
|
|
||||||
SetFlags(NODE_MAY_BE_IN_BINDING_MNGR);
|
|
||||||
nsExtendedDOMSlots* slots = ExtendedDOMSlots();
|
|
||||||
slots->mXBLBinding = aBinding;
|
|
||||||
bindingManager->AddBoundContent(this);
|
|
||||||
} else {
|
|
||||||
nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
|
|
||||||
if (slots) {
|
|
||||||
slots->mXBLBinding = nullptr;
|
|
||||||
}
|
|
||||||
bindingManager->RemoveBoundContent(this);
|
|
||||||
if (oldBinding) {
|
|
||||||
oldBinding->SetBoundElement(nullptr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void Element::SetShadowRoot(ShadowRoot* aShadowRoot) {
|
void Element::SetShadowRoot(ShadowRoot* aShadowRoot) {
|
||||||
nsExtendedDOMSlots* slots = ExtendedDOMSlots();
|
nsExtendedDOMSlots* slots = ExtendedDOMSlots();
|
||||||
|
@ -1067,9 +1014,6 @@ already_AddRefed<ShadowRoot> Element::AttachShadow(const ShadowRootInit& aInit,
|
||||||
* an "InvalidStateError" DOMException.
|
* an "InvalidStateError" DOMException.
|
||||||
*/
|
*/
|
||||||
if (GetShadowRoot()
|
if (GetShadowRoot()
|
||||||
#ifdef MOZ_XBL
|
|
||||||
|| GetXBLBinding()
|
|
||||||
#endif
|
|
||||||
) {
|
) {
|
||||||
aError.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
|
aError.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -1597,18 +1541,6 @@ nsresult Element::BindToTree(BindContext& aContext, nsINode& aParent) {
|
||||||
|
|
||||||
UpdateEditableState(false);
|
UpdateEditableState(false);
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// If we had a pre-existing XBL binding, we might have anonymous children that
|
|
||||||
// also need to be told that they are moving.
|
|
||||||
if (HasFlag(NODE_MAY_BE_IN_BINDING_MNGR)) {
|
|
||||||
nsXBLBinding* binding =
|
|
||||||
aContext.OwnerDoc().BindingManager()->GetBindingWithContent(this);
|
|
||||||
|
|
||||||
if (binding) {
|
|
||||||
binding->BindAnonymousContent(binding->GetAnonymousContent(), this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Call BindToTree on shadow root children.
|
// Call BindToTree on shadow root children.
|
||||||
nsresult rv;
|
nsresult rv;
|
||||||
|
@ -1690,33 +1622,6 @@ nsresult Element::BindToTree(BindContext& aContext, nsINode& aParent) {
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
RemoveFromBindingManagerRunnable::RemoveFromBindingManagerRunnable(
|
|
||||||
nsBindingManager* aManager, nsIContent* aContent, Document* aDoc)
|
|
||||||
: mozilla::Runnable("dom::RemoveFromBindingManagerRunnable"),
|
|
||||||
mManager(aManager),
|
|
||||||
mContent(aContent),
|
|
||||||
mDoc(aDoc) {}
|
|
||||||
|
|
||||||
RemoveFromBindingManagerRunnable::~RemoveFromBindingManagerRunnable() {}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
RemoveFromBindingManagerRunnable::Run() {
|
|
||||||
// It may be the case that the element was removed from the
|
|
||||||
// DOM, causing this runnable to be created, then inserted back
|
|
||||||
// into the document before the this runnable had a chance to
|
|
||||||
// tear down the binding. Only tear down the binding if the element
|
|
||||||
// is still no longer in the DOM. nsXBLService::LoadBinding tears
|
|
||||||
// down the old binding if the element is inserted back into the
|
|
||||||
// DOM and loads a different binding.
|
|
||||||
if (!mContent->IsInComposedDoc()) {
|
|
||||||
mManager->RemovedFromDocumentInternal(mContent, mDoc,
|
|
||||||
nsBindingManager::eRunDtor);
|
|
||||||
}
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool WillDetachFromShadowOnUnbind(const Element& aElement, bool aNullParent) {
|
bool WillDetachFromShadowOnUnbind(const Element& aElement, bool aNullParent) {
|
||||||
// If our parent still is in a shadow tree by now, and we're not removing
|
// If our parent still is in a shadow tree by now, and we're not removing
|
||||||
|
@ -1865,21 +1770,6 @@ void Element::UnbindFromTree(bool aNullParent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (document) {
|
if (document) {
|
||||||
#ifdef MOZ_XBL
|
|
||||||
if (HasFlag(NODE_MAY_BE_IN_BINDING_MNGR)) {
|
|
||||||
// Notify XBL- & nsIAnonymousContentCreator-generated anonymous content
|
|
||||||
// that the document is changing.
|
|
||||||
nsContentUtils::AddScriptRunner(new RemoveFromBindingManagerRunnable(
|
|
||||||
document->BindingManager(), this, document));
|
|
||||||
nsXBLBinding* binding =
|
|
||||||
document->BindingManager()->GetBindingWithContent(this);
|
|
||||||
if (binding) {
|
|
||||||
nsXBLBinding::UnbindAnonymousContent(document,
|
|
||||||
binding->GetAnonymousContent(),
|
|
||||||
/* aNullParent */ false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Disconnected must be enqueued whenever a connected custom element becomes
|
// Disconnected must be enqueued whenever a connected custom element becomes
|
||||||
// disconnected.
|
// disconnected.
|
||||||
|
@ -2409,14 +2299,6 @@ nsresult Element::SetAttrAndNotify(
|
||||||
oldValue = aOldValue;
|
oldValue = aOldValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
if (aComposedDocument) {
|
|
||||||
RefPtr<nsXBLBinding> binding = GetXBLBinding();
|
|
||||||
if (binding) {
|
|
||||||
binding->AttributeChanged(aName, aNamespaceID, false, aNotify);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (HasElementCreatedFromPrototypeAndHasUnmodifiedL10n() &&
|
if (HasElementCreatedFromPrototypeAndHasUnmodifiedL10n() &&
|
||||||
aNamespaceID == kNameSpaceID_None &&
|
aNamespaceID == kNameSpaceID_None &&
|
||||||
|
@ -2727,14 +2609,6 @@ nsresult Element::UnsetAttr(int32_t aNameSpaceID, nsAtom* aName, bool aNotify) {
|
||||||
|
|
||||||
PostIdMaybeChange(aNameSpaceID, aName, nullptr);
|
PostIdMaybeChange(aNameSpaceID, aName, nullptr);
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
if (document) {
|
|
||||||
RefPtr<nsXBLBinding> binding = GetXBLBinding();
|
|
||||||
if (binding) {
|
|
||||||
binding->AttributeChanged(aName, aNameSpaceID, true, aNotify);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CustomElementDefinition* definition = GetCustomElementDefinition();
|
CustomElementDefinition* definition = GetCustomElementDefinition();
|
||||||
// Only custom element which is in `custom` state could get the
|
// Only custom element which is in `custom` state could get the
|
||||||
|
@ -2856,52 +2730,6 @@ void Element::List(FILE* out, int32_t aIndent, const nsCString& aPrefix) const {
|
||||||
|
|
||||||
fputs(">\n", out);
|
fputs(">\n", out);
|
||||||
|
|
||||||
# ifdef MOZ_XBL
|
|
||||||
Element* nonConstThis = const_cast<Element*>(this);
|
|
||||||
|
|
||||||
// XXX sXBL/XBL2 issue! Owner or current document?
|
|
||||||
Document* document = OwnerDoc();
|
|
||||||
|
|
||||||
// Note: not listing nsIAnonymousContentCreator-created content...
|
|
||||||
|
|
||||||
nsBindingManager* bindingManager = document->BindingManager();
|
|
||||||
nsINodeList* anonymousChildren =
|
|
||||||
bindingManager->GetAnonymousNodesFor(nonConstThis);
|
|
||||||
|
|
||||||
if (anonymousChildren) {
|
|
||||||
uint32_t length = anonymousChildren->Length();
|
|
||||||
|
|
||||||
for (indent = aIndent; --indent >= 0;) fputs(" ", out);
|
|
||||||
fputs("anonymous-children<\n", out);
|
|
||||||
|
|
||||||
for (uint32_t i = 0; i < length; ++i) {
|
|
||||||
nsIContent* child = anonymousChildren->Item(i);
|
|
||||||
child->List(out, aIndent + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (indent = aIndent; --indent >= 0;) fputs(" ", out);
|
|
||||||
fputs(">\n", out);
|
|
||||||
|
|
||||||
bool outHeader = false;
|
|
||||||
ExplicitChildIterator iter(nonConstThis);
|
|
||||||
for (nsIContent* child = iter.GetNextChild(); child;
|
|
||||||
child = iter.GetNextChild()) {
|
|
||||||
if (!outHeader) {
|
|
||||||
outHeader = true;
|
|
||||||
|
|
||||||
for (indent = aIndent; --indent >= 0;) fputs(" ", out);
|
|
||||||
fputs("content-list<\n", out);
|
|
||||||
}
|
|
||||||
|
|
||||||
child->List(out, aIndent + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (outHeader) {
|
|
||||||
for (indent = aIndent; --indent >= 0;) fputs(" ", out);
|
|
||||||
fputs(">\n", out);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Element::DumpContent(FILE* out, int32_t aIndent, bool aDumpAll) const {
|
void Element::DumpContent(FILE* out, int32_t aIndent, bool aDumpAll) const {
|
||||||
|
@ -3922,12 +3750,6 @@ void Element::GetCustomInterface(nsGetterAddRefs<T> aResult) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// Otherwise, check the binding manager to see if it implements the interface
|
|
||||||
// for this element.
|
|
||||||
OwnerDoc()->BindingManager()->GetBindingImplementation(
|
|
||||||
this, NS_GET_TEMPLATE_IID(T), aResult);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Element::ClearServoData(Document* aDoc) {
|
void Element::ClearServoData(Document* aDoc) {
|
||||||
|
|
|
@ -224,23 +224,6 @@ class Element : public FragmentOrElement {
|
||||||
*/
|
*/
|
||||||
void SetTabIndex(int32_t aTabIndex, mozilla::ErrorResult& aError);
|
void SetTabIndex(int32_t aTabIndex, mozilla::ErrorResult& aError);
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
/**
|
|
||||||
* Sets or unsets an XBL binding for this element. Setting a
|
|
||||||
* binding on an element that already has a binding will remove the
|
|
||||||
* old binding.
|
|
||||||
*
|
|
||||||
* @param aBinding The binding to bind to this content. If nullptr is
|
|
||||||
* provided as the argument, then existing binding will be
|
|
||||||
* removed.
|
|
||||||
*
|
|
||||||
* @param aOldBindingManager The old binding manager that contains
|
|
||||||
* this content if this content was adopted
|
|
||||||
* to another document.
|
|
||||||
*/
|
|
||||||
void SetXBLBinding(nsXBLBinding* aBinding,
|
|
||||||
nsBindingManager* aOldBindingManager = nullptr);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the ShadowRoot binding for this element. The contents of the
|
* Sets the ShadowRoot binding for this element. The contents of the
|
||||||
|
@ -1975,21 +1958,6 @@ class Element : public FragmentOrElement {
|
||||||
AttrArray mAttrs;
|
AttrArray mAttrs;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
class RemoveFromBindingManagerRunnable : public mozilla::Runnable {
|
|
||||||
public:
|
|
||||||
RemoveFromBindingManagerRunnable(nsBindingManager* aManager,
|
|
||||||
nsIContent* aContent, Document* aDoc);
|
|
||||||
|
|
||||||
NS_IMETHOD Run() override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual ~RemoveFromBindingManagerRunnable();
|
|
||||||
RefPtr<nsBindingManager> mManager;
|
|
||||||
RefPtr<nsIContent> mContent;
|
|
||||||
RefPtr<Document> mDoc;
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
NS_DEFINE_STATIC_IID_ACCESSOR(Element, NS_ELEMENT_IID)
|
NS_DEFINE_STATIC_IID_ACCESSOR(Element, NS_ELEMENT_IID)
|
||||||
|
|
||||||
|
|
|
@ -69,11 +69,6 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "nsFrameLoader.h"
|
#include "nsFrameLoader.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsXBLPrototypeBinding.h"
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
# include "nsXBLBinding.h"
|
|
||||||
#endif
|
|
||||||
#include "nsPIDOMWindow.h"
|
#include "nsPIDOMWindow.h"
|
||||||
#include "nsSVGUtils.h"
|
#include "nsSVGUtils.h"
|
||||||
#include "nsLayoutUtils.h"
|
#include "nsLayoutUtils.h"
|
||||||
|
@ -684,11 +679,6 @@ void FragmentOrElement::nsExtendedDOMSlots::TraverseExtendedSlots(
|
||||||
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mExtendedSlots->mShadowRoot");
|
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mExtendedSlots->mShadowRoot");
|
||||||
aCb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mShadowRoot));
|
aCb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mShadowRoot));
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mExtendedSlots->mXBLBinding");
|
|
||||||
aCb.NoteNativeChild(mXBLBinding,
|
|
||||||
NS_CYCLE_COLLECTION_PARTICIPANT(nsXBLBinding));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (mCustomElementData) {
|
if (mCustomElementData) {
|
||||||
mCustomElementData->Traverse(aCb);
|
mCustomElementData->Traverse(aCb);
|
||||||
|
@ -723,13 +713,6 @@ size_t FragmentOrElement::nsExtendedDOMSlots::SizeOfExcludingThis(
|
||||||
// mShadowRoot should be handled during normal DOM tree memory reporting, just
|
// mShadowRoot should be handled during normal DOM tree memory reporting, just
|
||||||
// like kids, siblings, etc.
|
// like kids, siblings, etc.
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// We don't seem to have memory reporting for nsXBLBinding. At least
|
|
||||||
// report the memory it's using directly.
|
|
||||||
if (mXBLBinding) {
|
|
||||||
n += aMallocSizeOf(mXBLBinding);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (mCustomElementData) {
|
if (mCustomElementData) {
|
||||||
n += mCustomElementData->SizeOfIncludingThis(aMallocSizeOf);
|
n += mCustomElementData->SizeOfIncludingThis(aMallocSizeOf);
|
||||||
|
@ -1091,13 +1074,6 @@ bool FragmentOrElement::IsLink(nsIURI** aURI) const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsXBLBinding* FragmentOrElement::DoGetXBLBinding() const {
|
|
||||||
MOZ_ASSERT(HasFlag(NODE_MAY_BE_IN_BINDING_MNGR));
|
|
||||||
const nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
|
|
||||||
return slots ? slots->mXBLBinding.get() : nullptr;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
nsIContent* nsIContent::GetContainingShadowHost() const {
|
nsIContent* nsIContent::GetContainingShadowHost() const {
|
||||||
if (mozilla::dom::ShadowRoot* shadow = GetContainingShadow()) {
|
if (mozilla::dom::ShadowRoot* shadow = GetContainingShadow()) {
|
||||||
|
@ -1169,11 +1145,6 @@ void FragmentOrElement::DestroyContent() {
|
||||||
AsElement()->ClearServoData();
|
AsElement()->ClearServoData();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
Document* document = OwnerDoc();
|
|
||||||
document->BindingManager()->RemovedFromDocument(this, document,
|
|
||||||
nsBindingManager::eRunDtor);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
uint32_t oldChildCount = GetChildCount();
|
uint32_t oldChildCount = GetChildCount();
|
||||||
|
@ -1380,11 +1351,6 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(FragmentOrElement)
|
||||||
tmp->ExtendedDOMSlots()->mShadowRoot = nullptr;
|
tmp->ExtendedDOMSlots()->mShadowRoot = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
Document* doc = tmp->OwnerDoc();
|
|
||||||
doc->BindingManager()->RemovedFromDocument(tmp, doc,
|
|
||||||
nsBindingManager::eDoNotRunDtor);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||||
|
|
||||||
|
@ -1610,11 +1576,6 @@ bool NodeHasActiveFrame(Document* aCurrentDoc, nsINode* aNode) {
|
||||||
aNode->AsElement()->GetPrimaryFrame();
|
aNode->AsElement()->GetPrimaryFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
bool OwnedByBindingManager(Document* aCurrentDoc, nsINode* aNode) {
|
|
||||||
return aNode->IsElement() && aNode->AsElement()->GetXBLBinding();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// CanSkip checks if aNode is known-live, and if it is, returns true. If aNode
|
// CanSkip checks if aNode is known-live, and if it is, returns true. If aNode
|
||||||
// is in a known-live DOM tree, CanSkip may also remove other objects from
|
// is in a known-live DOM tree, CanSkip may also remove other objects from
|
||||||
|
@ -1632,9 +1593,6 @@ bool FragmentOrElement::CanSkip(nsINode* aNode, bool aRemovingAllowed) {
|
||||||
Document* currentDoc = aNode->GetComposedDoc();
|
Document* currentDoc = aNode->GetComposedDoc();
|
||||||
if (currentDoc && IsCertainlyAliveNode(aNode, currentDoc) &&
|
if (currentDoc && IsCertainlyAliveNode(aNode, currentDoc) &&
|
||||||
(!unoptimizable || NodeHasActiveFrame(currentDoc, aNode)
|
(!unoptimizable || NodeHasActiveFrame(currentDoc, aNode)
|
||||||
#ifdef MOZ_XBL
|
|
||||||
|| OwnedByBindingManager(currentDoc, aNode)
|
|
||||||
#endif
|
|
||||||
)) {
|
)) {
|
||||||
MarkNodeChildren(aNode);
|
MarkNodeChildren(aNode);
|
||||||
return true;
|
return true;
|
||||||
|
@ -1838,9 +1796,6 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INTERNAL(FragmentOrElement)
|
||||||
return NS_SUCCESS_INTERRUPTED_TRAVERSE;
|
return NS_SUCCESS_INTERRUPTED_TRAVERSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
tmp->OwnerDoc()->BindingManager()->Traverse(tmp, cb);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Check that whenever we have effect properties, MayHaveAnimations is set.
|
// Check that whenever we have effect properties, MayHaveAnimations is set.
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
|
|
@ -20,9 +20,6 @@
|
||||||
#include "nsIContent.h" // base class
|
#include "nsIContent.h" // base class
|
||||||
#include "nsIHTMLCollection.h"
|
#include "nsIHTMLCollection.h"
|
||||||
#include "nsDataHashtable.h"
|
#include "nsDataHashtable.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsXBLBinding.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class ContentUnbinder;
|
class ContentUnbinder;
|
||||||
class nsContentList;
|
class nsContentList;
|
||||||
|
@ -101,9 +98,6 @@ class FragmentOrElement : public nsIContent {
|
||||||
virtual uint32_t TextLength() const override;
|
virtual uint32_t TextLength() const override;
|
||||||
virtual bool TextIsOnlyWhitespace() override;
|
virtual bool TextIsOnlyWhitespace() override;
|
||||||
virtual bool ThreadSafeTextIsOnlyWhitespace() const override;
|
virtual bool ThreadSafeTextIsOnlyWhitespace() const override;
|
||||||
#ifdef MOZ_XBL
|
|
||||||
virtual nsXBLBinding* DoGetXBLBinding() const override;
|
|
||||||
#endif
|
|
||||||
virtual bool IsLink(nsIURI** aURI) const override;
|
virtual bool IsLink(nsIURI** aURI) const override;
|
||||||
|
|
||||||
virtual void DestroyContent() override;
|
virtual void DestroyContent() override;
|
||||||
|
@ -196,12 +190,6 @@ class FragmentOrElement : public nsIContent {
|
||||||
*/
|
*/
|
||||||
RefPtr<ShadowRoot> mShadowRoot;
|
RefPtr<ShadowRoot> mShadowRoot;
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
/**
|
|
||||||
* XBL binding installed on the element.
|
|
||||||
*/
|
|
||||||
RefPtr<nsXBLBinding> mXBLBinding;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Web components custom element data.
|
* Web components custom element data.
|
||||||
|
|
|
@ -10,10 +10,6 @@
|
||||||
#include "nsContentUtils.h"
|
#include "nsContentUtils.h"
|
||||||
#include "nsIURI.h"
|
#include "nsIURI.h"
|
||||||
#include "nsIReferrerInfo.h"
|
#include "nsIReferrerInfo.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
# include "nsXBLPrototypeBinding.h"
|
|
||||||
#endif
|
|
||||||
#include "nsEscape.h"
|
#include "nsEscape.h"
|
||||||
#include "nsCycleCollectionParticipant.h"
|
#include "nsCycleCollectionParticipant.h"
|
||||||
|
|
||||||
|
@ -65,10 +61,6 @@ void IDTracker::ResetToURIFragmentID(nsIContent* aFromContent, nsIURI* aURI,
|
||||||
|
|
||||||
nsIContent* bindingParent = aFromContent->GetBindingParent();
|
nsIContent* bindingParent = aFromContent->GetBindingParent();
|
||||||
if (bindingParent && !aFromContent->IsInShadowTree()) {
|
if (bindingParent && !aFromContent->IsInShadowTree()) {
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsXBLBinding* binding = bindingParent->GetXBLBinding();
|
|
||||||
if (!binding) {
|
|
||||||
#endif
|
|
||||||
// This happens, for example, if aFromContent is part of the content
|
// This happens, for example, if aFromContent is part of the content
|
||||||
// inserted by a call to Document::InsertAnonymousContent, which we
|
// inserted by a call to Document::InsertAnonymousContent, which we
|
||||||
// also want to handle. (It also happens for <use>'s anonymous
|
// also want to handle. (It also happens for <use>'s anonymous
|
||||||
|
@ -81,37 +73,6 @@ void IDTracker::ResetToURIFragmentID(nsIContent* aFromContent, nsIURI* aURI,
|
||||||
// here.
|
// here.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#ifdef MOZ_XBL
|
|
||||||
} else {
|
|
||||||
bool isEqualExceptRef;
|
|
||||||
rv = aURI->EqualsExceptRef(binding->PrototypeBinding()->DocURI(),
|
|
||||||
&isEqualExceptRef);
|
|
||||||
if (NS_SUCCEEDED(rv) && isEqualExceptRef) {
|
|
||||||
// XXX sXBL/XBL2 issue
|
|
||||||
// Our content is an anonymous XBL element from a binding inside the
|
|
||||||
// same document that the referenced URI points to. In order to avoid
|
|
||||||
// the risk of ID collisions we restrict ourselves to anonymous
|
|
||||||
// elements from this binding; specifically, URIs that are relative to
|
|
||||||
// the binding document should resolve to the copy of the target
|
|
||||||
// element that has been inserted into the bound document.
|
|
||||||
// If the URI points to a different document we don't need this
|
|
||||||
// restriction.
|
|
||||||
nsINodeList* anonymousChildren =
|
|
||||||
doc->BindingManager()->GetAnonymousNodesFor(bindingParent);
|
|
||||||
|
|
||||||
if (anonymousChildren) {
|
|
||||||
uint32_t length = anonymousChildren->Length();
|
|
||||||
for (uint32_t i = 0; i < length && !mElement; ++i) {
|
|
||||||
mElement =
|
|
||||||
nsContentUtils::MatchElementId(anonymousChildren->Item(i), ref);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// We don't have watching working yet for XBL, so bail out here.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isEqualExceptRef;
|
bool isEqualExceptRef;
|
||||||
|
|
|
@ -23,9 +23,6 @@
|
||||||
#ifdef MOZ_XUL
|
#ifdef MOZ_XUL
|
||||||
# include "nsXULElement.h"
|
# include "nsXULElement.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
#endif
|
|
||||||
#include "nsGenericHTMLElement.h"
|
#include "nsGenericHTMLElement.h"
|
||||||
#include "mozilla/AnimationTarget.h"
|
#include "mozilla/AnimationTarget.h"
|
||||||
#include "mozilla/Assertions.h"
|
#include "mozilla/Assertions.h"
|
||||||
|
@ -56,14 +53,9 @@ enum class IsRemoveNotification {
|
||||||
# define COMPOSED_DOC_DECL
|
# define COMPOSED_DOC_DECL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# define CALL_BINDING_MANAGER(func_, params_) \
|
|
||||||
doc->BindingManager()->func_ params_
|
|
||||||
#else
|
|
||||||
# define CALL_BINDING_MANAGER(func_, params_) \
|
# define CALL_BINDING_MANAGER(func_, params_) \
|
||||||
do { \
|
do { \
|
||||||
} while (0)
|
} while (0)
|
||||||
#endif
|
|
||||||
|
|
||||||
// This macro expects the ownerDocument of content_ to be in scope as
|
// This macro expects the ownerDocument of content_ to be in scope as
|
||||||
// |Document* doc|
|
// |Document* doc|
|
||||||
|
|
|
@ -12,9 +12,6 @@
|
||||||
#include "nsContentUtils.h"
|
#include "nsContentUtils.h"
|
||||||
#include "nsIStyleSheetLinkingElement.h"
|
#include "nsIStyleSheetLinkingElement.h"
|
||||||
#include "nsWindowSizes.h"
|
#include "nsWindowSizes.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsXBLPrototypeBinding.h"
|
|
||||||
#endif
|
|
||||||
#include "mozilla/dom/DirectionalityUtils.h"
|
#include "mozilla/dom/DirectionalityUtils.h"
|
||||||
#include "mozilla/dom/Element.h"
|
#include "mozilla/dom/Element.h"
|
||||||
#include "mozilla/dom/HTMLSlotElement.h"
|
#include "mozilla/dom/HTMLSlotElement.h"
|
||||||
|
|
|
@ -116,9 +116,6 @@
|
||||||
#include "nsAttrName.h"
|
#include "nsAttrName.h"
|
||||||
#include "nsAttrValue.h"
|
#include "nsAttrValue.h"
|
||||||
#include "nsAttrValueInlines.h"
|
#include "nsAttrValueInlines.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
#endif
|
|
||||||
#include "nsCanvasFrame.h"
|
#include "nsCanvasFrame.h"
|
||||||
#include "nsCaret.h"
|
#include "nsCaret.h"
|
||||||
#include "nsCCUncollectableMarker.h"
|
#include "nsCCUncollectableMarker.h"
|
||||||
|
@ -2151,13 +2148,7 @@ bool nsContentUtils::ThreadsafeIsSystemCaller(JSContext* aCx) {
|
||||||
bool nsContentUtils::LookupBindingMember(
|
bool nsContentUtils::LookupBindingMember(
|
||||||
JSContext* aCx, nsIContent* aContent, JS::Handle<jsid> aId,
|
JSContext* aCx, nsIContent* aContent, JS::Handle<jsid> aId,
|
||||||
JS::MutableHandle<JS::PropertyDescriptor> aDesc) {
|
JS::MutableHandle<JS::PropertyDescriptor> aDesc) {
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsXBLBinding* binding = aContent->GetXBLBinding();
|
|
||||||
if (!binding) return true;
|
|
||||||
return binding->LookupMember(aCx, aId, aDesc);
|
|
||||||
#else
|
|
||||||
return true;
|
return true;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
|
|
|
@ -35,9 +35,6 @@
|
||||||
#include "nsIPrincipal.h"
|
#include "nsIPrincipal.h"
|
||||||
#include "nsIObserverService.h"
|
#include "nsIObserverService.h"
|
||||||
#include "nsIObjectFrame.h"
|
#include "nsIObjectFrame.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
#endif
|
|
||||||
#include "BrowserChild.h"
|
#include "BrowserChild.h"
|
||||||
#include "nsFrameLoader.h"
|
#include "nsFrameLoader.h"
|
||||||
#include "nsHTMLDocument.h"
|
#include "nsHTMLDocument.h"
|
||||||
|
|
|
@ -184,10 +184,6 @@
|
||||||
#include "nsNetCID.h"
|
#include "nsNetCID.h"
|
||||||
#include "nsIArray.h"
|
#include "nsIArray.h"
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
# include "nsXBLService.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "nsIDragService.h"
|
#include "nsIDragService.h"
|
||||||
#include "mozilla/dom/Element.h"
|
#include "mozilla/dom/Element.h"
|
||||||
|
@ -2008,13 +2004,6 @@ nsresult nsGlobalWindowInner::PostHandleEvent(EventChainPostVisitor& aVisitor) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// Execute bindingdetached handlers before we tear ourselves
|
|
||||||
// down.
|
|
||||||
if (mDoc) {
|
|
||||||
mDoc->BindingManager()->ExecuteDetachedHandlers();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
mIsDocumentLoaded = false;
|
mIsDocumentLoaded = false;
|
||||||
} else if (aVisitor.mEvent->mMessage == eLoad &&
|
} else if (aVisitor.mEvent->mMessage == eLoad &&
|
||||||
aVisitor.mEvent->IsTrusted()) {
|
aVisitor.mEvent->IsTrusted()) {
|
||||||
|
|
|
@ -178,10 +178,6 @@
|
||||||
#include "nsIDOMXULCommandDispatcher.h"
|
#include "nsIDOMXULCommandDispatcher.h"
|
||||||
|
|
||||||
#include "mozilla/GlobalKeyListener.h"
|
#include "mozilla/GlobalKeyListener.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
# include "nsXBLService.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "nsIDragService.h"
|
#include "nsIDragService.h"
|
||||||
#include "mozilla/dom/Element.h"
|
#include "mozilla/dom/Element.h"
|
||||||
|
|
|
@ -21,9 +21,6 @@ class nsAttrValue;
|
||||||
class nsAttrName;
|
class nsAttrName;
|
||||||
class nsTextFragment;
|
class nsTextFragment;
|
||||||
class nsIFrame;
|
class nsIFrame;
|
||||||
#ifdef MOZ_XBL
|
|
||||||
class nsXBLBinding;
|
|
||||||
#endif
|
|
||||||
class nsITextControlElement;
|
class nsITextControlElement;
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
|
@ -397,22 +394,6 @@ class nsIContent : public nsINode {
|
||||||
return slots ? slots->mBindingParent.get() : nullptr;
|
return slots ? slots->mBindingParent.get() : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
/**
|
|
||||||
* Gets the current XBL binding that is bound to this element.
|
|
||||||
*
|
|
||||||
* @return the current binding.
|
|
||||||
*/
|
|
||||||
nsXBLBinding* GetXBLBinding() const {
|
|
||||||
if (!HasFlag(NODE_MAY_BE_IN_BINDING_MNGR)) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
return DoGetXBLBinding();
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual nsXBLBinding* DoGetXBLBinding() const = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the ShadowRoot binding for this element.
|
* Gets the ShadowRoot binding for this element.
|
||||||
|
|
|
@ -9,9 +9,6 @@
|
||||||
|
|
||||||
#include "nsIContent.h"
|
#include "nsIContent.h"
|
||||||
#include "mozilla/dom/Document.h"
|
#include "mozilla/dom/Document.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
#endif
|
|
||||||
#include "nsContentUtils.h"
|
#include "nsContentUtils.h"
|
||||||
#include "nsAtom.h"
|
#include "nsAtom.h"
|
||||||
#include "nsIFrame.h"
|
#include "nsIFrame.h"
|
||||||
|
@ -120,21 +117,6 @@ static inline nsINode* GetFlattenedTreeParentNode(const nsINode* aNode) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
if (content->HasFlag(NODE_MAY_BE_IN_BINDING_MNGR) ||
|
|
||||||
parent->HasFlag(NODE_MAY_BE_IN_BINDING_MNGR)) {
|
|
||||||
if (nsIContent* xblInsertionPoint = content->GetXBLInsertionPoint()) {
|
|
||||||
return xblInsertionPoint->GetParent();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parent->OwnerDoc()->BindingManager()->GetBindingWithContent(
|
|
||||||
parentAsContent)) {
|
|
||||||
// This is an unassigned node child of the bound element, so it isn't part
|
|
||||||
// of the flat tree.
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
MOZ_ASSERT(!parentAsContent->IsActiveChildrenElement(),
|
MOZ_ASSERT(!parentAsContent->IsActiveChildrenElement(),
|
||||||
"<xbl:children> isn't in the flattened tree");
|
"<xbl:children> isn't in the flattened tree");
|
||||||
|
|
|
@ -94,11 +94,6 @@
|
||||||
#include "nsSVGUtils.h"
|
#include "nsSVGUtils.h"
|
||||||
#include "nsTextNode.h"
|
#include "nsTextNode.h"
|
||||||
#include "nsUnicharUtils.h"
|
#include "nsUnicharUtils.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
# include "nsXBLBinding.h"
|
|
||||||
# include "nsXBLPrototypeBinding.h"
|
|
||||||
#endif
|
|
||||||
#include "nsWindowSizes.h"
|
#include "nsWindowSizes.h"
|
||||||
#include "mozilla/Preferences.h"
|
#include "mozilla/Preferences.h"
|
||||||
#include "xpcpublic.h"
|
#include "xpcpublic.h"
|
||||||
|
@ -536,11 +531,6 @@ void nsINode::LastRelease() {
|
||||||
UnsetFlags(NODE_HAS_LISTENERMANAGER);
|
UnsetFlags(NODE_HAS_LISTENERMANAGER);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
NS_ASSERTION(
|
|
||||||
!Element::FromNode(this) || !Element::FromNode(this)->GetXBLBinding(),
|
|
||||||
"Node has binding on destruction");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ReleaseWrapper(this);
|
ReleaseWrapper(this);
|
||||||
|
|
||||||
|
|
|
@ -30,9 +30,6 @@
|
||||||
#include "xpcpublic.h"
|
#include "xpcpublic.h"
|
||||||
#include "nsContentUtils.h"
|
#include "nsContentUtils.h"
|
||||||
#include "nsGlobalWindow.h"
|
#include "nsGlobalWindow.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsXBLPrototypeBinding.h"
|
|
||||||
#endif
|
|
||||||
#include "mozilla/CycleCollectedJSContext.h"
|
#include "mozilla/CycleCollectedJSContext.h"
|
||||||
#include "mozilla/StaticPrefs_browser.h"
|
#include "mozilla/StaticPrefs_browser.h"
|
||||||
#include "mozilla/dom/BindingUtils.h"
|
#include "mozilla/dom/BindingUtils.h"
|
||||||
|
@ -620,30 +617,6 @@ bool nsJSUtils::GetScopeChainForElement(
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
/* static */
|
|
||||||
bool nsJSUtils::GetScopeChainForXBL(
|
|
||||||
JSContext* aCx, Element* aElement,
|
|
||||||
const nsXBLPrototypeBinding& aProtoBinding,
|
|
||||||
JS::MutableHandleVector<JSObject*> aScopeChain) {
|
|
||||||
if (!aElement) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!aProtoBinding.SimpleScopeChain()) {
|
|
||||||
return GetScopeChainForElement(aCx, aElement, aScopeChain);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!AddScopeChainItem(aCx, aElement, aScopeChain)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!AddScopeChainItem(aCx, aElement->OwnerDoc(), aScopeChain)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* static */
|
/* static */
|
||||||
void nsJSUtils::ResetTimeZone() { JS::ResetTimeZone(); }
|
void nsJSUtils::ResetTimeZone() { JS::ResetTimeZone(); }
|
||||||
|
|
|
@ -241,18 +241,6 @@ class nsJSUtils {
|
||||||
JSContext* aCx, mozilla::dom::Element* aElement,
|
JSContext* aCx, mozilla::dom::Element* aElement,
|
||||||
JS::MutableHandleVector<JSObject*> aScopeChain);
|
JS::MutableHandleVector<JSObject*> aScopeChain);
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// Returns a scope chain suitable for XBL execution.
|
|
||||||
//
|
|
||||||
// This is by default GetScopeChainForElemenet, but will be different if the
|
|
||||||
// <binding> element had the simpleScopeChain attribute.
|
|
||||||
//
|
|
||||||
// This is to prevent footguns like bug 1446342.
|
|
||||||
static bool GetScopeChainForXBL(
|
|
||||||
JSContext* aCx, mozilla::dom::Element* aBoundElement,
|
|
||||||
const nsXBLPrototypeBinding& aProtoBinding,
|
|
||||||
JS::MutableHandleVector<JSObject*> aScopeChain);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void ResetTimeZone();
|
static void ResetTimeZone();
|
||||||
|
|
||||||
|
|
|
@ -21,9 +21,6 @@
|
||||||
#include "nsString.h"
|
#include "nsString.h"
|
||||||
#include "mozilla/dom/NodeInfo.h"
|
#include "mozilla/dom/NodeInfo.h"
|
||||||
#include "mozilla/ClearOnShutdown.h"
|
#include "mozilla/ClearOnShutdown.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "mozilla/dom/XBLChildrenElement.h"
|
|
||||||
#endif
|
|
||||||
#include "mozilla/dom/Element.h"
|
#include "mozilla/dom/Element.h"
|
||||||
#include "mozilla/Preferences.h"
|
#include "mozilla/Preferences.h"
|
||||||
|
|
||||||
|
@ -205,12 +202,6 @@ nsresult NS_NewElement(Element** aResult,
|
||||||
ni->NodeType(), ni->GetExtraName());
|
ni->NodeType(), ni->GetExtraName());
|
||||||
return NS_NewXMLElement(aResult, genericXMLNI.forget());
|
return NS_NewXMLElement(aResult, genericXMLNI.forget());
|
||||||
}
|
}
|
||||||
#ifdef MOZ_XBL
|
|
||||||
if (ns == kNameSpaceID_XBL && ni->Equals(nsGkAtoms::children)) {
|
|
||||||
NS_ADDREF(*aResult = new XBLChildrenElement(ni.forget()));
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return NS_NewXMLElement(aResult, ni.forget());
|
return NS_NewXMLElement(aResult, ni.forget());
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,9 +25,6 @@
|
||||||
#include "nsGkAtoms.h"
|
#include "nsGkAtoms.h"
|
||||||
#include "nsComponentManagerUtils.h"
|
#include "nsComponentManagerUtils.h"
|
||||||
#include "nsLayoutStatics.h"
|
#include "nsLayoutStatics.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
#endif
|
|
||||||
#include "nsHashKeys.h"
|
#include "nsHashKeys.h"
|
||||||
#include "nsCCUncollectableMarker.h"
|
#include "nsCCUncollectableMarker.h"
|
||||||
#include "nsNameSpaceManager.h"
|
#include "nsNameSpaceManager.h"
|
||||||
|
@ -60,9 +57,6 @@ nsNodeInfoManager::~nsNodeInfoManager() {
|
||||||
// Note: mPrincipal may be null here if we never got inited correctly
|
// Note: mPrincipal may be null here if we never got inited correctly
|
||||||
mPrincipal = nullptr;
|
mPrincipal = nullptr;
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
mBindingManager = nullptr;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (gNodeInfoManagerLeakPRLog)
|
if (gNodeInfoManagerLeakPRLog)
|
||||||
MOZ_LOG(gNodeInfoManagerLeakPRLog, LogLevel::Debug,
|
MOZ_LOG(gNodeInfoManagerLeakPRLog, LogLevel::Debug,
|
||||||
|
@ -78,9 +72,6 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsNodeInfoManager)
|
||||||
if (tmp->mNonDocumentNodeInfos) {
|
if (tmp->mNonDocumentNodeInfos) {
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_RAWPTR(mDocument)
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_RAWPTR(mDocument)
|
||||||
}
|
}
|
||||||
#ifdef MOZ_XBL
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mBindingManager)
|
|
||||||
#endif
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(nsNodeInfoManager, AddRef)
|
NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(nsNodeInfoManager, AddRef)
|
||||||
|
@ -112,11 +103,6 @@ nsresult nsNodeInfoManager::Init(mozilla::dom::Document* aDocument) {
|
||||||
|
|
||||||
mPrincipal = NullPrincipal::CreateWithoutOriginAttributes();
|
mPrincipal = NullPrincipal::CreateWithoutOriginAttributes();
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
if (aDocument) {
|
|
||||||
mBindingManager = new nsBindingManager(aDocument);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
mDefaultPrincipal = mPrincipal;
|
mDefaultPrincipal = mPrincipal;
|
||||||
|
|
||||||
|
@ -130,11 +116,6 @@ nsresult nsNodeInfoManager::Init(mozilla::dom::Document* aDocument) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void nsNodeInfoManager::DropDocumentReference() {
|
void nsNodeInfoManager::DropDocumentReference() {
|
||||||
#ifdef MOZ_XBL
|
|
||||||
if (mBindingManager) {
|
|
||||||
mBindingManager->DropDocumentReference();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// This is probably not needed anymore.
|
// This is probably not needed anymore.
|
||||||
for (auto iter = mNodeInfoHash.Iter(); !iter.Done(); iter.Next()) {
|
for (auto iter = mNodeInfoHash.Iter(); !iter.Done(); iter.Next()) {
|
||||||
|
@ -377,12 +358,6 @@ bool nsNodeInfoManager::InternalMathMLEnabled() {
|
||||||
void nsNodeInfoManager::AddSizeOfIncludingThis(nsWindowSizes& aSizes) const {
|
void nsNodeInfoManager::AddSizeOfIncludingThis(nsWindowSizes& aSizes) const {
|
||||||
aSizes.mDOMOtherSize += aSizes.mState.mMallocSizeOf(this);
|
aSizes.mDOMOtherSize += aSizes.mState.mMallocSizeOf(this);
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
if (mBindingManager) {
|
|
||||||
aSizes.mBindingsSize +=
|
|
||||||
mBindingManager->SizeOfIncludingThis(aSizes.mState.mMallocSizeOf);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Measurement of the following members may be added later if DMD finds it
|
// Measurement of the following members may be added later if DMD finds it
|
||||||
// is worthwhile:
|
// is worthwhile:
|
||||||
|
|
|
@ -19,9 +19,6 @@
|
||||||
#include "nsDataHashtable.h"
|
#include "nsDataHashtable.h"
|
||||||
#include "nsStringFwd.h"
|
#include "nsStringFwd.h"
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
class nsBindingManager;
|
|
||||||
#endif
|
|
||||||
class nsAtom;
|
class nsAtom;
|
||||||
class nsIPrincipal;
|
class nsIPrincipal;
|
||||||
class nsWindowSizes;
|
class nsWindowSizes;
|
||||||
|
@ -100,9 +97,6 @@ class nsNodeInfoManager final {
|
||||||
|
|
||||||
void RemoveNodeInfo(mozilla::dom::NodeInfo* aNodeInfo);
|
void RemoveNodeInfo(mozilla::dom::NodeInfo* aNodeInfo);
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsBindingManager* GetBindingManager() const { return mBindingManager; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if SVG nodes in this document have real SVG semantics.
|
* Returns true if SVG nodes in this document have real SVG semantics.
|
||||||
|
@ -165,9 +159,6 @@ class nsNodeInfoManager final {
|
||||||
mCommentNodeInfo; // WEAK to avoid circular ownership
|
mCommentNodeInfo; // WEAK to avoid circular ownership
|
||||||
mozilla::dom::NodeInfo* MOZ_NON_OWNING_REF
|
mozilla::dom::NodeInfo* MOZ_NON_OWNING_REF
|
||||||
mDocumentNodeInfo; // WEAK to avoid circular ownership
|
mDocumentNodeInfo; // WEAK to avoid circular ownership
|
||||||
#ifdef MOZ_XBL
|
|
||||||
RefPtr<nsBindingManager> mBindingManager;
|
|
||||||
#endif
|
|
||||||
NodeInfoCache mRecentlyUsedNodeInfos;
|
NodeInfoCache mRecentlyUsedNodeInfos;
|
||||||
mozilla::Maybe<bool> mSVGEnabled; // Lazily initialized.
|
mozilla::Maybe<bool> mSVGEnabled; // Lazily initialized.
|
||||||
mozilla::Maybe<bool> mMathMLEnabled; // Lazily initialized.
|
mozilla::Maybe<bool> mMathMLEnabled; // Lazily initialized.
|
||||||
|
|
|
@ -64,9 +64,6 @@
|
||||||
#include "nsReadableUtils.h"
|
#include "nsReadableUtils.h"
|
||||||
#include "nsIFrame.h"
|
#include "nsIFrame.h"
|
||||||
#include "nsNodeInfoManager.h"
|
#include "nsNodeInfoManager.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsXBLBinding.h"
|
|
||||||
#endif
|
|
||||||
#include "nsXULTooltipListener.h"
|
#include "nsXULTooltipListener.h"
|
||||||
#include "mozilla/EventDispatcher.h"
|
#include "mozilla/EventDispatcher.h"
|
||||||
#include "mozAutoDocUpdate.h"
|
#include "mozAutoDocUpdate.h"
|
||||||
|
|
|
@ -198,21 +198,6 @@ nsresult nsXULPrototypeCache::PutScript(nsIURI* aURI,
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsXBLDocumentInfo* nsXULPrototypeCache::GetXBLDocumentInfo(nsIURI* aURL) {
|
|
||||||
return mXBLDocTable.GetWeak(aURL);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult nsXULPrototypeCache::PutXBLDocumentInfo(
|
|
||||||
nsXBLDocumentInfo* aDocumentInfo) {
|
|
||||||
nsIURI* uri = aDocumentInfo->DocumentURI();
|
|
||||||
nsXBLDocumentInfo* info = mXBLDocTable.GetWeak(uri);
|
|
||||||
if (!info) {
|
|
||||||
mXBLDocTable.Put(uri, aDocumentInfo);
|
|
||||||
}
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void nsXULPrototypeCache::FlushScripts() { mScriptTable.Clear(); }
|
void nsXULPrototypeCache::FlushScripts() { mScriptTable.Clear(); }
|
||||||
|
|
||||||
|
@ -220,9 +205,6 @@ void nsXULPrototypeCache::Flush() {
|
||||||
mPrototypeTable.Clear();
|
mPrototypeTable.Clear();
|
||||||
mScriptTable.Clear();
|
mScriptTable.Clear();
|
||||||
mStyleSheetTable.Clear();
|
mStyleSheetTable.Clear();
|
||||||
#ifdef MOZ_XBL
|
|
||||||
mXBLDocTable.Clear();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool nsXULPrototypeCache::IsEnabled() { return !gDisableXULCache; }
|
bool nsXULPrototypeCache::IsEnabled() { return !gDisableXULCache; }
|
||||||
|
@ -485,11 +467,6 @@ nsresult nsXULPrototypeCache::BeginCaching(nsIURI* aURI) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void nsXULPrototypeCache::MarkInCCGeneration(uint32_t aGeneration) {
|
void nsXULPrototypeCache::MarkInCCGeneration(uint32_t aGeneration) {
|
||||||
#ifdef MOZ_XBL
|
|
||||||
for (auto iter = mXBLDocTable.Iter(); !iter.Done(); iter.Next()) {
|
|
||||||
iter.Data()->MarkInCCGeneration(aGeneration);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
for (auto iter = mPrototypeTable.Iter(); !iter.Done(); iter.Next()) {
|
for (auto iter = mPrototypeTable.Iter(); !iter.Done(); iter.Next()) {
|
||||||
iter.Data()->MarkInCCGeneration(aGeneration);
|
iter.Data()->MarkInCCGeneration(aGeneration);
|
||||||
}
|
}
|
||||||
|
@ -515,16 +492,6 @@ static void ReportSize(const nsCString& aPath, size_t aAmount,
|
||||||
aData);
|
aData);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
static void AppendURIForMemoryReport(nsIURI* aUri, nsACString& aOutput) {
|
|
||||||
nsCString spec = aUri->GetSpecOrDefault();
|
|
||||||
// A hack: replace forward slashes with '\\' so they aren't
|
|
||||||
// treated as path separators. Users of the reporters
|
|
||||||
// (such as about:memory) have to undo this change.
|
|
||||||
spec.ReplaceChar('/', '\\');
|
|
||||||
aOutput += spec;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* static */
|
/* static */
|
||||||
void nsXULPrototypeCache::CollectMemoryReports(
|
void nsXULPrototypeCache::CollectMemoryReports(
|
||||||
|
@ -548,18 +515,6 @@ void nsXULPrototypeCache::CollectMemoryReports(
|
||||||
other += sInstance->mScriptTable.ShallowSizeOfExcludingThis(mallocSizeOf);
|
other += sInstance->mScriptTable.ShallowSizeOfExcludingThis(mallocSizeOf);
|
||||||
// TODO Report content inside mScriptTable?
|
// TODO Report content inside mScriptTable?
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
other += sInstance->mXBLDocTable.ShallowSizeOfExcludingThis(mallocSizeOf);
|
|
||||||
for (auto iter = sInstance->mXBLDocTable.ConstIter(); !iter.Done();
|
|
||||||
iter.Next()) {
|
|
||||||
nsAutoCString path;
|
|
||||||
path += "xbl-docs/(";
|
|
||||||
AppendURIForMemoryReport(iter.Key(), path);
|
|
||||||
path += ")";
|
|
||||||
size_t size = iter.UserData()->SizeOfIncludingThis(mallocSizeOf);
|
|
||||||
REPORT_SIZE(path, size, "Memory used by this XBL document.");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
other +=
|
other +=
|
||||||
sInstance->mStartupCacheURITable.ShallowSizeOfExcludingThis(mallocSizeOf);
|
sInstance->mStartupCacheURITable.ShallowSizeOfExcludingThis(mallocSizeOf);
|
||||||
|
|
|
@ -8,9 +8,6 @@
|
||||||
|
|
||||||
#include "nsCOMPtr.h"
|
#include "nsCOMPtr.h"
|
||||||
#include "nsIObserver.h"
|
#include "nsIObserver.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsXBLDocumentInfo.h"
|
|
||||||
#endif
|
|
||||||
#include "nsJSThingHashtable.h"
|
#include "nsJSThingHashtable.h"
|
||||||
#include "nsInterfaceHashtable.h"
|
#include "nsInterfaceHashtable.h"
|
||||||
#include "nsRefPtrHashtable.h"
|
#include "nsRefPtrHashtable.h"
|
||||||
|
@ -63,11 +60,6 @@ class nsXULPrototypeCache : public nsIObserver {
|
||||||
JSScript* GetScript(nsIURI* aURI);
|
JSScript* GetScript(nsIURI* aURI);
|
||||||
nsresult PutScript(nsIURI* aURI, JS::Handle<JSScript*> aScriptObject);
|
nsresult PutScript(nsIURI* aURI, JS::Handle<JSScript*> aScriptObject);
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsXBLDocumentInfo* GetXBLDocumentInfo(nsIURI* aURL);
|
|
||||||
|
|
||||||
nsresult PutXBLDocumentInfo(nsXBLDocumentInfo* aDocumentInfo);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a style sheet by URI. If the style sheet is not in the cache,
|
* Get a style sheet by URI. If the style sheet is not in the cache,
|
||||||
|
@ -119,17 +111,11 @@ class nsXULPrototypeCache : public nsIObserver {
|
||||||
static nsXULPrototypeCache* sInstance;
|
static nsXULPrototypeCache* sInstance;
|
||||||
|
|
||||||
using StyleSheetTable = nsRefPtrHashtable<nsURIHashKey, mozilla::StyleSheet>;
|
using StyleSheetTable = nsRefPtrHashtable<nsURIHashKey, mozilla::StyleSheet>;
|
||||||
#ifdef MOZ_XBL
|
|
||||||
using XBLDocTable = nsRefPtrHashtable<nsURIHashKey, nsXBLDocumentInfo>;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
nsRefPtrHashtable<nsURIHashKey, nsXULPrototypeDocument>
|
nsRefPtrHashtable<nsURIHashKey, nsXULPrototypeDocument>
|
||||||
mPrototypeTable; // owns the prototypes
|
mPrototypeTable; // owns the prototypes
|
||||||
StyleSheetTable mStyleSheetTable;
|
StyleSheetTable mStyleSheetTable;
|
||||||
nsJSThingHashtable<nsURIHashKey, JSScript*> mScriptTable;
|
nsJSThingHashtable<nsURIHashKey, JSScript*> mScriptTable;
|
||||||
#ifdef MOZ_XBL
|
|
||||||
XBLDocTable mXBLDocTable;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// URIs already written to the startup cache, to prevent double-caching.
|
// URIs already written to the startup cache, to prevent double-caching.
|
||||||
nsTHashtable<nsURIHashKey> mStartupCacheURITable;
|
nsTHashtable<nsURIHashKey> mStartupCacheURITable;
|
||||||
|
|
|
@ -194,9 +194,6 @@
|
||||||
#include "mozilla/StyleSheetInlines.h"
|
#include "mozilla/StyleSheetInlines.h"
|
||||||
#include "mozilla/dom/ImageTracker.h"
|
#include "mozilla/dom/ImageTracker.h"
|
||||||
#include "nsIDocShellTreeOwner.h"
|
#include "nsIDocShellTreeOwner.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
#endif
|
|
||||||
#include "nsClassHashtable.h"
|
#include "nsClassHashtable.h"
|
||||||
#include "nsHashKeys.h"
|
#include "nsHashKeys.h"
|
||||||
#include "VisualViewport.h"
|
#include "VisualViewport.h"
|
||||||
|
@ -1670,21 +1667,6 @@ void PresShell::EndObservingDocument() {
|
||||||
char* nsPresShell_ReflowStackPointerTop;
|
char* nsPresShell_ReflowStackPointerTop;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
class XBLConstructorRunner : public Runnable {
|
|
||||||
public:
|
|
||||||
explicit XBLConstructorRunner(Document* aDocument)
|
|
||||||
: Runnable("XBLConstructorRunner"), mDocument(aDocument) {}
|
|
||||||
|
|
||||||
NS_IMETHOD Run() override {
|
|
||||||
mDocument->BindingManager()->ProcessAttachedQueue();
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
RefPtr<Document> mDocument;
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
nsresult PresShell::Initialize() {
|
nsresult PresShell::Initialize() {
|
||||||
if (mIsDestroying) {
|
if (mIsDestroying) {
|
||||||
|
@ -1763,12 +1745,6 @@ nsresult PresShell::Initialize() {
|
||||||
// scope may have killed us too
|
// scope may have killed us too
|
||||||
NS_ENSURE_STATE(!mHaveShutDown);
|
NS_ENSURE_STATE(!mHaveShutDown);
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// Run the XBL binding constructors for any new frames we've constructed.
|
|
||||||
// (Do this in a script runner, since our caller might have a script
|
|
||||||
// blocker on the stack.)
|
|
||||||
nsContentUtils::AddScriptRunner(new XBLConstructorRunner(mDocument));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// XBLConstructorRunner might destroy us.
|
// XBLConstructorRunner might destroy us.
|
||||||
NS_ENSURE_STATE(!mHaveShutDown);
|
NS_ENSURE_STATE(!mHaveShutDown);
|
||||||
|
@ -2882,23 +2858,6 @@ static void AssertNoFramesInSubtree(nsIContent* aContent) {
|
||||||
for (nsINode* node : ShadowIncludingTreeIterator(*aContent)) {
|
for (nsINode* node : ShadowIncludingTreeIterator(*aContent)) {
|
||||||
nsIContent* c = nsIContent::FromNode(node);
|
nsIContent* c = nsIContent::FromNode(node);
|
||||||
MOZ_ASSERT(!c->GetPrimaryFrame());
|
MOZ_ASSERT(!c->GetPrimaryFrame());
|
||||||
# ifdef MOZ_XBL
|
|
||||||
if (auto* binding = c->GetXBLBinding()) {
|
|
||||||
if (auto* bindingWithContent = binding->GetBindingWithContent()) {
|
|
||||||
nsIContent* anonContent = bindingWithContent->GetAnonymousContent();
|
|
||||||
MOZ_ASSERT(!anonContent->GetPrimaryFrame());
|
|
||||||
|
|
||||||
// Need to do this instead of just AssertNoFramesInSubtree(anonContent),
|
|
||||||
// because the parent of the children of the <content> element isn't the
|
|
||||||
// <content> element, but the bound element, and that confuses
|
|
||||||
// GetNextNode a lot.
|
|
||||||
for (nsIContent* child = anonContent->GetFirstChild(); child;
|
|
||||||
child = child->GetNextSibling()) {
|
|
||||||
AssertNoFramesInSubtree(child);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -4117,14 +4076,6 @@ void PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush aFlush) {
|
||||||
mPresContext->RestyleManager()->ProcessPendingRestyles();
|
mPresContext->RestyleManager()->ProcessPendingRestyles();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// Process whatever XBL constructors those restyles queued up. This
|
|
||||||
// ensures that onload doesn't fire too early and that we won't do extra
|
|
||||||
// reflows after those constructors run.
|
|
||||||
if (MOZ_LIKELY(!mIsDestroying)) {
|
|
||||||
mDocument->BindingManager()->ProcessAttachedQueue();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Now those constructors or events might have posted restyle
|
// Now those constructors or events might have posted restyle
|
||||||
// events. At the same time, we still need up-to-date style data.
|
// events. At the same time, we still need up-to-date style data.
|
||||||
|
@ -9898,9 +9849,6 @@ bool PresShell::VerifyIncrementalReflow() {
|
||||||
nsAutoCauseReflowNotifier crNotifier(this);
|
nsAutoCauseReflowNotifier crNotifier(this);
|
||||||
presShell->Initialize();
|
presShell->Initialize();
|
||||||
}
|
}
|
||||||
# ifdef MOZ_XBL
|
|
||||||
mDocument->BindingManager()->ProcessAttachedQueue();
|
|
||||||
# endif
|
|
||||||
presShell->FlushPendingNotifications(FlushType::Layout);
|
presShell->FlushPendingNotifications(FlushType::Layout);
|
||||||
presShell->SetVerifyReflowEnable(
|
presShell->SetVerifyReflowEnable(
|
||||||
true); // turn on verify reflow again now that
|
true); // turn on verify reflow again now that
|
||||||
|
|
|
@ -70,13 +70,6 @@ inline int32_t PseudoCompareType(nsIFrame* aFrame, nsIContent** aContent) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(DEBUG) && defined(MOZ_XBL)
|
|
||||||
static bool IsXBLInvolved(nsIContent* aContent1, nsIContent* aContent2) {
|
|
||||||
auto* ancestor = nsContentUtils::GetCommonAncestor(aContent1, aContent2);
|
|
||||||
return ancestor && ancestor->IsElement() &&
|
|
||||||
ancestor->AsElement()->GetXBLBinding();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* static */
|
/* static */
|
||||||
bool nsGenConList::NodeAfter(const nsGenConNode* aNode1,
|
bool nsGenConList::NodeAfter(const nsGenConNode* aNode1,
|
||||||
|
@ -108,9 +101,6 @@ bool nsGenConList::NodeAfter(const nsGenConNode* aNode1,
|
||||||
// DoCompareTreePosition doesn't know about XBL anonymous content, and we
|
// DoCompareTreePosition doesn't know about XBL anonymous content, and we
|
||||||
// probably shouldn't bother teaching it about it.
|
// probably shouldn't bother teaching it about it.
|
||||||
MOZ_ASSERT(cmp != 0
|
MOZ_ASSERT(cmp != 0
|
||||||
#ifdef MOZ_XBL
|
|
||||||
|| IsXBLInvolved(content1, content2)
|
|
||||||
#endif
|
|
||||||
,
|
,
|
||||||
"same content, different frames");
|
"same content, different frames");
|
||||||
return cmp > 0;
|
return cmp > 0;
|
||||||
|
|
|
@ -39,9 +39,6 @@
|
||||||
#include "nsSprocketLayout.h"
|
#include "nsSprocketLayout.h"
|
||||||
#include "nsStackLayout.h"
|
#include "nsStackLayout.h"
|
||||||
#include "nsTextControlFrame.h"
|
#include "nsTextControlFrame.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsXBLService.h"
|
|
||||||
#endif
|
|
||||||
#include "txMozillaXSLTProcessor.h"
|
#include "txMozillaXSLTProcessor.h"
|
||||||
#include "nsTreeSanitizer.h"
|
#include "nsTreeSanitizer.h"
|
||||||
#include "nsCellMap.h"
|
#include "nsCellMap.h"
|
||||||
|
@ -169,9 +166,6 @@ nsresult nsLayoutStatics::Initialize() {
|
||||||
nsGlobalWindowInner::Init();
|
nsGlobalWindowInner::Init();
|
||||||
nsGlobalWindowOuter::Init();
|
nsGlobalWindowOuter::Init();
|
||||||
Navigator::Init();
|
Navigator::Init();
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsXBLService::Init();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
rv = nsContentUtils::Init();
|
rv = nsContentUtils::Init();
|
||||||
if (NS_FAILED(rv)) {
|
if (NS_FAILED(rv)) {
|
||||||
|
@ -389,9 +383,6 @@ void nsLayoutStatics::Shutdown() {
|
||||||
nsGlobalWindowInner::ShutDown();
|
nsGlobalWindowInner::ShutDown();
|
||||||
nsGlobalWindowOuter::ShutDown();
|
nsGlobalWindowOuter::ShutDown();
|
||||||
nsListControlFrame::Shutdown();
|
nsListControlFrame::Shutdown();
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsXBLService::Shutdown();
|
|
||||||
#endif
|
|
||||||
FrameLayerBuilder::Shutdown();
|
FrameLayerBuilder::Shutdown();
|
||||||
|
|
||||||
CubebUtils::ShutdownLibrary();
|
CubebUtils::ShutdownLibrary();
|
||||||
|
|
|
@ -17,11 +17,6 @@
|
||||||
#include "nsIStyleSheetLinkingElement.h"
|
#include "nsIStyleSheetLinkingElement.h"
|
||||||
#include "nsIContentInlines.h"
|
#include "nsIContentInlines.h"
|
||||||
#include "mozilla/dom/Document.h"
|
#include "mozilla/dom/Document.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsXBLBinding.h"
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
# include "nsXBLPrototypeBinding.h"
|
|
||||||
#endif
|
|
||||||
#include "nsIMutableArray.h"
|
#include "nsIMutableArray.h"
|
||||||
#include "ChildIterator.h"
|
#include "ChildIterator.h"
|
||||||
#include "nsComputedDOMStyle.h"
|
#include "nsComputedDOMStyle.h"
|
||||||
|
@ -524,18 +519,6 @@ bool InspectorUtils::IsValidCSSColor(GlobalObject& aGlobalObject,
|
||||||
void InspectorUtils::GetBindingURLs(GlobalObject& aGlobalObject,
|
void InspectorUtils::GetBindingURLs(GlobalObject& aGlobalObject,
|
||||||
Element& aElement,
|
Element& aElement,
|
||||||
nsTArray<nsString>& aResult) {
|
nsTArray<nsString>& aResult) {
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsXBLBinding* binding = aElement.GetXBLBinding();
|
|
||||||
|
|
||||||
while (binding) {
|
|
||||||
nsCString spec;
|
|
||||||
nsCOMPtr<nsIURI> bindingURI = binding->PrototypeBinding()->BindingURI();
|
|
||||||
bindingURI->GetSpec(spec);
|
|
||||||
nsString* resultURI = aResult.AppendElement();
|
|
||||||
CopyASCIItoUTF16(spec, *resultURI);
|
|
||||||
binding = binding->GetBaseBinding();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* static */
|
/* static */
|
||||||
|
|
|
@ -117,9 +117,6 @@ class nsCSSPropertyIDSet;
|
||||||
class nsCSSValue;
|
class nsCSSValue;
|
||||||
class nsINode;
|
class nsINode;
|
||||||
class nsPresContext;
|
class nsPresContext;
|
||||||
#ifdef MOZ_XBL
|
|
||||||
class nsXBLBinding;
|
|
||||||
#endif
|
|
||||||
struct nsFontFaceRuleContainer;
|
struct nsFontFaceRuleContainer;
|
||||||
struct nsTimingFunction;
|
struct nsTimingFunction;
|
||||||
|
|
||||||
|
|
|
@ -1692,18 +1692,9 @@ already_AddRefed<nsIURI> SVGObserverUtils::GetBaseURLForLocalRef(
|
||||||
nsIContent* bindingParent = content->GetBindingParent();
|
nsIContent* bindingParent = content->GetBindingParent();
|
||||||
|
|
||||||
if (bindingParent) {
|
if (bindingParent) {
|
||||||
#ifdef MOZ_XBL
|
|
||||||
nsXBLBinding* binding = bindingParent->GetXBLBinding();
|
|
||||||
if (binding) {
|
|
||||||
originalURI = binding->GetSourceDocURI();
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
MOZ_ASSERT(content->IsInNativeAnonymousSubtree(),
|
MOZ_ASSERT(content->IsInNativeAnonymousSubtree(),
|
||||||
"a non-native anonymous tree which is not from "
|
"a non-native anonymous tree which is not from "
|
||||||
"an XBL binding?");
|
"an XBL binding?");
|
||||||
#ifdef MOZ_XBL
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,9 +20,6 @@
|
||||||
#include "nsIComponentManager.h"
|
#include "nsIComponentManager.h"
|
||||||
#include "nsBoxLayoutState.h"
|
#include "nsBoxLayoutState.h"
|
||||||
#include "nsIScrollableFrame.h"
|
#include "nsIScrollableFrame.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
#endif
|
|
||||||
#include "nsIServiceManager.h"
|
#include "nsIServiceManager.h"
|
||||||
#include "nsCSSFrameConstructor.h"
|
#include "nsCSSFrameConstructor.h"
|
||||||
#include "nsString.h"
|
#include "nsString.h"
|
||||||
|
|
|
@ -33,9 +33,6 @@
|
||||||
#include "nsCSSFrameConstructor.h"
|
#include "nsCSSFrameConstructor.h"
|
||||||
#include "nsPIWindowRoot.h"
|
#include "nsPIWindowRoot.h"
|
||||||
#include "nsIReflowCallback.h"
|
#include "nsIReflowCallback.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
#endif
|
|
||||||
#include "nsIDocShellTreeOwner.h"
|
#include "nsIDocShellTreeOwner.h"
|
||||||
#include "nsIBaseWindow.h"
|
#include "nsIBaseWindow.h"
|
||||||
#include "nsISound.h"
|
#include "nsISound.h"
|
||||||
|
|
|
@ -36,9 +36,6 @@
|
||||||
#include "mozilla/MouseEvents.h"
|
#include "mozilla/MouseEvents.h"
|
||||||
#include "mozilla/PresShell.h"
|
#include "mozilla/PresShell.h"
|
||||||
#include "mozilla/UniquePtr.h"
|
#include "mozilla/UniquePtr.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
using namespace mozilla;
|
using namespace mozilla;
|
||||||
|
|
||||||
|
|
|
@ -14,9 +14,6 @@
|
||||||
#include "nsXULElement.h"
|
#include "nsXULElement.h"
|
||||||
#include "nsIDOMXULMenuListElement.h"
|
#include "nsIDOMXULMenuListElement.h"
|
||||||
#include "nsIDOMXULCommandDispatcher.h"
|
#include "nsIDOMXULCommandDispatcher.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
#endif
|
|
||||||
#include "nsCSSFrameConstructor.h"
|
#include "nsCSSFrameConstructor.h"
|
||||||
#include "nsGlobalWindow.h"
|
#include "nsGlobalWindow.h"
|
||||||
#include "nsIContentInlines.h"
|
#include "nsIContentInlines.h"
|
||||||
|
@ -2242,13 +2239,7 @@ static nsIContent* FindDefaultInsertionPoint(nsIContent* aParent) {
|
||||||
return slot;
|
return slot;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef MOZ_XBL
|
|
||||||
bool multiple = false; // Unused
|
|
||||||
return aParent->OwnerDoc()->BindingManager()->FindNestedSingleInsertionPoint(
|
|
||||||
aParent, &multiple);
|
|
||||||
#else
|
|
||||||
return aParent;
|
return aParent;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nsContainerFrame* nsXULPopupManager::ImmediateParentFrame(
|
nsContainerFrame* nsXULPopupManager::ImmediateParentFrame(
|
||||||
|
|
|
@ -38,10 +38,6 @@
|
||||||
#include "nsIURI.h"
|
#include "nsIURI.h"
|
||||||
#include "nsNetUtil.h"
|
#include "nsNetUtil.h"
|
||||||
#include "nsTextNode.h"
|
#include "nsTextNode.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsBindingManager.h"
|
|
||||||
# include "nsXBLBinding.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
using namespace mozilla;
|
using namespace mozilla;
|
||||||
using mozilla::dom::Document;
|
using mozilla::dom::Document;
|
||||||
|
|
|
@ -54,9 +54,6 @@
|
||||||
#include "mozilla/dom/RangeBinding.h"
|
#include "mozilla/dom/RangeBinding.h"
|
||||||
#include "mozilla/dom/Selection.h"
|
#include "mozilla/dom/Selection.h"
|
||||||
#include "nsRange.h"
|
#include "nsRange.h"
|
||||||
#ifdef MOZ_XBL
|
|
||||||
# include "nsXBLBinding.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "nsTypeAheadFind.h"
|
#include "nsTypeAheadFind.h"
|
||||||
|
|
||||||
|
@ -785,20 +782,6 @@ nsresult nsTypeAheadFind::GetSearchContainers(
|
||||||
}
|
}
|
||||||
nsCOMPtr<nsINode> searchRootNode(rootContent);
|
nsCOMPtr<nsINode> searchRootNode(rootContent);
|
||||||
|
|
||||||
#ifdef MOZ_XBL
|
|
||||||
// Hack for XMLPrettyPrinter. nsFind can't handle complex anonymous content.
|
|
||||||
// If the root node has an XBL binding then there's not much we can do in
|
|
||||||
// in general, but we can try searching the binding's first child, which
|
|
||||||
// in the case of XMLPrettyPrinter contains the visible pretty-printed
|
|
||||||
// content.
|
|
||||||
nsXBLBinding* binding = rootContent->GetXBLBinding();
|
|
||||||
if (binding) {
|
|
||||||
nsIContent* anonContent = binding->GetAnonymousContent();
|
|
||||||
if (anonContent) {
|
|
||||||
searchRootNode = anonContent->GetFirstChild();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
mSearchRange->SelectNodeContents(*searchRootNode, IgnoreErrors());
|
mSearchRange->SelectNodeContents(*searchRootNode, IgnoreErrors());
|
||||||
|
|
||||||
if (!mStartPointRange) {
|
if (!mStartPointRange) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче