RESOLVED FIXED 72173
Pause the media element for exiting TextTrackCues when pauseOnExit is set
https://bugs.webkit.org/show_bug.cgi?id=72173
Summary Pause the media element for exiting TextTrackCues when pauseOnExit is set
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.