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 7c4b0a718fc72e357028bebb577cac67740c1109..7a17bf6f74d7471ffb7c607d53c1c3af0198b1f7 100644 |
--- a/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp |
+++ b/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp |
@@ -43,13 +43,16 @@ |
MediaStreamTrack* MediaStreamTrack::create(ExecutionContext* context, MediaStreamComponent* component) |
{ |
- return new MediaStreamTrack(context, component); |
+ MediaStreamTrack* track = new MediaStreamTrack(context, component); |
+ track->suspendIfNeeded(); |
+ return track; |
} |
MediaStreamTrack::MediaStreamTrack(ExecutionContext* context, MediaStreamComponent* component) |
- : ContextLifecycleObserver(context) |
+ : ActiveDOMObject(context) |
, m_readyState(MediaStreamSource::ReadyStateLive) |
, m_isIteratingRegisteredMediaStreams(false) |
+ , m_stopped(false) |
, m_component(component) |
{ |
m_component->source()->addObserver(this); |
@@ -168,7 +171,7 @@ |
bool MediaStreamTrack::ended() const |
{ |
- return !executionContext() || (m_readyState == MediaStreamSource::ReadyStateEnded); |
+ return m_stopped || (m_readyState == MediaStreamSource::ReadyStateEnded); |
} |
void MediaStreamTrack::sourceChangedState() |
@@ -202,6 +205,11 @@ |
m_isIteratingRegisteredMediaStreams = false; |
} |
+void MediaStreamTrack::stop() |
+{ |
+ m_stopped = true; |
+} |
+ |
bool MediaStreamTrack::hasPendingActivity() const |
{ |
// If 'ended' listeners exist and the object hasn't yet reached |
@@ -246,7 +254,7 @@ |
ExecutionContext* MediaStreamTrack::executionContext() const |
{ |
- return ContextLifecycleObserver::executionContext(); |
+ return ActiveDOMObject::executionContext(); |
} |
DEFINE_TRACE(MediaStreamTrack) |
@@ -254,7 +262,7 @@ |
visitor->trace(m_registeredMediaStreams); |
visitor->trace(m_component); |
RefCountedGarbageCollectedEventTargetWithInlineData<MediaStreamTrack>::trace(visitor); |
- ContextLifecycleObserver::trace(visitor); |
+ ActiveDOMObject::trace(visitor); |
} |
} // namespace blink |