Changeset 207818 in webkit


Ignore:
Timestamp:
Oct 25, 2016 8:02:39 AM (8 years ago)
Author:
commit-queue@webkit.org
Message:

MediaEndpointConfiguration does not need to be refcounted
https://bugs.webkit.org/show_bug.cgi?id=163888

Patch by Youenn Fablet <youenn@apple.com> on 2016-10-25
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:
Location:
trunk/Source/WebCore
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r207817 r207818  
     12016-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
    1312016-10-25  Youenn Fablet  <youenn@apple.com>
    232
  • trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp

    r207552 r207818  
    615615void MediaEndpointPeerConnection::setConfiguration(RTCConfiguration& configuration)
    616616{
    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() });
    622630}
    623631
  • trunk/Source/WebCore/platform/mediastream/MediaEndpoint.cpp

    r207052 r207818  
    5858    EmptyMediaEndpoint(MediaEndpointClient&) { }
    5959
    60     void setConfiguration(RefPtr<MediaEndpointConfiguration>&&) override { }
     60    void setConfiguration(MediaEndpointConfiguration&&) override { }
    6161
    6262    void generateDtlsInfo() override { }
  • trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h

    r207052 r207818  
    6464    using IceTransportState = PeerConnectionStates::IceTransportState;
    6565
    66     virtual void setConfiguration(RefPtr<MediaEndpointConfiguration>&&) = 0;
     66    virtual void setConfiguration(MediaEndpointConfiguration&&) = 0;
    6767
    6868    virtual void generateDtlsInfo() = 0;
  • trunk/Source/WebCore/platform/mediastream/MediaEndpointConfiguration.cpp

    r202671 r207818  
    3636namespace WebCore {
    3737
    38 IceServerInfo::IceServerInfo(const Vector<String>& urls, const String& credential, const String& username)
    39     : m_credential(credential)
    40     , m_username(username)
     38MediaEndpointConfiguration::MediaEndpointConfiguration(Vector<IceServerInfo>&& iceServers, IceTransportPolicy iceTransportPolicy, BundlePolicy bundlePolicy)
     39    : iceServers(WTFMove(iceServers))
     40    , iceTransportPolicy(iceTransportPolicy)
     41    , bundlePolicy(bundlePolicy)
    4142{
    42     m_urls.reserveCapacity(urls.size());
    43     for (auto& url : urls)
    44         m_urls.append(URL(URL(), url));
    4543}
    4644
    47 MediaEndpointConfiguration::MediaEndpointConfiguration(Vector<RefPtr<IceServerInfo>>& iceServers, IceTransportPolicy iceTransportPolicy, BundlePolicy bundlePolicy)
    48     : m_iceServers(iceServers)
    49     , m_iceTransportPolicy(iceTransportPolicy)
    50     , m_bundlePolicy(bundlePolicy)
     45MediaEndpointConfiguration::IceServerInfo::IceServerInfo(Vector<URL>&& urls, const String& credential, const String& username)
     46    : urls(WTFMove(urls))
     47    , credential(credential)
     48    , username(username)
    5149{
    5250}
  • trunk/Source/WebCore/platform/mediastream/MediaEndpointConfiguration.h

    r202671 r207818  
    2929 */
    3030
    31 #ifndef MediaEndpointConfiguration_h
    32 #define MediaEndpointConfiguration_h
     31#pragma once
    3332
    3433#if ENABLE(WEB_RTC)
     
    3635#include "PeerConnectionStates.h"
    3736#include "URL.h"
    38 #include <wtf/RefCounted.h>
    39 #include <wtf/RefPtr.h>
    4037#include <wtf/Vector.h>
    4138#include <wtf/text/WTFString.h>
     
    4340namespace WebCore {
    4441
    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() { }
     42struct 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;
    5248
    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    };
    5651
    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:
    6752    using IceTransportPolicy = PeerConnectionStates::IceTransportPolicy;
    6853    using BundlePolicy = PeerConnectionStates::BundlePolicy;
    6954
    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);
    7456
    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;
    8560};
    8661
     
    8863
    8964#endif // ENABLE(WEB_RTC)
    90 
    91 #endif // MediaEndpointConfiguration_h
  • trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp

    r207665 r207818  
    9090}
    9191
    92 void MediaEndpointOwr::setConfiguration(RefPtr<MediaEndpointConfiguration>&& configuration)
    93 {
    94     m_configuration = configuration;
     92void MediaEndpointOwr::setConfiguration(MediaEndpointConfiguration&& configuration)
     93{
     94    m_configuration = WTFMove(configuration);
    9595}
    9696
     
    553553        m_transportAgent = owr_transport_agent_new(false);
    554554
    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) {
    557558                HelperServerUrl url;
    558559                // WebKit's URL class can't handle ICE helper server urls properly
     
    571572                    owr_transport_agent_add_helper_server(m_transportAgent, serverType,
    572573                        url.host.ascii().data(), port,
    573                         server->username().ascii().data(), server->credential().ascii().data());
     574                        server.username.ascii().data(), server.credential.ascii().data());
    574575                } else
    575576                    ASSERT_NOT_REACHED();
  • trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h

    r207665 r207818  
    8383    ~MediaEndpointOwr();
    8484
    85     void setConfiguration(RefPtr<MediaEndpointConfiguration>&&) override;
     85    void setConfiguration(MediaEndpointConfiguration&&) override;
    8686
    8787    void generateDtlsInfo() override;
     
    126126    void internalAddRemoteCandidate(OwrSession*, IceCandidate&, const String& ufrag, const String& password);
    127127
    128     RefPtr<MediaEndpointConfiguration> m_configuration;
     128    Optional<MediaEndpointConfiguration> m_configuration;
    129129    GRegex* m_helperServerRegEx;
    130130
  • trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp

    r207052 r207818  
    6464}
    6565
    66 void MockMediaEndpoint::setConfiguration(RefPtr<MediaEndpointConfiguration>&& configuration)
    67 {
    68     UNUSED_PARAM(configuration);
    69 }
    70 
    7166void MockMediaEndpoint::generateDtlsInfo()
    7267{
  • trunk/Source/WebCore/platform/mock/MockMediaEndpoint.h

    r207052 r207818  
    3939namespace WebCore {
    4040
    41 class MockMediaEndpoint : public MediaEndpoint {
     41class MockMediaEndpoint final : public MediaEndpoint {
    4242public:
    4343    WEBCORE_EXPORT static std::unique_ptr<MediaEndpoint> create(MediaEndpointClient&);
     
    4646    ~MockMediaEndpoint();
    4747
    48     void setConfiguration(RefPtr<MediaEndpointConfiguration>&&) override;
     48    void setConfiguration(MediaEndpointConfiguration&&) final { };
    4949
    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;
    5454
    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;
    5757
    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;
    5959
    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;
    6363
    64     void stop() override;
     64    void stop() final;
    6565
    66     void emulatePlatformEvent(const String& action) override;
     66    void emulatePlatformEvent(const String& action) final;
    6767
    6868private:
Note: See TracChangeset for help on using the changeset viewer.