Diff
Modified: trunk/Source/WebCore/ChangeLog (207817 => 207818)
--- trunk/Source/WebCore/ChangeLog 2016-10-25 14:16:15 UTC (rev 207817)
+++ trunk/Source/WebCore/ChangeLog 2016-10-25 15:02:39 UTC (rev 207818)
@@ -1,5 +1,35 @@
2016-10-25 Youenn Fablet <[email protected]>
+ MediaEndpointConfiguration does not need to be refcounted
+ https://bugs.webkit.org/show_bug.cgi?id=163888
+
+ Reviewed by Eric Carlson.
+
+ No change of behavior.
+
+ Updating MediaEndpoint to take a MediaEndpointConfiguration&& instead of a RefPtr<MediaEndpointConfiguration>&&.
+ This allows ensuring that the configuration is not null and removes the need to ref-count it.
+
+ Removing ref-counting from MediaEndpointConfiguration and its related IceServer that is now a struct.
+ Updated MediaEndpointOwr and mock implementations accordingly.
+
+ * Modules/mediastream/MediaEndpointPeerConnection.cpp:
+ (WebCore::MediaEndpointPeerConnection::setConfiguration):
+ * platform/mediastream/MediaEndpoint.cpp:
+ * platform/mediastream/MediaEndpoint.h:
+ * platform/mediastream/MediaEndpointConfiguration.cpp:
+ (WebCore::MediaEndpointConfiguration::MediaEndpointConfiguration):
+ * platform/mediastream/MediaEndpointConfiguration.h:
+ (WebCore::MediaEndpointConfiguration::iceServers):
+ * platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:
+ (WebCore::MediaEndpointOwr::setConfiguration):
+ (WebCore::MediaEndpointOwr::ensureTransportAgentAndTransceivers):
+ * platform/mediastream/openwebrtc/MediaEndpointOwr.h:
+ * platform/mock/MockMediaEndpoint.cpp:
+ * platform/mock/MockMediaEndpoint.h:
+
+2016-10-25 Youenn Fablet <[email protected]>
+
CachedResourceLoader should set headers of the HTTP request prior checking for the cache
https://bugs.webkit.org/show_bug.cgi?id=163103
Modified: trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp (207817 => 207818)
--- trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp 2016-10-25 14:16:15 UTC (rev 207817)
+++ trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp 2016-10-25 15:02:39 UTC (rev 207818)
@@ -614,11 +614,19 @@
void MediaEndpointPeerConnection::setConfiguration(RTCConfiguration& configuration)
{
- Vector<RefPtr<IceServerInfo>> iceServers;
- for (auto& server : configuration.iceServers())
- iceServers.append(IceServerInfo::create(server->urls(), server->credential(), server->username()));
+ Vector<MediaEndpointConfiguration::IceServerInfo> iceServers;
+ if (configuration.iceServers().size()) {
+ iceServers.reserveInitialCapacity(configuration.iceServers().size());
+ for (auto& server : configuration.iceServers()) {
+ Vector<URL> urls;
+ urls.reserveInitialCapacity(server->urls().size());
+ for (auto& url : server->urls())
+ urls.uncheckedAppend(URL(URL(), url));
+ iceServers.uncheckedAppend(MediaEndpointConfiguration::IceServerInfo { WTFMove(urls), server->credential(), server->username() });
+ }
+ }
- m_mediaEndpoint->setConfiguration(MediaEndpointConfiguration::create(iceServers, configuration.iceTransportPolicy(), configuration.bundlePolicy()));
+ m_mediaEndpoint->setConfiguration({ WTFMove(iceServers), configuration.iceTransportPolicy(), configuration.bundlePolicy() });
}
void MediaEndpointPeerConnection::addIceCandidate(RTCIceCandidate& rtcCandidate, PeerConnection::VoidPromise&& promise)
Modified: trunk/Source/WebCore/platform/mediastream/MediaEndpoint.cpp (207817 => 207818)
--- trunk/Source/WebCore/platform/mediastream/MediaEndpoint.cpp 2016-10-25 14:16:15 UTC (rev 207817)
+++ trunk/Source/WebCore/platform/mediastream/MediaEndpoint.cpp 2016-10-25 15:02:39 UTC (rev 207818)
@@ -57,7 +57,7 @@
public:
EmptyMediaEndpoint(MediaEndpointClient&) { }
- void setConfiguration(RefPtr<MediaEndpointConfiguration>&&) override { }
+ void setConfiguration(MediaEndpointConfiguration&&) override { }
void generateDtlsInfo() override { }
MediaPayloadVector getDefaultAudioPayloads() override { return MediaPayloadVector(); }
Modified: trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h (207817 => 207818)
--- trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h 2016-10-25 14:16:15 UTC (rev 207817)
+++ trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h 2016-10-25 15:02:39 UTC (rev 207818)
@@ -63,7 +63,7 @@
using IceTransportState = PeerConnectionStates::IceTransportState;
- virtual void setConfiguration(RefPtr<MediaEndpointConfiguration>&&) = 0;
+ virtual void setConfiguration(MediaEndpointConfiguration&&) = 0;
virtual void generateDtlsInfo() = 0;
virtual MediaPayloadVector getDefaultAudioPayloads() = 0;
Modified: trunk/Source/WebCore/platform/mediastream/MediaEndpointConfiguration.cpp (207817 => 207818)
--- trunk/Source/WebCore/platform/mediastream/MediaEndpointConfiguration.cpp 2016-10-25 14:16:15 UTC (rev 207817)
+++ trunk/Source/WebCore/platform/mediastream/MediaEndpointConfiguration.cpp 2016-10-25 15:02:39 UTC (rev 207818)
@@ -35,19 +35,17 @@
namespace WebCore {
-IceServerInfo::IceServerInfo(const Vector<String>& urls, const String& credential, const String& username)
- : m_credential(credential)
- , m_username(username)
+MediaEndpointConfiguration::MediaEndpointConfiguration(Vector<IceServerInfo>&& iceServers, IceTransportPolicy iceTransportPolicy, BundlePolicy bundlePolicy)
+ : iceServers(WTFMove(iceServers))
+ , iceTransportPolicy(iceTransportPolicy)
+ , bundlePolicy(bundlePolicy)
{
- m_urls.reserveCapacity(urls.size());
- for (auto& url : urls)
- m_urls.append(URL(URL(), url));
}
-MediaEndpointConfiguration::MediaEndpointConfiguration(Vector<RefPtr<IceServerInfo>>& iceServers, IceTransportPolicy iceTransportPolicy, BundlePolicy bundlePolicy)
- : m_iceServers(iceServers)
- , m_iceTransportPolicy(iceTransportPolicy)
- , m_bundlePolicy(bundlePolicy)
+MediaEndpointConfiguration::IceServerInfo::IceServerInfo(Vector<URL>&& urls, const String& credential, const String& username)
+ : urls(WTFMove(urls))
+ , credential(credential)
+ , username(username)
{
}
Modified: trunk/Source/WebCore/platform/mediastream/MediaEndpointConfiguration.h (207817 => 207818)
--- trunk/Source/WebCore/platform/mediastream/MediaEndpointConfiguration.h 2016-10-25 14:16:15 UTC (rev 207817)
+++ trunk/Source/WebCore/platform/mediastream/MediaEndpointConfiguration.h 2016-10-25 15:02:39 UTC (rev 207818)
@@ -28,64 +28,37 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef MediaEndpointConfiguration_h
-#define MediaEndpointConfiguration_h
+#pragma once
#if ENABLE(WEB_RTC)
#include "PeerConnectionStates.h"
#include "URL.h"
-#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
#include <wtf/Vector.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
-class IceServerInfo : public RefCounted<IceServerInfo> {
-public:
- static RefPtr<IceServerInfo> create(const Vector<String>& urls, const String& credential, const String& username)
- {
- return adoptRef(new IceServerInfo(urls, credential, username));
- }
- virtual ~IceServerInfo() { }
+struct MediaEndpointConfiguration {
+ // FIXME: We might be able to remove these constructors once all compilers can handle without it (see https://bugs.webkit.org/show_bug.cgi?id=163255#c15)
+ struct IceServerInfo {
+ Vector<URL> urls;
+ String credential;
+ String username;
- const Vector<URL>& urls() const { return m_urls; }
- const String& credential() const { return m_credential; }
- const String& username() const { return m_username; }
+ IceServerInfo(Vector<URL>&&, const String&, const String&);
+ };
-private:
- IceServerInfo(const Vector<String>& urls, const String& credential, const String& username);
-
- Vector<URL> m_urls;
- String m_credential;
- String m_username;
-};
-
-class MediaEndpointConfiguration : public RefCounted<MediaEndpointConfiguration> {
-public:
using IceTransportPolicy = PeerConnectionStates::IceTransportPolicy;
using BundlePolicy = PeerConnectionStates::BundlePolicy;
- static RefPtr<MediaEndpointConfiguration> create(Vector<RefPtr<IceServerInfo>>& iceServers, IceTransportPolicy iceTransportPolicy, BundlePolicy bundlePolicy)
- {
- return adoptRef(new MediaEndpointConfiguration(iceServers, iceTransportPolicy, bundlePolicy));
- }
+ MediaEndpointConfiguration(Vector<IceServerInfo>&&, IceTransportPolicy, BundlePolicy);
- const Vector<RefPtr<IceServerInfo>>& iceServers() const { return m_iceServers; }
- IceTransportPolicy iceTransportPolicy() const { return m_iceTransportPolicy; }
- BundlePolicy bundlePolicy() const { return m_bundlePolicy; }
-
-private:
- MediaEndpointConfiguration(Vector<RefPtr<IceServerInfo>>&, IceTransportPolicy, BundlePolicy);
-
- Vector<RefPtr<IceServerInfo>> m_iceServers;
- IceTransportPolicy m_iceTransportPolicy;
- BundlePolicy m_bundlePolicy;
+ Vector<IceServerInfo> iceServers;
+ IceTransportPolicy iceTransportPolicy;
+ BundlePolicy bundlePolicy;
};
} // namespace WebCore
#endif // ENABLE(WEB_RTC)
-
-#endif // MediaEndpointConfiguration_h
Modified: trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp (207817 => 207818)
--- trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp 2016-10-25 14:16:15 UTC (rev 207817)
+++ trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp 2016-10-25 15:02:39 UTC (rev 207818)
@@ -89,9 +89,9 @@
g_regex_unref(m_helperServerRegEx);
}
-void MediaEndpointOwr::setConfiguration(RefPtr<MediaEndpointConfiguration>&& configuration)
+void MediaEndpointOwr::setConfiguration(MediaEndpointConfiguration&& configuration)
{
- m_configuration = configuration;
+ m_configuration = WTFMove(configuration);
}
static void cryptoDataCallback(gchar* privateKey, gchar* certificate, gchar* fingerprint, gchar* fingerprintFunction, gpointer data)
@@ -552,8 +552,9 @@
if (!m_transportAgent) {
m_transportAgent = owr_transport_agent_new(false);
- for (auto& server : m_configuration->iceServers()) {
- for (auto& webkitUrl : server->urls()) {
+ ASSERT(m_configuration);
+ for (auto& server : m_configuration->iceServers) {
+ for (auto& webkitUrl : server.urls) {
HelperServerUrl url;
// WebKit's URL class can't handle ICE helper server urls properly
parseHelperServerUrl(*m_helperServerRegEx, webkitUrl, url);
@@ -570,7 +571,7 @@
owr_transport_agent_add_helper_server(m_transportAgent, serverType,
url.host.ascii().data(), port,
- server->username().ascii().data(), server->credential().ascii().data());
+ server.username.ascii().data(), server.credential.ascii().data());
} else
ASSERT_NOT_REACHED();
}
Modified: trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h (207817 => 207818)
--- trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h 2016-10-25 14:16:15 UTC (rev 207817)
+++ trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h 2016-10-25 15:02:39 UTC (rev 207818)
@@ -82,7 +82,7 @@
MediaEndpointOwr(MediaEndpointClient&);
~MediaEndpointOwr();
- void setConfiguration(RefPtr<MediaEndpointConfiguration>&&) override;
+ void setConfiguration(MediaEndpointConfiguration&&) override;
void generateDtlsInfo() override;
MediaPayloadVector getDefaultAudioPayloads() override;
@@ -125,7 +125,7 @@
void ensureTransportAgentAndTransceivers(bool isInitiator, const Vector<TransceiverConfig>&);
void internalAddRemoteCandidate(OwrSession*, IceCandidate&, const String& ufrag, const String& password);
- RefPtr<MediaEndpointConfiguration> m_configuration;
+ Optional<MediaEndpointConfiguration> m_configuration;
GRegex* m_helperServerRegEx;
OwrTransportAgent* m_transportAgent;
Modified: trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp (207817 => 207818)
--- trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp 2016-10-25 14:16:15 UTC (rev 207817)
+++ trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp 2016-10-25 15:02:39 UTC (rev 207818)
@@ -63,11 +63,6 @@
stop();
}
-void MockMediaEndpoint::setConfiguration(RefPtr<MediaEndpointConfiguration>&& configuration)
-{
- UNUSED_PARAM(configuration);
-}
-
void MockMediaEndpoint::generateDtlsInfo()
{
callOnMainThread([this]() {
Modified: trunk/Source/WebCore/platform/mock/MockMediaEndpoint.h (207817 => 207818)
--- trunk/Source/WebCore/platform/mock/MockMediaEndpoint.h 2016-10-25 14:16:15 UTC (rev 207817)
+++ trunk/Source/WebCore/platform/mock/MockMediaEndpoint.h 2016-10-25 15:02:39 UTC (rev 207818)
@@ -38,7 +38,7 @@
namespace WebCore {
-class MockMediaEndpoint : public MediaEndpoint {
+class MockMediaEndpoint final : public MediaEndpoint {
public:
WEBCORE_EXPORT static std::unique_ptr<MediaEndpoint> create(MediaEndpointClient&);
@@ -45,25 +45,25 @@
MockMediaEndpoint(MediaEndpointClient&);
~MockMediaEndpoint();
- void setConfiguration(RefPtr<MediaEndpointConfiguration>&&) override;
+ void setConfiguration(MediaEndpointConfiguration&&) final { };
- void generateDtlsInfo() override;
- MediaPayloadVector getDefaultAudioPayloads() override;
- MediaPayloadVector getDefaultVideoPayloads() override;
- MediaPayloadVector filterPayloads(const MediaPayloadVector& remotePayloads, const MediaPayloadVector& defaultPayloads) override;
+ void generateDtlsInfo() final;
+ MediaPayloadVector getDefaultAudioPayloads() final;
+ MediaPayloadVector getDefaultVideoPayloads() final;
+ MediaPayloadVector filterPayloads(const MediaPayloadVector& remotePayloads, const MediaPayloadVector& defaultPayloads) final;
- UpdateResult updateReceiveConfiguration(MediaEndpointSessionConfiguration*, bool isInitiator) override;
- UpdateResult updateSendConfiguration(MediaEndpointSessionConfiguration*, const RealtimeMediaSourceMap&, bool isInitiator) override;
+ UpdateResult updateReceiveConfiguration(MediaEndpointSessionConfiguration*, bool isInitiator) final;
+ UpdateResult updateSendConfiguration(MediaEndpointSessionConfiguration*, const RealtimeMediaSourceMap&, bool isInitiator) final;
- void addRemoteCandidate(IceCandidate&, const String& mid, const String& ufrag, const String& password) override;
+ void addRemoteCandidate(IceCandidate&, const String& mid, const String& ufrag, const String& password) final;
- Ref<RealtimeMediaSource> createMutedRemoteSource(const String& mid, RealtimeMediaSource::Type) override;
- void replaceSendSource(RealtimeMediaSource&, const String& mid) override;
- void replaceMutedRemoteSourceMid(const String& oldMid, const String& newMid) override;
+ Ref<RealtimeMediaSource> createMutedRemoteSource(const String& mid, RealtimeMediaSource::Type) final;
+ void replaceSendSource(RealtimeMediaSource&, const String& mid) final;
+ void replaceMutedRemoteSourceMid(const String& oldMid, const String& newMid) final;
- void stop() override;
+ void stop() final;
- void emulatePlatformEvent(const String& action) override;
+ void emulatePlatformEvent(const String& action) final;
private:
void updateConfigurationMids(const MediaEndpointSessionConfiguration&);