tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

MutationObserver-characterData.html (9013B)


      1 <!DOCTYPE HTML>
      2 <meta charset=utf-8>
      3 <title>MutationObservers: characterData mutations</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="mutationobservers.js"></script>
      7 <h1>MutationObservers: characterData mutations</h1>
      8 <div id="log"></div>
      9 
     10 <section style="display: none">
     11 
     12 <p id='n'>text content</p>
     13 
     14 <p id='n00'>text content</p>
     15 
     16 <p id='n10'>CHAN</p>
     17 <p id='n11'>CHANGED</p>
     18 <p id='n12'>CHANGED</p>
     19 
     20 <p id='n20'>CHGED</p>
     21 <p id='n21'>CHANGED</p>
     22 <p id='n22'>CHANGED</p>
     23 
     24 <p id='n30'>CCCHANGED</p>
     25 <p id='n31'>CHANGED</p>
     26 
     27 <p id='n40'>CCCHANGED</p>
     28 <p id='n41'>CHANGED</p>
     29 
     30 <p id="n50"><?processing data?></p>
     31 
     32 <p id="n60"><!-- data --></p>
     33 
     34 <p id='n70'>CHANN</p>
     35 <p id='n71'>CHANN</p>
     36 
     37 <p id='n80'>CHANN</p>
     38 <p id='n81'>CHANN</p>
     39 
     40 <p id='n90'>CHANN</p>
     41 
     42 </section>
     43 
     44 <script>
     45  var n = document.getElementById('n').firstChild;
     46 runMutationTest(n,
     47                  {"characterData":true},
     48                  [{type: "characterData"}],
     49                  function() { n.data = "NEW VALUE"; },
     50                  "characterData Text.data: simple mutation without oldValue");
     51 
     52  var n00 = document.getElementById('n00').firstChild;
     53 runMutationTest(n00,
     54                  {"characterData":true,"characterDataOldValue":true},
     55                  [{type: "characterData", oldValue: "text content" }],
     56                  function() { n00.data = "CHANGED"; },
     57                  "characterData Text.data: simple mutation");
     58 
     59  var n10 = document.getElementById('n10').firstChild;
     60 runMutationTest(n10,
     61                  {"characterData":true,"characterDataOldValue":true},
     62                  [{type: "characterData", oldValue: "CHAN" }],
     63                  function() { n10.appendData("GED"); },
     64                  "characterData Text.appendData: simple mutation");
     65 
     66  var n11 = document.getElementById('n11').firstChild;
     67 runMutationTest(n11,
     68                  {"characterData":true,"characterDataOldValue":true},
     69                  [{type: "characterData", oldValue: "CHANGED" }],
     70                  function() { n11.appendData(""); },
     71                  "characterData Text.appendData: empty string mutation");
     72 
     73  var n12 = document.getElementById('n12').firstChild;
     74 runMutationTest(n12,
     75                  {"characterData":true,"characterDataOldValue":true},
     76                  [{type: "characterData", oldValue: "CHANGED" }],
     77                  function() { n12.appendData(null); },
     78                  "characterData Text.appendData: null string mutation");
     79 
     80  var n20 = document.getElementById('n20').firstChild;
     81 runMutationTest(n20,
     82                  {"characterData":true,"characterDataOldValue":true},
     83                  [{type: "characterData", oldValue: "CHGED" }],
     84                  function() { n20.insertData(2, "AN"); },
     85                  "characterData Text.insertData: simple mutation");
     86 
     87  var n21 = document.getElementById('n21').firstChild;
     88 runMutationTest(n21,
     89                  {"characterData":true,"characterDataOldValue":true},
     90                  [{type: "characterData", oldValue: "CHANGED" }],
     91                  function() { n21.insertData(2, ""); },
     92                  "characterData Text.insertData: empty string mutation");
     93 
     94  var n22 = document.getElementById('n22').firstChild;
     95 runMutationTest(n22,
     96                  {"characterData":true,"characterDataOldValue":true},
     97                  [{type: "characterData", oldValue: "CHANGED" }],
     98                  function() { n22.insertData(2, null); },
     99                  "characterData Text.insertData: null string mutation");
    100 
    101  var n30 = document.getElementById('n30').firstChild;
    102 runMutationTest(n30,
    103                  {"characterData":true,"characterDataOldValue":true},
    104                  [{type: "characterData", oldValue: "CCCHANGED" }],
    105                  function() { n30.deleteData(0, 2); },
    106                  "characterData Text.deleteData: simple mutation");
    107 
    108  var n31 = document.getElementById('n31').firstChild;
    109 runMutationTest(n31,
    110                  {"characterData":true,"characterDataOldValue":true},
    111                  [{type: "characterData", oldValue: "CHANGED" }, {type: "characterData", oldValue: "CHANGED" }],
    112                  function() { n31.deleteData(0, 0); n31.data = "n31"; },
    113                  "characterData Text.deleteData: empty mutation");
    114 
    115  var n40 = document.getElementById('n40').firstChild;
    116 runMutationTest(n40,
    117                  {"characterData":true,"characterDataOldValue":true},
    118                  [{type: "characterData", oldValue: "CCCHANGED" }],
    119                  function() { n40.replaceData(0, 2, "CH"); },
    120                  "characterData Text.replaceData: simple mutation");
    121 
    122  var n41 = document.getElementById('n41').firstChild;
    123 runMutationTest(n41,
    124                  {"characterData":true,"characterDataOldValue":true},
    125                  [{type: "characterData", oldValue: "CHANGED" }],
    126                  function() { n41.replaceData(0, 0, "CH"); },
    127                  "characterData Text.replaceData: empty mutation");
    128 
    129  var n50 = document.getElementById('n50').firstChild;
    130 runMutationTest(n50,
    131                  {"characterData":true,"characterDataOldValue":true},
    132                  [{type: "characterData", oldValue: "?processing data?" },{type: "characterData", oldValue: "CHANGED" },{type: "characterData", oldValue: "CHANGED" }],
    133                  function() {
    134                    n50.data = "CHANGED";
    135                    n50.deleteData(0, 0);
    136                    n50.replaceData(0, 2, "CH"); },
    137                  "characterData ProcessingInstruction: data mutations");
    138 
    139  var n60 = document.getElementById('n60').firstChild;
    140 runMutationTest(n60,
    141                  {"characterData":true,"characterDataOldValue":true},
    142                  [{type: "characterData", oldValue: " data " },{type: "characterData", oldValue: "CHANGED" },{type: "characterData", oldValue: "CHANGED" }],
    143                  function() {
    144                    n60.data = "CHANGED";
    145                    n60.deleteData(0, 0);
    146                    n60.replaceData(0, 2, "CH"); },
    147                  "characterData Comment: data mutations");
    148 
    149  var n70 = document.getElementById('n70');
    150  var r70 = null;
    151  test(function () {
    152    n70.appendChild(document.createTextNode("NNN"));
    153    n70.appendChild(document.createTextNode("NGED"));
    154    r70 = document.createRange();
    155    r70.setStart(n70.firstChild, 4);
    156    r70.setEnd(n70.lastChild, 1);
    157   }, "Range (r70) is created");
    158 runMutationTest(n70.firstChild,
    159                  {"characterData":true,"characterDataOldValue":true},
    160                  [{type: "characterData", oldValue: "CHANN" }],
    161                  function() { r70.deleteContents(); },
    162                  "characterData Range.deleteContents: child and data removal mutation");
    163 
    164  var n71 = document.getElementById('n71');
    165  var r71 = null;
    166  test(function () {
    167    n71.appendChild(document.createTextNode("NNN"));
    168    n71.appendChild(document.createTextNode("NGED"));
    169    r71 = document.createRange();
    170    r71.setStart(n71.firstChild, 4);
    171    r71.setEnd(n71.lastChild, 1);
    172   }, "Range (r71) is created");
    173 runMutationTest(n71.lastChild,
    174                  {"characterData":true,"characterDataOldValue":true},
    175                  [{type: "characterData", oldValue: "NGED"}],
    176                  function() { r71.deleteContents(); },
    177                  "characterData Range.deleteContents: child and data removal mutation (2)");
    178 
    179  var n80 = document.getElementById('n80');
    180  var r80 = null;
    181  test(function () {
    182    n80.appendChild(document.createTextNode("NNN"));
    183    n80.appendChild(document.createTextNode("NGED"));
    184    r80 = document.createRange();
    185    r80.setStart(n80.firstChild, 4);
    186    r80.setEnd(n80.lastChild, 1);
    187   }, "Range (r80) is created");
    188 runMutationTest(n80.firstChild,
    189                  {"characterData":true,"characterDataOldValue":true},
    190                  [{type: "characterData", oldValue: "CHANN" }],
    191                  function() { r80.extractContents(); },
    192                  "characterData Range.extractContents: child and data removal mutation");
    193 
    194  var n81 = document.getElementById('n81');
    195  var r81 = null;
    196  test(function () {
    197    n81.appendChild(document.createTextNode("NNN"));
    198    n81.appendChild(document.createTextNode("NGED"));
    199    r81 = document.createRange();
    200    r81.setStart(n81.firstChild, 4);
    201    r81.setEnd(n81.lastChild, 1);
    202   }, "Range (r81) is created");
    203 runMutationTest(n81.lastChild,
    204                  {"characterData":true,"characterDataOldValue":true},
    205                  [{type: "characterData", oldValue: "NGED" }],
    206                  function() { r81.extractContents(); },
    207                  "characterData Range.extractContents: child and data removal mutation (2)");
    208 
    209  var n90 = document.getElementById('n90').firstChild;
    210 runMutationTest(n90,
    211                  {"characterDataOldValue":true},
    212                  [{type: "characterData", oldValue: "CHANN" }],
    213                  function() { n90.data = "CHANGED"; },
    214                  "characterData/characterDataOldValue alone Text.data: simple mutation");
    215 </script>