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;