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 }