| <!DOCTYPE HTML> |
| <meta charset=utf-8> |
| <title>MutationObservers: characterData mutations</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="mutationobservers.js"></script> |
| <h1>MutationObservers: characterData mutations</h1> |
| <div id="log"></div> |
| |
| <section style="display: none"> |
| |
| <p id='n'>text content</p> |
| |
| <p id='n00'>text content</p> |
| |
| <p id='n10'>CHAN</p> |
| <p id='n11'>CHANGED</p> |
| <p id='n12'>CHANGED</p> |
| |
| <p id='n20'>CHGED</p> |
| <p id='n21'>CHANGED</p> |
| <p id='n22'>CHANGED</p> |
| |
| <p id='n30'>CCCHANGED</p> |
| <p id='n31'>CHANGED</p> |
| |
| <p id='n40'>CCCHANGED</p> |
| <p id='n41'>CHANGED</p> |
| |
| <p id="n50"><?processing data?></p> |
| |
| <p id="n60"><!-- data --></p> |
| |
| <p id='n70'>CHANN</p> |
| <p id='n71'>CHANN</p> |
| |
| <p id='n80'>CHANN</p> |
| <p id='n81'>CHANN</p> |
| |
| <p id='n90'>CHANN</p> |
| |
| </section> |
| |
| <script> |
| var n = document.getElementById('n').firstChild; |
| runMutationTest(n, |
| {"characterData":true}, |
| [{type: "characterData"}], |
| function() { n.data = "NEW VALUE"; }, |
| "characterData Text.data: simple mutation without oldValue"); |
| |
| var n00 = document.getElementById('n00').firstChild; |
| runMutationTest(n00, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "text content" }], |
| function() { n00.data = "CHANGED"; }, |
| "characterData Text.data: simple mutation"); |
| |
| var n10 = document.getElementById('n10').firstChild; |
| runMutationTest(n10, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "CHAN" }], |
| function() { n10.appendData("GED"); }, |
| "characterData Text.appendData: simple mutation"); |
| |
| var n11 = document.getElementById('n11').firstChild; |
| runMutationTest(n11, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "CHANGED" }], |
| function() { n11.appendData(""); }, |
| "characterData Text.appendData: empty string mutation"); |
| |
| var n12 = document.getElementById('n12').firstChild; |
| runMutationTest(n12, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "CHANGED" }], |
| function() { n12.appendData(null); }, |
| "characterData Text.appendData: null string mutation"); |
| |
| var n20 = document.getElementById('n20').firstChild; |
| runMutationTest(n20, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "CHGED" }], |
| function() { n20.insertData(2, "AN"); }, |
| "characterData Text.insertData: simple mutation"); |
| |
| var n21 = document.getElementById('n21').firstChild; |
| runMutationTest(n21, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "CHANGED" }], |
| function() { n21.insertData(2, ""); }, |
| "characterData Text.insertData: empty string mutation"); |
| |
| var n22 = document.getElementById('n22').firstChild; |
| runMutationTest(n22, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "CHANGED" }], |
| function() { n22.insertData(2, null); }, |
| "characterData Text.insertData: null string mutation"); |
| |
| var n30 = document.getElementById('n30').firstChild; |
| runMutationTest(n30, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "CCCHANGED" }], |
| function() { n30.deleteData(0, 2); }, |
| "characterData Text.deleteData: simple mutation"); |
| |
| var n31 = document.getElementById('n31').firstChild; |
| runMutationTest(n31, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "CHANGED" }, {type: "characterData", oldValue: "CHANGED" }], |
| function() { n31.deleteData(0, 0); n31.data = "n31"; }, |
| "characterData Text.deleteData: empty mutation"); |
| |
| var n40 = document.getElementById('n40').firstChild; |
| runMutationTest(n40, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "CCCHANGED" }], |
| function() { n40.replaceData(0, 2, "CH"); }, |
| "characterData Text.replaceData: simple mutation"); |
| |
| var n41 = document.getElementById('n41').firstChild; |
| runMutationTest(n41, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "CHANGED" }], |
| function() { n41.replaceData(0, 0, "CH"); }, |
| "characterData Text.replaceData: empty mutation"); |
| |
| var n50 = document.getElementById('n50').firstChild; |
| runMutationTest(n50, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "?processing data?" },{type: "characterData", oldValue: "CHANGED" },{type: "characterData", oldValue: "CHANGED" }], |
| function() { |
| n50.data = "CHANGED"; |
| n50.deleteData(0, 0); |
| n50.replaceData(0, 2, "CH"); }, |
| "characterData ProcessingInstruction: data mutations"); |
| |
| var n60 = document.getElementById('n60').firstChild; |
| runMutationTest(n60, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: " data " },{type: "characterData", oldValue: "CHANGED" },{type: "characterData", oldValue: "CHANGED" }], |
| function() { |
| n60.data = "CHANGED"; |
| n60.deleteData(0, 0); |
| n60.replaceData(0, 2, "CH"); }, |
| "characterData Comment: data mutations"); |
| |
| var n70 = document.getElementById('n70'); |
| var r70 = null; |
| test(function () { |
| n70.appendChild(document.createTextNode("NNN")); |
| n70.appendChild(document.createTextNode("NGED")); |
| r70 = document.createRange(); |
| r70.setStart(n70.firstChild, 4); |
| r70.setEnd(n70.lastChild, 1); |
| }, "Range (r70) is created"); |
| runMutationTest(n70.firstChild, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "CHANN" }], |
| function() { r70.deleteContents(); }, |
| "characterData Range.deleteContents: child and data removal mutation"); |
| |
| var n71 = document.getElementById('n71'); |
| var r71 = null; |
| test(function () { |
| n71.appendChild(document.createTextNode("NNN")); |
| n71.appendChild(document.createTextNode("NGED")); |
| r71 = document.createRange(); |
| r71.setStart(n71.firstChild, 4); |
| r71.setEnd(n71.lastChild, 1); |
| }, "Range (r71) is created"); |
| runMutationTest(n71.lastChild, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "NGED"}], |
| function() { r71.deleteContents(); }, |
| "characterData Range.deleteContents: child and data removal mutation (2)"); |
| |
| var n80 = document.getElementById('n80'); |
| var r80 = null; |
| test(function () { |
| n80.appendChild(document.createTextNode("NNN")); |
| n80.appendChild(document.createTextNode("NGED")); |
| r80 = document.createRange(); |
| r80.setStart(n80.firstChild, 4); |
| r80.setEnd(n80.lastChild, 1); |
| }, "Range (r80) is created"); |
| runMutationTest(n80.firstChild, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "CHANN" }], |
| function() { r80.extractContents(); }, |
| "characterData Range.extractContents: child and data removal mutation"); |
| |
| var n81 = document.getElementById('n81'); |
| var r81 = null; |
| test(function () { |
| n81.appendChild(document.createTextNode("NNN")); |
| n81.appendChild(document.createTextNode("NGED")); |
| r81 = document.createRange(); |
| r81.setStart(n81.firstChild, 4); |
| r81.setEnd(n81.lastChild, 1); |
| }, "Range (r81) is created"); |
| runMutationTest(n81.lastChild, |
| {"characterData":true,"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "NGED" }], |
| function() { r81.extractContents(); }, |
| "characterData Range.extractContents: child and data removal mutation (2)"); |
| |
| var n90 = document.getElementById('n90').firstChild; |
| runMutationTest(n90, |
| {"characterDataOldValue":true}, |
| [{type: "characterData", oldValue: "CHANN" }], |
| function() { n90.data = "CHANGED"; }, |
| "characterData/characterDataOldValue alone Text.data: simple mutation"); |
| </script> |