Title: [207897] trunk/Source/WebCore
Revision
207897
Author
[email protected]
Date
2016-10-26 07:49:48 -0700 (Wed, 26 Oct 2016)

Log Message

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

Patch by Youenn Fablet <[email protected]> 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:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (207896 => 207897)


--- trunk/Source/WebCore/ChangeLog	2016-10-26 13:24:12 UTC (rev 207896)
+++ trunk/Source/WebCore/ChangeLog	2016-10-26 14:49:48 UTC (rev 207897)
@@ -1,3 +1,47 @@
+2016-10-26  Youenn Fablet  <[email protected]>
+
+        IceCandidate does not need to be refcounted
+        https://bugs.webkit.org/show_bug.cgi?id=163944
+
+        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:
+
 2016-10-26  Andreas Kling  <[email protected]>
 
         Fix mach port leak in ResourceUsageThread.

Modified: trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp (207896 => 207897)


--- trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp	2016-10-26 13:24:12 UTC (rev 207896)
+++ trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp	2016-10-26 14:49:48 UTC (rev 207897)
@@ -676,10 +676,9 @@
         return;
     }
 
-    RefPtr<IceCandidate> candidate;
-    SDPProcessor::Result result = m_sdpProcessor->parseCandidateLine(rtcCandidate.candidate(), candidate);
-    if (result != SDPProcessor::Result::Success) {
-        if (result == SDPProcessor::Result::ParseError)
+    auto result = m_sdpProcessor->parseCandidateLine(rtcCandidate.candidate());
+    if (result.parsingStatus() != SDPProcessor::Result::Success) {
+        if (result.parsingStatus() == SDPProcessor::Result::ParseError)
             promise.reject(OperationError, "Invalid candidate content");
         else
             LOG_ERROR("SDPProcessor internal error");
@@ -686,10 +685,9 @@
         return;
     }
 
-    targetMediaDescription->addIceCandidate(candidate.copyRef());
+    m_mediaEndpoint->addRemoteCandidate(result.candidate(), targetMediaDescription->mid(), targetMediaDescription->iceUfrag(), targetMediaDescription->icePassword());
 
-    m_mediaEndpoint->addRemoteCandidate(*candidate, targetMediaDescription->mid(), targetMediaDescription->iceUfrag(),
-        targetMediaDescription->icePassword());
+    targetMediaDescription->addIceCandidate(WTFMove(result.candidate()));
 
     promise.resolve(nullptr);
 }
@@ -835,7 +833,7 @@
     startRunningTasks();
 }
 
-void MediaEndpointPeerConnection::gotIceCandidate(const String& mid, RefPtr<IceCandidate>&& candidate)
+void MediaEndpointPeerConnection::gotIceCandidate(const String& mid, IceCandidate&& candidate)
 {
     ASSERT(isMainThread());
 
@@ -850,19 +848,18 @@
     }
     ASSERT(mediaDescriptionIndex != notFound);
 
-    PeerMediaDescription& mediaDescription = *mediaDescriptions[mediaDescriptionIndex];
-    mediaDescription.addIceCandidate(candidate.copyRef());
-
     String candidateLine;
-    SDPProcessor::Result result = m_sdpProcessor->generateCandidateLine(*candidate, candidateLine);
+    auto result = m_sdpProcessor->generateCandidateLine(candidate, candidateLine);
     if (result != SDPProcessor::Result::Success) {
         LOG_ERROR("SDPProcessor internal error");
         return;
     }
 
-    RefPtr<RTCIceCandidate> iceCandidate = RTCIceCandidate::create(candidateLine, mid, mediaDescriptionIndex);
+    auto& mediaDescription = mediaDescriptions[mediaDescriptionIndex];
+    ASSERT(mediaDescription);
+    mediaDescription->addIceCandidate(WTFMove(candidate));
 
-    m_client->fireEvent(RTCIceCandidateEvent::create(false, false, WTFMove(iceCandidate)));
+    m_client->fireEvent(RTCIceCandidateEvent::create(false, false, RTCIceCandidate::create(candidateLine, mid, mediaDescriptionIndex)));
 }
 
 void MediaEndpointPeerConnection::doneGatheringCandidates(const String& mid)

Modified: trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h (207896 => 207897)


--- trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h	2016-10-26 13:24:12 UTC (rev 207896)
+++ trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h	2016-10-26 14:49:48 UTC (rev 207897)
@@ -108,7 +108,7 @@
 
     // MediaEndpointClient
     void gotDtlsFingerprint(const String& fingerprint, const String& fingerprintFunction) override;
-    void gotIceCandidate(const String& mid, RefPtr<IceCandidate>&&) override;
+    void gotIceCandidate(const String& mid, IceCandidate&&) override;
     void doneGatheringCandidates(const String& mid) override;
     void iceTransportStateChanged(const String& mid, MediaEndpoint::IceTransportState) override;
 

Modified: trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp (207896 => 207897)


--- trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp	2016-10-26 13:24:12 UTC (rev 207896)
+++ trunk/Source/WebCore/Modules/mediastream/SDPProcessor.cpp	2016-10-26 14:49:48 UTC (rev 207897)
@@ -111,58 +111,58 @@
 {
     RefPtr<InspectorObject> candidateObject = InspectorObject::create();
 
-    candidateObject->setString(typeString(), candidate.type());
-    candidateObject->setString(foundationString(), candidate.foundation());
-    candidateObject->setInteger(componentIdString(), candidate.componentId());
-    candidateObject->setString(transportString(), candidate.transport());
-    candidateObject->setInteger(priorityString(), candidate.priority());
-    candidateObject->setString(addressString(), candidate.address());
-    candidateObject->setInteger(portString(), candidate.port());
-    if (!candidate.tcpType().isEmpty())
-        candidateObject->setString(tcpTypeString(), candidate.tcpType());
-    if (candidate.type().convertToASCIIUppercase() != "HOST") {
-        candidateObject->setString(relatedAddressString(), candidate.relatedAddress());
-        candidateObject->setInteger(relatedPortString(), candidate.relatedPort());
+    candidateObject->setString(typeString(), candidate.type);
+    candidateObject->setString(foundationString(), candidate.foundation);
+    candidateObject->setInteger(componentIdString(), candidate.componentId);
+    candidateObject->setString(transportString(), candidate.transport);
+    candidateObject->setInteger(priorityString(), candidate.priority);
+    candidateObject->setString(addressString(), candidate.address);
+    candidateObject->setInteger(portString(), candidate.port);
+    if (!candidate.tcpType.isEmpty())
+        candidateObject->setString(tcpTypeString(), candidate.tcpType);
+    if (candidate.type.convertToASCIIUppercase() != "HOST") {
+        candidateObject->setString(relatedAddressString(), candidate.relatedAddress);
+        candidateObject->setInteger(relatedPortString(), candidate.relatedPort);
     }
 
     return candidateObject;
 }
 
-static RefPtr<IceCandidate> createCandidate(const InspectorObject& candidateObject)
+static IceCandidate createCandidate(const InspectorObject& candidateObject)
 {
-    RefPtr<IceCandidate> candidate = IceCandidate::create();
+    IceCandidate candidate;
     String stringValue;
     unsigned intValue;
 
     if (candidateObject.getString(typeString(), stringValue))
-        candidate->setType(stringValue);
+        candidate.type = stringValue;
 
     if (candidateObject.getString(foundationString(), stringValue))
-        candidate->setFoundation(stringValue);
+        candidate.foundation = stringValue;
 
     if (candidateObject.getInteger(componentIdString(), intValue))
-        candidate->setComponentId(intValue);
+        candidate.componentId = intValue;
 
     if (candidateObject.getString(transportString(), stringValue))
-        candidate->setTransport(stringValue);
+        candidate.transport = stringValue;
 
     if (candidateObject.getInteger(priorityString(), intValue))
-        candidate->setPriority(intValue);
+        candidate.priority = intValue;
 
     if (candidateObject.getString(addressString(), stringValue))
-        candidate->setAddress(stringValue);
+        candidate.address = stringValue;
 
     if (candidateObject.getInteger(portString(), intValue))
-        candidate->setPort(intValue);
+        candidate.port = intValue;
 
     if (candidateObject.getString(tcpTypeString(), stringValue))
-        candidate->setTcpType(stringValue);
+        candidate.tcpType = stringValue;
 
     if (candidateObject.getString(relatedAddressString(), stringValue))
-        candidate->setRelatedAddress(stringValue);
+        candidate.relatedAddress = stringValue;
 
     if (candidateObject.getInteger(relatedPortString(), intValue))
-        candidate->setRelatedPort(intValue);
+        candidate.relatedPort = intValue;
 
     return candidate;
 }
@@ -327,15 +327,15 @@
     return configuration;
 }
 
-static RefPtr<IceCandidate> iceCandidateFromJSON(const String& json)
+static Optional<IceCandidate> iceCandidateFromJSON(const String& json)
 {
     RefPtr<InspectorValue> value;
     if (!InspectorValue::parseJSON(json, value))
-        return nullptr;
+        return Nullopt;
 
     RefPtr<InspectorObject> candidateObject;
     if (!value->asObject(candidateObject))
-        return nullptr;
+        return Nullopt;
 
     return createCandidate(*candidateObject);
 }
@@ -415,8 +415,8 @@
 
         RefPtr<InspectorArray> candidatesArray = InspectorArray::create();
 
-        for (RefPtr<IceCandidate> candidate : mediaDescription->iceCandidates())
-            candidatesArray->pushObject(createCandidateObject(*candidate));
+        for (auto& candidate : mediaDescription->iceCandidates())
+            candidatesArray->pushObject(createCandidateObject(candidate));
 
         iceObject->setArray(candidatesString(), candidatesArray);
         mediaDescriptionObject->setObject(iceString(), iceObject);
@@ -470,21 +470,19 @@
     return Result::Success;
 }
 
-SDPProcessor::Result SDPProcessor::parseCandidateLine(const String& candidateLine, RefPtr<IceCandidate>& outCandidate) const
+SDPProcessor::ParsingResult SDPProcessor::parseCandidateLine(const String& candidateLine) const
 {
     String scriptOutput;
     if (!callScript("parseCandidateLine", candidateLine, scriptOutput))
-        return Result::InternalError;
+        return { Result::InternalError };
 
     if (scriptOutput == "ParseError")
-        return Result::ParseError;
+        return { Result::ParseError };
 
-    RefPtr<IceCandidate> candidate = iceCandidateFromJSON(scriptOutput);
+    auto candidate = iceCandidateFromJSON(scriptOutput);
     if (!candidate)
-        return Result::InternalError;
-
-    outCandidate = candidate;
-    return Result::Success;
+        return { Result::InternalError };
+    return { WTFMove(candidate.value()) };
 }
 
 bool SDPProcessor::callScript(const String& functionName, const String& argument, String& outResult) const

Modified: trunk/Source/WebCore/Modules/mediastream/SDPProcessor.h (207896 => 207897)


--- trunk/Source/WebCore/Modules/mediastream/SDPProcessor.h	2016-10-26 13:24:12 UTC (rev 207896)
+++ trunk/Source/WebCore/Modules/mediastream/SDPProcessor.h	2016-10-26 14:49:48 UTC (rev 207897)
@@ -37,6 +37,7 @@
 #include "IceCandidate.h"
 #include "MediaEndpointSessionConfiguration.h"
 #include <wtf/RefPtr.h>
+#include <wtf/Variant.h>
 #include <wtf/text/WTFString.h>
 
 namespace WebCore {
@@ -58,8 +59,15 @@
     Result parse(const String& sdp, RefPtr<MediaEndpointSessionConfiguration>&) const;
 
     Result generateCandidateLine(const IceCandidate&, String& outCandidateLine) const;
-    Result parseCandidateLine(const String& candidateLine, RefPtr<IceCandidate>&) const;
 
+    struct ParsingResult {
+        Variant<IceCandidate, Result> result;
+
+        Result parsingStatus() const { return WTF::holds_alternative<IceCandidate>(result) ? Result::Success : WTF::get<SDPProcessor::Result>(result); }
+        IceCandidate& candidate() { return WTF::get<IceCandidate>(result); }
+    };
+    ParsingResult parseCandidateLine(const String& candidateLine) const;
+
 private:
     bool callScript(const String& functionName, const String& argument, String& outResult) const;
 

Modified: trunk/Source/WebCore/platform/mediastream/IceCandidate.h (207896 => 207897)


--- trunk/Source/WebCore/platform/mediastream/IceCandidate.h	2016-10-26 13:24:12 UTC (rev 207896)
+++ trunk/Source/WebCore/platform/mediastream/IceCandidate.h	2016-10-26 14:49:48 UTC (rev 207897)
@@ -28,90 +28,41 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef IceCandidate_h
-#define IceCandidate_h
+#pragma once
 
 #if ENABLE(WEB_RTC)
 
-#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
 #include <wtf/text/WTFString.h>
 
 namespace WebCore {
 
-class IceCandidate : public RefCounted<IceCandidate> {
-public:
-    static RefPtr<IceCandidate> create()
-    {
-        return adoptRef(new IceCandidate());
-    }
-    virtual ~IceCandidate() { }
+struct IceCandidate {
+    String type;
+    String foundation;
+    unsigned componentId { 0 };
+    String transport;
+    unsigned long priority { 0 };
+    String address;
+    unsigned port { 0 };
+    String tcpType;
+    String relatedAddress;
+    unsigned relatedPort { 0 };
 
-    const String& type() const { return m_type; }
-    void setType(const String& type) { m_type = type; }
-
-    const String& foundation() const { return m_foundation; }
-    void setFoundation(const String& foundation) { m_foundation = foundation; }
-
-    unsigned componentId() const { return m_componentId; }
-    void setComponentId(unsigned componentId) { m_componentId = componentId; }
-
-    const String& transport() const { return m_transport; }
-    void setTransport(const String& transport) { m_transport = transport; }
-
-    int priority() const { return m_priority; }
-    void setPriority(int priority) { m_priority = priority; }
-
-    const String& address() const { return m_address; }
-    void setAddress(const String& address) { m_address = address; }
-
-    unsigned port() const { return m_port; }
-    void setPort(unsigned port) { m_port = port; }
-
-    const String& tcpType() const { return m_tcpType; }
-    void setTcpType(const String& tcpType) { m_tcpType = tcpType; }
-
-    const String& relatedAddress() const { return m_relatedAddress; }
-    void setRelatedAddress(const String& relatedAddress) { m_relatedAddress = relatedAddress; }
-
-    unsigned relatedPort() const { return m_relatedPort; }
-    void setRelatedPort(unsigned relatedPort) { m_relatedPort = relatedPort; }
-
-    RefPtr<IceCandidate> clone() const
-    {
-        RefPtr<IceCandidate> copy = create();
-
-        copy->m_type = String(m_type);
-        copy->m_foundation = String(m_foundation);
-        copy->m_componentId = m_componentId;
-        copy->m_transport = String(m_transport);
-        copy->m_priority = m_priority;
-        copy->m_address = String(m_address);
-        copy->m_port = m_port;
-        copy->m_tcpType = String(m_tcpType);
-        copy->m_relatedAddress = String(m_relatedAddress);
-        copy->m_relatedPort = m_relatedPort;
-
-        return copy;
-    }
-
-private:
-    IceCandidate() { }
-
-    String m_type;
-    String m_foundation;
-    unsigned m_componentId { 0 };
-    String m_transport;
-    int m_priority { 0 };
-    String m_address;
-    unsigned m_port { 0 };
-    String m_tcpType;
-    String m_relatedAddress;
-    unsigned m_relatedPort { 0 };
+    IceCandidate() = default;
+    IceCandidate(String&& type, String&& foundation, unsigned componentId, String&& transport, unsigned long priority, String&& address, unsigned port, String&& tcpType, String&& relatedAddress, unsigned relatedPort)
+        : type(WTFMove(type))
+        , foundation(WTFMove(foundation))
+        , componentId(componentId)
+        , transport(WTFMove(transport))
+        , priority(priority)
+        , address(WTFMove(address))
+        , port(port)
+        , tcpType(WTFMove(tcpType))
+        , relatedAddress(WTFMove(relatedAddress))
+        , relatedPort(relatedPort)
+    { }
 };
 
 } // namespace WebCore
 
 #endif // ENABLE(WEB_RTC)
-
-#endif // IceCandidate_h

Modified: trunk/Source/WebCore/platform/mediastream/MediaEndpoint.cpp (207896 => 207897)


--- trunk/Source/WebCore/platform/mediastream/MediaEndpoint.cpp	2016-10-26 13:24:12 UTC (rev 207896)
+++ trunk/Source/WebCore/platform/mediastream/MediaEndpoint.cpp	2016-10-26 14:49:48 UTC (rev 207897)
@@ -67,7 +67,7 @@
     UpdateResult updateReceiveConfiguration(MediaEndpointSessionConfiguration*, bool) override { return UpdateResult::Failed; }
     UpdateResult updateSendConfiguration(MediaEndpointSessionConfiguration*, const RealtimeMediaSourceMap&, bool) override { return UpdateResult::Failed; }
 
-    void addRemoteCandidate(IceCandidate&, const String&, const String&, const String&) override { }
+    void addRemoteCandidate(const IceCandidate&, const String&, const String&, const String&) override { }
 
     Ref<RealtimeMediaSource> createMutedRemoteSource(const String&, RealtimeMediaSource::Type) override { return EmptyRealtimeMediaSource::create(); }
     void replaceSendSource(RealtimeMediaSource&, const String&) override { }

Modified: trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h (207896 => 207897)


--- trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h	2016-10-26 13:24:12 UTC (rev 207896)
+++ trunk/Source/WebCore/platform/mediastream/MediaEndpoint.h	2016-10-26 14:49:48 UTC (rev 207897)
@@ -39,7 +39,7 @@
 
 namespace WebCore {
 
-class IceCandidate;
+struct IceCandidate;
 class MediaEndpoint;
 class MediaEndpointClient;
 class MediaEndpointSessionConfiguration;
@@ -73,7 +73,7 @@
     virtual UpdateResult updateReceiveConfiguration(MediaEndpointSessionConfiguration*, bool isInitiator) = 0;
     virtual UpdateResult updateSendConfiguration(MediaEndpointSessionConfiguration*, const RealtimeMediaSourceMap&, bool isInitiator) = 0;
 
-    virtual void addRemoteCandidate(IceCandidate&, const String& mid, const String& ufrag, const String& password) = 0;
+    virtual void addRemoteCandidate(const IceCandidate&, const String& mid, const String& ufrag, const String& password) = 0;
 
     virtual Ref<RealtimeMediaSource> createMutedRemoteSource(const String& mid, RealtimeMediaSource::Type) = 0;
     virtual void replaceSendSource(RealtimeMediaSource&, const String& mid) = 0;
@@ -87,7 +87,7 @@
 class MediaEndpointClient {
 public:
     virtual void gotDtlsFingerprint(const String& fingerprint, const String& fingerprintFunction) = 0;
-    virtual void gotIceCandidate(const String& mid, RefPtr<IceCandidate>&&) = 0;
+    virtual void gotIceCandidate(const String& mid, IceCandidate&&) = 0;
     virtual void doneGatheringCandidates(const String& mid) = 0;
     virtual void iceTransportStateChanged(const String& mid, MediaEndpoint::IceTransportState) = 0;
 

Modified: trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h (207896 => 207897)


--- trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h	2016-10-26 13:24:12 UTC (rev 207896)
+++ trunk/Source/WebCore/platform/mediastream/PeerMediaDescription.h	2016-10-26 14:49:48 UTC (rev 207897)
@@ -106,8 +106,8 @@
     const String& icePassword() const { return m_icePassword; }
     void setIcePassword(const String& icePassword) { m_icePassword = icePassword; }
 
-    const Vector<RefPtr<IceCandidate>>& iceCandidates() const { return m_iceCandidates; }
-    void addIceCandidate(RefPtr<IceCandidate>&& candidate) { m_iceCandidates.append(WTFMove(candidate)); }
+    const Vector<IceCandidate>& iceCandidates() const { return m_iceCandidates; }
+    void addIceCandidate(IceCandidate&& candidate) { m_iceCandidates.append(WTFMove(candidate)); }
 
     RefPtr<PeerMediaDescription> clone() const
     {
@@ -141,8 +141,7 @@
         copy->m_iceUfrag = String(m_iceUfrag);
         copy->m_icePassword = String(m_icePassword);
 
-        for (auto& candidate : m_iceCandidates)
-            copy->m_iceCandidates.append(candidate->clone());
+        copy->m_iceCandidates = m_iceCandidates;
 
         return copy;
     }
@@ -174,7 +173,7 @@
 
     String m_iceUfrag;
     String m_icePassword;
-    Vector<RefPtr<IceCandidate>> m_iceCandidates;
+    Vector<IceCandidate> m_iceCandidates;
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp (207896 => 207897)


--- trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp	2016-10-26 13:24:12 UTC (rev 207896)
+++ trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp	2016-10-26 14:49:48 UTC (rev 207897)
@@ -267,7 +267,7 @@
 
         if (mdesc.iceCandidates().size()) {
             for (auto& candidate : mdesc.iceCandidates())
-                internalAddRemoteCandidate(session, *candidate, mdesc.iceUfrag(), mdesc.icePassword());
+                internalAddRemoteCandidate(session, candidate, mdesc.iceUfrag(), mdesc.icePassword());
         }
 
         if (i < m_numberOfSendPreparedSessions)
@@ -311,7 +311,7 @@
     return UpdateResult::Success;
 }
 
-void MediaEndpointOwr::addRemoteCandidate(IceCandidate& candidate, const String& mid, const String& ufrag, const String& password)
+void MediaEndpointOwr::addRemoteCandidate(const IceCandidate& candidate, const String& mid, const String& ufrag, const String& password)
 {
     for (auto& transceiver : m_transceivers) {
         if (transceiver->mid() == mid) {
@@ -394,7 +394,7 @@
     return nullptr;
 }
 
-void MediaEndpointOwr::dispatchNewIceCandidate(const String& mid, RefPtr<IceCandidate>&& iceCandidate)
+void MediaEndpointOwr::dispatchNewIceCandidate(const String& mid, IceCandidate&& iceCandidate)
 {
     m_client.gotIceCandidate(mid, WTFMove(iceCandidate));
 }
@@ -590,35 +590,35 @@
     }
 }
 
-void MediaEndpointOwr::internalAddRemoteCandidate(OwrSession* session, IceCandidate& candidate, const String& ufrag, const String& password)
+void MediaEndpointOwr::internalAddRemoteCandidate(OwrSession* session, const IceCandidate& candidate, const String& ufrag, const String& password)
 {
     gboolean rtcpMux;
     g_object_get(session, "rtcp-mux", &rtcpMux, nullptr);
 
-    if (rtcpMux && candidate.componentId() == OWR_COMPONENT_TYPE_RTCP)
+    if (rtcpMux && candidate.componentId == OWR_COMPONENT_TYPE_RTCP)
         return;
 
-    ASSERT(candidateTypes.find(candidate.type()) != notFound);
+    ASSERT(candidateTypes.find(candidate.type) != notFound);
 
-    OwrCandidateType candidateType = static_cast<OwrCandidateType>(candidateTypes.find(candidate.type()));
-    OwrComponentType componentId = static_cast<OwrComponentType>(candidate.componentId());
+    OwrCandidateType candidateType = static_cast<OwrCandidateType>(candidateTypes.find(candidate.type));
+    OwrComponentType componentId = static_cast<OwrComponentType>(candidate.componentId);
     OwrTransportType transportType;
 
-    if (candidate.transport().convertToASCIIUppercase() == "UDP")
+    if (candidate.transport.convertToASCIIUppercase() == "UDP")
         transportType = OWR_TRANSPORT_TYPE_UDP;
     else {
-        ASSERT(candidateTcpTypes.find(candidate.tcpType()) != notFound);
-        transportType = static_cast<OwrTransportType>(candidateTcpTypes.find(candidate.tcpType()));
+        ASSERT(candidateTcpTypes.find(candidate.tcpType) != notFound);
+        transportType = static_cast<OwrTransportType>(candidateTcpTypes.find(candidate.tcpType));
     }
 
     OwrCandidate* owrCandidate = owr_candidate_new(candidateType, componentId);
     g_object_set(owrCandidate, "transport-type", transportType,
-        "address", candidate.address().ascii().data(),
-        "port", candidate.port(),
-        "base-address", candidate.relatedAddress().ascii().data(),
-        "base-port", candidate.relatedPort(),
-        "priority", candidate.priority(),
-        "foundation", candidate.foundation().ascii().data(),
+        "address", candidate.address.ascii().data(),
+        "port", candidate.port,
+        "base-address", candidate.relatedAddress.ascii().data(),
+        "base-port", candidate.relatedPort,
+        "priority", candidate.priority,
+        "foundation", candidate.foundation.ascii().data(),
         "ufrag", ufrag.ascii().data(),
         "password", password.ascii().data(),
         nullptr);
@@ -652,24 +652,24 @@
     ASSERT(candidateType >= 0 && candidateType < candidateTypes.size());
     ASSERT(transportType >= 0 && transportType < candidateTcpTypes.size());
 
-    RefPtr<IceCandidate> iceCandidate = IceCandidate::create();
-    iceCandidate->setType(candidateTypes[candidateType]);
-    iceCandidate->setFoundation(foundation);
-    iceCandidate->setComponentId(componentId);
-    iceCandidate->setPriority(priority);
-    iceCandidate->setAddress(address);
-    iceCandidate->setPort(port ? port : candidateDefaultPort);
+    IceCandidate iceCandidate;
+    iceCandidate.type = candidateTypes[candidateType];
+    iceCandidate.foundation = foundation;
+    iceCandidate.componentId = componentId;
+    iceCandidate.priority = priority;
+    iceCandidate.address = address;
+    iceCandidate.port = port ? port : candidateDefaultPort;
 
     if (transportType == OWR_TRANSPORT_TYPE_UDP)
-        iceCandidate->setTransport("UDP");
+        iceCandidate.transport = "UDP";
     else {
-        iceCandidate->setTransport("TCP");
-        iceCandidate->setTcpType(candidateTcpTypes[transportType]);
+        iceCandidate.transport = "TCP";
+        iceCandidate.tcpType = candidateTcpTypes[transportType];
     }
 
     if (candidateType != OWR_CANDIDATE_TYPE_HOST) {
-        iceCandidate->setRelatedAddress(relatedAddress);
-        iceCandidate->setRelatedPort(relatedPort ? relatedPort : candidateDefaultPort);
+        iceCandidate.relatedAddress = relatedAddress;
+        iceCandidate.relatedPort = relatedPort ? relatedPort : candidateDefaultPort;
     }
 
     g_object_set(G_OBJECT(candidate), "ufrag", g_object_get_data(G_OBJECT(session), "ice-ufrag"),

Modified: trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h (207896 => 207897)


--- trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h	2016-10-26 13:24:12 UTC (rev 207896)
+++ trunk/Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.h	2016-10-26 14:49:48 UTC (rev 207897)
@@ -92,7 +92,7 @@
     UpdateResult updateReceiveConfiguration(MediaEndpointSessionConfiguration*, bool isInitiator) override;
     UpdateResult updateSendConfiguration(MediaEndpointSessionConfiguration*, const RealtimeMediaSourceMap&, bool isInitiator) override;
 
-    void addRemoteCandidate(IceCandidate&, const String& mid, const String& ufrag, const String& password) override;
+    void addRemoteCandidate(const IceCandidate&, const String& mid, const String& ufrag, const String& password) override;
 
     Ref<RealtimeMediaSource> createMutedRemoteSource(const String& mid, RealtimeMediaSource::Type) override;
     void replaceMutedRemoteSourceMid(const String&, const String&) final;
@@ -104,7 +104,7 @@
     const String& sessionMid(OwrSession*) const;
     OwrTransceiver* matchTransceiverByMid(const String& mid) const;
 
-    void dispatchNewIceCandidate(const String& mid, RefPtr<IceCandidate>&&);
+    void dispatchNewIceCandidate(const String& mid, IceCandidate&&);
     void dispatchGatheringDone(const String& mid);
     void processIceTransportStateChange(OwrSession*);
     void dispatchDtlsFingerprint(gchar* privateKey, gchar* certificate, const String& fingerprint, const String& fingerprintFunction);
@@ -123,7 +123,7 @@
     void prepareMediaSession(OwrMediaSession*, PeerMediaDescription*, bool isInitiator);
 
     void ensureTransportAgentAndTransceivers(bool isInitiator, const Vector<TransceiverConfig>&);
-    void internalAddRemoteCandidate(OwrSession*, IceCandidate&, const String& ufrag, const String& password);
+    void internalAddRemoteCandidate(OwrSession*, const IceCandidate&, const String& ufrag, const String& password);
 
     Optional<MediaEndpointConfiguration> m_configuration;
     GRegex* m_helperServerRegEx;

Modified: trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp (207896 => 207897)


--- trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp	2016-10-26 13:24:12 UTC (rev 207896)
+++ trunk/Source/WebCore/platform/mock/MockMediaEndpoint.cpp	2016-10-26 14:49:48 UTC (rev 207897)
@@ -173,7 +173,7 @@
     return UpdateResult::Success;
 }
 
-void MockMediaEndpoint::addRemoteCandidate(IceCandidate& candidate, const String& mid, const String& ufrag, const String& password)
+void MockMediaEndpoint::addRemoteCandidate(const IceCandidate& candidate, const String& mid, const String& ufrag, const String& password)
 {
     UNUSED_PARAM(candidate);
     UNUSED_PARAM(mid);
@@ -232,39 +232,10 @@
 
 void MockMediaEndpoint::dispatchFakeIceCandidates()
 {
-    RefPtr<IceCandidate> iceCandidate = IceCandidate::create();
-    iceCandidate->setType("host");
-    iceCandidate->setFoundation("1");
-    iceCandidate->setComponentId(1);
-    iceCandidate->setPriority(2013266431);
-    iceCandidate->setAddress("192.168.0.100");
-    iceCandidate->setPort(38838);
-    iceCandidate->setTransport("UDP");
-    m_fakeIceCandidates.append(WTFMove(iceCandidate));
+    m_fakeIceCandidates.append({ "host", "1", 1, "UDP", 2013266431, "192.168.0.100", 38838, { }, { }, 0 });
+    m_fakeIceCandidates.append({ "host", "2", 1, "TCP", 1019216383, "192.168.0.100", 9, "active", { }, 0 });
+    m_fakeIceCandidates.append({ "srflx", "3", 1, "UDP", 1677722111, "172.18.0.1", 47989, { }, "192.168.0.100", 47989 });
 
-    iceCandidate = IceCandidate::create();
-    iceCandidate->setType("host");
-    iceCandidate->setFoundation("2");
-    iceCandidate->setComponentId(1);
-    iceCandidate->setPriority(1019216383);
-    iceCandidate->setAddress("192.168.0.100");
-    iceCandidate->setPort(9);
-    iceCandidate->setTransport("TCP");
-    iceCandidate->setTcpType("active");
-    m_fakeIceCandidates.append(WTFMove(iceCandidate));
-
-    iceCandidate = IceCandidate::create();
-    iceCandidate->setType("srflx");
-    iceCandidate->setFoundation("3");
-    iceCandidate->setComponentId(1);
-    iceCandidate->setPriority(1677722111);
-    iceCandidate->setAddress("172.18.0.1");
-    iceCandidate->setPort(47989);
-    iceCandidate->setTransport("UDP");
-    iceCandidate->setRelatedAddress("192.168.0.100");
-    iceCandidate->setRelatedPort(47989);
-    m_fakeIceCandidates.append(WTFMove(iceCandidate));
-
     // Reverse order to use takeLast() while keeping the above order
     m_fakeIceCandidates.reverse();
 

Modified: trunk/Source/WebCore/platform/mock/MockMediaEndpoint.h (207896 => 207897)


--- trunk/Source/WebCore/platform/mock/MockMediaEndpoint.h	2016-10-26 13:24:12 UTC (rev 207896)
+++ trunk/Source/WebCore/platform/mock/MockMediaEndpoint.h	2016-10-26 14:49:48 UTC (rev 207897)
@@ -55,7 +55,7 @@
     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) final;
+    void addRemoteCandidate(const IceCandidate&, const String& mid, const String& ufrag, const String& password) final;
 
     Ref<RealtimeMediaSource> createMutedRemoteSource(const String& mid, RealtimeMediaSource::Type) final;
     void replaceSendSource(RealtimeMediaSource&, const String& mid) final;
@@ -81,7 +81,7 @@
     Vector<String> m_mids;
     HashMap<String, RefPtr<RealtimeMediaSource>> m_mutedRemoteSources;
 
-    Vector<RefPtr<IceCandidate>> m_fakeIceCandidates;
+    Vector<IceCandidate> m_fakeIceCandidates;
     Timer m_iceCandidateTimer;
 
     Vector<std::pair<String, MediaEndpoint::IceTransportState>> m_iceTransportStateChanges;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to