Changeset 207897 in webkit


Ignore:
Timestamp:
Oct 26, 2016 7:49:48 AM (8 years ago)
Author:
commit-queue@webkit.org
Message:

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

Patch by Youenn Fablet <youennf@gmail.com> on 2016-10-26
Reviewed by Eric Carlson.

No change of behavior.

Simplifying IceCandidate class into a simple structure, no longer refcounted.
Updated call sites accordingly.
Updated SDP parsing of candidates to return a Variant instead of having both a return and an out parameter.

  • Modules/mediastream/MediaEndpointPeerConnection.cpp:

(WebCore::MediaEndpointPeerConnection::addIceCandidateTask):
(WebCore::MediaEndpointPeerConnection::gotIceCandidate):

  • Modules/mediastream/MediaEndpointPeerConnection.h:
  • Modules/mediastream/SDPProcessor.cpp:

(WebCore::createCandidateObject):
(WebCore::createCandidate):
(WebCore::iceCandidateFromJSON):
(WebCore::configurationToJSON):
(WebCore::SDPProcessor::parseCandidateLine):

  • Modules/mediastream/SDPProcessor.h:

(WebCore::SDPProcessor::ParsingResult::parsingStatus):
(WebCore::SDPProcessor::ParsingResult::candidate):

  • platform/mediastream/IceCandidate.h:
  • platform/mediastream/MediaEndpoint.cpp:
  • platform/mediastream/MediaEndpoint.h:
  • platform/mediastream/PeerMediaDescription.h:

(WebCore::PeerMediaDescription::iceCandidates):
(WebCore::PeerMediaDescription::addIceCandidate):
(WebCore::PeerMediaDescription::clone):

  • platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:

(WebCore::MediaEndpointOwr::updateSendConfiguration):
(WebCore::MediaEndpointOwr::addRemoteCandidate):
(WebCore::MediaEndpointOwr::dispatchNewIceCandidate):
(WebCore::MediaEndpointOwr::internalAddRemoteCandidate):

  • platform/mediastream/openwebrtc/MediaEndpointOwr.h:
  • platform/mock/MockMediaEndpoint.cpp:

(WebCore::MockMediaEndpoint::addRemoteCandidate):
(WebCore::MockMediaEndpoint::dispatchFakeIceCandidates):

  • platform/mock/MockMediaEndpoint.h:
Location:
trunk/Source/WebCore
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r207896 r207897  
     12016-10-26  Youenn Fablet  <youennf@gmail.com>
     2
     3        IceCandidate does not need to be refcounted
     4        https://bugs.webkit.org/show_bug.cgi?id=163944
     5
     6        Reviewed by Eric Carlson.
     7
     8        No change of behavior.
     9
     10        Simplifying IceCandidate class into a simple structure, no longer refcounted.
     11        Updated call sites accordingly.
     12        Updated SDP parsing of candidates to return a Variant instead of having both a return and an out parameter.
     13
     14        * Modules/mediastream/MediaEndpointPeerConnection.cpp:
     15        (WebCore::MediaEndpointPeerConnection::addIceCandidateTask):
     16        (WebCore::MediaEndpointPeerConnection::gotIceCandidate):
     17        * Modules/mediastream/MediaEndpointPeerConnection.h:
     18        * Modules/mediastream/SDPProcessor.cpp:
     19        (WebCore::createCandidateObject):
     20        (WebCore::createCandidate):
     21        (WebCore::iceCandidateFromJSON):
     22        (WebCore::configurationToJSON):
     23        (WebCore::SDPProcessor::parseCandidateLine):
     24        * Modules/mediastream/SDPProcessor.h:
     25        (WebCore::SDPProcessor::ParsingResult::parsingStatus):
     26        (WebCore::SDPProcessor::ParsingResult::candidate):
     27        * platform/mediastream/IceCandidate.h:
     28        * platform/mediastream/MediaEndpoint.cpp:
     29        * platform/mediastream/MediaEndpoint.h:
     30        * platform/mediastream/PeerMediaDescription.h:
     31        (WebCore::PeerMediaDescription::iceCandidates):
     32        (WebCore::PeerMediaDescription::addIceCandidate):
     33        (WebCore::PeerMediaDescription::clone):
     34        * platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:
     35        (WebCore::MediaEndpointOwr::updateSendConfiguration):
     36        (WebCore::MediaEndpointOwr::addRemoteCandidate):
     37        (WebCore::MediaEndpointOwr::dispatchNewIceCandidate):
     38        (WebCore::MediaEndpointOwr::internalAddRemoteCandidate):
     39        * platform/mediastream/openwebrtc/MediaEndpointOwr.h:
     40        * platform/mock/MockMediaEndpoint.cpp:
     41        (WebCore::MockMediaEndpoint::addRemoteCandidate):
     42        (WebCore::MockMediaEndpoint::dispatchFakeIceCandidates):
     43        * platform/mock/MockMediaEndpoint.h:
     44
    1452016-10-26  Andreas Kling  <akling@apple.com>
    246
  • trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp

    r207818 r207897  
    677677    }
    678678
    679     RefPtr<IceCandidate> candidate;
    680     SDPProcessor::Result result = m_sdpProcessor->parseCandidateLine(rtcCandidate.candidate(), candidate);
    681     if (result != SDPProcessor::Result::Success) {
    682         if (result == SDPProcessor::Result::ParseError)
     679    auto result = m_sdpProcessor->parseCandidateLine(rtcCandidate.candidate());
     680    if (result.parsingStatus() != SDPProcessor::Result::Success) {
     681        if (result.parsingStatus() == SDPProcessor::Result::ParseError)
    683682            promise.reject(OperationError, "Invalid candidate content");
    684683        else
     
    687686    }
    688687
    689     targetMediaDescription->addIceCandidate(candidate.copyRef());
    690 
    691     m_mediaEndpoint->addRemoteCandidate(*candidate, targetMediaDescription->mid(), targetMediaDescription->iceUfrag(),
    692         targetMediaDescription->icePassword());
     688    m_mediaEndpoint->addRemoteCandidate(result.candidate(), targetMediaDescription->mid(), targetMediaDescription->iceUfrag(), targetMediaDescription->icePassword());
     689
     690    targetMediaDescription->addIceCandidate(WTFMove(result.candidate()));
    693691
    694692    promise.resolve(nullptr);
     
    836834}
    837835
    838 void MediaEndpointPeerConnection::gotIceCandidate(const String& mid, RefPtr<IceCandidate>&& candidate)
     836void MediaEndpointPeerConnection::gotIceCandidate(const String& mid, IceCandidate&& candidate)
    839837{
    840838    ASSERT(isMainThread());
     
    851849    ASSERT(mediaDescriptionIndex != notFound);
    852850
    853     PeerMediaDescription& mediaDescription = *mediaDescriptions[mediaDescriptionIndex];
    854     mediaDescription.addIceCandidate(candidate.copyRef());
    855 
    856851    String candidateLine;
    857     SDPProcessor::Result result = m_sdpProcessor->generateCandidateLine(*candidate, candidateLine);
     852    auto result = m_sdpProcessor->generateCandidateLine(candidate, candidateLine);
    858853    if (result != SDPProcessor::Result::Success) {
    859854        LOG_ERROR("SDPProcessor internal error");
     
    861856    }
    862857
    863     RefPtr<RTCIceCandidate> iceCandidate = RTCIceCandidate::create(candidateLine, mid, mediaDescriptionIndex);
    864 
    865     m_client->fireEvent(RTCIceCandidateEvent::create(false, false, WTFMove(iceCandidate)));
     858    auto& mediaDescription = mediaDescriptions[mediaDescriptionIndex];
     859    ASSERT(mediaDescription);
     860    mediaDescription->addIceCandidate(WTFMove(candidate));
     861
     862    m_client->fireEvent(RTCIceCandidateEvent::create(false, false, RTCIceCandidate::create(candidateLine, mid, mediaDescriptionIndex)));
    866863}
    867864
  • trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h

    r207762 r207897  
    109109    // MediaEndpointClient
    110110    void gotDtlsFingerprint(const String& fingerprint, const String& fingerprintFunction) override;
    111     void gotIceCandidate(const String& mid, RefPtr<IceCandidate>&&) override;
     111    void gotIceCandidate(const String& mid, IceCandidate&&) override;
    112112    void doneGatheringCandidates(const String& mid) override;
    113113    void iceTransportStateChanged(const String& mid, MediaEndpoint::IceTransportState) override;
  • trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp

    r205569 r207897  
    112112    RefPtr<InspectorObject> candidateObject = InspectorObject::create();
    113113
    114     candidateObject->setString(typeString(), candidate.type());
    115     candidateObject->setString(foundationString(), candidate.foundation());
    116     candidateObject->setInteger(componentIdString(), candidate.componentId());
    117     candidateObject->setString(transportString(), candidate.transport());
    118     candidateObject->setInteger(priorityString(), candidate.priority());
    119     candidateObject->setString(addressString(), candidate.address());
    120     candidateObject->setInteger(portString(), candidate.port());
    121     if (!candidate.tcpType().isEmpty())
    122         candidateObject->setString(tcpTypeString(), candidate.tcpType());
    123     if (candidate.type().convertToASCIIUppercase() != "HOST") {
    124         candidateObject->setString(relatedAddressString(), candidate.relatedAddress());
    125         candidateObject->setInteger(relatedPortString(), candidate.relatedPort());
     114    candidateObject->setString(typeString(), candidate.type);
     115    candidateObject->setString(foundationString(), candidate.foundation);
     116    candidateObject->setInteger(componentIdString(), candidate.componentId);
     117    candidateObject->setString(transportString(), candidate.transport);
     118    candidateObject->setInteger(priorityString(), candidate.priority);
     119    candidateObject->setString(addressString(), candidate.address);
     120    candidateObject->setInteger(portString(), candidate.port);
     121    if (!candidate.tcpType.isEmpty())
     122        candidateObject->setString(tcpTypeString(), candidate.tcpType);
     123    if (candidate.type.convertToASCIIUppercase() != "HOST") {
     124        candidateObject->setString(relatedAddressString(), candidate.relatedAddress);
     125        candidateObject->setInteger(relatedPortString(), candidate.relatedPort);
    126126    }
    127127
     
    129129}
    130130
    131 static RefPtr<IceCandidate> createCandidate(const InspectorObject& candidateObject)
    132 {
    133     RefPtr<IceCandidate> candidate = IceCandidate::create();
     131static IceCandidate createCandidate(const InspectorObject& candidateObject)
     132{
     133    IceCandidate candidate;
    134134    String stringValue;
    135135    unsigned intValue;
    136136
    137137    if (candidateObject.getString(typeString(), stringValue))
    138         candidate->setType(stringValue);
     138        candidate.type = stringValue;
    139139
    140140    if (candidateObject.getString(foundationString(), stringValue))
    141         candidate->setFoundation(stringValue);
     141        candidate.foundation = stringValue;
    142142
    143143    if (candidateObject.getInteger(componentIdString(), intValue))
    144         candidate->setComponentId(intValue);
     144        candidate.componentId = intValue;
    145145
    146146    if (candidateObject.getString(transportString(), stringValue))
    147         candidate->setTransport(stringValue);
     147        candidate.transport = stringValue;
    148148
    149149    if (candidateObject.getInteger(priorityString(), intValue))
    150         candidate->setPriority(intValue);
     150        candidate.priority = intValue;
    151151
    152152    if (candidateObject.getString(addressString(), stringValue))
    153         candidate->setAddress(stringValue);
     153        candidate.address = stringValue;
    154154
    155155    if (candidateObject.getInteger(portString(), intValue))
    156         candidate->setPort(intValue);
     156        candidate.port = intValue;
    157157
    158158    if (candidateObject.getString(tcpTypeString(), stringValue))
    159         candidate->setTcpType(stringValue);
     159        candidate.tcpType = stringValue;
    160160
    161161    if (candidateObject.getString(relatedAddressString(), stringValue))
    162         candidate->setRelatedAddress(stringValue);
     162        candidate.relatedAddress = stringValue;
    163163
    164164    if (candidateObject.getInteger(relatedPortString(), intValue))
    165         candidate->setRelatedPort(intValue);
     165        candidate.relatedPort = intValue;
    166166
    167167    return candidate;
     
    328328}
    329329
    330 static RefPtr<IceCandidate> iceCandidateFromJSON(const String& json)
     330static Optional<IceCandidate> iceCandidateFromJSON(const String& json)
    331331{
    332332    RefPtr<InspectorValue> value;
    333333    if (!InspectorValue::parseJSON(json, value))
    334         return nullptr;
     334        return Nullopt;
    335335
    336336    RefPtr<InspectorObject> candidateObject;
    337337    if (!value->asObject(candidateObject))
    338         return nullptr;
     338        return Nullopt;
    339339
    340340    return createCandidate(*candidateObject);
     
    416416        RefPtr<InspectorArray> candidatesArray = InspectorArray::create();
    417417
    418         for (RefPtr<IceCandidate> candidate : mediaDescription->iceCandidates())
    419             candidatesArray->pushObject(createCandidateObject(*candidate));
     418        for (auto& candidate : mediaDescription->iceCandidates())
     419            candidatesArray->pushObject(createCandidateObject(candidate));
    420420
    421421        iceObject->setArray(candidatesString(), candidatesArray);
     
    471471}
    472472
    473 SDPProcessor::Result SDPProcessor::parseCandidateLine(const String& candidateLine, RefPtr<IceCandidate>& outCandidate) const
     473SDPProcessor::ParsingResult SDPProcessor::parseCandidateLine(const String& candidateLine) const
    474474{
    475475    String scriptOutput;
    476476    if (!callScript("parseCandidateLine", candidateLine, scriptOutput))
    477         return Result::InternalError;
     477        return { Result::InternalError };
    478478
    479479    if (scriptOutput == "ParseError")
    480         return Result::ParseError;
    481 
    482     RefPtr<IceCandidate> candidate = iceCandidateFromJSON(scriptOutput);
     480        return { Result::ParseError };
     481
     482    auto candidate = iceCandidateFromJSON(scriptOutput);
    483483    if (!candidate)
    484         return Result::InternalError;
    485 
    486     outCandidate = candidate;
    487     return Result::Success;
     484        return { Result::InternalError };
     485    return { WTFMove(candidate.value()) };
    488486}
    489487
  • trunk/Source/WebCore/Modules/mediastream/SDPProcessor.h

    r199007 r207897  
    3838#include "MediaEndpointSessionConfiguration.h"
    3939#include <wtf/RefPtr.h>
     40#include <wtf/Variant.h>
    4041#include <wtf/text/WTFString.h>
    4142
     
    5960
    6061    Result generateCandidateLine(const IceCandidate&, String& outCandidateLine) const;
    61     Result parseCandidateLine(const String& candidateLine, RefPtr<IceCandidate>&) const;
     62
     63    struct ParsingResult {
     64        Variant<IceCandidate, Result> result;
     65
     66        Result parsingStatus() const { return WTF::holds_alternative<IceCandidate>(result) ? Result::Success : WTF::get<SDPProcessor::Result>(result); }
     67        IceCandidate& candidate() { return WTF::get<IceCandidate>(result); }
     68    };
     69    ParsingResult parseCandidateLine(const String& candidateLine) const;
    6270
    6371private:
  • trunk/Source/WebCore/platform/mediastream/IceCandidate.h

    r198492 r207897  
    2929 */
    3030
    31 #ifndef IceCandidate_h
    32 #define IceCandidate_h
     31#pragma once
    3332
    3433#if ENABLE(WEB_RTC)
    3534
    36 #include <wtf/RefCounted.h>
    37 #include <wtf/RefPtr.h>
    3835#include <wtf/text/WTFString.h>
    3936
    4037namespace WebCore {
    4138
    42 class IceCandidate : public RefCounted<IceCandidate> {
    43 public:
    44     static RefPtr<IceCandidate> create()
    45     {
    46         return adoptRef(new IceCandidate());
    47     }
    48     virtual ~IceCandidate() { }
     39struct IceCandidate {
     40    String type;
     41    String foundation;
     42    unsigned componentId { 0 };
     43    String transport;
     44    unsigned long priority { 0 };
     45    String address;
     46    unsigned port { 0 };
     47    String tcpType;
     48    String relatedAddress;
     49    unsigned relatedPort { 0 };
    4950
    50     const String& type() const { return m_type; }
    51     void setType(const String& type) { m_type = type; }
    52 
    53     const String& foundation() const { return m_foundation; }
    54     void setFoundation(const String& foundation) { m_foundation = foundation; }
    55 
    56     unsigned componentId() const { return m_componentId; }
    57     void setComponentId(unsigned componentId) { m_componentId = componentId; }
    58 
    59     const String& transport() const { return m_transport; }
    60     void setTransport(const String& transport) { m_transport = transport; }
    61 
    62     int priority() const { return m_priority; }
    63     void setPriority(int priority) { m_priority = priority; }
    64 
    65     const String& address() const { return m_address; }
    66     void setAddress(const String& address) { m_address = address; }
    67 
    68     unsigned port() const { return m_port; }
    69     void setPort(unsigned port) { m_port = port; }
    70 
    71     const String& tcpType() const { return m_tcpType; }
    72     void setTcpType(const String& tcpType) { m_tcpType = tcpType; }
    73 
    74     const String& relatedAddress() const { return m_relatedAddress; }
    75     void setRelatedAddress(const String& relatedAddress) { m_relatedAddress = relatedAddress; }
    76 
    77     unsigned relatedPort() const { return m_relatedPort; }
    78     void setRelatedPort(unsigned relatedPort) { m_relatedPort = relatedPort; }
    79 
    80     RefPtr<IceCandidate> clone() const
    81     {
    82         RefPtr<IceCandidate> copy = create();
    83 
    84         copy->m_type = String(m_type);
    85         copy->m_foundation = String(m_foundation);
    86         copy->m_componentId = m_componentId;
    87         copy->m_transport = String(m_transport);
    88         copy->m_priority = m_priority;
    89         copy->m_address = String(m_address);
    90         copy->m_port = m_port;
    91         copy->m_tcpType = String(m_tcpType);
    92         copy->m_relatedAddress = String(m_relatedAddress);
    93         copy->m_relatedPort = m_relatedPort;
    94 
    95         return copy;
    96     }
    97 
    98 private:
    99     IceCandidate() { }
    100 
    101     String m_type;
    102     String m_foundation;
    103     unsigned m_componentId { 0 };
    104     String m_transport;
    105     int m_priority { 0 };
    106     String m_address;
    107     unsigned m_port { 0 };
    108     String m_tcpType;
    109     String m_relatedAddress;
    110     unsigned m_relatedPort { 0 };
     51    IceCandidate() = default;
     52    IceCandidate(String&& type, String&& foundation, unsigned componentId, String&& transport, unsigned long priority, String&& address, unsigned port, String&& tcpType, String&& relatedAddress, unsigned relatedPort)
     53        : type(WTFMove(type))
     54        , foundation(WTFMove(foundation))
     55        , componentId(componentId)
     56        , transport(WTFMove(transport))
     57        , priority(priority)
     58        , address(WTFMove(address))
     59        , port(port)
     60        , tcpType(WTFMove(tcpType))
     61        , relatedAddress(WTFMove(relatedAddress))
     62        , relatedPort(relatedPort)
     63    { }
    11164};
    11265
     
    11467
    11568#endif // ENABLE(WEB_RTC)
    116 
    117 #endif // IceCandidate_h
  • trunk/Source/WebCore/platform/mediastream/MediaEndpoint.cpp

    r207818 r207897  
    6868    UpdateResult updateSendConfiguration(MediaEndpointSessionConfiguration*, const RealtimeMediaSourceMap&, bool) override { return UpdateResult::Failed; }
    6969
    70     void addRemoteCandidate(IceCandidate&, const String&, const String&, const String&) override { }
     70    void addRemoteCandidate(const IceCandidate&, const String&, const String&, const String&) override { }
    7171
    7272    Ref<RealtimeMediaSource> createMutedRemoteSource(const String&, RealtimeMediaSource::Type) override { return EmptyRealtimeMediaSource::create(); }
  • trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h

    r207818 r207897  
    4040namespace WebCore {
    4141
    42 class IceCandidate;
     42struct IceCandidate;
    4343class MediaEndpoint;
    4444class MediaEndpointClient;
     
    7474    virtual UpdateResult updateSendConfiguration(MediaEndpointSessionConfiguration*, const RealtimeMediaSourceMap&, bool isInitiator) = 0;
    7575
    76     virtual void addRemoteCandidate(IceCandidate&, const String& mid, const String& ufrag, const String& password) = 0;
     76    virtual void addRemoteCandidate(const IceCandidate&, const String& mid, const String& ufrag, const String& password) = 0;
    7777
    7878    virtual Ref<RealtimeMediaSource> createMutedRemoteSource(const String& mid, RealtimeMediaSource::Type) = 0;
     
    8888public:
    8989    virtual void gotDtlsFingerprint(const String& fingerprint, const String& fingerprintFunction) = 0;
    90     virtual void gotIceCandidate(const String& mid, RefPtr<IceCandidate>&&) = 0;
     90    virtual void gotIceCandidate(const String& mid, IceCandidate&&) = 0;
    9191    virtual void doneGatheringCandidates(const String& mid) = 0;
    9292    virtual void iceTransportStateChanged(const String& mid, MediaEndpoint::IceTransportState) = 0;
  • trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h

    r206908 r207897  
    107107    void setIcePassword(const String& icePassword) { m_icePassword = icePassword; }
    108108
    109     const Vector<RefPtr<IceCandidate>>& iceCandidates() const { return m_iceCandidates; }
    110     void addIceCandidate(RefPtr<IceCandidate>&& candidate) { m_iceCandidates.append(WTFMove(candidate)); }
     109    const Vector<IceCandidate>& iceCandidates() const { return m_iceCandidates; }
     110    void addIceCandidate(IceCandidate&& candidate) { m_iceCandidates.append(WTFMove(candidate)); }
    111111
    112112    RefPtr<PeerMediaDescription> clone() const
     
    142142        copy->m_icePassword = String(m_icePassword);
    143143
    144         for (auto& candidate : m_iceCandidates)
    145             copy->m_iceCandidates.append(candidate->clone());
     144        copy->m_iceCandidates = m_iceCandidates;
    146145
    147146        return copy;
     
    175174    String m_iceUfrag;
    176175    String m_icePassword;
    177     Vector<RefPtr<IceCandidate>> m_iceCandidates;
     176    Vector<IceCandidate> m_iceCandidates;
    178177};
    179178
  • trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp

    r207818 r207897  
    268268        if (mdesc.iceCandidates().size()) {
    269269            for (auto& candidate : mdesc.iceCandidates())
    270                 internalAddRemoteCandidate(session, *candidate, mdesc.iceUfrag(), mdesc.icePassword());
     270                internalAddRemoteCandidate(session, candidate, mdesc.iceUfrag(), mdesc.icePassword());
    271271        }
    272272
     
    312312}
    313313
    314 void MediaEndpointOwr::addRemoteCandidate(IceCandidate& candidate, const String& mid, const String& ufrag, const String& password)
     314void MediaEndpointOwr::addRemoteCandidate(const IceCandidate& candidate, const String& mid, const String& ufrag, const String& password)
    315315{
    316316    for (auto& transceiver : m_transceivers) {
     
    395395}
    396396
    397 void MediaEndpointOwr::dispatchNewIceCandidate(const String& mid, RefPtr<IceCandidate>&& iceCandidate)
     397void MediaEndpointOwr::dispatchNewIceCandidate(const String& mid, IceCandidate&& iceCandidate)
    398398{
    399399    m_client.gotIceCandidate(mid, WTFMove(iceCandidate));
     
    591591}
    592592
    593 void MediaEndpointOwr::internalAddRemoteCandidate(OwrSession* session, IceCandidate& candidate, const String& ufrag, const String& password)
     593void MediaEndpointOwr::internalAddRemoteCandidate(OwrSession* session, const IceCandidate& candidate, const String& ufrag, const String& password)
    594594{
    595595    gboolean rtcpMux;
    596596    g_object_get(session, "rtcp-mux", &rtcpMux, nullptr);
    597597
    598     if (rtcpMux && candidate.componentId() == OWR_COMPONENT_TYPE_RTCP)
     598    if (rtcpMux && candidate.componentId == OWR_COMPONENT_TYPE_RTCP)
    599599        return;
    600600
    601     ASSERT(candidateTypes.find(candidate.type()) != notFound);
    602 
    603     OwrCandidateType candidateType = static_cast<OwrCandidateType>(candidateTypes.find(candidate.type()));
    604     OwrComponentType componentId = static_cast<OwrComponentType>(candidate.componentId());
     601    ASSERT(candidateTypes.find(candidate.type) != notFound);
     602
     603    OwrCandidateType candidateType = static_cast<OwrCandidateType>(candidateTypes.find(candidate.type));
     604    OwrComponentType componentId = static_cast<OwrComponentType>(candidate.componentId);
    605605    OwrTransportType transportType;
    606606
    607     if (candidate.transport().convertToASCIIUppercase() == "UDP")
     607    if (candidate.transport.convertToASCIIUppercase() == "UDP")
    608608        transportType = OWR_TRANSPORT_TYPE_UDP;
    609609    else {
    610         ASSERT(candidateTcpTypes.find(candidate.tcpType()) != notFound);
    611         transportType = static_cast<OwrTransportType>(candidateTcpTypes.find(candidate.tcpType()));
     610        ASSERT(candidateTcpTypes.find(candidate.tcpType) != notFound);
     611        transportType = static_cast<OwrTransportType>(candidateTcpTypes.find(candidate.tcpType));
    612612    }
    613613
    614614    OwrCandidate* owrCandidate = owr_candidate_new(candidateType, componentId);
    615615    g_object_set(owrCandidate, "transport-type", transportType,
    616         "address", candidate.address().ascii().data(),
    617         "port", candidate.port(),
    618         "base-address", candidate.relatedAddress().ascii().data(),
    619         "base-port", candidate.relatedPort(),
    620         "priority", candidate.priority(),
    621         "foundation", candidate.foundation().ascii().data(),
     616        "address", candidate.address.ascii().data(),
     617        "port", candidate.port,
     618        "base-address", candidate.relatedAddress.ascii().data(),
     619        "base-port", candidate.relatedPort,
     620        "priority", candidate.priority,
     621        "foundation", candidate.foundation.ascii().data(),
    622622        "ufrag", ufrag.ascii().data(),
    623623        "password", password.ascii().data(),
     
    653653    ASSERT(transportType >= 0 && transportType < candidateTcpTypes.size());
    654654
    655     RefPtr<IceCandidate> iceCandidate = IceCandidate::create();
    656     iceCandidate->setType(candidateTypes[candidateType]);
    657     iceCandidate->setFoundation(foundation);
    658     iceCandidate->setComponentId(componentId);
    659     iceCandidate->setPriority(priority);
    660     iceCandidate->setAddress(address);
    661     iceCandidate->setPort(port ? port : candidateDefaultPort);
     655    IceCandidate iceCandidate;
     656    iceCandidate.type = candidateTypes[candidateType];
     657    iceCandidate.foundation = foundation;
     658    iceCandidate.componentId = componentId;
     659    iceCandidate.priority = priority;
     660    iceCandidate.address = address;
     661    iceCandidate.port = port ? port : candidateDefaultPort;
    662662
    663663    if (transportType == OWR_TRANSPORT_TYPE_UDP)
    664         iceCandidate->setTransport("UDP");
     664        iceCandidate.transport = "UDP";
    665665    else {
    666         iceCandidate->setTransport("TCP");
    667         iceCandidate->setTcpType(candidateTcpTypes[transportType]);
     666        iceCandidate.transport = "TCP";
     667        iceCandidate.tcpType = candidateTcpTypes[transportType];
    668668    }
    669669
    670670    if (candidateType != OWR_CANDIDATE_TYPE_HOST) {
    671         iceCandidate->setRelatedAddress(relatedAddress);
    672         iceCandidate->setRelatedPort(relatedPort ? relatedPort : candidateDefaultPort);
     671        iceCandidate.relatedAddress = relatedAddress;
     672        iceCandidate.relatedPort = relatedPort ? relatedPort : candidateDefaultPort;
    673673    }
    674674
  • trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h

    r207818 r207897  
    9393    UpdateResult updateSendConfiguration(MediaEndpointSessionConfiguration*, const RealtimeMediaSourceMap&, bool isInitiator) override;
    9494
    95     void addRemoteCandidate(IceCandidate&, const String& mid, const String& ufrag, const String& password) override;
     95    void addRemoteCandidate(const IceCandidate&, const String& mid, const String& ufrag, const String& password) override;
    9696
    9797    Ref<RealtimeMediaSource> createMutedRemoteSource(const String& mid, RealtimeMediaSource::Type) override;
     
    105105    OwrTransceiver* matchTransceiverByMid(const String& mid) const;
    106106
    107     void dispatchNewIceCandidate(const String& mid, RefPtr<IceCandidate>&&);
     107    void dispatchNewIceCandidate(const String& mid, IceCandidate&&);
    108108    void dispatchGatheringDone(const String& mid);
    109109    void processIceTransportStateChange(OwrSession*);
     
    124124
    125125    void ensureTransportAgentAndTransceivers(bool isInitiator, const Vector<TransceiverConfig>&);
    126     void internalAddRemoteCandidate(OwrSession*, IceCandidate&, const String& ufrag, const String& password);
     126    void internalAddRemoteCandidate(OwrSession*, const IceCandidate&, const String& ufrag, const String& password);
    127127
    128128    Optional<MediaEndpointConfiguration> m_configuration;
  • trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp

    r207818 r207897  
    174174}
    175175
    176 void MockMediaEndpoint::addRemoteCandidate(IceCandidate& candidate, const String& mid, const String& ufrag, const String& password)
     176void MockMediaEndpoint::addRemoteCandidate(const IceCandidate& candidate, const String& mid, const String& ufrag, const String& password)
    177177{
    178178    UNUSED_PARAM(candidate);
     
    233233void MockMediaEndpoint::dispatchFakeIceCandidates()
    234234{
    235     RefPtr<IceCandidate> iceCandidate = IceCandidate::create();
    236     iceCandidate->setType("host");
    237     iceCandidate->setFoundation("1");
    238     iceCandidate->setComponentId(1);
    239     iceCandidate->setPriority(2013266431);
    240     iceCandidate->setAddress("192.168.0.100");
    241     iceCandidate->setPort(38838);
    242     iceCandidate->setTransport("UDP");
    243     m_fakeIceCandidates.append(WTFMove(iceCandidate));
    244 
    245     iceCandidate = IceCandidate::create();
    246     iceCandidate->setType("host");
    247     iceCandidate->setFoundation("2");
    248     iceCandidate->setComponentId(1);
    249     iceCandidate->setPriority(1019216383);
    250     iceCandidate->setAddress("192.168.0.100");
    251     iceCandidate->setPort(9);
    252     iceCandidate->setTransport("TCP");
    253     iceCandidate->setTcpType("active");
    254     m_fakeIceCandidates.append(WTFMove(iceCandidate));
    255 
    256     iceCandidate = IceCandidate::create();
    257     iceCandidate->setType("srflx");
    258     iceCandidate->setFoundation("3");
    259     iceCandidate->setComponentId(1);
    260     iceCandidate->setPriority(1677722111);
    261     iceCandidate->setAddress("172.18.0.1");
    262     iceCandidate->setPort(47989);
    263     iceCandidate->setTransport("UDP");
    264     iceCandidate->setRelatedAddress("192.168.0.100");
    265     iceCandidate->setRelatedPort(47989);
    266     m_fakeIceCandidates.append(WTFMove(iceCandidate));
     235    m_fakeIceCandidates.append({ "host", "1", 1, "UDP", 2013266431, "192.168.0.100", 38838, { }, { }, 0 });
     236    m_fakeIceCandidates.append({ "host", "2", 1, "TCP", 1019216383, "192.168.0.100", 9, "active", { }, 0 });
     237    m_fakeIceCandidates.append({ "srflx", "3", 1, "UDP", 1677722111, "172.18.0.1", 47989, { }, "192.168.0.100", 47989 });
    267238
    268239    // Reverse order to use takeLast() while keeping the above order
  • trunk/Source/WebCore/platform/mock/MockMediaEndpoint.h

    r207818 r207897  
    5656    UpdateResult updateSendConfiguration(MediaEndpointSessionConfiguration*, const RealtimeMediaSourceMap&, bool isInitiator) final;
    5757
    58     void addRemoteCandidate(IceCandidate&, const String& mid, const String& ufrag, const String& password) final;
     58    void addRemoteCandidate(const IceCandidate&, const String& mid, const String& ufrag, const String& password) final;
    5959
    6060    Ref<RealtimeMediaSource> createMutedRemoteSource(const String& mid, RealtimeMediaSource::Type) final;
     
    8282    HashMap<String, RefPtr<RealtimeMediaSource>> m_mutedRemoteSources;
    8383
    84     Vector<RefPtr<IceCandidate>> m_fakeIceCandidates;
     84    Vector<IceCandidate> m_fakeIceCandidates;
    8585    Timer m_iceCandidateTimer;
    8686
Note: See TracChangeset for help on using the changeset viewer.