Bug 72173

Summary: Pause the media element for exiting TextTrackCues when pauseOnExit is set
Product: WebKit Reporter: Anna Cavender <annacc>
Component: MediaAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: eric.carlson, vcarbune, webkit-bug-importer, webkit.review.bot
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 43668    
Attachments:
Description Flags
Code for supporting TextTrackCue pause-on-exit
none
Fixed patch
none
Patch with cached size of vectors none

Anna Cavender
Reported 2011-11-11 13:25:09 PST
4.8.10.8 Playing the media resource: http://www.whatwg.org/specs/web-apps/current-work/#playing-the-media-resource Specifically, "When the current playback position of a media element changes..." Step 7. For more info on the pause-on-exit flag, see http://www.whatwg.org/specs/web-apps/current-work/#text-track-cue-pause-on-exit-flag
Attachments
Code for supporting TextTrackCue pause-on-exit (8.44 KB, patch)
2012-02-20 13:27 PST, Victor Carbune
no flags
Fixed patch (8.60 KB, patch)
2012-02-21 04:12 PST, Victor Carbune
no flags
Patch with cached size of vectors (11.89 KB, patch)
2012-02-21 10:38 PST, Victor Carbune
no flags
Radar WebKit Bug Importer
Comment 1 2011-11-17 12:37:55 PST
Victor Carbune
Comment 2 2012-02-20 13:27:22 PST
Created attachment 127844 [details] Code for supporting TextTrackCue pause-on-exit Pause-on-exit flag support and a minor improvement for missed cues processing
Eric Carlson
Comment 3 2012-02-20 13:55:19 PST
Comment on attachment 127844 [details] Code for supporting TextTrackCue pause-on-exit View in context: https://bugs.webkit.org/attachment.cgi?id=127844&action=review > Source/WebCore/html/HTMLMediaElement.cpp:1061 > + for (size_t i = 0; !m_paused && i < previousCues.size(); ++i) { Nit: is there any reason to not use previousCuesSize instead of previousCues.size()? > LayoutTests/media/track/captions-webvtt/pause-on-exit.vtt:17 > +WEBVTT > + > +0 > +00:00:05.000 --> 00:00:05.200 > +First cue > + > +1 > +00:00:05.210 --> 00:00:05.400 > +Lorem > + > +2 > +00:00:05.410 --> 00:00:05.600 > +ipsum > + > +3 > +00:00:05.610 --> 00:00:05.700 > +dolor Nit: I think the name of this file is misleading, it doesn't necessarily have anything to do with pause-on-exit. > LayoutTests/media/track/track-cues-pause-on-exit-expected.txt:15 > +RUN(video.play()) > +EXPECTED (video.paused == 'false') OK > +EXPECTED (currentCue.id == '0') OK > +EXPECTED (video.paused == 'true') OK > +RUN(video.play()) > +EXPECTED (currentCue.id == '1') OK > +EXPECTED (video.paused == 'false') OK > +EXPECTED (currentCue.id == '2') OK > +EXPECTED (video.paused == 'true') OK > +RUN(video.play()) > +EXPECTED (currentCue.id == '3') OK Nit: I try to make it possible to understand how a test works just from the results. I think these results would be easier to understand if you log the 'exit' event and put a blank line between test steps: RUN(video.play()) EXPECTED (video.paused == 'false') OK EVENT(exit) EXPECTED (currentCue.id == '0') OK EXPECTED (video.paused == 'true') OK RUN(video.play()) EVENT(exit) EXPECTED (currentCue.id == '1') OK EXPECTED (video.paused == 'false') OK EVENT(exit) EXPECTED (currentCue.id == '2') OK EXPECTED (video.paused == 'true') OK RUN(video.play()) > LayoutTests/media/track/track-cues-pause-on-exit.html:13 > + var currentCueNo = 0; Nit: I don't think the abbreviation of "Number" is helpful.
Victor Carbune
Comment 4 2012-02-21 04:12:20 PST
Created attachment 127952 [details] Fixed patch
Victor Carbune
Comment 5 2012-02-21 05:03:33 PST
(In reply to comment #3) > (From update of attachment 127844 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=127844&action=review > > > Source/WebCore/html/HTMLMediaElement.cpp:1061 > > + for (size_t i = 0; !m_paused && i < previousCues.size(); ++i) { > > Nit: is there any reason to not use previousCuesSize instead of previousCues.size()? I'm just worried about readability - maybe I should change the function call everywhere within the method? But isn't the Vector::size() function call itself cheap? It seems to be just a const method returning a member variable. > > LayoutTests/media/track/captions-webvtt/pause-on-exit.vtt:17 > > +WEBVTT > > + > > +0 > > +00:00:05.000 --> 00:00:05.200 > > +First cue > > + > > +1 > > +00:00:05.210 --> 00:00:05.400 > > +Lorem > > + > > +2 > > +00:00:05.410 --> 00:00:05.600 > > +ipsum > > + > > +3 > > +00:00:05.610 --> 00:00:05.700 > > +dolor > > Nit: I think the name of this file is misleading, it doesn't necessarily have anything to do with pause-on-exit. Indeed. Changed it to simple-captions.vtt. > > LayoutTests/media/track/track-cues-pause-on-exit-expected.txt:15 > > +RUN(video.play()) > > +EXPECTED (video.paused == 'false') OK > > +EXPECTED (currentCue.id == '0') OK > > +EXPECTED (video.paused == 'true') OK > > +RUN(video.play()) > > +EXPECTED (currentCue.id == '1') OK > > +EXPECTED (video.paused == 'false') OK > > +EXPECTED (currentCue.id == '2') OK > > +EXPECTED (video.paused == 'true') OK > > +RUN(video.play()) > > +EXPECTED (currentCue.id == '3') OK > > Nit: I try to make it possible to understand how a test works just from the results. I think these results would be easier to understand if you log the 'exit' event and put a blank line between test steps: > > RUN(video.play()) > EXPECTED (video.paused == 'false') OK > > EVENT(exit) > EXPECTED (currentCue.id == '0') OK > EXPECTED (video.paused == 'true') OK > RUN(video.play()) > > EVENT(exit) > EXPECTED (currentCue.id == '1') OK > EXPECTED (video.paused == 'false') OK > > EVENT(exit) > EXPECTED (currentCue.id == '2') OK > EXPECTED (video.paused == 'true') OK > RUN(video.play()) Done. > > LayoutTests/media/track/track-cues-pause-on-exit.html:13 > > + var currentCueNo = 0; > > Nit: I don't think the abbreviation of "Number" is helpful. Done.
Eric Carlson
Comment 6 2012-02-21 07:33:57 PST
Comment on attachment 127952 [details] Fixed patch View in context: https://bugs.webkit.org/attachment.cgi?id=127952&action=review > LayoutTests/ChangeLog:10 > + * media/track/captions-webvtt/pause-on-exit.vtt: Added. You forgot to update after changing the file name.
Eric Carlson
Comment 7 2012-02-21 07:37:16 PST
(In reply to comment #5) > (In reply to comment #3) > > (From update of attachment 127844 [details] [details]) > > View in context: https://bugs.webkit.org/attachment.cgi?id=127844&action=review > > > > > Source/WebCore/html/HTMLMediaElement.cpp:1061 > > > + for (size_t i = 0; !m_paused && i < previousCues.size(); ++i) { > > > > Nit: is there any reason to not use previousCuesSize instead of previousCues.size()? > > I'm just worried about readability - maybe I should change the function call everywhere within the method? But isn't the Vector::size() function call itself cheap? It seems to be just a const method returning a member variable. I see now that most of the loops in updateActiveTextTrackCues don't cache the vector size before the loop. One way or the other, we should try to be consistent.
Victor Carbune
Comment 8 2012-02-21 10:38:44 PST
Created attachment 127994 [details] Patch with cached size of vectors
WebKit Review Bot
Comment 9 2012-02-21 15:27:48 PST
Comment on attachment 127994 [details] Patch with cached size of vectors Clearing flags on attachment: 127994 Committed r108406: <http://trac.webkit.org/changeset/108406>
WebKit Review Bot
Comment 10 2012-02-21 15:27:54 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.