| Index: Source/core/html/HTMLMediaElement.cpp
|
| diff --git a/Source/core/html/HTMLMediaElement.cpp b/Source/core/html/HTMLMediaElement.cpp
|
| index a1b315ee13a62c73184a708751cb011486d4e3e4..8904ce96bc1c6f41ebd7605b24ee1295a1d70ffa 100644
|
| --- a/Source/core/html/HTMLMediaElement.cpp
|
| +++ b/Source/core/html/HTMLMediaElement.cpp
|
| @@ -306,8 +306,10 @@ HTMLMediaElement::~HTMLMediaElement()
|
|
|
| setShouldDelayLoadEvent(false);
|
|
|
| +#if !ENABLE(OILPAN)
|
| if (m_textTracks)
|
| m_textTracks->clearOwner();
|
| +#endif
|
|
|
| if (m_mediaController) {
|
| m_mediaController->removeMediaElement(this);
|
| @@ -1261,7 +1263,7 @@ void HTMLMediaElement::textTrackRemoveCues(TextTrack*, const TextTrackCueList* c
|
| textTrackRemoveCue(cues->item(i)->track(), cues->item(i));
|
| }
|
|
|
| -void HTMLMediaElement::textTrackAddCue(TextTrack* track, PassRefPtr<TextTrackCue> cue)
|
| +void HTMLMediaElement::textTrackAddCue(TextTrack* track, PassRefPtrWillBeRawPtr<TextTrackCue> cue)
|
| {
|
| if (track->mode() == TextTrack::disabledKeyword())
|
| return;
|
| @@ -1276,7 +1278,7 @@ void HTMLMediaElement::textTrackAddCue(TextTrack* track, PassRefPtr<TextTrackCue
|
| updateActiveTextTrackCues(currentTime());
|
| }
|
|
|
| -void HTMLMediaElement::textTrackRemoveCue(TextTrack*, PassRefPtr<TextTrackCue> cue)
|
| +void HTMLMediaElement::textTrackRemoveCue(TextTrack*, PassRefPtrWillBeRawPtr<TextTrackCue> cue)
|
| {
|
| // Negative duration cues need to be treated in the interval tree as
|
| // zero-length cues.
|
| @@ -2227,7 +2229,7 @@ void HTMLMediaElement::mediaPlayerDidAddTextTrack(WebInbandTextTrack* webTrack)
|
| {
|
| // 4.8.10.12.2 Sourcing in-band text tracks
|
| // 1. Associate the relevant data with a new text track and its corresponding new TextTrack object.
|
| - RefPtr<InbandTextTrack> textTrack = InbandTextTrack::create(document(), webTrack);
|
| + RefPtrWillBeRawPtr<InbandTextTrack> textTrack = InbandTextTrack::create(document(), webTrack);
|
|
|
| // 2. Set the new text track's kind, label, and language based on the semantics of the relevant data,
|
| // as defined by the relevant specification. If there is no label in that data, then the label must
|
| @@ -2262,7 +2264,7 @@ void HTMLMediaElement::mediaPlayerDidRemoveTextTrack(WebInbandTextTrack* webTrac
|
|
|
| // This cast is safe because we created the InbandTextTrack with the WebInbandTextTrack
|
| // passed to mediaPlayerDidAddTextTrack.
|
| - RefPtr<InbandTextTrack> textTrack = static_cast<InbandTextTrack*>(webTrack->client());
|
| + RefPtrWillBeRawPtr<InbandTextTrack> textTrack = static_cast<InbandTextTrack*>(webTrack->client());
|
| if (!textTrack)
|
| return;
|
|
|
| @@ -2299,7 +2301,7 @@ void HTMLMediaElement::forgetResourceSpecificTracks()
|
| }
|
| }
|
|
|
| -PassRefPtr<TextTrack> HTMLMediaElement::addTextTrack(const AtomicString& kind, const AtomicString& label, const AtomicString& language, ExceptionState& exceptionState)
|
| +PassRefPtrWillBeRawPtr<TextTrack> HTMLMediaElement::addTextTrack(const AtomicString& kind, const AtomicString& label, const AtomicString& language, ExceptionState& exceptionState)
|
| {
|
| // 4.8.10.12.4 Text track API
|
| // The addTextTrack(kind, label, language) method of media elements, when invoked, must run the following steps:
|
| @@ -2316,7 +2318,7 @@ PassRefPtr<TextTrack> HTMLMediaElement::addTextTrack(const AtomicString& kind, c
|
|
|
| // 5. Create a new text track corresponding to the new object, and set its text track kind to kind, its text
|
| // track label to label, its text track language to language...
|
| - RefPtr<TextTrack> textTrack = TextTrack::create(document(), kind, label, language);
|
| + RefPtrWillBeRawPtr<TextTrack> textTrack = TextTrack::create(document(), kind, label, language);
|
|
|
| // Note, due to side effects when changing track parameters, we have to
|
| // first append the track to the text track list.
|
| @@ -2347,7 +2349,7 @@ void HTMLMediaElement::didAddTrackElement(HTMLTrackElement* trackElement)
|
| // When a track element's parent element changes and the new parent is a media element,
|
| // then the user agent must add the track element's corresponding text track to the
|
| // media element's list of text tracks ... [continues in TextTrackList::append]
|
| - RefPtr<TextTrack> textTrack = trackElement->track();
|
| + RefPtrWillBeRawPtr<TextTrack> textTrack = trackElement->track();
|
| if (!textTrack)
|
| return;
|
|
|
| @@ -2369,7 +2371,7 @@ void HTMLMediaElement::didRemoveTrackElement(HTMLTrackElement* trackElement)
|
| WTF_LOG(Media, "HTMLMediaElement::didRemoveTrackElement - 'src' is %s", urlForLoggingMedia(url).utf8().data());
|
| #endif
|
|
|
| - RefPtr<TextTrack> textTrack = trackElement->track();
|
| + RefPtrWillBeRawPtr<TextTrack> textTrack = trackElement->track();
|
| if (!textTrack)
|
| return;
|
|
|
| @@ -2431,13 +2433,13 @@ void HTMLMediaElement::configureTextTrackGroup(const TrackGroup& group)
|
| Settings* settings = document().settings();
|
|
|
| // First, find the track in the group that should be enabled (if any).
|
| - Vector<RefPtr<TextTrack> > currentlyEnabledTracks;
|
| - RefPtr<TextTrack> trackToEnable;
|
| - RefPtr<TextTrack> defaultTrack;
|
| - RefPtr<TextTrack> fallbackTrack;
|
| + WillBeHeapVector<RefPtrWillBeMember<TextTrack> > currentlyEnabledTracks;
|
| + RefPtrWillBeRawPtr<TextTrack> trackToEnable = nullptr;
|
| + RefPtrWillBeRawPtr<TextTrack> defaultTrack = nullptr;
|
| + RefPtrWillBeRawPtr<TextTrack> fallbackTrack = nullptr;
|
| int highestTrackScore = 0;
|
| for (size_t i = 0; i < group.tracks.size(); ++i) {
|
| - RefPtr<TextTrack> textTrack = group.tracks[i];
|
| + RefPtrWillBeRawPtr<TextTrack> textTrack = group.tracks[i];
|
|
|
| if (m_processingPreferenceChange && textTrack->mode() == TextTrack::showingKeyword())
|
| currentlyEnabledTracks.append(textTrack);
|
| @@ -2483,7 +2485,7 @@ void HTMLMediaElement::configureTextTrackGroup(const TrackGroup& group)
|
|
|
| if (currentlyEnabledTracks.size()) {
|
| for (size_t i = 0; i < currentlyEnabledTracks.size(); ++i) {
|
| - RefPtr<TextTrack> textTrack = currentlyEnabledTracks[i];
|
| + RefPtrWillBeRawPtr<TextTrack> textTrack = currentlyEnabledTracks[i];
|
| if (textTrack != trackToEnable)
|
| textTrack->setMode(TextTrack::disabledKeyword());
|
| }
|
| @@ -2505,7 +2507,7 @@ void HTMLMediaElement::configureTextTracks()
|
| return;
|
|
|
| for (size_t i = 0; i < m_textTracks->length(); ++i) {
|
| - RefPtr<TextTrack> textTrack = m_textTracks->item(i);
|
| + RefPtrWillBeRawPtr<TextTrack> textTrack = m_textTracks->item(i);
|
| if (!textTrack)
|
| continue;
|
|
|
| @@ -3394,7 +3396,7 @@ void HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured()
|
| // captions and non-default tracks should be displayed based on language
|
| // preferences if the user has turned captions on).
|
| for (unsigned i = 0; i < m_textTracks->length(); ++i) {
|
| - RefPtr<TextTrack> textTrack = m_textTracks->item(i);
|
| + RefPtrWillBeRawPtr<TextTrack> textTrack = m_textTracks->item(i);
|
| String kind = textTrack->kind();
|
|
|
| if (kind == TextTrack::subtitlesKeyword() || kind == TextTrack::captionsKeyword())
|
| @@ -3647,6 +3649,8 @@ bool HTMLMediaElement::isInteractiveContent() const
|
|
|
| void HTMLMediaElement::trace(Visitor* visitor)
|
| {
|
| + visitor->trace(m_textTracks);
|
| + visitor->trace(m_textTracksWhenResourceSelectionBegan);
|
| Supplementable<HTMLMediaElement>::trace(visitor);
|
| HTMLElement::trace(visitor);
|
| }
|
|
|