diff options
author | Matt A. Tobin <email@mattatobin.com> | 2020-06-13 08:21:48 -0400 |
---|---|---|
committer | Matt A. Tobin <email@mattatobin.com> | 2020-06-13 08:21:48 -0400 |
commit | 43725c7264ca3f63de348d1d1596ce1fe9e64d2d (patch) | |
tree | e1ff1b11cc54e63b665aab1aa3776a62ee56250d /dom/base/nsIdentifierMapEntry.h | |
parent | 35754dd1af72abcae49edd2eeb76855d999a4e6d (diff) | |
download | UXP-43725c7264ca3f63de348d1d1596ce1fe9e64d2d.tar UXP-43725c7264ca3f63de348d1d1596ce1fe9e64d2d.tar.gz UXP-43725c7264ca3f63de348d1d1596ce1fe9e64d2d.tar.lz UXP-43725c7264ca3f63de348d1d1596ce1fe9e64d2d.tar.xz UXP-43725c7264ca3f63de348d1d1596ce1fe9e64d2d.zip |
Bug 1426494 - Share more code between nsIDocument and ShadowRoot
Tag #1375
Diffstat (limited to 'dom/base/nsIdentifierMapEntry.h')
-rw-r--r-- | dom/base/nsIdentifierMapEntry.h | 54 |
1 files changed, 26 insertions, 28 deletions
diff --git a/dom/base/nsIdentifierMapEntry.h b/dom/base/nsIdentifierMapEntry.h index 41b8b4a83..119a7e453 100644 --- a/dom/base/nsIdentifierMapEntry.h +++ b/dom/base/nsIdentifierMapEntry.h @@ -15,18 +15,24 @@ #include "mozilla/MemoryReporting.h" #include "mozilla/Move.h" -#include "mozilla/dom/Element.h" #include "mozilla/net/ReferrerPolicy.h" #include "nsCOMArray.h" #include "nsCOMPtr.h" -#include "nsContentList.h" #include "nsIAtom.h" -#include "nsIDocument.h" #include "nsTArray.h" #include "nsTHashtable.h" +#include "nsHashKeys.h" class nsIContent; +class nsContentList; +class nsBaseContentList; + +namespace mozilla { +namespace dom { + class Element; +} // namespace dom +} // namespace mozilla /** * Right now our identifier map entries contain information for 'name' @@ -42,6 +48,16 @@ class nsIContent; */ class nsIdentifierMapEntry : public PLDHashEntryHdr { + typedef mozilla::dom::Element Element; + typedef mozilla::net::ReferrerPolicy ReferrerPolicy; + + /** + * @see nsIDocument::IDTargetObserver, this is just here to avoid include + * hell. + */ + typedef bool (* IDTargetObserver)(Element* aOldElement, + Element* aNewelement, void* aData); + public: struct AtomOrString { @@ -66,25 +82,9 @@ public: typedef const AtomOrString& KeyType; typedef const AtomOrString* KeyTypePointer; - typedef mozilla::dom::Element Element; - typedef mozilla::net::ReferrerPolicy ReferrerPolicy; - - explicit nsIdentifierMapEntry(const AtomOrString& aKey) - : mKey(aKey) - { - } - explicit nsIdentifierMapEntry(const AtomOrString* aKey) - : mKey(aKey ? *aKey : nullptr) - { - } - nsIdentifierMapEntry(nsIdentifierMapEntry&& aOther) : - mKey(mozilla::Move(aOther.GetKey())), - mIdContentList(mozilla::Move(aOther.mIdContentList)), - mNameContentList(aOther.mNameContentList.forget()), - mChangeCallbacks(aOther.mChangeCallbacks.forget()), - mImageElement(aOther.mImageElement.forget()) - { - } + explicit nsIdentifierMapEntry(const AtomOrString& aKey); + explicit nsIdentifierMapEntry(const AtomOrString* aKey); + nsIdentifierMapEntry(nsIdentifierMapEntry&& aOther); ~nsIdentifierMapEntry(); KeyType GetKey() const { return mKey; } @@ -131,9 +131,7 @@ public: nsBaseContentList* GetNameContentList() { return mNameContentList; } - bool HasNameElement() const { - return mNameContentList && mNameContentList->Length() != 0; - } + bool HasNameElement() const; /** * Returns the element if we know the element associated with this @@ -173,9 +171,9 @@ public: bool HasIdElementExposedAsHTMLDocumentProperty(); bool HasContentChangeCallback() { return mChangeCallbacks != nullptr; } - void AddContentChangeCallback(nsIDocument::IDTargetObserver aCallback, + void AddContentChangeCallback(IDTargetObserver aCallback, void* aData, bool aForImage); - void RemoveContentChangeCallback(nsIDocument::IDTargetObserver aCallback, + void RemoveContentChangeCallback(IDTargetObserver aCallback, void* aData, bool aForImage); /** @@ -186,7 +184,7 @@ public: void Traverse(nsCycleCollectionTraversalCallback* aCallback); struct ChangeCallback { - nsIDocument::IDTargetObserver mCallback; + IDTargetObserver mCallback; void* mData; bool mForImage; }; |