Update web-platform-tests to revision 4333a1d2f109795547fc5e22ebfc8481fa649de7

This commit is contained in:
WPT Sync Bot 2018-06-22 21:05:34 -04:00
parent 728ebcc932
commit 8c46b67f8e
456 changed files with 10561 additions and 5108 deletions

View file

@ -59,6 +59,7 @@ interface SourceBuffer : EventTarget {
attribute EventHandler onabort;
void appendBuffer(BufferSource data);
void abort();
void changeType(DOMString type);
void remove(double start, unrestricted double end);
};

View file

@ -425,11 +425,11 @@
loadedmetadataCalled = true;
e.target.removeEventListener(e.type, metadata);
});
sourceBuffer.addEventListener("updateend", function updateend(e) {
sourceBuffer.addEventListener("updateend", test.step_func(function updateend(e) {
assert_true(loadedmetadataCalled);
assert_equals(mediaElement.readyState, mediaElement.HAVE_METADATA);
e.target.removeEventListener(e.type, updateend);
});
}));
test.expectEvent(sourceBuffer, "updateend", "remainingInitSegment append ended.");
test.expectEvent(mediaElement, "loadedmetadata", "loadedmetadata event received.");
sourceBuffer.appendBuffer(initSegment);
@ -444,11 +444,11 @@
loadeddataCalled = true;
e.target.removeEventListener(e.type, loadeddata);
});
sourceBuffer.addEventListener("updateend", function updateend(e) {
sourceBuffer.addEventListener("updateend", test.step_func(function updateend(e) {
assert_true(loadeddataCalled);
assert_greater_than_equal(mediaElement.readyState, mediaElement.HAVE_CURRENT_DATA);
e.target.removeEventListener(e.type, updateend);
});
}));
test.expectEvent(sourceBuffer, "updateend", "mediaSegment append ended.");
test.expectEvent(mediaElement, "loadeddata", "loadeddata fired.");
sourceBuffer.appendBuffer(mediaSegment);

View file

@ -0,0 +1,42 @@
<!DOCTYPE html>
<!-- Copyright © 2018 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
<html>
<head>
<title>Exercise changeType for supported test types.</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="mediasource-util.js"></script>
<script src="mediasource-changetype-util.js"></script>
</head>
<body>
<div id="log"></div>
<script>
function generateChangeTypeTests(audio_types, video_types)
{
async_test(function(test) {
assert_true(audio_types.length > 1, "Browser doesn't support at least 2 types of audio test media" + audio_types);
assert_true(video_types.length > 1, "Browser doesn't support at least 2 types of video test media");
test.done();
}, "Check if browser supports enough test media types");
// Generate audio-only changeType tests
for (let audio1 of audio_types) {
for (let audio2 of audio_types) {
mediaSourceChangeTypeTest(audio1, audio2, "Test audio-only changeType for " + audio1.type + " <-> " + audio2.type);
}
}
// Generate video-only changeType tests
for (let video1 of video_types) {
for (let video2 of video_types) {
mediaSourceChangeTypeTest(video1, video2, "Test video-only changeType for " + video1.type + " <-> " + video2.type);
}
}
}
findSupportedChangeTypeTestTypes(generateChangeTypeTests);
</script>
</body>
</html>

View file

@ -0,0 +1,156 @@
// Copyright © 2018 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang).
function findSupportedChangeTypeTestTypes(cb)
{
var CHANGE_TYPE_MEDIA_LIST = [
{
type: 'video/webm; codecs="vp8"',
is_video: true,
url: 'webm/test-v-128k-320x240-24fps-8kfr.webm'
},
{
type: 'video/webm; codecs="vp9"',
is_video: true,
url: 'webm/test-vp9.webm'
},
{
type: 'video/mp4; codecs="avc1.4D4001"',
is_video: true,
url: 'mp4/test-v-128k-320x240-24fps-8kfr.mp4'
},
{
type: 'video/webm; codecs="vorbis"',
is_video: false,
url: 'webm/test-a-128k-44100Hz-1ch.webm'
},
{
type: 'video/mp4; codecs="mp4a.40.2"',
is_video: false,
url: 'mp4/test-a-128k-44100Hz-1ch.mp4'
},
{
type: 'audio/mpeg',
is_video: false,
url: 'mp3/sound_5.mp3'
}
];
var audio_result = [];
var video_result = [];
for (var i = 0; i < CHANGE_TYPE_MEDIA_LIST.length; ++i) {
var media = CHANGE_TYPE_MEDIA_LIST[i];
if (window.MediaSource && MediaSource.isTypeSupported(media.type)) {
if (media.is_video === true) {
video_result.push(media);
} else {
audio_result.push(media);
}
}
}
cb(audio_result, video_result);
}
function appendBuffer(test, sourceBuffer, data)
{
test.expectEvent(sourceBuffer, "update");
test.expectEvent(sourceBuffer, "updateend");
sourceBuffer.appendBuffer(data);
}
function trimBuffered(test, mediaElement, sourceBuffer, minimumPreviousDuration, newDuration)
{
assert_less_than(newDuration, minimumPreviousDuration);
assert_less_than(minimumPreviousDuration, mediaElement.duration);
test.expectEvent(sourceBuffer, "update");
test.expectEvent(sourceBuffer, "updateend");
sourceBuffer.remove(newDuration, Infinity);
}
function trimDuration(test, mediaElement, mediaSource, newDuration)
{
assert_less_than(newDuration, mediaElement.duration);
test.expectEvent(mediaElement, "durationchange");
mediaSource.duration = newDuration;
}
function runChangeTypeTest(test, mediaElement, mediaSource, typeA, dataA, typeB, dataB)
{
var sourceBuffer = mediaSource.addSourceBuffer(typeA);
appendBuffer(test, sourceBuffer, dataA);
// changeType A->B and append B starting at 0.5 seconds.
test.waitForExpectedEvents(function()
{
sourceBuffer.changeType(typeB);
sourceBuffer.timestampOffset = 0.5;
appendBuffer(test, sourceBuffer, dataB);
});
// changeType B->B and append B starting at 1.0 seconds.
test.waitForExpectedEvents(function()
{
sourceBuffer.changeType(typeB);
sourceBuffer.timestampOffset = 1.0;
appendBuffer(test, sourceBuffer, dataB);
});
// changeType B->A and append A starting at 1.5 seconds.
test.waitForExpectedEvents(function()
{
sourceBuffer.changeType(typeA);
sourceBuffer.timestampOffset = 1.5;
appendBuffer(test, sourceBuffer, dataA);
});
// changeTypoe A->A and append A starting at 1.3 seconds.
test.waitForExpectedEvents(function()
{
sourceBuffer.changeType(typeA);
sourceBuffer.timestampOffset = 1.3;
appendBuffer(test, sourceBuffer, dataA);
});
// Trim duration to 2 seconds, then play through to end.
test.waitForExpectedEvents(function()
{
trimBuffered(test, mediaElement, sourceBuffer, 2.1, 2);
});
test.waitForExpectedEvents(function()
{
trimDuration(test, mediaElement, mediaSource, 2);
});
test.waitForExpectedEvents(function()
{
assert_equals(mediaElement.currentTime, 0);
test.expectEvent(mediaSource, "sourceended");
test.expectEvent(mediaElement, "play");
test.expectEvent(mediaElement, "ended");
mediaSource.endOfStream();
mediaElement.play();
});
test.waitForExpectedEvents(function() {
test.done();
});
}
function mediaSourceChangeTypeTest(metadataA, metadataB, description)
{
mediasource_test(function(test, mediaElement, mediaSource)
{
mediaElement.pause();
mediaElement.addEventListener('error', test.unreached_func("Unexpected event 'error'"));
MediaSourceUtil.loadBinaryData(test, metadataA.url, function(dataA) {
MediaSourceUtil.loadBinaryData(test, metadataB.url, function(dataB) {
runChangeTypeTest(test, mediaElement, mediaSource, metadataA.type, dataA, metadataB.type, dataB);
});
});
}, description);
}

View file

@ -0,0 +1,149 @@
<!DOCTYPE html>
<!-- Copyright © 2018 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
<html>
<head>
<meta charset="utf-8">
<title>SourceBuffer.changeType() test cases.</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="mediasource-util.js"></script>
</head>
<body>
<div id="log"></div>
<script>
mediasource_test(function(test, mediaElement, mediaSource)
{
var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE);
assert_throws(new TypeError(), function()
{
sourceBuffer.changeType("");
}, "changeType");
test.done();
}, "Test changeType with an empty type.");
mediasource_test(function(test, mediaElement, mediaSource)
{
var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE);
mediaSource.removeSourceBuffer(sourceBuffer);
assert_throws("InvalidStateError", function()
{
sourceBuffer.changeType(MediaSourceUtil.AUDIO_VIDEO_TYPE);
}, "changeType");
test.done();
}, "Test changeType after SourceBuffer removed from mediaSource.");
mediasource_test(function(test, mediaElement, mediaSource)
{
var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE);
sourceBuffer.appendBuffer(new Uint8Array(0));
assert_true(sourceBuffer.updating, "Updating flag set when a buffer is appended.");
assert_throws("InvalidStateError", function()
{
sourceBuffer.changeType(MediaSourceUtil.AUDIO_VIDEO_TYPE);
}, "changeType");
test.done();
}, "Test changeType while update pending.");
mediasource_test(function(test, mediaElement, mediaSource)
{
var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE);
var unsupported_type = null;
assert_false(MediaSource.isTypeSupported(unsupported_type), "null MIME type is not expected to be supported.");
assert_throws("NotSupportedError", function()
{
sourceBuffer.changeType(unsupported_type);
}, "changeType");
test.done();
}, "Test changeType with null type.");
mediasource_test(function(test, mediaElement, mediaSource)
{
var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE);
var unsupported_type = 'invalidType';
assert_false(MediaSource.isTypeSupported(unsupported_type), unsupported_type + " is not expected to be supported.");
assert_throws("NotSupportedError", function()
{
sourceBuffer.changeType(unsupported_type);
}, "changeType");
test.done();
}, "Test changeType with unsupported type.");
mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
{
test.expectEvent(sourceBuffer, "updatestart");
test.expectEvent(sourceBuffer, "update");
test.expectEvent(sourceBuffer, "updateend");
sourceBuffer.appendBuffer(mediaData);
test.waitForExpectedEvents(function()
{
mediaSource.endOfStream();
assert_equals(mediaSource.readyState, "ended");
test.expectEvent(mediaSource, "sourceopen");
sourceBuffer.changeType(MediaSourceUtil.AUDIO_VIDEO_TYPE);
assert_equals(mediaSource.readyState, "open");
});
test.waitForExpectedEvents(function()
{
test.done();
});
}, "Test changeType transitioning readyState from 'ended' to 'open'.");
mediasource_test(function(test, mediaElement, mediaSource) {
var sequenceType = "audio/aac";
if (!MediaSource.isTypeSupported(sequenceType)) {
sequenceType = "audio/mpeg";
assert_true(MediaSource.isTypeSupported(sequenceType),
"No bytestream that generates timestamps is supported, aborting test");
}
assert_not_equals(MediaSourceUtil.AUDIO_ONLY_TYPE, sequenceType,
"This test requires distinct audio-only types");
var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE);
assert_equals(sourceBuffer.mode, "segments",
"None of the audioOnlyTypes in the test util generate timestamps, but mode is incorrectly set");
sourceBuffer.changeType(sequenceType);
assert_equals(sourceBuffer.mode, "sequence",
"Mode is not updated correctly for a bytestream that generates timestamps");
test.done();
}, "Test changeType sets mode to sequence for change to type that generates timestamps");
mediasource_test(function(test, mediaElement, mediaSource) {
var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE);
assert_equals(sourceBuffer.mode, "segments",
"None of the audioOnlyTypes in the test util generate timestamps, but mode is incorrectly set");
sourceBuffer.changeType(MediaSourceUtil.AUDIO_ONLY_TYPE);
assert_equals(sourceBuffer.mode, "segments",
"Previous segments mode is not retained correctly for changeType to one that doesn't generate timestamps");
sourceBuffer.mode = "sequence";
assert_equals(sourceBuffer.mode, "sequence", "mode should be sequence now");
sourceBuffer.changeType(MediaSourceUtil.AUDIO_ONLY_TYPE);
assert_equals(sourceBuffer.mode, "sequence",
"Previous sequence mode is not retained correctly for changeType to one that doesn't generate timestamps");
test.done();
}, "Test changeType retains previous mode when changing to type that doesn't generate timestamps");
</script>
</body>
</html>