| Index: Source/core/html/track/TextTrack.cpp | 
| diff --git a/Source/core/html/track/TextTrack.cpp b/Source/core/html/track/TextTrack.cpp | 
| index 695d83c7f96fec284e89b116ff97ed1cb80ccbf4..a2b6ea7fc246bfc2b4a809b4e72f250ad8842944 100644 | 
| --- a/Source/core/html/track/TextTrack.cpp | 
| +++ b/Source/core/html/track/TextTrack.cpp | 
| @@ -99,8 +99,7 @@ TextTrack::TextTrack(Document& document, const AtomicString& kind, const AtomicS | 
| : TrackBase(TrackBase::TextTrack, label, language, id) | 
| , m_cues(nullptr) | 
| , m_regions(nullptr) | 
| -    , m_document(&document) | 
| -    , m_trackList(0) | 
| +    , m_trackList(nullptr) | 
| , m_mode(disabledKeyword()) | 
| , m_trackType(type) | 
| , m_readinessState(NotLoaded) | 
| @@ -115,16 +114,6 @@ TextTrack::TextTrack(Document& document, const AtomicString& kind, const AtomicS | 
| TextTrack::~TextTrack() | 
| { | 
| ASSERT(!m_trackList); | 
| - | 
| -    if (m_cues) { | 
| -        for (size_t i = 0; i < m_cues->length(); ++i) | 
| -            m_cues->item(i)->setTrack(0); | 
| -    } | 
| - | 
| -    if (m_regions) { | 
| -        for (size_t i = 0; i < m_regions->length(); ++i) | 
| -            m_regions->item(i)->setTrack(0); | 
| -    } | 
| } | 
|  | 
| bool TextTrack::isValidKindKeyword(const AtomicString& value) | 
| @@ -224,12 +213,12 @@ TextTrackCueList* TextTrack::activeCues() const | 
| return 0; | 
| } | 
|  | 
| -void TextTrack::addCue(PassRefPtr<TextTrackCue> prpCue) | 
| +void TextTrack::addCue(PassRefPtrWillBeRawPtr<TextTrackCue> prpCue) | 
| { | 
| if (!prpCue) | 
| return; | 
|  | 
| -    RefPtr<TextTrackCue> cue = prpCue; | 
| +    RefPtrWillBeRawPtr<TextTrackCue> cue = prpCue; | 
|  | 
| // TODO(93143): Add spec-compliant behavior for negative time values. | 
| if (std::isnan(cue->startTime()) || std::isnan(cue->endTime()) || cue->startTime() < 0 || cue->endTime() < 0) | 
| @@ -301,12 +290,12 @@ VTTRegionList* TextTrack::regions() | 
| return 0; | 
| } | 
|  | 
| -void TextTrack::addRegion(PassRefPtr<VTTRegion> prpRegion) | 
| +void TextTrack::addRegion(PassRefPtrWillBeRawPtr<VTTRegion> prpRegion) | 
| { | 
| if (!prpRegion) | 
| return; | 
|  | 
| -    RefPtr<VTTRegion> region = prpRegion; | 
| +    RefPtrWillBeRawPtr<VTTRegion> region = prpRegion; | 
| VTTRegionList* regionList = ensureVTTRegionList(); | 
|  | 
| // 1. If the given region is in a text track list of regions, then remove | 
| @@ -425,7 +414,8 @@ const AtomicString& TextTrack::interfaceName() const | 
|  | 
| ExecutionContext* TextTrack::executionContext() const | 
| { | 
| -    return m_document; | 
| +    HTMLMediaElement* owner = mediaElement(); | 
| +    return owner ? owner->executionContext() : 0; | 
| } | 
|  | 
| HTMLMediaElement* TextTrack::mediaElement() const | 
| @@ -438,4 +428,12 @@ Node* TextTrack::owner() const | 
| return mediaElement(); | 
| } | 
|  | 
| +void TextTrack::trace(Visitor* visitor) | 
| +{ | 
| +    visitor->trace(m_cues); | 
| +    visitor->trace(m_regions); | 
| +    visitor->trace(m_trackList); | 
| +    TrackBase::trace(visitor); | 
| +} | 
| + | 
| } // namespace WebCore | 
|  |