| Index: third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/util/testmediasource.js
|
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/util/testmediasource.js b/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/util/testmediasource.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..47cfeb4512a4cf7adf17a84451dc88aa7b6794fe
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/util/testmediasource.js
|
| @@ -0,0 +1,49 @@
|
| +function testmediasource(config) {
|
| +
|
| + return new Promise(function(resolve, reject) {
|
| + // Fetch the media resources
|
| + var fetches = [config.audioPath, config.videoPath].map(function(path) {
|
| + return fetch(path).then(function(response) {
|
| + if (!response.ok) throw new Error('Resource fetch failed');
|
| + return response.arrayBuffer();
|
| + });
|
| + });
|
| +
|
| + Promise.all(fetches).then(function(resources) {
|
| + config.audioMedia = resources[0];
|
| + config.videoMedia = resources[1];
|
| +
|
| + // Create media source
|
| + var source = new MediaSource();
|
| + source.done = new Promise(function(resolvesource,rejectsource){
|
| +
|
| + // Create and fill source buffers when the media source is opened
|
| + source.addEventListener('sourceopen', onSourceOpen);
|
| + resolve(source);
|
| +
|
| + function onSourceOpen(event) {
|
| + var audioSourceBuffer = source.addSourceBuffer(config.audioType),
|
| + videoSourceBuffer = source.addSourceBuffer(config.videoType);
|
| +
|
| + audioSourceBuffer.addEventListener('updateend',onUpdateEnd);
|
| + videoSourceBuffer.addEventListener('updateend',onUpdateEnd);
|
| +
|
| + audioSourceBuffer.appendBuffer(config.audioMedia);
|
| + videoSourceBuffer.appendBuffer(config.videoMedia);
|
| +
|
| + function onUpdateEnd(event){
|
| + event.target.removeEventListener('updateend', onUpdateEnd);
|
| + if (!audioSourceBuffer.updating && !videoSourceBuffer.updating) {
|
| + if (source.readyState !== 'open') {
|
| + rejectsource(new Error("Media source error"));
|
| + } else {
|
| + source.endOfStream();
|
| + resolvesource();
|
| + }
|
| + }
|
| + }
|
| + }
|
| + });
|
| + });
|
| + });
|
| +}
|
|
|