blob: 713e78199621fa14a40777bb92729c22ad2e39b6 (
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
84
85
|
<!DOCTYPE html>
<title>Cue fragment is mutable</title>
<script src="/common/media.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
p, div { display: none; }
</style>
<video>
<track src="resources/captions-html.vtt" kind="captions" default>
<script>
async_test(function(t) {
var video = document.querySelector("video");
var testTrack = document.querySelector("track");
video.oncanplaythrough = t.step_func(testMutability);
testTrack.onload = t.step_func(testMutability);
var fragment;
var eventCount = 0;
function testMutability() {
eventCount++;
if (eventCount != 2)
return;
var testCue = testTrack.track.cues[0];
// Test initial cue contents.
assert_equals(testCue.text, "Lorem <b>ipsum</b> <u>dolor</u> <i.sit>sit</i> amet,");
// Cue getCueAsHTML() should return a correct fragment.
createExpectedFragment(document.createDocumentFragment());
assert_true(fragment.isEqualNode(testCue.getCueAsHTML()));
// Appending getCuesAsHTML() twice to the DOM should be succesful.
document.getElementsByTagName("div")[0].appendChild(testCue.getCueAsHTML());
document.getElementsByTagName("div")[1].appendChild(testCue.getCueAsHTML());
createExpectedFragment(document.createElement("div"));
assert_true(fragment.isEqualNode(document.getElementsByTagName("div")[0]));
assert_true(fragment.isEqualNode(document.getElementsByTagName("div")[1]));
// The fragment returned by getCuesAsHTML() should be independently mutable.
document.getElementsByTagName("div")[0].firstChild.textContent = "Different text ";
assert_false(fragment.isEqualNode(document.getElementsByTagName("div")[0]));
assert_true(fragment.isEqualNode(document.getElementsByTagName("div")[1]));
// Calling twice getCueAsHTML() should not return the same fragment.
assert_not_equals(testCue.getCueAsHTML(), testCue.getCueAsHTML());
t.done();
}
function createExpectedFragment(rootNode) {
fragment = rootNode;
fragment.appendChild(document.createTextNode("Lorem "));
var bold = document.createElement("b");
bold.appendChild(document.createTextNode("ipsum"));
fragment.appendChild(bold);
fragment.appendChild(document.createTextNode(" "));
var underline = document.createElement("u");
underline.appendChild(document.createTextNode("dolor"));
fragment.appendChild(underline);
fragment.appendChild(document.createTextNode(" "));
var italics = document.createElement("i");
italics.className = "sit";
italics.appendChild(document.createTextNode("sit"));
fragment.appendChild(italics);
fragment.appendChild(document.createTextNode(" amet,"));
}
video.src = getVideoURI("/media/counting");
});
</script>
</video>
<p>Fragment 1</p>
<div></div>
<p>Fragment 2</p>
<div></div>
|