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

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

Issue 173363002: Move mediastream module to oilpan transition types (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 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/modules/mediastream/MediaStreamTrack.cpp
diff --git a/Source/modules/mediastream/MediaStreamTrack.cpp b/Source/modules/mediastream/MediaStreamTrack.cpp
index 6da6ad73fb871dfed46120899783e00ec23d4968..2096dcc71e3cc51c719957a5854d2b3a3c87551e 100644
--- a/Source/modules/mediastream/MediaStreamTrack.cpp
+++ b/Source/modules/mediastream/MediaStreamTrack.cpp
@@ -30,6 +30,7 @@
#include "core/dom/ExceptionCode.h"
#include "core/dom/ExecutionContext.h"
#include "core/events/Event.h"
+#include "modules/mediastream/MediaStream.h"
#include "modules/mediastream/MediaStreamTrackSourcesCallback.h"
#include "modules/mediastream/MediaStreamTrackSourcesRequestImpl.h"
#include "platform/mediastream/MediaStreamCenter.h"
@@ -38,9 +39,9 @@
namespace WebCore {
-PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ExecutionContext* context, MediaStreamComponent* component)
+PassRefPtrWillBeRawPtr<MediaStreamTrack> MediaStreamTrack::create(ExecutionContext* context, MediaStreamComponent* component)
{
- RefPtr<MediaStreamTrack> track = adoptRef(new MediaStreamTrack(context, component));
+ RefPtrWillBeRawPtr<MediaStreamTrack> track = adoptRefWillBeRefCountedGarbageCollected(new MediaStreamTrack(context, component));
track->suspendIfNeeded();
return track.release();
}
@@ -48,7 +49,7 @@ PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ExecutionContext* context,
MediaStreamTrack::MediaStreamTrack(ExecutionContext* context, MediaStreamComponent* component)
: ActiveDOMObject(context)
, m_readyState(MediaStreamSource::ReadyStateLive)
- , m_isIteratingObservers(false)
+ , m_isIteratingRegisteredMediaStreams(false)
, m_stopped(false)
, m_component(component)
{
@@ -123,7 +124,7 @@ String MediaStreamTrack::readyState() const
void MediaStreamTrack::getSources(ExecutionContext* context, PassOwnPtr<MediaStreamTrackSourcesCallback> callback, ExceptionState& exceptionState)
{
- RefPtr<MediaStreamTrackSourcesRequest> request = MediaStreamTrackSourcesRequestImpl::create(context->securityOrigin()->toString(), callback);
+ RefPtrWillBeRawPtr<MediaStreamTrackSourcesRequest> request = MediaStreamTrackSourcesRequestImpl::create(context->securityOrigin()->toString(), callback);
if (!MediaStreamCenter::instance().getMediaStreamTrackSources(request.release()))
exceptionState.throwDOMException(NotSupportedError, ExceptionMessages::failedToExecute("getSources", "MediaStreamTrack", "Functionality not implemented yet"));
}
@@ -139,10 +140,10 @@ void MediaStreamTrack::stopTrack(ExceptionState& exceptionState)
propagateTrackEnded();
}
-PassRefPtr<MediaStreamTrack> MediaStreamTrack::clone(ExecutionContext* context)
+PassRefPtrWillBeRawPtr<MediaStreamTrack> MediaStreamTrack::clone(ExecutionContext* context)
{
RefPtr<MediaStreamComponent> clonedComponent = MediaStreamComponent::create(component()->source());
- RefPtr<MediaStreamTrack> clonedTrack = MediaStreamTrack::create(context, clonedComponent.get());
+ RefPtrWillBeRawPtr<MediaStreamTrack> clonedTrack = MediaStreamTrack::create(context, clonedComponent.get());
MediaStreamCenter::instance().didCreateMediaStreamTrack(clonedComponent.get());
return clonedTrack.release();
}
@@ -174,11 +175,11 @@ void MediaStreamTrack::sourceChangedState()
void MediaStreamTrack::propagateTrackEnded()
{
- RELEASE_ASSERT(!m_isIteratingObservers);
- m_isIteratingObservers = true;
- for (Vector<Observer*>::iterator iter = m_observers.begin(); iter != m_observers.end(); ++iter)
+ RELEASE_ASSERT(!m_isIteratingRegisteredMediaStreams);
+ m_isIteratingRegisteredMediaStreams = true;
+ for (WillBeHeapHashSet<RawPtrWillBeWeakMember<MediaStream> >::iterator iter = m_registeredMediaStreams.begin(); iter != m_registeredMediaStreams.end(); ++iter)
(*iter)->trackEnded();
- m_isIteratingObservers = false;
+ m_isIteratingRegisteredMediaStreams = false;
}
MediaStreamComponent* MediaStreamTrack::component()
@@ -196,18 +197,19 @@ PassOwnPtr<AudioSourceProvider> MediaStreamTrack::createWebAudioSource()
return MediaStreamCenter::instance().createWebAudioSourceFromMediaStreamTrack(component());
}
-void MediaStreamTrack::addObserver(MediaStreamTrack::Observer* observer)
+void MediaStreamTrack::registerMediaStream(MediaStream* mediaStream)
{
- RELEASE_ASSERT(!m_isIteratingObservers);
- m_observers.append(observer);
+ RELEASE_ASSERT(!m_isIteratingRegisteredMediaStreams);
+ RELEASE_ASSERT(!m_registeredMediaStreams.contains(mediaStream));
+ m_registeredMediaStreams.add(mediaStream);
}
-void MediaStreamTrack::removeObserver(MediaStreamTrack::Observer* observer)
+void MediaStreamTrack::unregisterMediaStream(MediaStream* mediaStream)
{
- RELEASE_ASSERT(!m_isIteratingObservers);
- size_t pos = m_observers.find(observer);
- RELEASE_ASSERT(pos != kNotFound);
- m_observers.remove(pos);
+ RELEASE_ASSERT(!m_isIteratingRegisteredMediaStreams);
+ WillBeHeapHashSet<RawPtrWillBeWeakMember<MediaStream> >::iterator iter = m_registeredMediaStreams.find(mediaStream);
+ RELEASE_ASSERT(iter != m_registeredMediaStreams.end());
+ m_registeredMediaStreams.remove(iter);
}
const AtomicString& MediaStreamTrack::interfaceName() const
@@ -220,4 +222,9 @@ ExecutionContext* MediaStreamTrack::executionContext() const
return ActiveDOMObject::executionContext();
}
+void MediaStreamTrack::trace(Visitor* visitor)
+{
+ visitor->trace(m_registeredMediaStreams);
+}
+
} // namespace WebCore

Powered by Google App Engine
This is Rietveld 408576698