| Index: Source/core/html/track/CueTimeline.cpp
|
| diff --git a/Source/core/html/track/CueTimeline.cpp b/Source/core/html/track/CueTimeline.cpp
|
| index dd9b60e7975ed7d0fe37e9b8c28b12142a927baa..bb9b0904383639da352fe2887c1837234c5f42ac 100644
|
| --- a/Source/core/html/track/CueTimeline.cpp
|
| +++ b/Source/core/html/track/CueTimeline.cpp
|
| @@ -102,6 +102,13 @@ static bool eventTimeCueCompare(const std::pair<double, TextTrackCue*>& a, const
|
| return a.second->cueIndex() - b.second->cueIndex() < 0;
|
| }
|
|
|
| +static PassRefPtrWillBeRawPtr<Event> createEventWithTarget(const AtomicString& eventName, PassRefPtrWillBeRawPtr<EventTarget> eventTarget)
|
| +{
|
| + RefPtrWillBeRawPtr<Event> event = Event::create(eventName);
|
| + event->setTarget(eventTarget);
|
| + return event.release();
|
| +}
|
| +
|
| void CueTimeline::updateActiveCues(double movieTime)
|
| {
|
| // 4.8.10.8 Playing the media resource
|
| @@ -263,28 +270,18 @@ void CueTimeline::updateActiveCues(double movieTime)
|
| affectedTracks.append(eventTasks[i].second->track());
|
|
|
| // 13 - Queue each task in events, in list order.
|
| - RefPtrWillBeRawPtr<Event> event = nullptr;
|
|
|
| // Each event in eventTasks may be either an enterEvent or an exitEvent,
|
| // depending on the time that is associated with the event. This
|
| // correctly identifies the type of the event, if the startTime is
|
| // less than the endTime in the cue.
|
| if (eventTasks[i].second->startTime() >= eventTasks[i].second->endTime()) {
|
| - event = Event::create(EventTypeNames::enter);
|
| - event->setTarget(eventTasks[i].second);
|
| - mediaElement.scheduleEvent(event.release());
|
| -
|
| - event = Event::create(EventTypeNames::exit);
|
| - event->setTarget(eventTasks[i].second);
|
| - mediaElement.scheduleEvent(event.release());
|
| + mediaElement.scheduleEvent(createEventWithTarget(EventTypeNames::enter, eventTasks[i].second));
|
| + mediaElement.scheduleEvent(createEventWithTarget(EventTypeNames::exit, eventTasks[i].second));
|
| } else {
|
| - if (eventTasks[i].first == eventTasks[i].second->startTime())
|
| - event = Event::create(EventTypeNames::enter);
|
| - else
|
| - event = Event::create(EventTypeNames::exit);
|
| -
|
| - event->setTarget(eventTasks[i].second);
|
| - mediaElement.scheduleEvent(event.release());
|
| + bool isEnterEvent = eventTasks[i].first == eventTasks[i].second->startTime();
|
| + AtomicString eventName = isEnterEvent ? EventTypeNames::enter : EventTypeNames::exit;
|
| + mediaElement.scheduleEvent(createEventWithTarget(eventName, eventTasks[i].second));
|
| }
|
| }
|
|
|
| @@ -295,20 +292,14 @@ void CueTimeline::updateActiveCues(double movieTime)
|
| // 15 - For each text track in affected tracks, in the list order, queue a
|
| // task to fire a simple event named cuechange at the TextTrack object, and, ...
|
| for (size_t i = 0; i < affectedTracks.size(); ++i) {
|
| - RefPtrWillBeRawPtr<Event> event = Event::create(EventTypeNames::cuechange);
|
| - event->setTarget(affectedTracks[i]);
|
| -
|
| - mediaElement.scheduleEvent(event.release());
|
| + mediaElement.scheduleEvent(createEventWithTarget(EventTypeNames::cuechange, affectedTracks[i]));
|
|
|
| // ... if the text track has a corresponding track element, to then fire a
|
| // simple event named cuechange at the track element as well.
|
| if (affectedTracks[i]->trackType() == TextTrack::TrackElement) {
|
| - RefPtrWillBeRawPtr<Event> event = Event::create(EventTypeNames::cuechange);
|
| HTMLTrackElement* trackElement = static_cast<LoadableTextTrack*>(affectedTracks[i].get())->trackElement();
|
| ASSERT(trackElement);
|
| - event->setTarget(trackElement);
|
| -
|
| - mediaElement.scheduleEvent(event.release());
|
| + mediaElement.scheduleEvent(createEventWithTarget(EventTypeNames::cuechange, trackElement));
|
| }
|
| }
|
|
|
|
|