Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Side by Side Diff: third_party/WebKit/Source/core/html/track/CueTimeline.cpp

Issue 2583233002: Migrate WTF::Vector::append() to ::push_back() [part 7 of N] (Closed)
Patch Set: Created 3 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/html/track/CueTimeline.h" 5 #include "core/html/track/CueTimeline.h"
6 6
7 #include "core/events/Event.h" 7 #include "core/events/Event.h"
8 #include "core/html/HTMLMediaElement.h" 8 #include "core/html/HTMLMediaElement.h"
9 #include "core/html/HTMLTrackElement.h" 9 #include "core/html/HTMLTrackElement.h"
10 #include "core/html/track/LoadableTextTrack.h" 10 #include "core/html/track/LoadableTextTrack.h"
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 // end times are less than or equal to the current playback position. 164 // end times are less than or equal to the current playback position.
165 // Otherwise, let missed cues be an empty list. 165 // Otherwise, let missed cues be an empty list.
166 if (lastTime >= 0 && lastSeekTime < movieTime) { 166 if (lastTime >= 0 && lastSeekTime < movieTime) {
167 CueList potentiallySkippedCues = 167 CueList potentiallySkippedCues =
168 m_cueTree.allOverlaps(m_cueTree.createInterval(lastTime, movieTime)); 168 m_cueTree.allOverlaps(m_cueTree.createInterval(lastTime, movieTime));
169 169
170 for (CueInterval cue : potentiallySkippedCues) { 170 for (CueInterval cue : potentiallySkippedCues) {
171 // Consider cues that may have been missed since the last seek time. 171 // Consider cues that may have been missed since the last seek time.
172 if (cue.low() > std::max(lastSeekTime, lastTime) && 172 if (cue.low() > std::max(lastSeekTime, lastTime) &&
173 cue.high() < movieTime) 173 cue.high() < movieTime)
174 missedCues.append(cue); 174 missedCues.push_back(cue);
175 } 175 }
176 } 176 }
177 177
178 m_lastUpdateTime = movieTime; 178 m_lastUpdateTime = movieTime;
179 179
180 // 5 - If the time was reached through the usual monotonic increase of the 180 // 5 - If the time was reached through the usual monotonic increase of the
181 // current playback position during normal playback, and if the user agent 181 // current playback position during normal playback, and if the user agent
182 // has not fired a timeupdate event at the element in the past 15 to 250ms 182 // has not fired a timeupdate event at the element in the past 15 to 250ms
183 // and is not still running event handlers for such an event, then the user 183 // and is not still running event handlers for such an event, then the user
184 // agent must queue a task to fire a simple event named timeupdate at the 184 // agent must queue a task to fire a simple event named timeupdate at the
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 // list will be associated with a text track, a text track cue, and a time, 238 // list will be associated with a text track, a text track cue, and a time,
239 // which are used to sort the list before the tasks are queued. 239 // which are used to sort the list before the tasks are queued.
240 HeapVector<std::pair<double, Member<TextTrackCue>>> eventTasks; 240 HeapVector<std::pair<double, Member<TextTrackCue>>> eventTasks;
241 241
242 // 8 - Let affected tracks be a list of text tracks, initially empty. 242 // 8 - Let affected tracks be a list of text tracks, initially empty.
243 HeapVector<Member<TextTrack>> affectedTracks; 243 HeapVector<Member<TextTrack>> affectedTracks;
244 244
245 for (const auto& missedCue : missedCues) { 245 for (const auto& missedCue : missedCues) {
246 // 9 - For each text track cue in missed cues, prepare an event named enter 246 // 9 - For each text track cue in missed cues, prepare an event named enter
247 // for the TextTrackCue object with the text track cue start time. 247 // for the TextTrackCue object with the text track cue start time.
248 eventTasks.append( 248 eventTasks.push_back(
249 std::make_pair(missedCue.data()->startTime(), missedCue.data())); 249 std::make_pair(missedCue.data()->startTime(), missedCue.data()));
250 250
251 // 10 - For each text track [...] in missed cues, prepare an event 251 // 10 - For each text track [...] in missed cues, prepare an event
252 // named exit for the TextTrackCue object with the with the later of 252 // named exit for the TextTrackCue object with the with the later of
253 // the text track cue end time and the text track cue start time. 253 // the text track cue end time and the text track cue start time.
254 254
255 // Note: An explicit task is added only if the cue is NOT a zero or 255 // Note: An explicit task is added only if the cue is NOT a zero or
256 // negative length cue. Otherwise, the need for an exit event is 256 // negative length cue. Otherwise, the need for an exit event is
257 // checked when these tasks are actually queued below. This doesn't 257 // checked when these tasks are actually queued below. This doesn't
258 // affect sorting events before dispatch either, because the exit 258 // affect sorting events before dispatch either, because the exit
259 // event has the same time as the enter event. 259 // event has the same time as the enter event.
260 if (missedCue.data()->startTime() < missedCue.data()->endTime()) { 260 if (missedCue.data()->startTime() < missedCue.data()->endTime()) {
261 eventTasks.append( 261 eventTasks.push_back(
262 std::make_pair(missedCue.data()->endTime(), missedCue.data())); 262 std::make_pair(missedCue.data()->endTime(), missedCue.data()));
263 } 263 }
264 } 264 }
265 265
266 for (const auto& previousCue : previousCues) { 266 for (const auto& previousCue : previousCues) {
267 // 10 - For each text track cue in other cues that has its text 267 // 10 - For each text track cue in other cues that has its text
268 // track cue active flag set prepare an event named exit for the 268 // track cue active flag set prepare an event named exit for the
269 // TextTrackCue object with the text track cue end time. 269 // TextTrackCue object with the text track cue end time.
270 if (!currentCues.contains(previousCue)) { 270 if (!currentCues.contains(previousCue)) {
271 eventTasks.append( 271 eventTasks.push_back(
272 std::make_pair(previousCue.data()->endTime(), previousCue.data())); 272 std::make_pair(previousCue.data()->endTime(), previousCue.data()));
273 } 273 }
274 } 274 }
275 275
276 for (const auto& currentCue : currentCues) { 276 for (const auto& currentCue : currentCues) {
277 // 11 - For each text track cue in current cues that does not have its 277 // 11 - For each text track cue in current cues that does not have its
278 // text track cue active flag set, prepare an event named enter for the 278 // text track cue active flag set, prepare an event named enter for the
279 // TextTrackCue object with the text track cue start time. 279 // TextTrackCue object with the text track cue start time.
280 if (!previousCues.contains(currentCue)) { 280 if (!previousCues.contains(currentCue)) {
281 eventTasks.append( 281 eventTasks.push_back(
282 std::make_pair(currentCue.data()->startTime(), currentCue.data())); 282 std::make_pair(currentCue.data()->startTime(), currentCue.data()));
283 } 283 }
284 } 284 }
285 285
286 // 12 - Sort the tasks in events in ascending time order (tasks with earlier 286 // 12 - Sort the tasks in events in ascending time order (tasks with earlier
287 // times first). 287 // times first).
288 nonCopyingSort(eventTasks.begin(), eventTasks.end(), eventTimeCueCompare); 288 nonCopyingSort(eventTasks.begin(), eventTasks.end(), eventTimeCueCompare);
289 289
290 for (const auto& task : eventTasks) { 290 for (const auto& task : eventTasks) {
291 if (!affectedTracks.contains(task.second->track())) 291 if (!affectedTracks.contains(task.second->track()))
292 affectedTracks.append(task.second->track()); 292 affectedTracks.push_back(task.second->track());
293 293
294 // 13 - Queue each task in events, in list order. 294 // 13 - Queue each task in events, in list order.
295 295
296 // Each event in eventTasks may be either an enterEvent or an exitEvent, 296 // Each event in eventTasks may be either an enterEvent or an exitEvent,
297 // depending on the time that is associated with the event. This 297 // depending on the time that is associated with the event. This
298 // correctly identifies the type of the event, if the startTime is 298 // correctly identifies the type of the event, if the startTime is
299 // less than the endTime in the cue. 299 // less than the endTime in the cue.
300 if (task.second->startTime() >= task.second->endTime()) { 300 if (task.second->startTime() >= task.second->endTime()) {
301 mediaElement.scheduleEvent( 301 mediaElement.scheduleEvent(
302 createEventWithTarget(EventTypeNames::enter, task.second.get())); 302 createEventWithTarget(EventTypeNames::enter, task.second.get()));
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 --m_ignoreUpdate; 362 --m_ignoreUpdate;
363 if (!m_ignoreUpdate) 363 if (!m_ignoreUpdate)
364 updateActiveCues(mediaElement().currentTime()); 364 updateActiveCues(mediaElement().currentTime());
365 } 365 }
366 366
367 DEFINE_TRACE(CueTimeline) { 367 DEFINE_TRACE(CueTimeline) {
368 visitor->trace(m_mediaElement); 368 visitor->trace(m_mediaElement);
369 } 369 }
370 370
371 } // namespace blink 371 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698