| <!DOCTYPE html> | 
 | <html> | 
 | <head> | 
 |  <meta charset="utf-8"> | 
 |  <title>SourceBuffer handling of invalid codecs in the initialization segment</title> | 
 |  <link rel="author" title="Alicia Boya GarcĂa" href="mailto:aboya@igalia.com"> | 
 |  <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> | 
 |  function testInvalidCodec(test, mediaElement, mediaSource, mediaType, url) { | 
 |  assert_true(MediaSource.isTypeSupported(mediaType), `Media type not supported in this browser: isTypeSupported('${mediaType}')`); | 
 |  | 
 |  MediaSourceUtil.loadBinaryData(test, url, (mediaData) => { | 
 |  _testInvalidCodecWithData(test, mediaElement, mediaSource, mediaType, mediaData); | 
 |  }); | 
 |  } | 
 |  | 
 |  function _testInvalidCodecWithData(test, mediaElement, mediaSource, mediaType, mediaData) { | 
 |  const sourceBuffer = mediaSource.addSourceBuffer(mediaType); | 
 |  sourceBuffer.appendBuffer(mediaData); | 
 |  test.expectEvent(sourceBuffer, 'error', 'Append ended with error'); | 
 |  test.waitForExpectedEvents(() => { | 
 |  test.done(); | 
 |  }) | 
 |  } | 
 |  | 
 |  // These test cases provide a typical media MIME type, but the actual files have been mangled to declare a different, | 
 |  // unsupported, fictitious codec (MP4 fourcc: 'zzzz', WebM codec id 'V_ZZZ'). The browser should report a parsing | 
 |  // error. | 
 |  | 
 |  mediasource_test((test, mediaElement, mediaSource) => { | 
 |  testInvalidCodec(test, mediaElement, mediaSource, 'video/mp4;codecs="avc1.4D4001"', 'mp4/invalid-codec.mp4'); | 
 |  }, 'Test an MP4 with an invalid codec results in an error.'); | 
 |  | 
 |  mediasource_test((test, mediaElement, mediaSource) => { | 
 |  testInvalidCodec(test, mediaElement, mediaSource, 'video/webm; codecs="vp8"', 'webm/invalid-codec.webm'); | 
 |  }, 'Test a WebM with an invalid codec results in an error.'); | 
 |  | 
 | </script> | 
 | </body> | 
 | </html> |