tor-browser

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

track-helpers.js (2839B)


      1 function enableAllTextTracks(textTracks) {
      2    for (var i = 0; i < textTracks.length; i++) {
      3        var track = textTracks[i];
      4        if (track.mode == "disabled")
      5            track.mode = "hidden";
      6    }
      7 }
      8 
      9 function assert_cues_equal(cues, expected) {
     10    assert_equals(cues.length, expected.length);
     11    for (var i = 0; i < cues.length; i++) {
     12        assert_equals(cues[i].id, expected[i].id);
     13        assert_equals(cues[i].startTime, expected[i].startTime);
     14        assert_equals(cues[i].endTime, expected[i].endTime);
     15        assert_equals(cues[i].text, expected[i].text);
     16    }
     17 }
     18 
     19 function assert_cues_match(cues, expected) {
     20    assert_equals(cues.length, expected.length);
     21    for (var i = 0; i < cues.length; i++) {
     22        var cue = cues[i];
     23        var expectedItem = expected[i];
     24        for (var property of Object.getOwnPropertyNames(expectedItem))
     25            assert_equals(cue[property], expectedItem[property]);
     26    }
     27 }
     28 
     29 function assert_cues_html_content(cues, expected) {
     30    assert_equals(cues.length, expected.length);
     31    for (var i = 0; i < cues.length; i++) {
     32        var expectedItem = expected[i];
     33        var property = Object.getOwnPropertyNames(expectedItem)[0];
     34        var propertyValue = expectedItem[property];
     35        assert_equals(propertyValue(cues[i]), expectedItem.expected);
     36    }
     37 }
     38 
     39 function check_cues_from_track(src, func) {
     40    async_test(function(t) {
     41        var video = document.createElement("video");
     42        var trackElement = document.createElement("track");
     43        trackElement.src = src;
     44        trackElement.default = true;
     45        video.appendChild(trackElement);
     46 
     47        trackElement.onload = t.step_func_done(function() {
     48            func(trackElement.track);
     49        });
     50    }, "Check cues from " + src);
     51 }
     52 
     53 function assert_cue_fragment(cue, children) {
     54    var fragment = createFragment(children);
     55    assert_true(fragment.isEqualNode(cue.getCueAsHTML()));
     56 }
     57 
     58 function assert_cue_fragment_as_textcontent(cue, children) {
     59    var fragment = createFragment(children);
     60    assert_equals(cue.getCueAsHTML().textContent, fragment.textContent);
     61 }
     62 
     63 function createFragment(children) {
     64    var fragment = document.createDocumentFragment();
     65    cloneChildrenToFragment(fragment, children);
     66    return fragment;
     67 }
     68 
     69 function cloneChildrenToFragment(root, children) {
     70    for (var child of children) {
     71        var childElement;
     72        if (child.type == "text") {
     73            childElement = document.createTextNode(child.value);
     74        } else {
     75            childElement = document.createElement(child.type);
     76            var styles = child.style || {};
     77            for (var attr of Object.getOwnPropertyNames(styles))
     78                childElement[attr] = styles[attr];
     79            cloneChildrenToFragment(childElement, child.value);
     80        }
     81        root.appendChild(childElement);
     82    }
     83 }