4 <script src=
"/w3c/resources/testharness.js"></script>
5 <script src=
"/w3c/resources/testharnessreport.js"></script>
6 <script src=
"mediasource-util.js"></script>
7 <link rel='stylesheet' href='/w3c/resources/testharness.css'
>
12 mediasource_test(function(test
, mediaElement
, mediaSource
)
14 var sourceBuffer
= mediaSource
.addSourceBuffer(MediaSourceUtil
.AUDIO_VIDEO_TYPE
);
15 assert_true(sourceBuffer
!= null, 'New SourceBuffer returned');
17 sourceBuffer
.appendWindowStart
= 100.0;
18 sourceBuffer
.appendWindowEnd
= 500.0;
19 assert_equals(sourceBuffer
.appendWindowStart
, 100.0, 'appendWindowStart is correctly set');
20 assert_equals(sourceBuffer
.appendWindowEnd
, 500.0, 'appendWindowEnd is correctly set');
22 sourceBuffer
.appendWindowStart
= 200.0;
23 sourceBuffer
.appendWindowEnd
= 400.0;
24 assert_equals(sourceBuffer
.appendWindowStart
, 200.0, 'appendWindowStart is correctly reset');
25 assert_equals(sourceBuffer
.appendWindowEnd
, 400.0, 'appendWindowEnd is correctly reset');
27 }, 'Test correctly reset appendWindowStart and appendWindowEnd values');
29 mediasource_test(function(test
, mediaElement
, mediaSource
)
31 var sourceBuffer
= mediaSource
.addSourceBuffer(MediaSourceUtil
.AUDIO_VIDEO_TYPE
);
32 assert_true(sourceBuffer
!= null, 'New SourceBuffer returned');
33 sourceBuffer
.appendWindowEnd
= 500.0;
35 assert_throws({name
: 'TypeError'},
36 function() { sourceBuffer
.appendWindowStart
= Number
.NEGATIVE_INFINITY
; },
37 'set appendWindowStart throws an exception for Number.NEGATIVE_INFINITY.');
39 assert_throws({name
: 'TypeError'},
40 function() { sourceBuffer
.appendWindowStart
= Number
.POSITIVE_INFINITY
; },
41 'set appendWindowStart throws an exception for Number.POSITIVE_INFINITY.');
43 assert_throws({name
: 'TypeError'},
44 function() { sourceBuffer
.appendWindowStart
= Number
.NaN
; },
45 'set appendWindowStart throws an exception for Number.NaN.');
47 assert_throws('InvalidAccessError',
48 function() { sourceBuffer
.appendWindowStart
= 600.0; },
49 'set appendWindowStart throws an exception when greater than appendWindowEnd.');
51 assert_throws('InvalidAccessError',
52 function() { sourceBuffer
.appendWindowStart
= sourceBuffer
.appendWindowEnd
; },
53 'set appendWindowStart throws an exception when equal to appendWindowEnd.');
55 assert_throws('InvalidAccessError',
56 function() { sourceBuffer
.appendWindowEnd
= sourceBuffer
.appendWindowStart
; },
57 'set appendWindowEnd throws an exception when equal to appendWindowStart.');
59 assert_throws('InvalidAccessError',
60 function() { sourceBuffer
.appendWindowEnd
= sourceBuffer
.appendWindowStart
- 1; },
61 'set appendWindowEnd throws an exception if less than appendWindowStart.');
63 assert_throws('InvalidAccessError',
64 function() { sourceBuffer
.appendWindowStart
= -100.0; },
65 'set appendWindowStart throws an exception when less than 0.');
67 assert_throws('InvalidAccessError',
68 function() { sourceBuffer
.appendWindowEnd
= -100.0; },
69 'set appendWindowEnd throws an exception when less than 0.');
71 assert_throws('InvalidAccessError',
72 function() { sourceBuffer
.appendWindowEnd
= Number
.NaN
; },
73 'set appendWindowEnd throws an exception if NaN.');
75 assert_throws('InvalidAccessError',
76 function() { sourceBuffer
.appendWindowEnd
= undefined; },
77 'set appendWindowEnd throws an exception if undefined.');
79 assert_throws({name
: 'TypeError'},
80 function() { sourceBuffer
.appendWindowStart
= undefined; },
81 'set appendWindowStart throws an exception if undefined.');
84 }, 'Test set wrong values to appendWindowStart and appendWindowEnd.');
86 mediasource_test(function(test
, mediaElement
, mediaSource
)
88 var sourceBuffer
= mediaSource
.addSourceBuffer(MediaSourceUtil
.AUDIO_VIDEO_TYPE
);
89 assert_true(sourceBuffer
!= null, 'New SourceBuffer returned');
91 sourceBuffer
.appendWindowStart
= '';
92 assert_true(sourceBuffer
.appendWindowStart
== 0, 'appendWindowStart is 0');
94 sourceBuffer
.appendWindowStart
= '10';
95 assert_true(sourceBuffer
.appendWindowStart
== 10, 'appendWindowStart is 10');
97 sourceBuffer
.appendWindowStart
= null;
98 assert_true(sourceBuffer
.appendWindowStart
== 0, 'appendWindowStart is 0');
100 sourceBuffer
.appendWindowStart
= true;
101 assert_true(sourceBuffer
.appendWindowStart
== 1, 'appendWindowStart is 1');
103 sourceBuffer
.appendWindowStart
= false;
104 assert_true(sourceBuffer
.appendWindowStart
== 0, 'appendWindowStart is 0');
106 sourceBuffer
.appendWindowEnd
= '100';
107 assert_true(sourceBuffer
.appendWindowEnd
== 100, 'appendWindowEnd is 100');
111 }, 'Test set correct values to appendWindowStart and appendWindowEnd.');
113 mediasource_testafterdataloaded(function(test
, mediaElement
, mediaSource
, segmentInfo
, sourceBuffer
, mediaData
)
115 mediaSource
.removeSourceBuffer(sourceBuffer
);
116 assert_throws('InvalidStateError',
117 function() { sourceBuffer
.appendWindowStart
= 100.0; },
118 'set appendWindowStart throws an exception when mediasource object is not associated with a buffer.');
120 assert_throws('InvalidStateError',
121 function() { sourceBuffer
.appendWindowEnd
= 500.0; },
122 'set appendWindowEnd throws an exception when mediasource object is not associated with a buffer.');
125 }, 'Test appendwindow throw error when mediasource object is not associated with a sourebuffer.');
127 mediasource_testafterdataloaded(function(test
, mediaElement
, mediaSource
, segmentInfo
, sourceBuffer
, mediaData
)
129 test
.expectEvent(sourceBuffer
, 'updateend', 'sourceBuffer');
130 sourceBuffer
.appendBuffer(mediaData
);
131 assert_true(sourceBuffer
.updating
, 'updating attribute is true');
133 assert_throws('InvalidStateError',
134 function() { sourceBuffer
.appendWindowStart
= 100.0; },
135 'set appendWindowStart throws an exception when there is a pending append.');
137 assert_throws('InvalidStateError',
138 function() { sourceBuffer
.appendWindowEnd
= 500.0; },
139 'set appendWindowEnd throws an exception when there is a pending append.');
141 test
.waitForExpectedEvents(function()
143 assert_false(sourceBuffer
.updating
, 'updating attribute is false');
146 }, 'Test set appendWindowStart and appendWindowEnd when source buffer updating.');
148 mediasource_testafterdataloaded(function(test
, mediaElement
, mediaSource
, segmentInfo
, sourceBuffer
, mediaData
)
150 test
.expectEvent(sourceBuffer
, 'updateend', 'sourceBuffer');
151 sourceBuffer
.appendBuffer(mediaData
);
152 assert_true(sourceBuffer
.updating
, 'updating attribute is true');
154 sourceBuffer
.abort();
155 assert_equals(sourceBuffer
.appendWindowStart
, 0, 'appendWindowStart is 0 after an abort');
156 assert_equals(sourceBuffer
.appendWindowEnd
, Number
.POSITIVE_INFINITY
,
157 'appendWindowStart is POSITIVE_INFINITY after an abort');
158 test
.waitForExpectedEvents(function()
160 assert_false(sourceBuffer
.updating
, 'updating attribute is false');
163 }, 'Test appendWindowStart and appendWindowEnd value after a sourceBuffer.abort().');
165 mediasource_testafterdataloaded(function(test
, mediaElement
, mediaSource
, segmentInfo
, sourceBuffer
, mediaData
)
167 assert_equals(sourceBuffer
.appendWindowStart
, 0, 'appendWindowStart is 0 initially');
168 assert_equals(sourceBuffer
.appendWindowEnd
, Number
.POSITIVE_INFINITY
,
169 'appendWindowStart is POSITIVE_INFINITY initially');
170 test
.waitForExpectedEvents(function()
174 }, 'Test read appendWindowStart and appendWindowEnd initial values.');