summaryrefslogtreecommitdiffstats
path: root/dom/base/nsIdentifierMapEntry.h
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2020-06-13 08:21:48 -0400
committerMatt A. Tobin <email@mattatobin.com>2020-06-13 08:21:48 -0400
commit43725c7264ca3f63de348d1d1596ce1fe9e64d2d (patch)
treee1ff1b11cc54e63b665aab1aa3776a62ee56250d /dom/base/nsIdentifierMapEntry.h
parent35754dd1af72abcae49edd2eeb76855d999a4e6d (diff)
downloadUXP-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.h54
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;
};