Diff
Modified: trunk/Source/Platform/ChangeLog (141150 => 141151)
--- trunk/Source/Platform/ChangeLog 2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/Platform/ChangeLog 2013-01-29 20:59:32 UTC (rev 141151)
@@ -1,3 +1,14 @@
+2013-01-29 Tommy Widenflycht <tom...@google.com>
+
+ MediaStream API: A MediaStreamComponent should be able to return the MediaStreamDescriptor it belongs to
+ https://bugs.webkit.org/show_bug.cgi?id=108173
+
+ Reviewed by Adam Barth.
+
+ * chromium/public/WebMediaStreamComponent.h:
+ (WebKit):
+ (WebMediaStreamComponent):
+
2013-01-28 Alexandre Elias <ael...@chromium.org>
Make page scale shrink FrameView in applyPageScaleInCompositor mode
Modified: trunk/Source/Platform/chromium/public/WebMediaStreamComponent.h (141150 => 141151)
--- trunk/Source/Platform/chromium/public/WebMediaStreamComponent.h 2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/Platform/chromium/public/WebMediaStreamComponent.h 2013-01-29 20:59:32 UTC (rev 141151)
@@ -40,7 +40,7 @@
}
namespace WebKit {
-
+class WebMediaStreamDescriptor;
class WebMediaStreamSource;
class WebString;
@@ -62,6 +62,7 @@
WEBKIT_EXPORT WebString id() const;
+ WEBKIT_EXPORT WebMediaStreamDescriptor stream() const;
WEBKIT_EXPORT WebMediaStreamSource source() const;
WEBKIT_EXPORT bool isEnabled() const;
Modified: trunk/Source/WebCore/ChangeLog (141150 => 141151)
--- trunk/Source/WebCore/ChangeLog 2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/ChangeLog 2013-01-29 20:59:32 UTC (rev 141151)
@@ -1,3 +1,41 @@
+2013-01-29 Tommy Widenflycht <tom...@google.com>
+
+ MediaStream API: A MediaStreamComponent should be able to return the MediaStreamDescriptor it belongs to
+ https://bugs.webkit.org/show_bug.cgi?id=108173
+
+ Reviewed by Adam Barth.
+
+ To be able to return the MediaStreamDescriptor a MediaStreamComponent belongs to the "ownership"
+ of the MediaStreamDescriptor needed to move from a MediaStreamTrack to the MediaStreamComponent.
+ This is also better from an architectonic view as well.
+
+ Patch covered by existing tests.
+
+ * Modules/mediastream/MediaStream.cpp:
+ (WebCore::MediaStream::MediaStream):
+ (WebCore::MediaStream::addTrack):
+ (WebCore::MediaStream::addRemoteTrack):
+ * Modules/mediastream/MediaStreamTrack.cpp:
+ (WebCore::MediaStreamTrack::create):
+ (WebCore::MediaStreamTrack::MediaStreamTrack):
+ (WebCore::MediaStreamTrack::setEnabled):
+ * Modules/mediastream/MediaStreamTrack.h:
+ (MediaStreamTrack):
+ * Modules/mediastream/RTCStatsRequestImpl.cpp:
+ (WebCore::RTCStatsRequestImpl::RTCStatsRequestImpl):
+ * platform/chromium/support/WebMediaStreamComponent.cpp:
+ (WebKit::WebMediaStreamComponent::stream):
+ (WebKit):
+ * platform/mediastream/MediaStreamComponent.h:
+ (WebCore):
+ (WebCore::MediaStreamComponent::create):
+ (MediaStreamComponent):
+ (WebCore::MediaStreamComponent::stream):
+ (WebCore::MediaStreamComponent::setStream):
+ (WebCore::MediaStreamComponent::MediaStreamComponent):
+ * platform/mediastream/MediaStreamDescriptor.h:
+ (WebCore::MediaStreamDescriptor::MediaStreamDescriptor):
+
2013-01-29 Alec Flett <alecfl...@chromium.org>
IndexedDB: Pass metadata in to IDBOpenDBRequest.onUpgradeNeeded/onSuccess
Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp (141150 => 141151)
--- trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp 2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp 2013-01-29 20:59:32 UTC (rev 141151)
@@ -115,12 +115,12 @@
size_t numberOfAudioTracks = m_descriptor->numberOfAudioComponents();
m_audioTracks.reserveCapacity(numberOfAudioTracks);
for (size_t i = 0; i < numberOfAudioTracks; i++)
- m_audioTracks.append(MediaStreamTrack::create(context, m_descriptor, m_descriptor->audioComponent(i)));
+ m_audioTracks.append(MediaStreamTrack::create(context, m_descriptor->audioComponent(i)));
size_t numberOfVideoTracks = m_descriptor->numberOfVideoComponents();
m_videoTracks.reserveCapacity(numberOfVideoTracks);
for (size_t i = 0; i < numberOfVideoTracks; i++)
- m_videoTracks.append(MediaStreamTrack::create(context, m_descriptor, m_descriptor->videoComponent(i)));
+ m_videoTracks.append(MediaStreamTrack::create(context, m_descriptor->videoComponent(i)));
}
MediaStream::~MediaStream()
@@ -150,8 +150,8 @@
if (getTrackById(track->id()))
return;
- RefPtr<MediaStreamComponent> component = MediaStreamComponent::create(track->component()->source());
- RefPtr<MediaStreamTrack> newTrack = MediaStreamTrack::create(scriptExecutionContext(), m_descriptor, component.get());
+ RefPtr<MediaStreamComponent> component = MediaStreamComponent::create(m_descriptor.get(), track->component()->source());
+ RefPtr<MediaStreamTrack> newTrack = MediaStreamTrack::create(scriptExecutionContext(), component.get());
switch (component->source()->type()) {
case MediaStreamSource::TypeAudio:
@@ -257,10 +257,13 @@
void MediaStream::addRemoteTrack(MediaStreamComponent* component)
{
+ ASSERT(component && !component->stream());
if (ended())
return;
- RefPtr<MediaStreamTrack> track = MediaStreamTrack::create(scriptExecutionContext(), m_descriptor, component);
+ component->setStream(descriptor());
+
+ RefPtr<MediaStreamTrack> track = MediaStreamTrack::create(scriptExecutionContext(), component);
switch (component->source()->type()) {
case MediaStreamSource::TypeAudio:
m_audioTracks.append(track);
Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (141150 => 141151)
--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp 2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp 2013-01-29 20:59:32 UTC (rev 141151)
@@ -34,17 +34,16 @@
namespace WebCore {
-PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ScriptExecutionContext* context, PassRefPtr<MediaStreamDescriptor> streamDescriptor, MediaStreamComponent* component)
+PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(ScriptExecutionContext* context, MediaStreamComponent* component)
{
- RefPtr<MediaStreamTrack> track = adoptRef(new MediaStreamTrack(context, streamDescriptor, component));
+ RefPtr<MediaStreamTrack> track = adoptRef(new MediaStreamTrack(context, component));
track->suspendIfNeeded();
return track.release();
}
-MediaStreamTrack::MediaStreamTrack(ScriptExecutionContext* context, PassRefPtr<MediaStreamDescriptor> streamDescriptor, MediaStreamComponent* component)
+MediaStreamTrack::MediaStreamTrack(ScriptExecutionContext* context, MediaStreamComponent* component)
: ActiveDOMObject(context, this)
, m_stopped(false)
- , m_streamDescriptor(streamDescriptor)
, m_component(component)
{
m_component->source()->addObserver(this);
@@ -93,10 +92,10 @@
m_component->setEnabled(enabled);
- if (m_streamDescriptor->ended())
+ if (m_component->stream()->ended())
return;
- MediaStreamCenter::instance().didSetMediaStreamTrackEnabled(m_streamDescriptor.get(), m_component.get());
+ MediaStreamCenter::instance().didSetMediaStreamTrackEnabled(m_component->stream(), m_component.get());
}
String MediaStreamTrack::readyState() const
@@ -140,11 +139,6 @@
}
}
-MediaStreamDescriptor* MediaStreamTrack::streamDescriptor()
-{
- return m_streamDescriptor.get();
-}
-
MediaStreamComponent* MediaStreamTrack::component()
{
return m_component.get();
Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (141150 => 141151)
--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h 2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h 2013-01-29 20:59:32 UTC (rev 141151)
@@ -43,7 +43,7 @@
class MediaStreamTrack : public RefCounted<MediaStreamTrack>, public ActiveDOMObject, public EventTarget, public MediaStreamSource::Observer {
public:
- static PassRefPtr<MediaStreamTrack> create(ScriptExecutionContext*, PassRefPtr<MediaStreamDescriptor>, MediaStreamComponent*);
+ static PassRefPtr<MediaStreamTrack> create(ScriptExecutionContext*, MediaStreamComponent*);
virtual ~MediaStreamTrack();
String kind() const;
@@ -59,7 +59,6 @@
DEFINE_ATTRIBUTE_EVENT_LISTENER(unmute);
DEFINE_ATTRIBUTE_EVENT_LISTENER(ended);
- MediaStreamDescriptor* streamDescriptor();
MediaStreamComponent* component();
bool ended() const;
@@ -74,7 +73,7 @@
using RefCounted<MediaStreamTrack>::deref;
private:
- MediaStreamTrack(ScriptExecutionContext*, PassRefPtr<MediaStreamDescriptor>, MediaStreamComponent*);
+ MediaStreamTrack(ScriptExecutionContext*, MediaStreamComponent*);
// EventTarget
virtual EventTargetData* eventTargetData() OVERRIDE;
@@ -87,7 +86,6 @@
virtual void sourceChangedState() OVERRIDE;
bool m_stopped;
- RefPtr<MediaStreamDescriptor> m_streamDescriptor;
RefPtr<MediaStreamComponent> m_component;
};
Modified: trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp (141150 => 141151)
--- trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp 2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp 2013-01-29 20:59:32 UTC (rev 141151)
@@ -44,7 +44,7 @@
RTCStatsRequestImpl::RTCStatsRequestImpl(ScriptExecutionContext* context, PassRefPtr<RTCStatsCallback> callback, PassRefPtr<MediaStreamTrack> selector)
: ActiveDOMObject(context, this)
, m_successCallback(callback)
- , m_stream(selector ? selector->streamDescriptor() : 0)
+ , m_stream(selector ? selector->component()->stream() : 0)
, m_component(selector ? selector->component() : 0)
{
}
Modified: trunk/Source/WebCore/platform/chromium/support/WebMediaStreamComponent.cpp (141150 => 141151)
--- trunk/Source/WebCore/platform/chromium/support/WebMediaStreamComponent.cpp 2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/platform/chromium/support/WebMediaStreamComponent.cpp 2013-01-29 20:59:32 UTC (rev 141151)
@@ -35,6 +35,7 @@
#include <public/WebMediaStreamComponent.h>
#include "MediaStreamComponent.h"
+#include <public/WebMediaStreamDescriptor.h>
#include <public/WebMediaStreamSource.h>
#include <public/WebString.h>
#include <wtf/Vector.h>
@@ -86,6 +87,12 @@
return m_private->id();
}
+WebMediaStreamDescriptor WebMediaStreamComponent::stream() const
+{
+ ASSERT(!m_private.isNull());
+ return WebMediaStreamDescriptor(m_private->stream());
+}
+
WebMediaStreamSource WebMediaStreamComponent::source() const
{
ASSERT(!m_private.isNull());
Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamComponent.h (141150 => 141151)
--- trunk/Source/WebCore/platform/mediastream/MediaStreamComponent.h 2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamComponent.h 2013-01-29 20:59:32 UTC (rev 141151)
@@ -38,13 +38,23 @@
namespace WebCore {
+class MediaStreamDescriptor;
+
class MediaStreamComponent : public RefCounted<MediaStreamComponent> {
public:
static PassRefPtr<MediaStreamComponent> create(PassRefPtr<MediaStreamSource> source)
{
- return adoptRef(new MediaStreamComponent(source));
+ return adoptRef(new MediaStreamComponent(0, source));
}
+ static PassRefPtr<MediaStreamComponent> create(MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
+ {
+ return adoptRef(new MediaStreamComponent(stream, source));
+ }
+
+ MediaStreamDescriptor* stream() const { return m_stream; }
+ void setStream(MediaStreamDescriptor* stream) { ASSERT(!m_stream && stream); m_stream = stream; }
+
MediaStreamSource* source() const { return m_source.get(); }
String id() const { return m_id; }
@@ -52,13 +62,15 @@
void setEnabled(bool enabled) { m_enabled = enabled; }
private:
- MediaStreamComponent(PassRefPtr<MediaStreamSource> source)
- : m_source(source)
+ MediaStreamComponent(MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
+ : m_stream(stream)
+ , m_source(source)
, m_id(createCanonicalUUIDString())
, m_enabled(true)
{
}
+ MediaStreamDescriptor* m_stream;
RefPtr<MediaStreamSource> m_source;
String m_id;
bool m_enabled;
Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h (141150 => 141151)
--- trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h 2013-01-29 20:56:37 UTC (rev 141150)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h 2013-01-29 20:59:32 UTC (rev 141151)
@@ -99,10 +99,10 @@
, m_ended(false)
{
for (size_t i = 0; i < audioSources.size(); i++)
- m_audioComponents.append(MediaStreamComponent::create(audioSources[i]));
+ m_audioComponents.append(MediaStreamComponent::create(this, audioSources[i]));
for (size_t i = 0; i < videoSources.size(); i++)
- m_videoComponents.append(MediaStreamComponent::create(videoSources[i]));
+ m_videoComponents.append(MediaStreamComponent::create(this, videoSources[i]));
}
MediaStreamDescriptorClient* m_client;