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

Unified Diff: Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp

Issue 13776002: MediaStream should fire ended event when all tracks are ended (Closed) Base URL: https://chromium.googlesource.com/chromium/blink@master
Patch Set: MediaStream should fire ended event when all tracks are ended Created 7 years, 8 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
Index: Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
diff --git a/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp b/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
index 060adfa418e16b994dc45a0c96f4b8d7fb5e0d35..2e14157926044d2809ec3b4882857c1d206d468a 100644
--- a/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
+++ b/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
@@ -29,22 +29,24 @@
#if ENABLE(MEDIA_STREAM)
#include "Event.h"
+#include "MediaStream.h"
#include "MediaStreamCenter.h"
#include "MediaStreamComponent.h"
namespace WebCore {
-PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ScriptExecutionContext* context, MediaStreamComponent* component)
+PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ScriptExecutionContext* context, MediaStreamComponent* component, MediaStream* stream)
{
- RefPtr<MediaStreamTrack> track = adoptRef(new MediaStreamTrack(context, component));
+ RefPtr<MediaStreamTrack> track = adoptRef(new MediaStreamTrack(context, component, stream));
track->suspendIfNeeded();
return track.release();
}
-MediaStreamTrack::MediaStreamTrack(ScriptExecutionContext* context, MediaStreamComponent* component)
+MediaStreamTrack::MediaStreamTrack(ScriptExecutionContext* context, MediaStreamComponent* component, MediaStream* stream)
: ActiveDOMObject(context)
, m_stopped(false)
, m_component(component)
+ , m_stream(stream)
{
m_component->source()->addObserver(this);
}
@@ -135,6 +137,8 @@ void MediaStreamTrack::sourceChangedState()
break;
case MediaStreamSource::ReadyStateEnded:
dispatchEvent(Event::create(eventNames().endedEvent, false, false));
+ if (m_stream)
+ m_stream->trackEndedNotification();
break;
}
}
@@ -147,6 +151,8 @@ MediaStreamComponent* MediaStreamTrack::component()
void MediaStreamTrack::stop()
{
m_stopped = true;
+ if (m_stream)
+ m_stream->trackEndedNotification();
Tommy Widenflycht 2013/04/08 14:01:07 This is a bit overkill because when stop() is call
abarth-chromium 2013/04/08 16:58:41 Yeah.
}
const AtomicString& MediaStreamTrack::interfaceName() const

Powered by Google App Engine
This is Rietveld 408576698