Changeset 207818 in webkit
- Timestamp:
- Oct 25, 2016 8:02:39 AM (8 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r207817 r207818 1 2016-10-25 Youenn Fablet <youenn@apple.com> 2 3 MediaEndpointConfiguration does not need to be refcounted 4 https://bugs.webkit.org/show_bug.cgi?id=163888 5 6 Reviewed by Eric Carlson. 7 8 No change of behavior. 9 10 Updating MediaEndpoint to take a MediaEndpointConfiguration&& instead of a RefPtr<MediaEndpointConfiguration>&&. 11 This allows ensuring that the configuration is not null and removes the need to ref-count it. 12 13 Removing ref-counting from MediaEndpointConfiguration and its related IceServer that is now a struct. 14 Updated MediaEndpointOwr and mock implementations accordingly. 15 16 * Modules/mediastream/MediaEndpointPeerConnection.cpp: 17 (WebCore::MediaEndpointPeerConnection::setConfiguration): 18 * platform/mediastream/MediaEndpoint.cpp: 19 * platform/mediastream/MediaEndpoint.h: 20 * platform/mediastream/MediaEndpointConfiguration.cpp: 21 (WebCore::MediaEndpointConfiguration::MediaEndpointConfiguration): 22 * platform/mediastream/MediaEndpointConfiguration.h: 23 (WebCore::MediaEndpointConfiguration::iceServers): 24 * platform/mediastream/openwebrtc/MediaEndpointOwr.cpp: 25 (WebCore::MediaEndpointOwr::setConfiguration): 26 (WebCore::MediaEndpointOwr::ensureTransportAgentAndTransceivers): 27 * platform/mediastream/openwebrtc/MediaEndpointOwr.h: 28 * platform/mock/MockMediaEndpoint.cpp: 29 * platform/mock/MockMediaEndpoint.h: 30 1 31 2016-10-25 Youenn Fablet <youenn@apple.com> 2 32 -
trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp
r207552 r207818 615 615 void MediaEndpointPeerConnection::setConfiguration(RTCConfiguration& configuration) 616 616 { 617 Vector<RefPtr<IceServerInfo>> iceServers; 618 for (auto& server : configuration.iceServers()) 619 iceServers.append(IceServerInfo::create(server->urls(), server->credential(), server->username())); 620 621 m_mediaEndpoint->setConfiguration(MediaEndpointConfiguration::create(iceServers, configuration.iceTransportPolicy(), configuration.bundlePolicy())); 617 Vector<MediaEndpointConfiguration::IceServerInfo> iceServers; 618 if (configuration.iceServers().size()) { 619 iceServers.reserveInitialCapacity(configuration.iceServers().size()); 620 for (auto& server : configuration.iceServers()) { 621 Vector<URL> urls; 622 urls.reserveInitialCapacity(server->urls().size()); 623 for (auto& url : server->urls()) 624 urls.uncheckedAppend(URL(URL(), url)); 625 iceServers.uncheckedAppend(MediaEndpointConfiguration::IceServerInfo { WTFMove(urls), server->credential(), server->username() }); 626 } 627 } 628 629 m_mediaEndpoint->setConfiguration({ WTFMove(iceServers), configuration.iceTransportPolicy(), configuration.bundlePolicy() }); 622 630 } 623 631 -
trunk/Source/WebCore/platform/mediastream/MediaEndpoint.cpp
r207052 r207818 58 58 EmptyMediaEndpoint(MediaEndpointClient&) { } 59 59 60 void setConfiguration( RefPtr<MediaEndpointConfiguration>&&) override { }60 void setConfiguration(MediaEndpointConfiguration&&) override { } 61 61 62 62 void generateDtlsInfo() override { } -
trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h
r207052 r207818 64 64 using IceTransportState = PeerConnectionStates::IceTransportState; 65 65 66 virtual void setConfiguration( RefPtr<MediaEndpointConfiguration>&&) = 0;66 virtual void setConfiguration(MediaEndpointConfiguration&&) = 0; 67 67 68 68 virtual void generateDtlsInfo() = 0; -
trunk/Source/WebCore/platform/mediastream/MediaEndpointConfiguration.cpp
r202671 r207818 36 36 namespace WebCore { 37 37 38 IceServerInfo::IceServerInfo(const Vector<String>& urls, const String& credential, const String& username) 39 : m_credential(credential) 40 , m_username(username) 38 MediaEndpointConfiguration::MediaEndpointConfiguration(Vector<IceServerInfo>&& iceServers, IceTransportPolicy iceTransportPolicy, BundlePolicy bundlePolicy) 39 : iceServers(WTFMove(iceServers)) 40 , iceTransportPolicy(iceTransportPolicy) 41 , bundlePolicy(bundlePolicy) 41 42 { 42 m_urls.reserveCapacity(urls.size());43 for (auto& url : urls)44 m_urls.append(URL(URL(), url));45 43 } 46 44 47 MediaEndpointConfiguration:: MediaEndpointConfiguration(Vector<RefPtr<IceServerInfo>>& iceServers, IceTransportPolicy iceTransportPolicy, BundlePolicy bundlePolicy)48 : m_iceServers(iceServers)49 , m_iceTransportPolicy(iceTransportPolicy)50 , m_bundlePolicy(bundlePolicy)45 MediaEndpointConfiguration::IceServerInfo::IceServerInfo(Vector<URL>&& urls, const String& credential, const String& username) 46 : urls(WTFMove(urls)) 47 , credential(credential) 48 , username(username) 51 49 { 52 50 } -
trunk/Source/WebCore/platform/mediastream/MediaEndpointConfiguration.h
r202671 r207818 29 29 */ 30 30 31 #ifndef MediaEndpointConfiguration_h 32 #define MediaEndpointConfiguration_h 31 #pragma once 33 32 34 33 #if ENABLE(WEB_RTC) … … 36 35 #include "PeerConnectionStates.h" 37 36 #include "URL.h" 38 #include <wtf/RefCounted.h>39 #include <wtf/RefPtr.h>40 37 #include <wtf/Vector.h> 41 38 #include <wtf/text/WTFString.h> … … 43 40 namespace WebCore { 44 41 45 class IceServerInfo : public RefCounted<IceServerInfo> { 46 public: 47 static RefPtr<IceServerInfo> create(const Vector<String>& urls, const String& credential, const String& username) 48 { 49 return adoptRef(new IceServerInfo(urls, credential, username)); 50 } 51 virtual ~IceServerInfo() { } 42 struct MediaEndpointConfiguration { 43 // 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) 44 struct IceServerInfo { 45 Vector<URL> urls; 46 String credential; 47 String username; 52 48 53 const Vector<URL>& urls() const { return m_urls; } 54 const String& credential() const { return m_credential; } 55 const String& username() const { return m_username; } 49 IceServerInfo(Vector<URL>&&, const String&, const String&); 50 }; 56 51 57 private:58 IceServerInfo(const Vector<String>& urls, const String& credential, const String& username);59 60 Vector<URL> m_urls;61 String m_credential;62 String m_username;63 };64 65 class MediaEndpointConfiguration : public RefCounted<MediaEndpointConfiguration> {66 public:67 52 using IceTransportPolicy = PeerConnectionStates::IceTransportPolicy; 68 53 using BundlePolicy = PeerConnectionStates::BundlePolicy; 69 54 70 static RefPtr<MediaEndpointConfiguration> create(Vector<RefPtr<IceServerInfo>>& iceServers, IceTransportPolicy iceTransportPolicy, BundlePolicy bundlePolicy) 71 { 72 return adoptRef(new MediaEndpointConfiguration(iceServers, iceTransportPolicy, bundlePolicy)); 73 } 55 MediaEndpointConfiguration(Vector<IceServerInfo>&&, IceTransportPolicy, BundlePolicy); 74 56 75 const Vector<RefPtr<IceServerInfo>>& iceServers() const { return m_iceServers; } 76 IceTransportPolicy iceTransportPolicy() const { return m_iceTransportPolicy; } 77 BundlePolicy bundlePolicy() const { return m_bundlePolicy; } 78 79 private: 80 MediaEndpointConfiguration(Vector<RefPtr<IceServerInfo>>&, IceTransportPolicy, BundlePolicy); 81 82 Vector<RefPtr<IceServerInfo>> m_iceServers; 83 IceTransportPolicy m_iceTransportPolicy; 84 BundlePolicy m_bundlePolicy; 57 Vector<IceServerInfo> iceServers; 58 IceTransportPolicy iceTransportPolicy; 59 BundlePolicy bundlePolicy; 85 60 }; 86 61 … … 88 63 89 64 #endif // ENABLE(WEB_RTC) 90 91 #endif // MediaEndpointConfiguration_h -
trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp
r207665 r207818 90 90 } 91 91 92 void MediaEndpointOwr::setConfiguration( RefPtr<MediaEndpointConfiguration>&& configuration)93 { 94 m_configuration = configuration;92 void MediaEndpointOwr::setConfiguration(MediaEndpointConfiguration&& configuration) 93 { 94 m_configuration = WTFMove(configuration); 95 95 } 96 96 … … 553 553 m_transportAgent = owr_transport_agent_new(false); 554 554 555 for (auto& server : m_configuration->iceServers()) { 556 for (auto& webkitUrl : server->urls()) { 555 ASSERT(m_configuration); 556 for (auto& server : m_configuration->iceServers) { 557 for (auto& webkitUrl : server.urls) { 557 558 HelperServerUrl url; 558 559 // WebKit's URL class can't handle ICE helper server urls properly … … 571 572 owr_transport_agent_add_helper_server(m_transportAgent, serverType, 572 573 url.host.ascii().data(), port, 573 server ->username().ascii().data(), server->credential().ascii().data());574 server.username.ascii().data(), server.credential.ascii().data()); 574 575 } else 575 576 ASSERT_NOT_REACHED(); -
trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h
r207665 r207818 83 83 ~MediaEndpointOwr(); 84 84 85 void setConfiguration( RefPtr<MediaEndpointConfiguration>&&) override;85 void setConfiguration(MediaEndpointConfiguration&&) override; 86 86 87 87 void generateDtlsInfo() override; … … 126 126 void internalAddRemoteCandidate(OwrSession*, IceCandidate&, const String& ufrag, const String& password); 127 127 128 RefPtr<MediaEndpointConfiguration> m_configuration;128 Optional<MediaEndpointConfiguration> m_configuration; 129 129 GRegex* m_helperServerRegEx; 130 130 -
trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp
r207052 r207818 64 64 } 65 65 66 void MockMediaEndpoint::setConfiguration(RefPtr<MediaEndpointConfiguration>&& configuration)67 {68 UNUSED_PARAM(configuration);69 }70 71 66 void MockMediaEndpoint::generateDtlsInfo() 72 67 { -
trunk/Source/WebCore/platform/mock/MockMediaEndpoint.h
r207052 r207818 39 39 namespace WebCore { 40 40 41 class MockMediaEndpoint : public MediaEndpoint {41 class MockMediaEndpoint final : public MediaEndpoint { 42 42 public: 43 43 WEBCORE_EXPORT static std::unique_ptr<MediaEndpoint> create(MediaEndpointClient&); … … 46 46 ~MockMediaEndpoint(); 47 47 48 void setConfiguration( RefPtr<MediaEndpointConfiguration>&&) override;48 void setConfiguration(MediaEndpointConfiguration&&) final { }; 49 49 50 void generateDtlsInfo() override;51 MediaPayloadVector getDefaultAudioPayloads() override;52 MediaPayloadVector getDefaultVideoPayloads() override;53 MediaPayloadVector filterPayloads(const MediaPayloadVector& remotePayloads, const MediaPayloadVector& defaultPayloads) override;50 void generateDtlsInfo() final; 51 MediaPayloadVector getDefaultAudioPayloads() final; 52 MediaPayloadVector getDefaultVideoPayloads() final; 53 MediaPayloadVector filterPayloads(const MediaPayloadVector& remotePayloads, const MediaPayloadVector& defaultPayloads) final; 54 54 55 UpdateResult updateReceiveConfiguration(MediaEndpointSessionConfiguration*, bool isInitiator) override;56 UpdateResult updateSendConfiguration(MediaEndpointSessionConfiguration*, const RealtimeMediaSourceMap&, bool isInitiator) override;55 UpdateResult updateReceiveConfiguration(MediaEndpointSessionConfiguration*, bool isInitiator) final; 56 UpdateResult updateSendConfiguration(MediaEndpointSessionConfiguration*, const RealtimeMediaSourceMap&, bool isInitiator) final; 57 57 58 void addRemoteCandidate(IceCandidate&, const String& mid, const String& ufrag, const String& password) override;58 void addRemoteCandidate(IceCandidate&, const String& mid, const String& ufrag, const String& password) final; 59 59 60 Ref<RealtimeMediaSource> createMutedRemoteSource(const String& mid, RealtimeMediaSource::Type) override;61 void replaceSendSource(RealtimeMediaSource&, const String& mid) override;62 void replaceMutedRemoteSourceMid(const String& oldMid, const String& newMid) override;60 Ref<RealtimeMediaSource> createMutedRemoteSource(const String& mid, RealtimeMediaSource::Type) final; 61 void replaceSendSource(RealtimeMediaSource&, const String& mid) final; 62 void replaceMutedRemoteSourceMid(const String& oldMid, const String& newMid) final; 63 63 64 void stop() override;64 void stop() final; 65 65 66 void emulatePlatformEvent(const String& action) override;66 void emulatePlatformEvent(const String& action) final; 67 67 68 68 private:
Note: See TracChangeset
for help on using the changeset viewer.