Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1383)

Unified Diff: Source/modules/mediastream/MediaStreamTrack.cpp

Issue 219453002: MediaStreamTrack now has it's own readyState. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/modules/mediastream/MediaStreamTrack.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/mediastream/MediaStreamTrack.cpp
diff --git a/Source/modules/mediastream/MediaStreamTrack.cpp b/Source/modules/mediastream/MediaStreamTrack.cpp
index 1140f823e370884df190b22bdafc7e295a17c517..6da6ad73fb871dfed46120899783e00ec23d4968 100644
--- a/Source/modules/mediastream/MediaStreamTrack.cpp
+++ b/Source/modules/mediastream/MediaStreamTrack.cpp
@@ -47,6 +47,7 @@ PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ExecutionContext* context,
MediaStreamTrack::MediaStreamTrack(ExecutionContext* context, MediaStreamComponent* component)
: ActiveDOMObject(context)
+ , m_readyState(MediaStreamSource::ReadyStateLive)
, m_isIteratingObservers(false)
, m_stopped(false)
, m_component(component)
@@ -93,20 +94,21 @@ bool MediaStreamTrack::enabled() const
void MediaStreamTrack::setEnabled(bool enabled)
{
- if (m_stopped || enabled == m_component->enabled())
+ if (enabled == m_component->enabled())
return;
m_component->setEnabled(enabled);
- MediaStreamCenter::instance().didSetMediaStreamTrackEnabled(m_component.get());
+ if (!ended())
+ MediaStreamCenter::instance().didSetMediaStreamTrackEnabled(m_component.get());
}
String MediaStreamTrack::readyState() const
{
- if (m_stopped)
+ if (ended())
return "ended";
- switch (m_component->source()->readyState()) {
+ switch (m_readyState) {
case MediaStreamSource::ReadyStateLive:
return "live";
case MediaStreamSource::ReadyStateMuted:
@@ -131,7 +133,10 @@ void MediaStreamTrack::stopTrack(ExceptionState& exceptionState)
if (ended())
return;
+ m_readyState = MediaStreamSource::ReadyStateEnded;
MediaStreamCenter::instance().didStopMediaStreamTrack(component());
+ dispatchEvent(Event::create(EventTypeNames::ended));
+ propagateTrackEnded();
}
PassRefPtr<MediaStreamTrack> MediaStreamTrack::clone(ExecutionContext* context)
@@ -144,15 +149,16 @@ PassRefPtr<MediaStreamTrack> MediaStreamTrack::clone(ExecutionContext* context)
bool MediaStreamTrack::ended() const
{
- return m_stopped || (m_component->source()->readyState() == MediaStreamSource::ReadyStateEnded);
+ return m_stopped || (m_readyState == MediaStreamSource::ReadyStateEnded);
}
void MediaStreamTrack::sourceChangedState()
{
- if (m_stopped)
+ if (ended())
return;
- switch (m_component->source()->readyState()) {
+ m_readyState = m_component->source()->readyState();
+ switch (m_readyState) {
case MediaStreamSource::ReadyStateLive:
dispatchEvent(Event::create(EventTypeNames::unmute));
break;
« no previous file with comments | « Source/modules/mediastream/MediaStreamTrack.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698