tor-browser

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

cloneNode.html (4608B)


      1 <!doctype html>
      2 <title>track element cloneNode</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <div id=log></div>
      6 <script>
      7 test(function() {
      8    var elm = document.createElement('track');
      9    assert_equals(elm.readyState, elm.NONE, 'elm.readyState after element creation');
     10    var clone = elm.cloneNode(true);
     11    assert_equals(clone.readyState, clone.NONE, 'clone.readyState after element creation');
     12    assert_not_equals(clone.track, elm.track, 'clone.track and elm.track');
     13 }, document.title+', not loaded');
     14 
     15 async_test(function(t) {
     16    var elm = document.createElement('track');
     17    var video = document.createElement('video');
     18    video.appendChild(elm);
     19    elm.track.mode = 'showing';
     20    assert_equals(elm.readyState, elm.NONE, 'elm.readyState after appening to video setting mode');
     21    elm.src = 'resources/track.vtt?pipe=trickle(d1)';
     22    assert_equals(elm.readyState, elm.NONE, 'elm.readyState after setting src');
     23    t.step_timeout(function() {
     24      assert_equals(elm.readyState, elm.LOADING, 'elm.readyState in setTimeout');
     25      var clone = elm.cloneNode(true);
     26      assert_equals(clone.readyState, clone.NONE, 'clone.readyState after element creation');
     27      video.appendChild(clone);
     28      clone.track.mode = 'showing';
     29      assert_equals(clone.readyState, clone.NONE, 'clone.readyState after appending to video and setting mode');
     30      assert_not_equals(clone.track, elm.track, 'clone.track and elm.track');
     31      t.done();
     32    }, 0);
     33 }, document.title+', loading');
     34 
     35 async_test(function(t) {
     36    var elm = document.createElement('track');
     37    var video = document.createElement('video');
     38    video.appendChild(elm);
     39    elm.track.mode = 'showing';
     40    elm.src = 'data:text/vtt,'+encodeURIComponent('WEBVTT\n\n00:00:00.000 --> 00:00:01.000\nfoo');
     41    assert_equals(elm.readyState, elm.NONE, 'elm.readyState after setting src');
     42    elm.onload = this.step_func(function() {
     43        assert_equals(elm.readyState, elm.LOADED, 'elm.readyState');
     44        assert_equals(elm.track.cues.length, 1, 'elm.track.cues.length');
     45        assert_equals(elm.track.cues[0].startTime, 0, 'elm.track.cues[0].startTime');
     46        assert_equals(elm.track.cues[0].endTime, 1, 'elm.track.cues[0].endTime');
     47        assert_equals(elm.track.cues[0].text, 'foo', 'elm.track.cues[0].text');
     48        var clone = elm.cloneNode(true);
     49        assert_equals(clone.readyState, clone.NONE, 'clone.readyState after element creation');
     50        video.appendChild(clone);
     51        clone.track.mode = 'showing';
     52        assert_equals(clone.readyState, clone.NONE, 'clone.readyState after appending to video and setting mode');
     53        assert_not_equals(clone.track, elm.track, 'clone.track and elm.track');
     54        clone.onload = this.step_func(function(){
     55            assert_equals(clone.readyState, clone.LOADED, 'clone.readyState');
     56            assert_not_equals(clone.track, elm.track, 'clone.track and elm.track');
     57            assert_not_equals(clone.track.cues, elm.track.cues, 'clone.track.cues and elm.track.cues');
     58            assert_equals(clone.track.cues.length, 1, 'clone.track.cues.length');
     59            assert_not_equals(clone.track.cues[0], elm.track.cues[0], 'cues[0]');
     60            assert_equals(clone.track.cues[0].startTime, 0, 'clone.track.cues[0].startTime');
     61            assert_equals(clone.track.cues[0].endTime, 1, 'clone.track.cues[0].endTime');
     62            assert_equals(clone.track.cues[0].text, 'foo', 'clone.track.cues[0].text');
     63            this.done();
     64        });
     65        clone.onerror = this.step_func(function() { assert_unreached('clone got error'); });
     66    });
     67    elm.onerror = this.step_func(function() { assert_unreached('elm got error'); });
     68 }, document.title+', loaded');
     69 
     70 async_test(function(t) {
     71    var elm = document.createElement('track');
     72    var video = document.createElement('video');
     73    video.appendChild(elm);
     74    elm.track.mode = 'showing';
     75    elm.onerror = t.step_func(function() {
     76      assert_equals(elm.readyState, elm.ERROR, 'elm.readyState in onerror');
     77      var clone = elm.cloneNode(true);
     78      assert_equals(clone.readyState, clone.NONE, 'clone.readyState after element creation');
     79      video.appendChild(clone);
     80      clone.track.mode = 'showing';
     81      assert_equals(clone.readyState, clone.NONE, 'clone.readyState after appending to video and setting mode');
     82      assert_not_equals(clone.track, elm.track, 'clone.track and elm.track');
     83      clone.onerror = t.step_func_done();
     84    });
     85    elm.src = 'javascript:"network error"';
     86 }, document.title+', failed to load');
     87 </script>