Title: [214317] trunk/Source/WebCore
Revision
214317
Author
[email protected]
Date
2017-03-23 14:07:40 -0700 (Thu, 23 Mar 2017)

Log Message

Clean RTCPeerConnection.idl after bug 169978
https://bugs.webkit.org/show_bug.cgi?id=169989

Patch by Youenn Fablet <[email protected]> on 2017-03-23
Reviewed by Eric Carlson.

No change of behavior.
Moving addTransceiver to overloaded method to union type to match spec.
Refactoring RTCRtpSender to take a String&&.

* Modules/mediastream/MediaEndpointPeerConnection.cpp:
(WebCore::MediaEndpointPeerConnection::setRemoteDescriptionTask):
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::addTransceiver):
(WebCore::RTCPeerConnection::completeAddTransceiver):
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/RTCPeerConnection.idl: Cosmetic changes except for addTransceiver.
* Modules/mediastream/RTCRtpSender.cpp:
(WebCore::RTCRtpSender::create):
(WebCore::RTCRtpSender::RTCRtpSender):
* Modules/mediastream/RTCRtpSender.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (214316 => 214317)


--- trunk/Source/WebCore/ChangeLog	2017-03-23 20:57:06 UTC (rev 214316)
+++ trunk/Source/WebCore/ChangeLog	2017-03-23 21:07:40 UTC (rev 214317)
@@ -1,5 +1,28 @@
 2017-03-23  Youenn Fablet  <[email protected]>
 
+        Clean RTCPeerConnection.idl after bug 169978
+        https://bugs.webkit.org/show_bug.cgi?id=169989
+
+        Reviewed by Eric Carlson.
+
+        No change of behavior.
+        Moving addTransceiver to overloaded method to union type to match spec.
+        Refactoring RTCRtpSender to take a String&&.
+
+        * Modules/mediastream/MediaEndpointPeerConnection.cpp:
+        (WebCore::MediaEndpointPeerConnection::setRemoteDescriptionTask):
+        * Modules/mediastream/RTCPeerConnection.cpp:
+        (WebCore::RTCPeerConnection::addTransceiver):
+        (WebCore::RTCPeerConnection::completeAddTransceiver):
+        * Modules/mediastream/RTCPeerConnection.h:
+        * Modules/mediastream/RTCPeerConnection.idl: Cosmetic changes except for addTransceiver.
+        * Modules/mediastream/RTCRtpSender.cpp:
+        (WebCore::RTCRtpSender::create):
+        (WebCore::RTCRtpSender::RTCRtpSender):
+        * Modules/mediastream/RTCRtpSender.h:
+
+2017-03-23  Youenn Fablet  <[email protected]>
+
         Add logging in case libwebrtc.dylib cannot be opened
         https://bugs.webkit.org/show_bug.cgi?id=170017
 

Modified: trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp (214316 => 214317)


--- trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp	2017-03-23 20:57:06 UTC (rev 214316)
+++ trunk/Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp	2017-03-23 21:07:40 UTC (rev 214317)
@@ -500,7 +500,7 @@
             }
 
             if (!transceiver) {
-                auto sender = RTCRtpSender::create(mediaDescription.type, Vector<String>(), m_peerConnection.senderClient());
+                auto sender = RTCRtpSender::create(String(mediaDescription.type), Vector<String>(), m_peerConnection.senderClient());
                 auto receiver = createReceiver(mediaDescription.mid, mediaDescription.type, mediaDescription.mediaStreamTrackId);
 
                 auto newTransceiver = RTCRtpTransceiver::create(WTFMove(sender), WTFMove(receiver));

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp (214316 => 214317)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp	2017-03-23 20:57:06 UTC (rev 214316)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp	2017-03-23 21:07:40 UTC (rev 214317)
@@ -175,50 +175,37 @@
     return { };
 }
 
-ExceptionOr<Ref<RTCRtpTransceiver>> RTCPeerConnection::addTransceiver(Ref<MediaStreamTrack>&& track, const RTCRtpTransceiverInit& init)
+ExceptionOr<Ref<RTCRtpTransceiver>> RTCPeerConnection::addTransceiver(AddTransceiverTrackOrKind&& withTrack, const RTCRtpTransceiverInit& init)
 {
-    if (m_signalingState == RTCSignalingState::Closed)
-        return Exception { INVALID_STATE_ERR };
+    if (WTF::holds_alternative<String>(withTrack)) {
+        const String& kind = WTF::get<String>(withTrack);
+        if (kind != "audio" && kind != "video")
+            return Exception { TypeError };
 
-    String transceiverMid = RTCRtpTransceiver::getNextMid();
+        auto sender = RTCRtpSender::create(String(kind), Vector<String>(), *this);
+        return completeAddTransceiver(WTFMove(sender), init, createCanonicalUUIDString(), kind);
+    }
+
+    Ref<MediaStreamTrack> track = WTF::get<RefPtr<MediaStreamTrack>>(withTrack).releaseNonNull();
+    const String& trackId = track->id();
     const String& trackKind = track->kind();
-    const String& trackId = track->id();
 
     auto sender = RTCRtpSender::create(WTFMove(track), Vector<String>(), *this);
-    auto receiver = m_backend->createReceiver(transceiverMid, trackKind, trackId);
-    auto transceiver = RTCRtpTransceiver::create(WTFMove(sender), WTFMove(receiver));
-    transceiver->setProvisionalMid(transceiverMid);
-
-    completeAddTransceiver(transceiver, init);
-    return WTFMove(transceiver);
+    return completeAddTransceiver(WTFMove(sender), init, trackId, trackKind);
 }
 
-ExceptionOr<Ref<RTCRtpTransceiver>> RTCPeerConnection::addTransceiver(const String& kind, const RTCRtpTransceiverInit& init)
+Ref<RTCRtpTransceiver> RTCPeerConnection::completeAddTransceiver(Ref<RTCRtpSender>&& sender, const RTCRtpTransceiverInit& init, const String& trackId, const String& trackKind)
 {
-    if (m_signalingState == RTCSignalingState::Closed)
-        return Exception { INVALID_STATE_ERR };
-
-    if (kind != "audio" && kind != "video")
-        return Exception { TypeError };
-
     String transceiverMid = RTCRtpTransceiver::getNextMid();
-    String trackId = createCanonicalUUIDString();
+    auto transceiver = RTCRtpTransceiver::create(WTFMove(sender), m_backend->createReceiver(transceiverMid, trackKind, trackId));
 
-    auto sender = RTCRtpSender::create(kind, Vector<String>(), *this);
-    auto receiver = m_backend->createReceiver(transceiverMid, kind, trackId);
-    auto transceiver = RTCRtpTransceiver::create(WTFMove(sender), WTFMove(receiver));
     transceiver->setProvisionalMid(transceiverMid);
+    transceiver->setDirection(init.direction);
 
-    completeAddTransceiver(transceiver, init);
-    return WTFMove(transceiver);
-}
+    m_transceiverSet->append(transceiver.copyRef());
+    m_backend->markAsNeedingNegotiation();
 
-void RTCPeerConnection::completeAddTransceiver(RTCRtpTransceiver& transceiver, const RTCRtpTransceiverInit& init)
-{
-    transceiver.setDirection(init.direction);
-
-    m_transceiverSet->append(transceiver);
-    m_backend->markAsNeedingNegotiation();
+    return transceiver;
 }
 
 void RTCPeerConnection::queuedCreateOffer(RTCOfferOptions&& options, SessionDescriptionPromise&& promise)

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h (214316 => 214317)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h	2017-03-23 20:57:06 UTC (rev 214316)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h	2017-03-23 21:07:40 UTC (rev 214317)
@@ -104,8 +104,8 @@
     ExceptionOr<Ref<RTCRtpSender>> addTrack(Ref<MediaStreamTrack>&&, const Vector<std::reference_wrapper<MediaStream>>&);
     ExceptionOr<void> removeTrack(RTCRtpSender&);
 
-    ExceptionOr<Ref<RTCRtpTransceiver>> addTransceiver(Ref<MediaStreamTrack>&&, const RTCRtpTransceiverInit&);
-    ExceptionOr<Ref<RTCRtpTransceiver>> addTransceiver(const String& kind, const RTCRtpTransceiverInit&);
+    using AddTransceiverTrackOrKind = Variant<RefPtr<MediaStreamTrack>, String>;
+    ExceptionOr<Ref<RTCRtpTransceiver>> addTransceiver(AddTransceiverTrackOrKind&&, const RTCRtpTransceiverInit&);
 
     // 6.1 Peer-to-peer data API
     ExceptionOr<Ref<RTCDataChannel>> createDataChannel(ScriptExecutionContext&, String&&, RTCDataChannelInit&&);
@@ -143,7 +143,7 @@
 private:
     RTCPeerConnection(ScriptExecutionContext&);
 
-    void completeAddTransceiver(RTCRtpTransceiver&, const RTCRtpTransceiverInit&);
+    Ref<RTCRtpTransceiver> completeAddTransceiver(Ref<RTCRtpSender>&&, const RTCRtpTransceiverInit&, const String& trackId, const String& trackKind);
 
     RTCController& rtcController();
     void registerToController();

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl (214316 => 214317)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl	2017-03-23 20:57:06 UTC (rev 214316)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl	2017-03-23 21:07:40 UTC (rev 214317)
@@ -65,8 +65,7 @@
     ExportMacro=WEBCORE_EXPORT,
     JSBuiltinConstructor
 ] interface RTCPeerConnection : EventTarget {
-    // FIXME 169644: update Constructor to take optional RTCConfiguration
-    // Private initializer
+    // JS built-in constructor handles the optional RTCConfiguration
     [PrivateIdentifier, CallWith=Document, MayThrowException] void initializeWith(RTCConfiguration configuration);
 
 
@@ -76,24 +75,16 @@
     [JSBuiltin] Promise<RTCSessionDescriptionInit> createAnswer(optional RTCAnswerOptions answerOptions);
 
     [JSBuiltin] Promise<void> setLocalDescription(RTCSessionDescriptionInit description);
-    // FIXME 169644: change to nullable
-    readonly attribute RTCSessionDescription localDescription;
-    // FIXME 169644: change to nullable
-    readonly attribute RTCSessionDescription currentLocalDescription;
-    // FIXME 169644: change to nullable
-    readonly attribute RTCSessionDescription pendingLocalDescription;
+    readonly attribute RTCSessionDescription? localDescription;
+    readonly attribute RTCSessionDescription? currentLocalDescription;
+    readonly attribute RTCSessionDescription? pendingLocalDescription;
 
-    // FIXME 169644: change to RTCSessionDescriptionInit
-    [JSBuiltin] Promise<void> setRemoteDescription(RTCSessionDescription description);
-    // FIXME 169644: change to nullable
-    readonly attribute RTCSessionDescription remoteDescription;
-    // FIXME 169644: change to nullable
-    readonly attribute RTCSessionDescription currentRemoteDescription;
-    // FIXME 169644: change to nullable
-    readonly attribute RTCSessionDescription pendingRemoteDescription;
+    [JSBuiltin] Promise<void> setRemoteDescription(RTCSessionDescriptionInit description);
+    readonly attribute RTCSessionDescription? remoteDescription;
+    readonly attribute RTCSessionDescription? currentRemoteDescription;
+    readonly attribute RTCSessionDescription? pendingRemoteDescription;
 
-    // FIXME 169644: update parameter to (RTCIceCandidateInit or RTCIceCandidate)
-    [JSBuiltin] Promise<void> addIceCandidate(RTCIceCandidate candidate);
+    [JSBuiltin] Promise<void> addIceCandidate((RTCIceCandidateInit or RTCIceCandidate) candidate);
 
     readonly attribute RTCSignalingState signalingState;
     readonly attribute RTCIceGatheringState iceGatheringState;
@@ -136,8 +127,7 @@
     [PrivateIdentifier, PublicIdentifier, MayThrowException] RTCRtpSender addTrack(MediaStreamTrack track, MediaStream... streams);
     [PrivateIdentifier, PublicIdentifier, MayThrowException] void removeTrack(RTCRtpSender sender);
 
-    [MayThrowException] RTCRtpTransceiver addTransceiver(MediaStreamTrack track, optional RTCRtpTransceiverInit init);
-    [MayThrowException] RTCRtpTransceiver addTransceiver(DOMString kind, optional RTCRtpTransceiverInit init);
+    [MayThrowException] RTCRtpTransceiver addTransceiver((MediaStreamTrack or DOMString) track, optional RTCRtpTransceiverInit init);
 
     attribute EventHandler ontrack;
 

Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.cpp (214316 => 214317)


--- trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.cpp	2017-03-23 20:57:06 UTC (rev 214316)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.cpp	2017-03-23 21:07:40 UTC (rev 214317)
@@ -39,19 +39,19 @@
 
 Ref<RTCRtpSender> RTCRtpSender::create(Ref<MediaStreamTrack>&& track, Vector<String>&& mediaStreamIds, RTCRtpSenderClient& client)
 {
-    auto sender = adoptRef(*new RTCRtpSender(track->kind(), WTFMove(mediaStreamIds), client));
+    auto sender = adoptRef(*new RTCRtpSender(String(track->kind()), WTFMove(mediaStreamIds), client));
     sender->setTrack(WTFMove(track));
     return sender;
 }
 
-Ref<RTCRtpSender> RTCRtpSender::create(const String& trackKind, Vector<String>&& mediaStreamIds, RTCRtpSenderClient& client)
+Ref<RTCRtpSender> RTCRtpSender::create(String&& trackKind, Vector<String>&& mediaStreamIds, RTCRtpSenderClient& client)
 {
-    return adoptRef(*new RTCRtpSender(trackKind, WTFMove(mediaStreamIds), client));
+    return adoptRef(*new RTCRtpSender(WTFMove(trackKind), WTFMove(mediaStreamIds), client));
 }
 
-RTCRtpSender::RTCRtpSender(const String& trackKind, Vector<String>&& mediaStreamIds, RTCRtpSenderClient& client)
+RTCRtpSender::RTCRtpSender(String&& trackKind, Vector<String>&& mediaStreamIds, RTCRtpSenderClient& client)
     : RTCRtpSenderReceiverBase()
-    , m_trackKind(trackKind)
+    , m_trackKind(WTFMove(trackKind))
     , m_mediaStreamIds(WTFMove(mediaStreamIds))
     , m_client(&client)
 {

Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.h (214316 => 214317)


--- trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.h	2017-03-23 20:57:06 UTC (rev 214316)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.h	2017-03-23 21:07:40 UTC (rev 214317)
@@ -47,7 +47,7 @@
 class RTCRtpSender : public RTCRtpSenderReceiverBase {
 public:
     static Ref<RTCRtpSender> create(Ref<MediaStreamTrack>&&, Vector<String>&& mediaStreamIds, RTCRtpSenderClient&);
-    static Ref<RTCRtpSender> create(const String& trackKind, Vector<String>&& mediaStreamIds, RTCRtpSenderClient&);
+    static Ref<RTCRtpSender> create(String&& trackKind, Vector<String>&& mediaStreamIds, RTCRtpSenderClient&);
 
     const String& trackId() const { return m_trackId; }
     const String& trackKind() const { return m_trackKind; }
@@ -62,7 +62,7 @@
     ExceptionOr<void> replaceTrack(Ref<MediaStreamTrack>&&, DOMPromise<void>&&);
 
 private:
-    RTCRtpSender(const String& trackKind, Vector<String>&& mediaStreamIds, RTCRtpSenderClient&);
+    RTCRtpSender(String&& trackKind, Vector<String>&& mediaStreamIds, RTCRtpSenderClient&);
 
     String m_trackId;
     String m_trackKind;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to