<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[177314] trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/177314">177314</a></dd>
<dt>Author</dt> <dd>rniwa@webkit.org</dd>
<dt>Date</dt> <dd>2014-12-15 14:19:38 -0800 (Mon, 15 Dec 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>cloneNode(true) does not clone nested template elements' contents
https://bugs.webkit.org/show_bug.cgi?id=137755
Reviewed by Darin Adler.
Source/WebCore:
The bug was caused by cloneChildNodes not copying template element's content.
Fixed the bug by adding the third behavior (CloneContent) to the polymorphic
cloneNodeInternal, which copies template element's content but not its children,
in addition to the existing CloneSelf (deep=false) and CloneChildren (deep=true).
Test: fast/dom/HTMLTemplateElement/cloneNode-nested-templates.html
* dom/Attr.cpp:
(WebCore::Attr::cloneNodeInternal): Renamed from cloneNode.
* dom/Attr.h:
* dom/CDATASection.cpp:
(WebCore::CDATASection::cloneNodeInternal): Renamed from cloneNode.
* dom/CDATASection.h:
* dom/Comment.cpp:
(WebCore::Comment::cloneNodeInternal): Renamed from cloneNode.
* dom/Comment.h:
* dom/ContainerNode.cpp:
(WebCore::ContainerNode::cloneChildNodes): Calls cloneNode with CloneContent.
* dom/Document.cpp:
(WebCore::Document::cloneNodeInternal): Renamed from cloneNode.
* dom/Document.h:
* dom/DocumentFragment.cpp:
(WebCore::DocumentFragment::cloneNodeInternal): Renamed from cloneNode.
* dom/DocumentFragment.h:
* dom/DocumentType.cpp:
(WebCore::DocumentType::cloneNodeInternal): Renamed from cloneNode.
* dom/DocumentType.h:
* dom/Element.cpp:
(WebCore::Element::cloneNodeInternal): Renamed from cloneNode.
* dom/Element.h:
* dom/EntityReference.cpp:
(WebCore::EntityReference::cloneNodeInternal): Renamed from cloneNode.
* dom/EntityReference.h:
* dom/Node.h:
(WebCore::Node::cloneNode): Added. It calls cloneNodeInternal with CloneSelf or CloneChildren.
* dom/ProcessingInstruction.cpp:
(WebCore::ProcessingInstruction::cloneNodeInternal): Renamed from cloneNode.
* dom/ProcessingInstruction.h:
* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::cloneNodeInternal): Renamed from cloneNode. Also moved from ShadowRoot.h.
* dom/ShadowRoot.h:
* dom/Text.cpp:
(WebCore::Text::cloneNodeInternal): Renamed from cloneNode.
* dom/Text.h:
* html/HTMLTemplateElement.cpp:
(WebCore::HTMLTemplateElement::cloneNodeInternal): Renamed from cloneNode. This is the only
function in which CloneContent results in a different behavior from CloneSelf.
* html/HTMLTemplateElement.h:
LayoutTests:
Added a regression test.
* fast/dom/HTMLTemplateElement/cloneNode-nested-templates-expected.txt: Added.
* fast/dom/HTMLTemplateElement/cloneNode-nested-templates.html: Added.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoredomAttrcpp">trunk/Source/WebCore/dom/Attr.cpp</a></li>
<li><a href="#trunkSourceWebCoredomAttrh">trunk/Source/WebCore/dom/Attr.h</a></li>
<li><a href="#trunkSourceWebCoredomCDATASectioncpp">trunk/Source/WebCore/dom/CDATASection.cpp</a></li>
<li><a href="#trunkSourceWebCoredomCDATASectionh">trunk/Source/WebCore/dom/CDATASection.h</a></li>
<li><a href="#trunkSourceWebCoredomCommentcpp">trunk/Source/WebCore/dom/Comment.cpp</a></li>
<li><a href="#trunkSourceWebCoredomCommenth">trunk/Source/WebCore/dom/Comment.h</a></li>
<li><a href="#trunkSourceWebCoredomContainerNodecpp">trunk/Source/WebCore/dom/ContainerNode.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumenth">trunk/Source/WebCore/dom/Document.h</a></li>
<li><a href="#trunkSourceWebCoredomDocumentFragmentcpp">trunk/Source/WebCore/dom/DocumentFragment.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentFragmenth">trunk/Source/WebCore/dom/DocumentFragment.h</a></li>
<li><a href="#trunkSourceWebCoredomDocumentTypecpp">trunk/Source/WebCore/dom/DocumentType.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentTypeh">trunk/Source/WebCore/dom/DocumentType.h</a></li>
<li><a href="#trunkSourceWebCoredomElementcpp">trunk/Source/WebCore/dom/Element.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementh">trunk/Source/WebCore/dom/Element.h</a></li>
<li><a href="#trunkSourceWebCoredomEntityReferencecpp">trunk/Source/WebCore/dom/EntityReference.cpp</a></li>
<li><a href="#trunkSourceWebCoredomEntityReferenceh">trunk/Source/WebCore/dom/EntityReference.h</a></li>
<li><a href="#trunkSourceWebCoredomNodeh">trunk/Source/WebCore/dom/Node.h</a></li>
<li><a href="#trunkSourceWebCoredomProcessingInstructioncpp">trunk/Source/WebCore/dom/ProcessingInstruction.cpp</a></li>
<li><a href="#trunkSourceWebCoredomProcessingInstructionh">trunk/Source/WebCore/dom/ProcessingInstruction.h</a></li>
<li><a href="#trunkSourceWebCoredomShadowRootcpp">trunk/Source/WebCore/dom/ShadowRoot.cpp</a></li>
<li><a href="#trunkSourceWebCoredomShadowRooth">trunk/Source/WebCore/dom/ShadowRoot.h</a></li>
<li><a href="#trunkSourceWebCoredomTextcpp">trunk/Source/WebCore/dom/Text.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTexth">trunk/Source/WebCore/dom/Text.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTemplateElementcpp">trunk/Source/WebCore/html/HTMLTemplateElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTemplateElementh">trunk/Source/WebCore/html/HTMLTemplateElement.h</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastdomHTMLTemplateElementcloneNodenestedtemplatesexpectedtxt">trunk/LayoutTests/fast/dom/HTMLTemplateElement/cloneNode-nested-templates-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomHTMLTemplateElementcloneNodenestedtemplateshtml">trunk/LayoutTests/fast/dom/HTMLTemplateElement/cloneNode-nested-templates.html</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/LayoutTests/ChangeLog        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-12-15 Ryosuke Niwa <rniwa@webkit.org>
+
+ cloneNode(true) does not clone nested template elements' contents
+ https://bugs.webkit.org/show_bug.cgi?id=137755
+
+ Reviewed by Darin Adler.
+
+ Added a regression test.
+
+ * fast/dom/HTMLTemplateElement/cloneNode-nested-templates-expected.txt: Added.
+ * fast/dom/HTMLTemplateElement/cloneNode-nested-templates.html: Added.
+
</ins><span class="cx"> 2014-12-15 Benjamin Poulain <bpoulain@apple.com>
</span><span class="cx">
</span><span class="cx"> Unify the various serialization of selector list
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomHTMLTemplateElementcloneNodenestedtemplatesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/dom/HTMLTemplateElement/cloneNode-nested-templates-expected.txt (0 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/HTMLTemplateElement/cloneNode-nested-templates-expected.txt         (rev 0)
+++ trunk/LayoutTests/fast/dom/HTMLTemplateElement/cloneNode-nested-templates-expected.txt        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+Test that template contents are not cloned when the template element is cloned
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+clonedOuterTemplate = outerTemplate.cloneNode(true)
+PASS clonedOuterTemplate.content is not outerTemplate.content
+PASS clonedOuterTemplate.content.childNodes.length is 1
+innerTemplate = outerTemplate.content.firstChild
+clonedInnerTemplate = clonedOuterTemplate.content.firstChild
+PASS clonedInnerTemplate.outerHTML is innerTemplate.outerHTML
+PASS clonedInnerTemplate.content is not innerTemplate.content
+PASS innerTemplate.content.childNodes.length is 1
+PASS clonedInnerTemplate.content.childNodes.length is 1
+PASS innerTemplate.content.firstChild.outerHTML is clonedInnerTemplate.content.firstChild.outerHTML
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastdomHTMLTemplateElementcloneNodenestedtemplateshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/dom/HTMLTemplateElement/cloneNode-nested-templates.html (0 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/HTMLTemplateElement/cloneNode-nested-templates.html         (rev 0)
+++ trunk/LayoutTests/fast/dom/HTMLTemplateElement/cloneNode-nested-templates.html        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+<!DOCTYPE html>
+<html>
+<body>
+<template id="outerTemplate"><template id="innerTemplate"><span>Contents</span></template></template>
+<script src="../../../resources/js-test-pre.js"></script>
+<script>
+
+description('Test that template contents are not cloned when the template element is cloned');
+
+if (!window.HTMLTemplateElement)
+ testFailed('This test requires ENABLE(TEMPLATE_ELEMENT)');
+
+var outerTemplate = document.getElementById('outerTemplate');
+evalAndLog('clonedOuterTemplate = outerTemplate.cloneNode(true)');
+shouldNotBe('clonedOuterTemplate.content', 'outerTemplate.content');
+shouldBe('clonedOuterTemplate.content.childNodes.length', '1');
+evalAndLog('innerTemplate = outerTemplate.content.firstChild');
+evalAndLog('clonedInnerTemplate = clonedOuterTemplate.content.firstChild');
+shouldBe('clonedInnerTemplate.outerHTML', 'innerTemplate.outerHTML');
+shouldNotBe('clonedInnerTemplate.content', 'innerTemplate.content');
+shouldBe('innerTemplate.content.childNodes.length', '1');
+shouldBe('clonedInnerTemplate.content.childNodes.length', '1');
+shouldBe('innerTemplate.content.firstChild.outerHTML', 'clonedInnerTemplate.content.firstChild.outerHTML');
+
+var successfullyParsed = true;
+
+</script>
+<script src="../../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/ChangeLog        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -1,3 +1,60 @@
</span><ins>+2014-12-15 Ryosuke Niwa <rniwa@webkit.org>
+
+ cloneNode(true) does not clone nested template elements' contents
+ https://bugs.webkit.org/show_bug.cgi?id=137755
+
+ Reviewed by Darin Adler.
+
+ The bug was caused by cloneChildNodes not copying template element's content.
+
+ Fixed the bug by adding the third behavior (CloneContent) to the polymorphic
+ cloneNodeInternal, which copies template element's content but not its children,
+ in addition to the existing CloneSelf (deep=false) and CloneChildren (deep=true).
+
+ Test: fast/dom/HTMLTemplateElement/cloneNode-nested-templates.html
+
+ * dom/Attr.cpp:
+ (WebCore::Attr::cloneNodeInternal): Renamed from cloneNode.
+ * dom/Attr.h:
+ * dom/CDATASection.cpp:
+ (WebCore::CDATASection::cloneNodeInternal): Renamed from cloneNode.
+ * dom/CDATASection.h:
+ * dom/Comment.cpp:
+ (WebCore::Comment::cloneNodeInternal): Renamed from cloneNode.
+ * dom/Comment.h:
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::cloneChildNodes): Calls cloneNode with CloneContent.
+ * dom/Document.cpp:
+ (WebCore::Document::cloneNodeInternal): Renamed from cloneNode.
+ * dom/Document.h:
+ * dom/DocumentFragment.cpp:
+ (WebCore::DocumentFragment::cloneNodeInternal): Renamed from cloneNode.
+ * dom/DocumentFragment.h:
+ * dom/DocumentType.cpp:
+ (WebCore::DocumentType::cloneNodeInternal): Renamed from cloneNode.
+ * dom/DocumentType.h:
+ * dom/Element.cpp:
+ (WebCore::Element::cloneNodeInternal): Renamed from cloneNode.
+ * dom/Element.h:
+ * dom/EntityReference.cpp:
+ (WebCore::EntityReference::cloneNodeInternal): Renamed from cloneNode.
+ * dom/EntityReference.h:
+ * dom/Node.h:
+ (WebCore::Node::cloneNode): Added. It calls cloneNodeInternal with CloneSelf or CloneChildren.
+ * dom/ProcessingInstruction.cpp:
+ (WebCore::ProcessingInstruction::cloneNodeInternal): Renamed from cloneNode.
+ * dom/ProcessingInstruction.h:
+ * dom/ShadowRoot.cpp:
+ (WebCore::ShadowRoot::cloneNodeInternal): Renamed from cloneNode. Also moved from ShadowRoot.h.
+ * dom/ShadowRoot.h:
+ * dom/Text.cpp:
+ (WebCore::Text::cloneNodeInternal): Renamed from cloneNode.
+ * dom/Text.h:
+ * html/HTMLTemplateElement.cpp:
+ (WebCore::HTMLTemplateElement::cloneNodeInternal): Renamed from cloneNode. This is the only
+ function in which CloneContent results in a different behavior from CloneSelf.
+ * html/HTMLTemplateElement.h:
+
</ins><span class="cx"> 2014-12-15 Benjamin Poulain <bpoulain@apple.com>
</span><span class="cx">
</span><span class="cx"> Unify the various serialization of selector list
</span></span></pre></div>
<a id="trunkSourceWebCoredomAttrcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Attr.cpp (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Attr.cpp        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/Attr.cpp        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -137,7 +137,7 @@
</span><span class="cx"> setValue(v, ec);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<Node> Attr::cloneNode(bool /*deep*/)
</del><ins>+RefPtr<Node> Attr::cloneNodeInternal(CloningOperation)
</ins><span class="cx"> {
</span><span class="cx"> RefPtr<Attr> clone = adoptRef(new Attr(document(), qualifiedName(), value()));
</span><span class="cx"> cloneChildNodes(clone.get());
</span></span></pre></div>
<a id="trunkSourceWebCoredomAttrh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Attr.h (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Attr.h        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/Attr.h        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx">
</span><span class="cx"> virtual String nodeValue() const override { return value(); }
</span><span class="cx"> virtual void setNodeValue(const String&, ExceptionCode&) override;
</span><del>- virtual RefPtr<Node> cloneNode(bool deep) override;
</del><ins>+ virtual RefPtr<Node> cloneNodeInternal(CloningOperation) override;
</ins><span class="cx">
</span><span class="cx"> virtual bool isAttributeNode() const override { return true; }
</span><span class="cx"> virtual bool childTypeAllowed(NodeType) const override;
</span></span></pre></div>
<a id="trunkSourceWebCoredomCDATASectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/CDATASection.cpp (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/CDATASection.cpp        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/CDATASection.cpp        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> return CDATA_SECTION_NODE;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<Node> CDATASection::cloneNode(bool /*deep*/)
</del><ins>+RefPtr<Node> CDATASection::cloneNodeInternal(CloningOperation)
</ins><span class="cx"> {
</span><span class="cx"> return create(document(), data());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomCDATASectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/CDATASection.h (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/CDATASection.h        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/CDATASection.h        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx">
</span><span class="cx"> virtual String nodeName() const override;
</span><span class="cx"> virtual NodeType nodeType() const override;
</span><del>- virtual RefPtr<Node> cloneNode(bool deep) override;
</del><ins>+ virtual RefPtr<Node> cloneNodeInternal(CloningOperation) override;
</ins><span class="cx"> virtual bool childTypeAllowed(NodeType) const override;
</span><span class="cx"> virtual RefPtr<Text> virtualCreate(const String&) override;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoredomCommentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Comment.cpp (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Comment.cpp        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/Comment.cpp        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx"> return COMMENT_NODE;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<Node> Comment::cloneNode(bool /*deep*/)
</del><ins>+RefPtr<Node> Comment::cloneNodeInternal(CloningOperation)
</ins><span class="cx"> {
</span><span class="cx"> return create(document(), data());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomCommenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Comment.h (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Comment.h        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/Comment.h        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx">
</span><span class="cx"> virtual String nodeName() const override;
</span><span class="cx"> virtual NodeType nodeType() const override;
</span><del>- virtual RefPtr<Node> cloneNode(bool deep) override;
</del><ins>+ virtual RefPtr<Node> cloneNodeInternal(CloningOperation) override;
</ins><span class="cx"> virtual bool childTypeAllowed(NodeType) const override;
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoredomContainerNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ContainerNode.cpp (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ContainerNode.cpp        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/ContainerNode.cpp        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -769,7 +769,7 @@
</span><span class="cx"> {
</span><span class="cx"> ExceptionCode ec = 0;
</span><span class="cx"> for (Node* child = firstChild(); child && !ec; child = child->nextSibling()) {
</span><del>- RefPtr<Node> clonedChild = child->cloneNode(false);
</del><ins>+ RefPtr<Node> clonedChild = child->cloneNodeInternal(CloningOperation::SelfWithTemplateContent);
</ins><span class="cx"> clone->appendChild(clonedChild, ec);
</span><span class="cx">
</span><span class="cx"> if (!ec && is<ContainerNode>(child))
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/Document.cpp        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -3183,12 +3183,18 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<Node> Document::cloneNode(bool deep)
</del><ins>+RefPtr<Node> Document::cloneNodeInternal(CloningOperation type)
</ins><span class="cx"> {
</span><span class="cx"> RefPtr<Document> clone = cloneDocumentWithoutChildren();
</span><span class="cx"> clone->cloneDataFromDocument(*this);
</span><del>- if (deep)
</del><ins>+ switch (type) {
+ case CloningOperation::OnlySelf:
+ case CloningOperation::SelfWithTemplateContent:
+ break;
+ case CloningOperation::Everything:
</ins><span class="cx"> cloneChildNodes(clone.get());
</span><ins>+ break;
+ }
</ins><span class="cx"> return clone;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.h (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.h        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/Document.h        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -1308,7 +1308,7 @@
</span><span class="cx"> virtual String nodeName() const override final;
</span><span class="cx"> virtual NodeType nodeType() const override final;
</span><span class="cx"> virtual bool childTypeAllowed(NodeType) const override final;
</span><del>- virtual RefPtr<Node> cloneNode(bool deep) override final;
</del><ins>+ virtual RefPtr<Node> cloneNodeInternal(CloningOperation) override final;
</ins><span class="cx"> void cloneDataFromDocument(const Document&);
</span><span class="cx">
</span><span class="cx"> virtual void refScriptExecutionContext() override final { ref(); }
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentFragmentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DocumentFragment.cpp (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DocumentFragment.cpp        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/DocumentFragment.cpp        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -71,11 +71,17 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<Node> DocumentFragment::cloneNode(bool deep)
</del><ins>+RefPtr<Node> DocumentFragment::cloneNodeInternal(CloningOperation type)
</ins><span class="cx"> {
</span><span class="cx"> RefPtr<DocumentFragment> clone = create(document());
</span><del>- if (deep)
</del><ins>+ switch (type) {
+ case CloningOperation::OnlySelf:
+ case CloningOperation::SelfWithTemplateContent:
+ break;
+ case CloningOperation::Everything:
</ins><span class="cx"> cloneChildNodes(clone.get());
</span><ins>+ break;
+ }
</ins><span class="cx"> return clone;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentFragmenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DocumentFragment.h (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DocumentFragment.h        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/DocumentFragment.h        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> virtual NodeType nodeType() const override final;
</span><del>- virtual RefPtr<Node> cloneNode(bool deep) override;
</del><ins>+ virtual RefPtr<Node> cloneNodeInternal(CloningOperation) override;
</ins><span class="cx"> virtual bool childTypeAllowed(NodeType) const override;
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DocumentType.cpp (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DocumentType.cpp        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/DocumentType.cpp        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx"> return DOCUMENT_TYPE_NODE;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<Node> DocumentType::cloneNode(bool /*deep*/)
</del><ins>+RefPtr<Node> DocumentType::cloneNodeInternal(CloningOperation)
</ins><span class="cx"> {
</span><span class="cx"> return create(document(), m_name, m_publicId, m_systemId);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentTypeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DocumentType.h (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DocumentType.h        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/DocumentType.h        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx"> virtual URL baseURI() const override;
</span><span class="cx"> virtual String nodeName() const override;
</span><span class="cx"> virtual NodeType nodeType() const override;
</span><del>- virtual RefPtr<Node> cloneNode(bool deep) override;
</del><ins>+ virtual RefPtr<Node> cloneNodeInternal(CloningOperation) override;
</ins><span class="cx">
</span><span class="cx"> String m_name;
</span><span class="cx"> String m_publicId;
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/Element.cpp        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -289,9 +289,17 @@
</span><span class="cx"> DEFINE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(Element, focus);
</span><span class="cx"> DEFINE_VIRTUAL_ATTRIBUTE_EVENT_LISTENER(Element, load);
</span><span class="cx">
</span><del>-RefPtr<Node> Element::cloneNode(bool deep)
</del><ins>+RefPtr<Node> Element::cloneNodeInternal(CloningOperation type)
</ins><span class="cx"> {
</span><del>- return deep ? cloneElementWithChildren() : cloneElementWithoutChildren();
</del><ins>+ switch (type) {
+ case CloningOperation::OnlySelf:
+ case CloningOperation::SelfWithTemplateContent:
+ return cloneElementWithoutChildren();
+ case CloningOperation::Everything:
+ return cloneElementWithChildren();
+ }
+ ASSERT_NOT_REACHED();
+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> RefPtr<Element> Element::cloneElementWithChildren()
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.h (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.h        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/Element.h        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -632,7 +632,7 @@
</span><span class="cx">
</span><span class="cx"> // cloneNode is private so that non-virtual cloneElementWithChildren and cloneElementWithoutChildren
</span><span class="cx"> // are used instead.
</span><del>- virtual RefPtr<Node> cloneNode(bool deep) override;
</del><ins>+ virtual RefPtr<Node> cloneNodeInternal(CloningOperation) override;
</ins><span class="cx"> virtual RefPtr<Element> cloneElementWithoutAttributesAndChildren();
</span><span class="cx">
</span><span class="cx"> void addShadowRoot(PassRefPtr<ShadowRoot>);
</span></span></pre></div>
<a id="trunkSourceWebCoredomEntityReferencecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EntityReference.cpp (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EntityReference.cpp        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/EntityReference.cpp        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> return ENTITY_REFERENCE_NODE;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<Node> EntityReference::cloneNode(bool)
</del><ins>+RefPtr<Node> EntityReference::cloneNodeInternal(CloningOperation)
</ins><span class="cx"> {
</span><span class="cx"> return create(document(), m_entityName);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomEntityReferenceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EntityReference.h (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EntityReference.h        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/EntityReference.h        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx">
</span><span class="cx"> virtual String nodeName() const override;
</span><span class="cx"> virtual NodeType nodeType() const override;
</span><del>- virtual RefPtr<Node> cloneNode(bool deep) override;
</del><ins>+ virtual RefPtr<Node> cloneNodeInternal(CloningOperation) override;
</ins><span class="cx">
</span><span class="cx"> String m_entityName;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.h (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.h        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/Node.h        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -203,7 +203,15 @@
</span><span class="cx">
</span><span class="cx"> WEBCORE_EXPORT void remove(ExceptionCode&);
</span><span class="cx"> bool hasChildNodes() const { return firstChild(); }
</span><del>- virtual RefPtr<Node> cloneNode(bool deep) = 0;
</del><ins>+
+ enum class CloningOperation {
+ OnlySelf,
+ SelfWithTemplateContent,
+ Everything,
+ };
+ virtual RefPtr<Node> cloneNodeInternal(CloningOperation) = 0;
+ RefPtr<Node> cloneNode(bool deep) { return cloneNodeInternal(deep ? CloningOperation::Everything : CloningOperation::OnlySelf); }
+
</ins><span class="cx"> virtual const AtomicString& localName() const;
</span><span class="cx"> virtual const AtomicString& namespaceURI() const;
</span><span class="cx"> virtual const AtomicString& prefix() const;
</span></span></pre></div>
<a id="trunkSourceWebCoredomProcessingInstructioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ProcessingInstruction.cpp (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ProcessingInstruction.cpp        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/ProcessingInstruction.cpp        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> return PROCESSING_INSTRUCTION_NODE;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<Node> ProcessingInstruction::cloneNode(bool /*deep*/)
</del><ins>+RefPtr<Node> ProcessingInstruction::cloneNodeInternal(CloningOperation)
</ins><span class="cx"> {
</span><span class="cx"> // FIXME: Is it a problem that this does not copy m_localHref?
</span><span class="cx"> // What about other data members?
</span></span></pre></div>
<a id="trunkSourceWebCoredomProcessingInstructionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ProcessingInstruction.h (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ProcessingInstruction.h        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/ProcessingInstruction.h        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx">
</span><span class="cx"> virtual String nodeName() const override;
</span><span class="cx"> virtual NodeType nodeType() const override;
</span><del>- virtual RefPtr<Node> cloneNode(bool deep) override;
</del><ins>+ virtual RefPtr<Node> cloneNodeInternal(CloningOperation) override;
</ins><span class="cx">
</span><span class="cx"> virtual InsertionNotificationRequest insertedInto(ContainerNode&) override;
</span><span class="cx"> virtual void removedFrom(ContainerNode&) override;
</span></span></pre></div>
<a id="trunkSourceWebCoredomShadowRootcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ShadowRoot.cpp (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ShadowRoot.cpp        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/ShadowRoot.cpp        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -131,6 +131,11 @@
</span><span class="cx"> invalidateDistribution();
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+RefPtr<Node> ShadowRoot::cloneNodeInternal(CloningOperation)
+{
+ return nullptr; // ShadowRoots should never be cloned.
+}
+
</ins><span class="cx"> void ShadowRoot::removeAllEventListeners()
</span><span class="cx"> {
</span><span class="cx"> DocumentFragment::removeAllEventListeners();
</span></span></pre></div>
<a id="trunkSourceWebCoredomShadowRooth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ShadowRoot.h (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ShadowRoot.h        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/ShadowRoot.h        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -76,8 +76,7 @@
</span><span class="cx"> virtual bool childTypeAllowed(NodeType) const override;
</span><span class="cx"> virtual void childrenChanged(const ChildChange&) override;
</span><span class="cx">
</span><del>- // ShadowRoots should never be cloned.
- virtual RefPtr<Node> cloneNode(bool) override { return 0; }
</del><ins>+ virtual RefPtr<Node> cloneNodeInternal(CloningOperation) override;
</ins><span class="cx">
</span><span class="cx"> // FIXME: This shouldn't happen. https://bugs.webkit.org/show_bug.cgi?id=88834
</span><span class="cx"> bool isOrphan() const { return !hostElement(); }
</span></span></pre></div>
<a id="trunkSourceWebCoredomTextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Text.cpp (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Text.cpp        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/Text.cpp        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -169,7 +169,7 @@
</span><span class="cx"> return TEXT_NODE;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<Node> Text::cloneNode(bool /*deep*/)
</del><ins>+RefPtr<Node> Text::cloneNodeInternal(CloningOperation)
</ins><span class="cx"> {
</span><span class="cx"> return create(document(), data());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomTexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Text.h (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Text.h        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/dom/Text.h        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx"> private:
</span><span class="cx"> virtual String nodeName() const override;
</span><span class="cx"> virtual NodeType nodeType() const override;
</span><del>- virtual RefPtr<Node> cloneNode(bool deep) override;
</del><ins>+ virtual RefPtr<Node> cloneNodeInternal(CloningOperation) override;
</ins><span class="cx"> virtual bool childTypeAllowed(NodeType) const override;
</span><span class="cx">
</span><span class="cx"> virtual RefPtr<Text> virtualCreate(const String&);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTemplateElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTemplateElement.cpp (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTemplateElement.cpp        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/html/HTMLTemplateElement.cpp        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -68,12 +68,19 @@
</span><span class="cx"> return m_content.get();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<Node> HTMLTemplateElement::cloneNode(bool deep)
</del><ins>+RefPtr<Node> HTMLTemplateElement::cloneNodeInternal(CloningOperation type)
</ins><span class="cx"> {
</span><del>- if (!deep)
</del><ins>+ RefPtr<Node> clone;
+ switch (type) {
+ case CloningOperation::OnlySelf:
</ins><span class="cx"> return cloneElementWithoutChildren();
</span><del>-
- RefPtr<Node> clone = cloneElementWithChildren();
</del><ins>+ case CloningOperation::SelfWithTemplateContent:
+ clone = cloneElementWithoutChildren();
+ break;
+ case CloningOperation::Everything:
+ clone = cloneElementWithChildren();
+ break;
+ }
</ins><span class="cx"> if (m_content)
</span><span class="cx"> content()->cloneChildNodes(downcast<HTMLTemplateElement>(clone.get())->content());
</span><span class="cx"> return clone.release();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTemplateElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTemplateElement.h (177313 => 177314)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTemplateElement.h        2014-12-15 22:18:35 UTC (rev 177313)
+++ trunk/Source/WebCore/html/HTMLTemplateElement.h        2014-12-15 22:19:38 UTC (rev 177314)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> private:
</span><span class="cx"> HTMLTemplateElement(const QualifiedName&, Document&);
</span><span class="cx">
</span><del>- virtual RefPtr<Node> cloneNode(bool deep) override;
</del><ins>+ virtual RefPtr<Node> cloneNodeInternal(CloningOperation) override;
</ins><span class="cx"> virtual void didMoveToNewDocument(Document* oldDocument) override;
</span><span class="cx">
</span><span class="cx"> mutable RefPtr<TemplateContentDocumentFragment> m_content;
</span></span></pre>
</div>
</div>
</body>
</html>