https://github.com/web-platform-tests/wpt
Raw File
Tip revision: 680b332f79c02e48834c707c2dbc537bdaa2a78a authored by moz-wptsync-bot on 01 November 2018, 16:42:05 UTC
Fix some differences with upstream in wpt tooling
Tip revision: 680b332
idlharness.any.js
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js

// https://w3c.github.io/media-source/

'use strict';

var mediaSource;
var sourceBuffer;
var video = document.createElement("video");

promise_test(async t => {
  const srcs = ['media-source', 'dom', 'html', 'url'];
  const [idl, dom, html, url] = await Promise.all(
      srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text())));

  var idlArray = new IdlArray();
  idlArray.add_idls(idl);
  idlArray.add_dependency_idls(dom);
  idlArray.add_dependency_idls(html);
  idlArray.add_dependency_idls(url);

  const testIdls = new Promise(resolve => {
    try {
      mediaSource = new MediaSource();
      video.src = URL.createObjectURL(mediaSource);
      mediaSource.addEventListener("sourceopen", function () {
        var defaultType ='video/webm;codecs="vp8,vorbis"';
        if (MediaSource.isTypeSupported(defaultType)) {
          sourceBuffer = mediaSource.addSourceBuffer(defaultType);
        } else {
          sourceBuffer = mediaSource.addSourceBuffer('video/mp4');
        }
        sourceBuffer.addEventListener("updateend", function (e) {
          mediaSource.endOfStream();
          resolve();
        });
        sourceBuffer.appendBuffer(new ArrayBuffer());
      });
    } catch (e) {
      // Will be surfaced in idlharness.js's test_object below.
    }
  })

  idlArray.add_objects({
    MediaSource: ['mediaSource'],
    SourceBuffer: ['sourceBuffer'],
    SourceBufferList: ['mediaSource.sourceBuffers']
  });

  const timeout = new Promise((_, reject) => t.step_timeout(reject, 3000));
  return Promise
      .race([testIdls, timeout])
      .then(() => { idlArray.test(); })
      .catch(() => {
        idlArray.test();
        return Promise.reject('Failed to create media-source objects')
      });
}, 'media-source interfaces');
back to top