Bug 1593222: part 1) Move `nsNodeUtils::IsTemplateElement` to `nsINode`. r=smaug

Differential Revision: https://phabricator.services.mozilla.com/D51606

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Mirko Brodesser 2019-11-05 14:05:36 +00:00
Родитель 0bf81afb2c
Коммит b845b4e662
6 изменённых файлов: 11 добавлений и 17 удалений

Просмотреть файл

@ -2038,7 +2038,7 @@ void FragmentOrElement::SetInnerHTMLInternal(const nsAString& aInnerHTML,
ErrorResult& aError) {
FragmentOrElement* target = this;
// Handle template case.
if (nsNodeUtils::IsTemplateElement(target)) {
if (target->IsTemplateElement()) {
DocumentFragment* frag =
static_cast<HTMLTemplateElement*>(target)->Content();
MOZ_ASSERT(frag);

Просмотреть файл

@ -8670,7 +8670,7 @@ bool nsContentUtils::SerializeNodeToMarkup(nsINode* aRoot,
current->NodeType() == nsINode::DOCUMENT_FRAGMENT_NODE) {
DocumentFragment* frag = static_cast<DocumentFragment*>(current);
nsIContent* fragHost = frag->GetHost();
if (fragHost && nsNodeUtils::IsTemplateElement(fragHost)) {
if (fragHost && fragHost->IsTemplateElement()) {
current = fragHost;
}
}

Просмотреть файл

@ -392,6 +392,11 @@ class nsINode : public mozilla::dom::EventTarget {
return IsElement() || IsDocument() || IsDocumentFragment();
}
/**
* Returns true if the node is a HTMLTemplate element.
*/
bool IsTemplateElement() const { return IsHTMLElement(nsGkAtoms::_template); }
bool IsSlotable() const { return IsElement() || IsText(); }
/**

Просмотреть файл

@ -498,7 +498,6 @@ already_AddRefed<nsINode> nsNodeUtils::CloneAndAdopt(
}
}
}
if (wasRegistered && oldDoc != newDoc) {
nsIContent* content = aNode->AsContent();
if (auto mediaElem = HTMLMediaElement::FromNodeOrNull(content)) {
@ -615,7 +614,7 @@ already_AddRefed<nsINode> nsNodeUtils::CloneAndAdopt(
}
// Cloning template element.
if (aDeep && aClone && IsTemplateElement(aNode)) {
if (aDeep && aClone && aNode->IsTemplateElement()) {
DocumentFragment* origContent =
static_cast<HTMLTemplateElement*>(aNode)->Content();
DocumentFragment* cloneContent =
@ -640,16 +639,13 @@ already_AddRefed<nsINode> nsNodeUtils::CloneAndAdopt(
return clone.forget();
}
bool nsNodeUtils::IsTemplateElement(const nsINode* aNode) {
return aNode->IsHTMLElement(nsGkAtoms::_template);
}
nsIContent* nsNodeUtils::GetFirstChildOfTemplateOrNode(nsINode* aNode) {
if (nsNodeUtils::IsTemplateElement(aNode)) {
if (aNode->IsTemplateElement()) {
DocumentFragment* frag =
static_cast<HTMLTemplateElement*>(aNode)->Content();
return frag->GetFirstChild();
}
return aNode->GetFirstChild();
}
}

Просмотреть файл

@ -246,13 +246,6 @@ class nsNodeUtils {
static already_AddRefed<nsINode> CloneNodeImpl(nsINode* aNode, bool aDeep,
mozilla::ErrorResult& aError);
/**
* Returns a true if the node is a HTMLTemplate element.
*
* @param aNode a node to test for HTMLTemplate elementness.
*/
static bool IsTemplateElement(const nsINode* aNode);
/**
* Returns the first child of a node or the first child of
* a template element's content if the provided node is a

Просмотреть файл

@ -295,7 +295,7 @@ static bool IsElementOrTemplateContent(nsINode* aNode) {
if (aNode->IsDocumentFragment()) {
// Check if the node is a template content.
nsIContent* fragHost = aNode->AsDocumentFragment()->GetHost();
if (fragHost && nsNodeUtils::IsTemplateElement(fragHost)) {
if (fragHost && fragHost->IsTemplateElement()) {
return true;
}
}