Bug 140622

Summary: [MSE] Implement Range Removal algorithm.
Product: WebKit Reporter: Bartlomiej Gajda <b.gajda>
Component: MediaAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, jer.noble
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 139813    
Attachments:
Description Flags
implement range removal algorithm v1
none
implement range removal algorithm v1+test none

Description Bartlomiej Gajda 2015-01-19 10:23:31 PST
Since specification bug: "Bug 26316 - Changed duration change algorithm to avoid open transition on endOfStream()." (https://www.w3.org/Bugs/Public/show_bug.cgi?id=26316)
was resolved, FIXME introduced by (https://bugs.webkit.org/show_bug.cgi?id=134852) can be dealt with. 
(Also fixing that is prerequisity for correctly handling 'ended' state when calling buffered() of a multi trackBuffers Sourcebuffer)
Comment 1 Bartlomiej Gajda 2015-01-19 10:34:02 PST
Created attachment 244908 [details]
implement range removal algorithm v1

Added algorithm as per spec.

I've decided to keep this change here, instead of adding this to my previous patch (139813). as it's atomic enough to detect early if any additional platform specific test will be broken, 

I have test for this for multi-trackbuffer case, but I'm not sure where should I post it - here or there? (Seems natural for me to put it there)

Also should I add test for removing this fixme? Like, "after eos() if event 'sourceopen' then fail." ? 
I wasn't sure isn't this too bug specific to write (would not check anything else; for the second patch I will check whether samples are removed, but that requires 2 trackBuffers).
Comment 2 Jer Noble 2015-01-19 10:52:14 PST
Comment on attachment 244908 [details]
implement range removal algorithm v1

Seems like there could be a test here that calling setDuration() when a SourceBuffer is in the "ended" state does not re-open it.
Comment 3 Bartlomiej Gajda 2015-01-19 12:50:34 PST
Created attachment 244919 [details]
implement range removal algorithm v1+test

Added simple LayoutTest for this (which actually would pass without this patch anyway now, as long as that FIXME is there, but as I said - can't make failing test for this without multi-trackbuffer support)

As for MediaSource.setDuration(): Unless I misunderstood, point 2 from spec would cancel anything (with InvalidStateErr) while in 'ended' state.
Comment 4 Jer Noble 2015-01-23 16:40:18 PST
Comment on attachment 244919 [details]
implement range removal algorithm v1+test

Thanks for adding the test.
Comment 5 WebKit Commit Bot 2015-01-23 16:52:48 PST
Comment on attachment 244919 [details]
implement range removal algorithm v1+test

Clearing flags on attachment: 244919

Committed r179044: <http://trac.webkit.org/changeset/179044>
Comment 6 WebKit Commit Bot 2015-01-23 16:52:51 PST
All reviewed patches have been landed.  Closing bug.