| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="/w3c/resources/testharness.js"></script> |
| <script src="/w3c/resources/testharnessreport.js"></script> |
| <script src="mediasource-util.js"></script> |
| <link rel='stylesheet' href='/w3c/resources/testharness.css'> |
| </head> |
| <body> |
| <div id="log"></div> |
| <script> |
| mediasource_test(function(test, mediaElement, mediaSource) |
| { |
| var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); |
| assert_true(sourceBuffer != null, 'New SourceBuffer returned'); |
| |
| sourceBuffer.appendWindowStart = 100.0; |
| sourceBuffer.appendWindowEnd = 500.0; |
| assert_equals(sourceBuffer.appendWindowStart, 100.0, 'appendWindowStart is correctly set'); |
| assert_equals(sourceBuffer.appendWindowEnd, 500.0, 'appendWindowEnd is correctly set'); |
| |
| sourceBuffer.appendWindowStart = 200.0; |
| sourceBuffer.appendWindowEnd = 400.0; |
| assert_equals(sourceBuffer.appendWindowStart, 200.0, 'appendWindowStart is correctly reset'); |
| assert_equals(sourceBuffer.appendWindowEnd, 400.0, 'appendWindowEnd is correctly reset'); |
| test.done(); |
| }, 'Test correctly reset appendWindowStart and appendWindowEnd values'); |
| |
| mediasource_test(function(test, mediaElement, mediaSource) |
| { |
| var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); |
| assert_true(sourceBuffer != null, 'New SourceBuffer returned'); |
| sourceBuffer.appendWindowEnd = 500.0; |
| |
| assert_throws({name: 'TypeError'}, |
| function() { sourceBuffer.appendWindowStart = Number.NEGATIVE_INFINITY; }, |
| 'set appendWindowStart throws an exception for Number.NEGATIVE_INFINITY.'); |
| |
| assert_throws({name: 'TypeError'}, |
| function() { sourceBuffer.appendWindowStart = Number.POSITIVE_INFINITY; }, |
| 'set appendWindowStart throws an exception for Number.POSITIVE_INFINITY.'); |
| |
| assert_throws({name: 'TypeError'}, |
| function() { sourceBuffer.appendWindowStart = Number.NaN; }, |
| 'set appendWindowStart throws an exception for Number.NaN.'); |
| |
| assert_throws({name: 'TypeError'}, |
| function() { sourceBuffer.appendWindowStart = 600.0; }, |
| 'set appendWindowStart throws an exception when greater than appendWindowEnd.'); |
| |
| assert_throws({name: 'TypeError'}, |
| function() { sourceBuffer.appendWindowStart = sourceBuffer.appendWindowEnd; }, |
| 'set appendWindowStart throws an exception when equal to appendWindowEnd.'); |
| |
| assert_throws({name: 'TypeError'}, |
| function() { sourceBuffer.appendWindowEnd = sourceBuffer.appendWindowStart; }, |
| 'set appendWindowEnd throws an exception when equal to appendWindowStart.'); |
| |
| assert_throws({name: 'TypeError'}, |
| function() { sourceBuffer.appendWindowEnd = sourceBuffer.appendWindowStart - 1; }, |
| 'set appendWindowEnd throws an exception if less than appendWindowStart.'); |
| |
| assert_throws({name: 'TypeError'}, |
| function() { sourceBuffer.appendWindowStart = -100.0; }, |
| 'set appendWindowStart throws an exception when less than 0.'); |
| |
| assert_throws({name: 'TypeError'}, |
| function() { sourceBuffer.appendWindowEnd = -100.0; }, |
| 'set appendWindowEnd throws an exception when less than 0.'); |
| |
| assert_throws({name: 'TypeError'}, |
| function() { sourceBuffer.appendWindowEnd = Number.NaN; }, |
| 'set appendWindowEnd throws an exception if NaN.'); |
| |
| assert_throws({name: 'TypeError'}, |
| function() { sourceBuffer.appendWindowEnd = undefined; }, |
| 'set appendWindowEnd throws an exception if undefined.'); |
| |
| assert_throws({name: 'TypeError'}, |
| function() { sourceBuffer.appendWindowStart = undefined; }, |
| 'set appendWindowStart throws an exception if undefined.'); |
| |
| test.done(); |
| }, 'Test set wrong values to appendWindowStart and appendWindowEnd.'); |
| |
| mediasource_test(function(test, mediaElement, mediaSource) |
| { |
| var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); |
| assert_true(sourceBuffer != null, 'New SourceBuffer returned'); |
| |
| sourceBuffer.appendWindowStart = ''; |
| assert_true(sourceBuffer.appendWindowStart == 0, 'appendWindowStart is 0'); |
| |
| sourceBuffer.appendWindowStart = '10'; |
| assert_true(sourceBuffer.appendWindowStart == 10, 'appendWindowStart is 10'); |
| |
| sourceBuffer.appendWindowStart = null; |
| assert_true(sourceBuffer.appendWindowStart == 0, 'appendWindowStart is 0'); |
| |
| sourceBuffer.appendWindowStart = true; |
| assert_true(sourceBuffer.appendWindowStart == 1, 'appendWindowStart is 1'); |
| |
| sourceBuffer.appendWindowStart = false; |
| assert_true(sourceBuffer.appendWindowStart == 0, 'appendWindowStart is 0'); |
| |
| sourceBuffer.appendWindowEnd = '100'; |
| assert_true(sourceBuffer.appendWindowEnd == 100, 'appendWindowEnd is 100'); |
| |
| test.done(); |
| |
| }, 'Test set correct values to appendWindowStart and appendWindowEnd.'); |
| |
| mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
| { |
| mediaSource.removeSourceBuffer(sourceBuffer); |
| assert_throws('InvalidStateError', |
| function() { sourceBuffer.appendWindowStart = 100.0; }, |
| 'set appendWindowStart throws an exception when mediasource object is not associated with a buffer.'); |
| |
| assert_throws('InvalidStateError', |
| function() { sourceBuffer.appendWindowEnd = 500.0; }, |
| 'set appendWindowEnd throws an exception when mediasource object is not associated with a buffer.'); |
| test.done(); |
| |
| }, 'Test appendwindow throw error when mediasource object is not associated with a sourebuffer.'); |
| |
| mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
| { |
| test.expectEvent(sourceBuffer, 'updateend', 'sourceBuffer'); |
| sourceBuffer.appendBuffer(mediaData); |
| assert_true(sourceBuffer.updating, 'updating attribute is true'); |
| |
| assert_throws('InvalidStateError', |
| function() { sourceBuffer.appendWindowStart = 100.0; }, |
| 'set appendWindowStart throws an exception when there is a pending append.'); |
| |
| assert_throws('InvalidStateError', |
| function() { sourceBuffer.appendWindowEnd = 500.0; }, |
| 'set appendWindowEnd throws an exception when there is a pending append.'); |
| |
| test.waitForExpectedEvents(function() |
| { |
| assert_false(sourceBuffer.updating, 'updating attribute is false'); |
| test.done(); |
| }); |
| }, 'Test set appendWindowStart and appendWindowEnd when source buffer updating.'); |
| |
| mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
| { |
| test.expectEvent(sourceBuffer, 'updateend', 'sourceBuffer'); |
| sourceBuffer.appendBuffer(mediaData); |
| assert_true(sourceBuffer.updating, 'updating attribute is true'); |
| |
| sourceBuffer.abort(); |
| assert_equals(sourceBuffer.appendWindowStart, 0, 'appendWindowStart is 0 after an abort'); |
| assert_equals(sourceBuffer.appendWindowEnd, Number.POSITIVE_INFINITY, |
| 'appendWindowStart is POSITIVE_INFINITY after an abort'); |
| test.waitForExpectedEvents(function() |
| { |
| assert_false(sourceBuffer.updating, 'updating attribute is false'); |
| test.done(); |
| }); |
| }, 'Test appendWindowStart and appendWindowEnd value after a sourceBuffer.abort().'); |
| |
| mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
| { |
| assert_equals(sourceBuffer.appendWindowStart, 0, 'appendWindowStart is 0 initially'); |
| assert_equals(sourceBuffer.appendWindowEnd, Number.POSITIVE_INFINITY, |
| 'appendWindowStart is POSITIVE_INFINITY initially'); |
| test.waitForExpectedEvents(function() |
| { |
| test.done(); |
| }); |
| }, 'Test read appendWindowStart and appendWindowEnd initial values.'); |
| |
| </script> |
| </body> |
| </html> |