Backed out changeset 2450366cf7ca (bug 1891629) for causing win msix mochitest failures
[gecko.git] / dom / base / NodeInfoInlines.h
blobe7a11e1864da09e95d03aa4acfb5738c2921e4b4
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef mozilla_dom_NodeInfoInlines_h___
8 #define mozilla_dom_NodeInfoInlines_h___
10 #include "nsAtom.h"
11 #include "nsINode.h"
12 #include "nsDOMString.h"
13 #include "nsGkAtoms.h"
15 namespace mozilla::dom {
17 inline bool NodeInfo::Equals(NodeInfo* aNodeInfo) const {
18 return aNodeInfo == this ||
19 aNodeInfo->Equals(mInner.mName, mInner.mPrefix, mInner.mNamespaceID);
22 inline bool NodeInfo::NameAndNamespaceEquals(NodeInfo* aNodeInfo) const {
23 return aNodeInfo == this ||
24 aNodeInfo->Equals(mInner.mName, mInner.mNamespaceID);
27 inline bool NodeInfo::Equals(const nsAString& aName) const {
28 return mInner.mName->Equals(aName);
31 inline bool NodeInfo::Equals(const nsAString& aName,
32 const nsAString& aPrefix) const {
33 return mInner.mName->Equals(aName) &&
34 (mInner.mPrefix ? mInner.mPrefix->Equals(aPrefix) : aPrefix.IsEmpty());
37 inline bool NodeInfo::Equals(const nsAString& aName,
38 int32_t aNamespaceID) const {
39 return mInner.mNamespaceID == aNamespaceID && mInner.mName->Equals(aName);
42 inline bool NodeInfo::Equals(const nsAString& aName, const nsAString& aPrefix,
43 int32_t aNamespaceID) const {
44 return mInner.mName->Equals(aName) && mInner.mNamespaceID == aNamespaceID &&
45 (mInner.mPrefix ? mInner.mPrefix->Equals(aPrefix) : aPrefix.IsEmpty());
48 inline bool NodeInfo::QualifiedNameEquals(const nsAtom* aNameAtom) const {
49 MOZ_ASSERT(aNameAtom, "Must have name atom");
50 if (!GetPrefixAtom()) {
51 return Equals(aNameAtom);
54 return aNameAtom->Equals(mQualifiedName);
57 } // namespace mozilla::dom
59 inline void CheckValidNodeInfo(uint16_t aNodeType, const nsAtom* aName,
60 int32_t aNamespaceID, const nsAtom* aExtraName) {
61 MOZ_ASSERT(
62 aNodeType == nsINode::ELEMENT_NODE ||
63 aNodeType == nsINode::ATTRIBUTE_NODE ||
64 aNodeType == nsINode::TEXT_NODE ||
65 aNodeType == nsINode::CDATA_SECTION_NODE ||
66 aNodeType == nsINode::PROCESSING_INSTRUCTION_NODE ||
67 aNodeType == nsINode::COMMENT_NODE ||
68 aNodeType == nsINode::DOCUMENT_NODE ||
69 aNodeType == nsINode::DOCUMENT_TYPE_NODE ||
70 aNodeType == nsINode::DOCUMENT_FRAGMENT_NODE ||
71 aNodeType == UINT16_MAX,
72 // If a new type is added here, please update nsINode::MAX_NODE_TYPE and
73 // NodeTypeStrings in nsINode.cpp accordingly. Note that UINT16_MAX is
74 // only used for XUL prototype nodeinfos, which are never going to show up
75 // where NodeTypeStrings is used.
76 "Invalid nodeType");
77 MOZ_ASSERT((aNodeType == nsINode::PROCESSING_INSTRUCTION_NODE ||
78 aNodeType == nsINode::DOCUMENT_TYPE_NODE) == !!aExtraName,
79 "Supply aExtraName for and only for PIs and doctypes");
80 MOZ_ASSERT(aNodeType == nsINode::ELEMENT_NODE ||
81 aNodeType == nsINode::ATTRIBUTE_NODE ||
82 aNodeType == UINT16_MAX || aNamespaceID == kNameSpaceID_None,
83 "Only attributes and elements can be in a namespace");
84 MOZ_ASSERT(aName && aName != nsGkAtoms::_empty, "Invalid localName");
85 MOZ_ASSERT(((aNodeType == nsINode::TEXT_NODE) ==
86 (aName == nsGkAtoms::textTagName)) &&
87 ((aNodeType == nsINode::CDATA_SECTION_NODE) ==
88 (aName == nsGkAtoms::cdataTagName)) &&
89 ((aNodeType == nsINode::COMMENT_NODE) ==
90 (aName == nsGkAtoms::commentTagName)) &&
91 ((aNodeType == nsINode::DOCUMENT_NODE) ==
92 (aName == nsGkAtoms::documentNodeName)) &&
93 ((aNodeType == nsINode::DOCUMENT_FRAGMENT_NODE) ==
94 (aName == nsGkAtoms::documentFragmentNodeName)) &&
95 ((aNodeType == nsINode::DOCUMENT_TYPE_NODE) ==
96 (aName == nsGkAtoms::documentTypeNodeName)) &&
97 ((aNodeType == nsINode::PROCESSING_INSTRUCTION_NODE) ==
98 (aName == nsGkAtoms::processingInstructionTagName)),
99 "Wrong localName for nodeType");
102 #endif /* mozilla_dom_NodeInfoInlines_h___ */