| Index: LayoutTests/http/tests/media/media-source/mediasource-closed.html
 | 
| diff --git a/LayoutTests/http/tests/media/media-source/mediasource-closed.html b/LayoutTests/http/tests/media/media-source/mediasource-closed.html
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..69331dfd40751acf05163d9be6dd47f8e69ceb15
 | 
| --- /dev/null
 | 
| +++ b/LayoutTests/http/tests/media/media-source/mediasource-closed.html
 | 
| @@ -0,0 +1,71 @@
 | 
| +<!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>
 | 
| +          test(function ()
 | 
| +          {
 | 
| +              var mediaSource = new MediaSource();
 | 
| +              assert_equals(mediaSource.sourceBuffers.length, 0, "sourceBuffers is empty");
 | 
| +              assert_equals(mediaSource.activeSourceBuffers.length, 0, "activeSourceBuffers is empty");
 | 
| +              assert_equals(mediaSource.readyState, "closed", "readyState is 'closed'");
 | 
| +              assert_true(Number.isNaN(mediaSource.duration), "duration is NaN");
 | 
| +          }, "Test attribute values on a closed MediaSource object.");
 | 
| +
 | 
| +          test(function ()
 | 
| +          {
 | 
| +              var mediaSource = new MediaSource();
 | 
| +              assert_throws("InvalidStateError",
 | 
| +                  function() { mediaSource.addSourceBuffer('video/webm;codecs="vp8"'); },
 | 
| +                  "addSourceBuffer() throws an exception when closed.");
 | 
| +          }, "Test addSourceBuffer() while closed.");
 | 
| +
 | 
| +          mediasource_test(function(test, mediaElement, mediaSource)
 | 
| +          {
 | 
| +              var VORBIS_TYPE = 'video/webm;codecs="vorbis"';
 | 
| +              var AAC_TYPE = 'video/mp4;codecs="mp4a.40.2"';
 | 
| +              var mediaType = MediaSource.isTypeSupported(VORBIS_TYPE) ? VORBIS_TYPE : AAC_TYPE;
 | 
| +              var sourceBuffer = mediaSource.addSourceBuffer(mediaType);
 | 
| +
 | 
| +              // Setup a handler to run when the MediaSource closes.
 | 
| +              mediaSource.addEventListener('sourceclose', test.step_func(function (event)
 | 
| +              {
 | 
| +                  assert_equals(mediaSource.sourceBuffers.length, 0, "sourceBuffers is empty");
 | 
| +                  assert_equals(mediaSource.activeSourceBuffers.length, 0, "activeSourceBuffers is empty");
 | 
| +                  assert_equals(mediaSource.readyState, "closed", "readyState is 'closed'");
 | 
| +                  assert_throws("NotFoundError",
 | 
| +                      function() { mediaSource.removeSourceBuffer(sourceBuffer); },
 | 
| +                      "removeSourceBuffer() throws an exception when closed.");
 | 
| +                  test.done();
 | 
| +              }));
 | 
| +
 | 
| +              // Trigger the MediaSource to close.
 | 
| +              mediaElement.src = "";
 | 
| +          }, "Test removeSourceBuffer() while closed.");
 | 
| +
 | 
| +          test(function ()
 | 
| +          {
 | 
| +              var mediaSource = new MediaSource();
 | 
| +              assert_throws("InvalidStateError",
 | 
| +                  function() { mediaSource.endOfStream(); },
 | 
| +                  "endOfStream() throws an exception when closed.");
 | 
| +          }, "Test endOfStream() while closed.");
 | 
| +
 | 
| +
 | 
| +          test(function ()
 | 
| +          {
 | 
| +              var mediaSource = new MediaSource();
 | 
| +              assert_throws("InvalidStateError",
 | 
| +                  function() { mediaSource.duration = 10; },
 | 
| +                  "Setting duration throws an exception when closed.");
 | 
| +          }, "Test setting duration while closed.");
 | 
| +
 | 
| +        </script>
 | 
| +    </body>
 | 
| +</html>
 | 
| 
 |