Index: third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/Node-textContent.html |
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/Node-textContent.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/Node-textContent.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b66d0239c6e4fedf60c450c6e51c2117f11aefe8 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/Node-textContent.html |
@@ -0,0 +1,265 @@ |
+<!DOCTYPE html> |
+<meta charset=utf-8> |
+<title>Node.textContent</title> |
+<script src="../../../../resources/testharness.js"></script> |
+<script src="../../../../resources/testharnessreport.js"></script> |
+<div id="log"></div> |
+<script> |
+// XXX mutation observers? |
+// XXX Range gravitation? |
+ |
+var documents, doctypes; |
+setup(function() { |
+ documents = [ |
+ [document, "parser"], |
+ [document.implementation.createDocument("", "test", null), "createDocument"], |
+ [document.implementation.createHTMLDocument("title"), "createHTMLDocument"], |
+ ] |
+ doctypes = [ |
+ [document.doctype, "parser"], |
+ [document.implementation.createDocumentType("x", "", ""), "script"], |
+ ] |
+}) |
+ |
+// Getting |
+// DocumentFragment, Element: |
+test(function() { |
+ var element = document.createElement("div") |
+ assert_equals(element.textContent, "") |
+}, "For an empty Element, textContent should be the empty string") |
+ |
+test(function() { |
+ assert_equals(document.createDocumentFragment().textContent, "") |
+}, "For an empty DocumentFragment, textContent should be the empty string") |
+ |
+test(function() { |
+ var el = document.createElement("div") |
+ el.appendChild(document.createComment(" abc ")) |
+ el.appendChild(document.createTextNode("\tDEF\t")) |
+ el.appendChild(document.createProcessingInstruction("x", " ghi ")) |
+ assert_equals(el.textContent, "\tDEF\t") |
+}, "Element with children") |
+ |
+test(function() { |
+ var el = document.createElement("div") |
+ var child = document.createElement("div") |
+ el.appendChild(child) |
+ child.appendChild(document.createComment(" abc ")) |
+ child.appendChild(document.createTextNode("\tDEF\t")) |
+ child.appendChild(document.createProcessingInstruction("x", " ghi ")) |
+ assert_equals(el.textContent, "\tDEF\t") |
+}, "Element with descendants") |
+ |
+test(function() { |
+ var df = document.createDocumentFragment() |
+ df.appendChild(document.createComment(" abc ")) |
+ df.appendChild(document.createTextNode("\tDEF\t")) |
+ df.appendChild(document.createProcessingInstruction("x", " ghi ")) |
+ assert_equals(df.textContent, "\tDEF\t") |
+}, "DocumentFragment with children") |
+ |
+test(function() { |
+ var df = document.createDocumentFragment() |
+ var child = document.createElement("div") |
+ df.appendChild(child) |
+ child.appendChild(document.createComment(" abc ")) |
+ child.appendChild(document.createTextNode("\tDEF\t")) |
+ child.appendChild(document.createProcessingInstruction("x", " ghi ")) |
+ assert_equals(df.textContent, "\tDEF\t") |
+}, "DocumentFragment with descendants") |
+ |
+// Text, ProcessingInstruction, Comment: |
+test(function() { |
+ assert_equals(document.createTextNode("").textContent, "") |
+}, "For an empty Text, textContent should be the empty string") |
+ |
+test(function() { |
+ assert_equals(document.createProcessingInstruction("x", "").textContent, "") |
+}, "For an empty ProcessingInstruction, textContent should be the empty string") |
+ |
+test(function() { |
+ assert_equals(document.createComment("").textContent, "") |
+}, "For an empty Comment, textContent should be the empty string") |
+ |
+test(function() { |
+ assert_equals(document.createTextNode("abc").textContent, "abc") |
+}, "For a Text with data, textContent should be that data") |
+ |
+test(function() { |
+ assert_equals(document.createProcessingInstruction("x", "abc").textContent, |
+ "abc") |
+}, "For a ProcessingInstruction with data, textContent should be that data") |
+ |
+test(function() { |
+ assert_equals(document.createComment("abc").textContent, "abc") |
+}, "For a Comment with data, textContent should be that data") |
+ |
+// Any other node: |
+documents.forEach(function(argument) { |
+ var doc = argument[0], creator = argument[1] |
+ test(function() { |
+ assert_equals(doc.textContent, null) |
+ }, "For Documents created by " + creator + ", textContent should be null") |
+}) |
+ |
+doctypes.forEach(function(argument) { |
+ var doctype = argument[0], creator = argument[1] |
+ test(function() { |
+ assert_equals(doctype.textContent, null) |
+ }, "For DocumentType created by " + creator + ", textContent should be null") |
+}) |
+ |
+// Setting |
+// DocumentFragment, Element: |
+var arguments = [ |
+ [null, null], |
+ [undefined, null], |
+ ["", null], |
+ [42, "42"], |
+ ["abc", "abc"], |
+ ["<b>xyz<\/b>", "<b>xyz<\/b>"], |
+ ["d\0e", "d\0e"] |
+ // XXX unpaired surrogate? |
+] |
+arguments.forEach(function(aValue) { |
+ var argument = aValue[0], expectation = aValue[1] |
+ var check = function(aElementOrDocumentFragment) { |
+ if (expectation === null) { |
+ assert_equals(aElementOrDocumentFragment.textContent, "") |
+ assert_equals(aElementOrDocumentFragment.firstChild, null) |
+ } else { |
+ assert_equals(aElementOrDocumentFragment.textContent, expectation) |
+ assert_equals(aElementOrDocumentFragment.childNodes.length, 1, |
+ "Should have one child") |
+ var firstChild = aElementOrDocumentFragment.firstChild |
+ assert_true(firstChild instanceof Text, "child should be a Text") |
+ assert_equals(firstChild.data, expectation) |
+ } |
+ } |
+ |
+ test(function() { |
+ var el = document.createElement("div") |
+ el.textContent = argument |
+ check(el) |
+ }, "Element without children set to " + format_value(argument)) |
+ |
+ test(function() { |
+ var el = document.createElement("div") |
+ var text = el.appendChild(document.createTextNode("")) |
+ el.textContent = argument |
+ check(el) |
+ assert_equals(text.parentNode, null, |
+ "Preexisting Text should have been removed") |
+ }, "Element with empty text node as child set to " + format_value(argument)) |
+ |
+ test(function() { |
+ var el = document.createElement("div") |
+ el.appendChild(document.createComment(" abc ")) |
+ el.appendChild(document.createTextNode("\tDEF\t")) |
+ el.appendChild(document.createProcessingInstruction("x", " ghi ")) |
+ el.textContent = argument |
+ check(el) |
+ }, "Element with children set to " + format_value(argument)) |
+ |
+ test(function() { |
+ var el = document.createElement("div") |
+ var child = document.createElement("div") |
+ el.appendChild(child) |
+ child.appendChild(document.createComment(" abc ")) |
+ child.appendChild(document.createTextNode("\tDEF\t")) |
+ child.appendChild(document.createProcessingInstruction("x", " ghi ")) |
+ el.textContent = argument |
+ check(el) |
+ assert_equals(child.childNodes.length, 3, |
+ "Should not have changed the internal structure of the removed nodes.") |
+ }, "Element with descendants set to " + format_value(argument)) |
+ |
+ test(function() { |
+ var df = document.createDocumentFragment() |
+ df.textContent = argument |
+ check(df) |
+ }, "DocumentFragment without children set to " + format_value(argument)) |
+ |
+ test(function() { |
+ var df = document.createDocumentFragment() |
+ var text = df.appendChild(document.createTextNode("")) |
+ df.textContent = argument |
+ check(df) |
+ assert_equals(text.parentNode, null, |
+ "Preexisting Text should have been removed") |
+ }, "DocumentFragment with empty text node as child set to " + format_value(argument)) |
+ |
+ test(function() { |
+ var df = document.createDocumentFragment() |
+ df.appendChild(document.createComment(" abc ")) |
+ df.appendChild(document.createTextNode("\tDEF\t")) |
+ df.appendChild(document.createProcessingInstruction("x", " ghi ")) |
+ df.textContent = argument |
+ check(df) |
+ }, "DocumentFragment with children set to " + format_value(argument)) |
+ |
+ test(function() { |
+ var df = document.createDocumentFragment() |
+ var child = document.createElement("div") |
+ df.appendChild(child) |
+ child.appendChild(document.createComment(" abc ")) |
+ child.appendChild(document.createTextNode("\tDEF\t")) |
+ child.appendChild(document.createProcessingInstruction("x", " ghi ")) |
+ df.textContent = argument |
+ check(df) |
+ assert_equals(child.childNodes.length, 3, |
+ "Should not have changed the internal structure of the removed nodes.") |
+ }, "DocumentFragment with descendants set to " + format_value(argument)) |
+}) |
+ |
+// Text, ProcessingInstruction, Comment: |
+test(function() { |
+ var text = document.createTextNode("abc") |
+ text.textContent = "def" |
+ assert_equals(text.textContent, "def") |
+ assert_equals(text.data, "def") |
+}, "For a Text, textContent should set the data") |
+ |
+test(function() { |
+ var pi = document.createProcessingInstruction("x", "abc") |
+ pi.textContent = "def" |
+ assert_equals(pi.textContent, "def") |
+ assert_equals(pi.data, "def") |
+ assert_equals(pi.target, "x") |
+}, "For a ProcessingInstruction, textContent should set the data") |
+ |
+test(function() { |
+ var comment = document.createComment("abc") |
+ comment.textContent = "def" |
+ assert_equals(comment.textContent, "def") |
+ assert_equals(comment.data, "def") |
+}, "For a Comment, textContent should set the data") |
+ |
+// Any other node: |
+documents.forEach(function(argument) { |
+ var doc = argument[0], creator = argument[1] |
+ test(function() { |
+ var root = doc.documentElement |
+ doc.textContent = "a" |
+ assert_equals(doc.textContent, null) |
+ assert_equals(doc.documentElement, root) |
+ }, "For Documents created by " + creator + ", setting textContent should do nothing") |
+}) |
+ |
+doctypes.forEach(function(argument) { |
+ var doctype = argument[0], creator = argument[1] |
+ test(function() { |
+ var props = { |
+ name: doctype.name, |
+ publicId: doctype.publicId, |
+ systemId: doctype.systemId, |
+ } |
+ doctype.textContent = "b" |
+ assert_equals(doctype.textContent, null) |
+ assert_equals(doctype.name, props.name, "name should not change") |
+ assert_equals(doctype.publicId, props.publicId, "publicId should not change") |
+ assert_equals(doctype.systemId, props.systemId, "systemId should not change") |
+ }, "For DocumentType created by " + creator + ", setting textContent should do nothing") |
+}) |
+ |
+</script> |