Diff
Modified: trunk/Source/Platform/ChangeLog (142772 => 142773)
--- trunk/Source/Platform/ChangeLog 2013-02-13 20:23:49 UTC (rev 142772)
+++ trunk/Source/Platform/ChangeLog 2013-02-13 20:32:38 UTC (rev 142773)
@@ -1,3 +1,20 @@
+2013-02-13 Tommy Widenflycht <[email protected]>
+
+ MediaStream API: Use the source id when creating new tracks
+ https://bugs.webkit.org/show_bug.cgi?id=109688
+
+ Reviewed by Adam Barth.
+
+ Added id to initialize and renamed audio/videoSources to audio/videoTracks.
+
+ * chromium/public/WebMediaStream.h:
+ (WebKit):
+ (WebMediaStream):
+ (WebKit::WebMediaStream::audioSources):
+ (WebKit::WebMediaStream::videoSources):
+ * chromium/public/WebMediaStreamTrack.h:
+ (WebMediaStreamTrack):
+
2013-02-11 James Robinson <[email protected]>
[chromium] Add WebUnitTestSupport::createLayerTreeViewForTesting for webkit_unit_tests
Modified: trunk/Source/Platform/chromium/public/WebMediaStream.h (142772 => 142773)
--- trunk/Source/Platform/chromium/public/WebMediaStream.h 2013-02-13 20:23:49 UTC (rev 142772)
+++ trunk/Source/Platform/chromium/public/WebMediaStream.h 2013-02-13 20:32:38 UTC (rev 142773)
@@ -36,8 +36,8 @@
namespace WebKit {
+class WebMediaStreamSource;
class WebMediaStreamTrack;
-class WebMediaStreamSource;
class WebString;
class WebMediaStream {
@@ -59,7 +59,11 @@
WEBKIT_EXPORT void assign(const WebMediaStream&);
+ // DEPRECATED
WEBKIT_EXPORT void initialize(const WebString& label, const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources);
+
+ WEBKIT_EXPORT void initialize(const WebString& label, const WebVector<WebMediaStreamTrack>& audioTracks, const WebVector<WebMediaStreamTrack>& videoTracks);
+
WEBKIT_EXPORT void reset();
bool isNull() const { return m_private.isNull(); }
@@ -68,9 +72,13 @@
WEBKIT_EXPORT WebString id() const;
- WEBKIT_EXPORT void audioSources(WebVector<WebMediaStreamTrack>&) const;
- WEBKIT_EXPORT void videoSources(WebVector<WebMediaStreamTrack>&) const;
+ WEBKIT_EXPORT void audioTracks(WebVector<WebMediaStreamTrack>&) const;
+ WEBKIT_EXPORT void videoTracks(WebVector<WebMediaStreamTrack>&) const;
+ // DEPRECATED
+ void audioSources(WebVector<WebMediaStreamTrack>& tracks) const { audioTracks(tracks); }
+ void videoSources(WebVector<WebMediaStreamTrack>& tracks) const { videoTracks(tracks); }
+
// Extra data associated with this WebMediaStream.
// If non-null, the extra data pointer will be deleted when the object is destroyed.
// Setting the extra data pointer will cause any existing non-null
Modified: trunk/Source/Platform/chromium/public/WebMediaStreamTrack.h (142772 => 142773)
--- trunk/Source/Platform/chromium/public/WebMediaStreamTrack.h 2013-02-13 20:23:49 UTC (rev 142772)
+++ trunk/Source/Platform/chromium/public/WebMediaStreamTrack.h 2013-02-13 20:32:38 UTC (rev 142773)
@@ -50,7 +50,10 @@
return *this;
}
WEBKIT_EXPORT void assign(const WebMediaStreamTrack&);
+
WEBKIT_EXPORT void initialize(const WebMediaStreamSource&);
+ WEBKIT_EXPORT void initialize(const WebString& id, const WebMediaStreamSource&);
+
WEBKIT_EXPORT void reset();
bool isNull() const { return m_private.isNull(); }
Modified: trunk/Source/WebCore/ChangeLog (142772 => 142773)
--- trunk/Source/WebCore/ChangeLog 2013-02-13 20:23:49 UTC (rev 142772)
+++ trunk/Source/WebCore/ChangeLog 2013-02-13 20:32:38 UTC (rev 142773)
@@ -1,3 +1,34 @@
+2013-02-13 Tommy Widenflycht <[email protected]>
+
+ MediaStream API: Use the source id when creating new tracks
+ https://bugs.webkit.org/show_bug.cgi?id=109688
+
+ Reviewed by Adam Barth.
+
+ This patch reuses the ids from the source when creating tracks instead of creating a new one.
+ This was requested by the chromium port to greatly simplify their implementation.
+ In the longer run the API should be rewritten to only use tracks instead of sources.
+
+ Covered by existing tests.
+
+ * platform/chromium/support/WebMediaStream.cpp:
+ (WebKit::WebMediaStream::audioTracks):
+ (WebKit::WebMediaStream::videoTracks):
+ (WebKit::WebMediaStream::initialize):
+ (WebKit):
+ * platform/chromium/support/WebMediaStreamTrack.cpp:
+ (WebKit::WebMediaStreamTrack::initialize):
+ (WebKit):
+ * platform/mediastream/MediaStreamComponent.h:
+ (WebCore::MediaStreamComponent::create):
+ (MediaStreamComponent):
+ (WebCore::MediaStreamComponent::MediaStreamComponent):
+ (WebCore):
+ * platform/mediastream/MediaStreamDescriptor.h:
+ (WebCore::MediaStreamDescriptor::create):
+ (MediaStreamDescriptor):
+ (WebCore::MediaStreamDescriptor::MediaStreamDescriptor):
+
2013-02-13 Eric Seidel <[email protected]>
Use fancy new Vector-based String constructors in the WebVTT parser
Modified: trunk/Source/WebCore/platform/chromium/support/WebMediaStream.cpp (142772 => 142773)
--- trunk/Source/WebCore/platform/chromium/support/WebMediaStream.cpp 2013-02-13 20:23:49 UTC (rev 142772)
+++ trunk/Source/WebCore/platform/chromium/support/WebMediaStream.cpp 2013-02-13 20:32:38 UTC (rev 142773)
@@ -94,22 +94,22 @@
m_private->setExtraData(adoptRef(new ExtraDataContainer(extraData)));
}
-void WebMediaStream::audioSources(WebVector<WebMediaStreamTrack>& webSources) const
+void WebMediaStream::audioTracks(WebVector<WebMediaStreamTrack>& webTracks) const
{
- size_t numberOfSources = m_private->numberOfAudioComponents();
- WebVector<WebMediaStreamTrack> result(numberOfSources);
- for (size_t i = 0; i < numberOfSources; ++i)
+ size_t numberOfTracks = m_private->numberOfAudioComponents();
+ WebVector<WebMediaStreamTrack> result(numberOfTracks);
+ for (size_t i = 0; i < numberOfTracks; ++i)
result[i] = m_private->audioComponent(i);
- webSources.swap(result);
+ webTracks.swap(result);
}
-void WebMediaStream::videoSources(WebVector<WebMediaStreamTrack>& webSources) const
+void WebMediaStream::videoTracks(WebVector<WebMediaStreamTrack>& webTracks) const
{
- size_t numberOfSources = m_private->numberOfVideoComponents();
- WebVector<WebMediaStreamTrack> result(numberOfSources);
- for (size_t i = 0; i < numberOfSources; ++i)
+ size_t numberOfTracks = m_private->numberOfVideoComponents();
+ WebVector<WebMediaStreamTrack> result(numberOfTracks);
+ for (size_t i = 0; i < numberOfTracks; ++i)
result[i] = m_private->videoComponent(i);
- webSources.swap(result);
+ webTracks.swap(result);
}
WebMediaStream& WebMediaStream::operator=(const PassRefPtr<WebCore::MediaStreamDescriptor>& mediaStreamDescriptor)
@@ -130,18 +130,32 @@
void WebMediaStream::initialize(const WebString& label, const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources)
{
- MediaStreamSourceVector audio, video;
+ MediaStreamComponentVector audio, video;
for (size_t i = 0; i < audioSources.size(); ++i) {
- MediaStreamSource* curr = audioSources[i];
- audio.append(curr);
+ MediaStreamSource* source = audioSources[i];
+ audio.append(MediaStreamComponent::create(source->id(), source));
}
for (size_t i = 0; i < videoSources.size(); ++i) {
- MediaStreamSource* curr = videoSources[i];
- video.append(curr);
+ MediaStreamSource* source = videoSources[i];
+ video.append(MediaStreamComponent::create(source->id(), source));
}
m_private = MediaStreamDescriptor::create(label, audio, video);
}
+void WebMediaStream::initialize(const WebString& label, const WebVector<WebMediaStreamTrack>& audioTracks, const WebVector<WebMediaStreamTrack>& videoTracks)
+{
+ MediaStreamComponentVector audio, video;
+ for (size_t i = 0; i < audioTracks.size(); ++i) {
+ MediaStreamComponent* component = audioTracks[i];
+ audio.append(component);
+ }
+ for (size_t i = 0; i < videoTracks.size(); ++i) {
+ MediaStreamComponent* component = videoTracks[i];
+ video.append(component);
+ }
+ m_private = MediaStreamDescriptor::create(label, audio, video);
+}
+
void WebMediaStream::assign(const WebMediaStream& other)
{
m_private = other.m_private;
Modified: trunk/Source/WebCore/platform/chromium/support/WebMediaStreamTrack.cpp (142772 => 142773)
--- trunk/Source/WebCore/platform/chromium/support/WebMediaStreamTrack.cpp 2013-02-13 20:23:49 UTC (rev 142772)
+++ trunk/Source/WebCore/platform/chromium/support/WebMediaStreamTrack.cpp 2013-02-13 20:32:38 UTC (rev 142773)
@@ -59,6 +59,11 @@
m_private = MediaStreamComponent::create(source);
}
+void WebMediaStreamTrack::initialize(const WebString& id, const WebMediaStreamSource& source)
+{
+ m_private = MediaStreamComponent::create(id, source);
+}
+
void WebMediaStreamTrack::reset()
{
m_private.reset();
Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamComponent.h (142772 => 142773)
--- trunk/Source/WebCore/platform/mediastream/MediaStreamComponent.h 2013-02-13 20:23:49 UTC (rev 142772)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamComponent.h 2013-02-13 20:32:38 UTC (rev 142773)
@@ -44,12 +44,17 @@
public:
static PassRefPtr<MediaStreamComponent> create(PassRefPtr<MediaStreamSource> source)
{
- return adoptRef(new MediaStreamComponent(0, source));
+ return adoptRef(new MediaStreamComponent(createCanonicalUUIDString(), 0, source));
}
+ static PassRefPtr<MediaStreamComponent> create(const String& id, PassRefPtr<MediaStreamSource> source)
+ {
+ return adoptRef(new MediaStreamComponent(id, 0, source));
+ }
+
static PassRefPtr<MediaStreamComponent> create(MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
{
- return adoptRef(new MediaStreamComponent(stream, source));
+ return adoptRef(new MediaStreamComponent(createCanonicalUUIDString(), stream, source));
}
MediaStreamDescriptor* stream() const { return m_stream; }
@@ -62,12 +67,13 @@
void setEnabled(bool enabled) { m_enabled = enabled; }
private:
- MediaStreamComponent(MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
+ MediaStreamComponent(const String& id, MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
: m_stream(stream)
, m_source(source)
- , m_id(createCanonicalUUIDString())
+ , m_id(id)
, m_enabled(true)
{
+ ASSERT(m_id.length());
}
MediaStreamDescriptor* m_stream;
@@ -76,6 +82,8 @@
bool m_enabled;
};
+typedef Vector<RefPtr<MediaStreamComponent> > MediaStreamComponentVector;
+
} // namespace WebCore
#endif // ENABLE(MEDIA_STREAM)
Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h (142772 => 142773)
--- trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h 2013-02-13 20:23:49 UTC (rev 142772)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h 2013-02-13 20:32:38 UTC (rev 142773)
@@ -61,6 +61,11 @@
return adoptRef(new MediaStreamDescriptor(id, audioSources, videoSources));
}
+ static PassRefPtr<MediaStreamDescriptor> create(const String& id, const MediaStreamComponentVector& audioComponents, const MediaStreamComponentVector& videoComponents)
+ {
+ return adoptRef(new MediaStreamDescriptor(id, audioComponents, videoComponents));
+ }
+
MediaStreamDescriptorClient* client() const { return m_client; }
void setClient(MediaStreamDescriptorClient* client) { m_client = client; }
@@ -98,6 +103,7 @@
, m_id(id)
, m_ended(false)
{
+ ASSERT(m_id.length());
for (size_t i = 0; i < audioSources.size(); i++)
m_audioComponents.append(MediaStreamComponent::create(this, audioSources[i]));
@@ -105,6 +111,22 @@
m_videoComponents.append(MediaStreamComponent::create(this, videoSources[i]));
}
+ MediaStreamDescriptor(const String& id, const MediaStreamComponentVector& audioComponents, const MediaStreamComponentVector& videoComponents)
+ : m_client(0)
+ , m_id(id)
+ , m_ended(false)
+ {
+ ASSERT(m_id.length());
+ for (MediaStreamComponentVector::const_iterator iter = audioComponents.begin(); iter != audioComponents.end(); ++iter) {
+ (*iter)->setStream(this);
+ m_audioComponents.append((*iter));
+ }
+ for (MediaStreamComponentVector::const_iterator iter = videoComponents.begin(); iter != videoComponents.end(); ++iter) {
+ (*iter)->setStream(this);
+ m_videoComponents.append((*iter));
+ }
+ }
+
MediaStreamDescriptorClient* m_client;
String m_id;
Vector<RefPtr<MediaStreamComponent> > m_audioComponents;
Modified: trunk/Tools/ChangeLog (142772 => 142773)
--- trunk/Tools/ChangeLog 2013-02-13 20:23:49 UTC (rev 142772)
+++ trunk/Tools/ChangeLog 2013-02-13 20:32:38 UTC (rev 142773)
@@ -1,3 +1,15 @@
+2013-02-13 Tommy Widenflycht <[email protected]>
+
+ MediaStream API: Use the source id when creating new tracks
+ https://bugs.webkit.org/show_bug.cgi?id=109688
+
+ Reviewed by Adam Barth.
+
+ Switching mock to new API.
+
+ * DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp:
+ (WebTestRunner::WebUserMediaClientMock::requestUserMedia):
+
2013-02-13 Brent Fulgham <[email protected]>
[Windows] Unreviewed VS2010 fix to add $(ConfigurationBuildDir)/private
Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp (142772 => 142773)
--- trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp 2013-02-13 20:23:49 UTC (rev 142772)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp 2013-02-13 20:32:38 UTC (rev 142773)
@@ -39,6 +39,7 @@
#include <public/WebMediaConstraints.h>
#include <public/WebMediaStream.h>
#include <public/WebMediaStreamSource.h>
+#include <public/WebMediaStreamTrack.h>
#include <public/WebVector.h>
using namespace WebKit;
@@ -102,17 +103,23 @@
const size_t zero = 0;
const size_t _one_ = 1;
- WebVector<WebMediaStreamSource> audioSources(request.audio() ? one : zero);
- WebVector<WebMediaStreamSource> videoSources(request.video() ? one : zero);
+ WebVector<WebMediaStreamTrack> audioTracks(request.audio() ? one : zero);
+ WebVector<WebMediaStreamTrack> videoTracks(request.video() ? one : zero);
- if (request.audio())
- audioSources[0].initialize("MockAudioDevice#1", WebMediaStreamSource::TypeAudio, "Mock audio device");
+ if (request.audio()) {
+ WebMediaStreamSource source;
+ source.initialize("MockAudioDevice#1", WebMediaStreamSource::TypeAudio, "Mock audio device");
+ audioTracks[0].initialize(source);
+ }
- if (request.video())
- videoSources[0].initialize("MockVideoDevice#1", WebMediaStreamSource::TypeVideo, "Mock video device");
+ if (request.video()) {
+ WebMediaStreamSource source;
+ source.initialize("MockVideoDevice#1", WebMediaStreamSource::TypeVideo, "Mock video device");
+ videoTracks[0].initialize(source);
+ }
WebMediaStream stream;
- stream.initialize("foobar", audioSources, videoSources);
+ stream.initialize("foobar", audioTracks, videoTracks);
stream.setExtraData(new MockExtraData());