Bug 1286810: [MSE] P6. Add webref test ensuring new spec compliance. r?jgraham draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Sat, 16 Jul 2016 13:29:33 +1000
changeset 388824 19aff9dfeb099aa5f3cd382ffb54f71f9ca75f6d
parent 388823 8d86667bb87742c0890e01cdc5791da3ad8a2d6b
child 388886 8a5852b04fe6250d711178cefa63c9223c5066da
push id23241
push userbmo:jyavenard@mozilla.com
push dateMon, 18 Jul 2016 02:31:08 +0000
reviewersjgraham
bugs1286810
milestone50.0a1
Bug 1286810: [MSE] P6. Add webref test ensuring new spec compliance. r?jgraham MozReview-Commit-ID: 2ZyjR2J8o3h
testing/web-platform/tests/media-source/mediasource-duration.html
--- a/testing/web-platform/tests/media-source/mediasource-duration.html
+++ b/testing/web-platform/tests/media-source/mediasource-duration.html
@@ -231,11 +231,37 @@
                   test.waitForExpectedEvents(function()
                   {
                       mediaElement.removeEventListener('durationchange', durationchangeEventHandler);
                       assert_equals(durationchangeEventCounter, expectedDurationChangeEventCount, 'durationchanges');
                       test.done();
                   });
               });
           }, 'Test setting same duration multiple times does not fire duplicate durationchange');
+
+          mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
+          {
+              assert_greater_than(segmentInfo.duration, 2, 'Sufficient test media duration');
+
+              var fullDuration = segmentInfo.duration;
+              var newDuration = fullDuration / 2;
+
+              // Append all the segments
+              test.expectEvent(sourceBuffer, 'updateend', 'sourceBuffer');
+              test.expectEvent(mediaElement, 'loadedmetadata', 'mediaElement');
+              sourceBuffer.appendBuffer(mediaData);
+
+              test.waitForExpectedEvents(function()
+              {
+                  assert_false(sourceBuffer.updating, "updating");
+
+                  assert_throws("InvalidStateError", function()
+                  {
+                      mediaSource.duration = newDuration;
+                  }, "duration");
+
+                  test.done();
+              });
+          }, 'Test setting the duration to less than the highest starting presentation timestamp will throw');
+
         </script>
     </body>
 </html>