| Index: third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp | 
| diff --git a/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp b/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp | 
| index 9c8f7c946766e9d46e2600508d2644020323fc63..4b1fe41c63082edce7c7057775782fa25dc4f201 100644 | 
| --- a/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp | 
| +++ b/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp | 
| @@ -60,6 +60,7 @@ | 
|  | 
| MediaStreamTrack::~MediaStreamTrack() | 
| { | 
| +    m_component->source()->removeObserver(this); | 
| } | 
|  | 
| String MediaStreamTrack::kind() const | 
| @@ -162,9 +163,9 @@ | 
|  | 
| MediaStreamTrack* MediaStreamTrack::clone(ExecutionContext* context) | 
| { | 
| -    MediaStreamComponent* clonedComponent = MediaStreamComponent::create(component()->source()); | 
| -    MediaStreamTrack* clonedTrack = MediaStreamTrack::create(context, clonedComponent); | 
| -    MediaStreamCenter::instance().didCreateMediaStreamTrack(clonedComponent); | 
| +    RefPtr<MediaStreamComponent> clonedComponent = MediaStreamComponent::create(component()->source()); | 
| +    MediaStreamTrack* clonedTrack = MediaStreamTrack::create(context, clonedComponent.get()); | 
| +    MediaStreamCenter::instance().didCreateMediaStreamTrack(clonedComponent.get()); | 
| return clonedTrack; | 
| } | 
|  | 
| @@ -204,6 +205,11 @@ | 
| m_isIteratingRegisteredMediaStreams = false; | 
| } | 
|  | 
| +MediaStreamComponent* MediaStreamTrack::component() | 
| +{ | 
| +    return m_component.get(); | 
| +} | 
| + | 
| void MediaStreamTrack::stop() | 
| { | 
| m_stopped = true; | 
| @@ -242,7 +248,6 @@ | 
| DEFINE_TRACE(MediaStreamTrack) | 
| { | 
| visitor->trace(m_registeredMediaStreams); | 
| -    visitor->trace(m_component); | 
| RefCountedGarbageCollectedEventTargetWithInlineData<MediaStreamTrack>::trace(visitor); | 
| ActiveDOMObject::trace(visitor); | 
| } | 
|  |