[MSE] Implement Range Removal algorithm.
https://bugs.webkit.org/show_bug.cgi?id=140622.

Patch by Bartlomiej Gajda <b.gajda@samsung.com> on 2015-01-23
Reviewed by Jer Noble.

Source/WebCore:

This extract Range Removal algorithm (Editor's Draft version, bug:26316) from remove(),
to separate function to deal with old FIXME since bug in spec was resolved.
This should both guarantee good order of events, and prevent from switching to 'open' state
during end of stream.

Test: media/media-source/media-source-end-of-stream-readyState.html

* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::setDurationInternal): update to use rangeRemoval(), not remove()
(WebCore::MediaSource::streamEndedWithError): remove FIXME, brigning back correct order of events.
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::remove): comments up to spec, extract rangeRemoval algorithm.
(WebCore::SourceBuffer::rangeRemoval):
(WebCore::SourceBuffer::removeTimerFired): comments up to spec.
* Modules/mediasource/SourceBuffer.h:

LayoutTests:

Added short test to check whether endOfStream incorrectly switches back
to 'open' state.

* media/media-source/media-source-end-of-stream-readyState.html: Added.
* media/media-source/media-source-end-of-stream-readyState-expected.txt: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@179044 268f45cc-cd09-0410-ab3c-d52691b4dbfc
7 files changed