diff options
Diffstat (limited to 'Source/WebCore/html/HTMLTemplateElement.cpp')
-rw-r--r-- | Source/WebCore/html/HTMLTemplateElement.cpp | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/Source/WebCore/html/HTMLTemplateElement.cpp b/Source/WebCore/html/HTMLTemplateElement.cpp index 17e4c0807..31e855e27 100644 --- a/Source/WebCore/html/HTMLTemplateElement.cpp +++ b/Source/WebCore/html/HTMLTemplateElement.cpp @@ -29,12 +29,8 @@ */ #include "config.h" - -#if ENABLE(TEMPLATE_ELEMENT) - #include "HTMLTemplateElement.h" -#include "DOMImplementation.h" #include "DocumentFragment.h" #include "HTMLDocument.h" #include "TemplateContentDocumentFragment.h" @@ -55,38 +51,43 @@ HTMLTemplateElement::~HTMLTemplateElement() m_content->clearHost(); } -PassRefPtr<HTMLTemplateElement> HTMLTemplateElement::create(const QualifiedName& tagName, Document& document) +Ref<HTMLTemplateElement> HTMLTemplateElement::create(const QualifiedName& tagName, Document& document) { - return adoptRef(new HTMLTemplateElement(tagName, document)); + return adoptRef(*new HTMLTemplateElement(tagName, document)); } -DocumentFragment* HTMLTemplateElement::content() const +DocumentFragment& HTMLTemplateElement::content() const { if (!m_content) - m_content = TemplateContentDocumentFragment::create(*document().ensureTemplateDocument(), this); + m_content = TemplateContentDocumentFragment::create(document().ensureTemplateDocument(), this); - return m_content.get(); + return *m_content; } -PassRefPtr<Node> HTMLTemplateElement::cloneNode(bool deep) +Ref<Node> HTMLTemplateElement::cloneNodeInternal(Document& targetDocument, CloningOperation type) { - if (!deep) - return cloneElementWithoutChildren(); - - RefPtr<Node> clone = cloneElementWithChildren(); + RefPtr<Node> clone; + switch (type) { + case CloningOperation::OnlySelf: + return cloneElementWithoutChildren(targetDocument); + case CloningOperation::SelfWithTemplateContent: + clone = cloneElementWithoutChildren(targetDocument); + break; + case CloningOperation::Everything: + clone = cloneElementWithChildren(targetDocument); + break; + } if (m_content) - content()->cloneChildNodes(toHTMLTemplateElement(clone.get())->content()); - return clone.release(); + content().cloneChildNodes(downcast<HTMLTemplateElement>(clone.get())->content()); + return clone.releaseNonNull(); } -void HTMLTemplateElement::didMoveToNewDocument(Document* oldDocument) +void HTMLTemplateElement::didMoveToNewDocument(Document& oldDocument) { HTMLElement::didMoveToNewDocument(oldDocument); if (!m_content) return; - document().ensureTemplateDocument()->adoptIfNeeded(m_content.get()); + document().ensureTemplateDocument().adoptIfNeeded(*m_content); } } // namespace WebCore - -#endif // ENABLE(TEMPLATE_ELEMENT) |