summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/HTMLTemplateElement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/html/HTMLTemplateElement.cpp')
-rw-r--r--Source/WebCore/html/HTMLTemplateElement.cpp41
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)