Index: LayoutTests/http/tests/media/media-source/mediasource-duration.html |
diff --git a/LayoutTests/http/tests/media/media-source/mediasource-duration.html b/LayoutTests/http/tests/media/media-source/mediasource-duration.html |
index ecf8e678cc764f52f03c77d5c6287f3b2a53c218..f1a4cfdcc4b645154d17e74b3b7b61a612c8335b 100644 |
--- a/LayoutTests/http/tests/media/media-source/mediasource-duration.html |
+++ b/LayoutTests/http/tests/media/media-source/mediasource-duration.html |
@@ -143,6 +143,15 @@ |
var fullDuration = segmentInfo.duration; |
var newDuration = 0.5; |
+ var durationchangeEventCounter = 0; |
+ var expectedDurationChangeEventCount = 1; |
+ var durationchangeEventHandler = test.step_func(function(event) |
+ { |
+ assert_equals(mediaElement.duration, newDuration, 'mediaElement newDuration'); |
+ assert_equals(mediaSource.duration, newDuration, 'mediaSource newDuration'); |
+ durationchangeEventCounter++; |
+ }); |
+ |
mediaElement.play(); |
// Append all the segments |
@@ -156,25 +165,23 @@ |
assert_equals(mediaSource.duration, fullDuration, 'mediaSource fullDuration'); |
assert_less_than(mediaElement.currentTime, newDuration / 2, 'mediaElement currentTime'); |
- var durationchangeEventCounter = 0; |
- var expectedDurationChangeEventCount = 1; |
- var durationchangeEventHandler = test.step_func(function(event) |
- { |
- assert_equals(mediaSource.readyState, 'ended', 'mediaSource ended'); |
- assert_equals(mediaElement.duration, newDuration, 'mediaElement newDuration'); |
- assert_equals(mediaSource.duration, newDuration, 'mediaSource newDuration'); |
- durationchangeEventCounter++; |
- }); |
- |
// Media load also fires 'durationchange' event, so only start counting them now. |
mediaElement.addEventListener('durationchange', durationchangeEventHandler); |
// Truncate duration. This should result in one 'durationchange' fired. |
mediaSource.duration = newDuration; |
+ assert_true(sourceBuffer.updating, "sourceBuffer.updating"); |
+ test.expectEvent(sourceBuffer, "updateend"); |
+ }); |
+ |
+ test.waitForExpectedEvents(function() |
+ { |
// Set duration again to make sure it does not trigger another 'durationchange' event. |
mediaSource.duration = newDuration; |
+ assert_false(sourceBuffer.updating, "sourceBuffer.updating"); |
+ |
// Mark endOfStream so that playback can reach 'ended' at the new duration. |
test.expectEvent(mediaSource, 'sourceended', 'endOfStream acknowledged'); |
mediaSource.endOfStream(); |