mirror of
				https://github.com/lightpanda-io/browser.git
				synced 2025-10-29 23:23:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <title>Node.normalize()</title>
 | |
| <script src="/resources/testharness.js"></script>
 | |
| <script src="/resources/testharnessreport.js"></script>
 | |
| <div id=log></div>
 | |
| <script>
 | |
| test(function() {
 | |
|   var df = document.createDocumentFragment(),
 | |
|       t1 = document.createTextNode("1"),
 | |
|       t2 = document.createTextNode("2"),
 | |
|       t3 = document.createTextNode("3"),
 | |
|       t4 = document.createTextNode("4")
 | |
|   df.appendChild(t1)
 | |
|   df.appendChild(t2)
 | |
|   assert_equals(df.childNodes.length, 2)
 | |
|   assert_equals(df.textContent, "12")
 | |
|   var el = document.createElement('x')
 | |
|   df.appendChild(el)
 | |
|   el.appendChild(t3)
 | |
|   el.appendChild(t4)
 | |
|   document.normalize()
 | |
|   assert_equals(el.childNodes.length, 2)
 | |
|   assert_equals(el.textContent, "34")
 | |
|   assert_equals(df.childNodes.length, 3)
 | |
|   assert_equals(t1.data, "1")
 | |
|   df.normalize()
 | |
|   assert_equals(df.childNodes.length, 2)
 | |
|   assert_equals(df.firstChild, t1)
 | |
|   assert_equals(t1.data, "12")
 | |
|   assert_equals(t2.data, "2")
 | |
|   assert_equals(el.firstChild, t3)
 | |
|   assert_equals(t3.data, "34")
 | |
|   assert_equals(t4.data, "4")
 | |
| })
 | |
| 
 | |
| // https://www.w3.org/Bugs/Public/show_bug.cgi?id=19837
 | |
| test(function() {
 | |
|   var div = document.createElement("div")
 | |
|   var t1 = div.appendChild(document.createTextNode(""))
 | |
|   var t2 = div.appendChild(document.createTextNode("a"))
 | |
|   var t3 = div.appendChild(document.createTextNode(""))
 | |
|   assert_array_equals(div.childNodes, [t1, t2, t3])
 | |
|   div.normalize();
 | |
|   assert_array_equals(div.childNodes, [t2])
 | |
| }, "Empty text nodes separated by a non-empty text node")
 | |
| test(function() {
 | |
|   var div = document.createElement("div")
 | |
|   var t1 = div.appendChild(document.createTextNode(""))
 | |
|   var t2 = div.appendChild(document.createTextNode(""))
 | |
|   assert_array_equals(div.childNodes, [t1, t2])
 | |
|   div.normalize();
 | |
|   assert_array_equals(div.childNodes, [])
 | |
| }, "Empty text nodes")
 | |
| 
 | |
| // The specification for normalize is clear that only "exclusive Text
 | |
| // nodes" are to be modified. This excludes CDATASection nodes, which
 | |
| // derive from Text. Naïve implementations may fail to skip
 | |
| // CDATASection nodes, or even worse, try to test textContent or
 | |
| // nodeValue without taking care to check the node type. They will
 | |
| // fail this test.
 | |
| test(function() {
 | |
|   // We create an XML document so that we can create CDATASection.
 | |
|   // Except for the CDATASection the result should be the same for
 | |
|   // an HTML document. (No non-Text node should be touched.)
 | |
|   var doc = new DOMParser().parseFromString("<div/>", "text/xml")
 | |
|   var div = doc.documentElement
 | |
|   var t1 = div.appendChild(doc.createTextNode("a"))
 | |
|   // The first parameter is the "target" of the processing
 | |
|   // instruction, and the 2nd is the text content.
 | |
|   var t2 = div.appendChild(doc.createProcessingInstruction("pi", ""))
 | |
|   var t3 = div.appendChild(doc.createTextNode("b"))
 | |
|   var t4 = div.appendChild(doc.createCDATASection(""))
 | |
|   var t5 = div.appendChild(doc.createTextNode("c"))
 | |
|   var t6 = div.appendChild(doc.createComment(""))
 | |
|   var t7 = div.appendChild(doc.createTextNode("d"))
 | |
|   var t8 = div.appendChild(doc.createElement("el"))
 | |
|   var t9 = div.appendChild(doc.createTextNode("e"))
 | |
|   var expected = [t1, t2, t3, t4, t5, t6, t7, t8, t9]
 | |
|   assert_array_equals(div.childNodes, expected)
 | |
|   div.normalize()
 | |
|   assert_array_equals(div.childNodes, expected)
 | |
| }, "Non-text nodes with empty textContent values.")
 | |
| </script>
 | 
