summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/embedded-content/media-elements/track/track-element/track-helpers.js
blob: 09c85dd7bc12d2b98e2580335bbd17730f1fbea8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
function enableAllTextTracks(textTracks) {
    for (var i = 0; i < textTracks.length; i++) {
        var track = textTracks[i];
        if (track.mode == "disabled")
            track.mode = "hidden";
    }
}

function assert_cues_equal(cues, expected) {
    assert_equals(cues.length, expected.length);
    for (var i = 0; i < cues.length; i++) {
        assert_equals(cues[i].id, expected[i].id);
        assert_equals(cues[i].startTime, expected[i].startTime);
        assert_equals(cues[i].endTime, expected[i].endTime);
        assert_equals(cues[i].text, expected[i].text);
    }
}

function assert_cues_match(cues, expected) {
    assert_equals(cues.length, expected.length);
    for (var i = 0; i < cues.length; i++) {
        var cue = cues[i];
        var expectedItem = expected[i];
        for (var property of Object.getOwnPropertyNames(expectedItem))
            assert_equals(cue[property], expectedItem[property]);
    }
}

function assert_cues_html_content(cues, expected) {
    assert_equals(cues.length, expected.length);
    for (var i = 0; i < cues.length; i++) {
        var expectedItem = expected[i];
        var property = Object.getOwnPropertyNames(expectedItem)[0];
        var propertyValue = expectedItem[property];
        assert_equals(propertyValue(cues[i]), expectedItem.expected);
    }
}

function check_cues_from_track(src, func) {
    async_test(function(t) {
        var video = document.createElement("video");
        var trackElement = document.createElement("track");
        trackElement.src = src;
        trackElement.default = true;
        video.appendChild(trackElement);

        trackElement.onload = t.step_func_done(function() {
            func(trackElement.track);
        });
    }, "Check cues from " + src);
}

function assert_cue_fragment(cue, children) {
    var fragment = createFragment(children);
    assert_true(fragment.isEqualNode(cue.getCueAsHTML()));
}

function assert_cue_fragment_as_textcontent(cue, children) {
    var fragment = createFragment(children);
    assert_equals(cue.getCueAsHTML().textContent, fragment.textContent);
}

function createFragment(children) {
    var fragment = document.createDocumentFragment();
    cloneChildrenToFragment(fragment, children);
    return fragment;
}

function cloneChildrenToFragment(root, children) {
    for (var child of children) {
        var childElement;
        if (child.type == "text") {
            childElement = document.createTextNode(child.value);
        } else {
            childElement = document.createElement(child.type);
            var styles = child.style || {};
            for (var attr of Object.getOwnPropertyNames(styles))
                childElement[attr] = styles[attr];
            cloneChildrenToFragment(childElement, child.value);
        }
        root.appendChild(childElement);
    }
}