Title: [215239] trunk
Revision
215239
Author
[email protected]
Date
2017-04-11 10:27:10 -0700 (Tue, 11 Apr 2017)

Log Message

Activate WebRTC data channel tests for WK1
https://bugs.webkit.org/show_bug.cgi?id=170710

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

Source/WebCore:

Covered by existing and activated tests.

Making LibWebRTCProvider::factory not static.
For that purpose LibWebRTCMediaEndpoint now stores its peer connection factory reference.
Making LibWebRTCProvider use libebrtc networking by default.

Removing some no longer needed checks related to libwebrtc availability.

* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::LibWebRTCMediaEndpoint):
(WebCore::LibWebRTCMediaEndpoint::addTrack):
(WebCore::LibWebRTCMediaEndpoint::doCreateOffer):
(WebCore::LibWebRTCMediaEndpoint::doCreateAnswer):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::LibWebRTCProvider::factory):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:

Source/WebKit2:

* WebProcess/Network/webrtc/LibWebRTCProvider.h: Making sure networking is not done in the Web process.

LayoutTests:

* platform/mac-wk1/TestExpectations:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (215238 => 215239)


--- trunk/LayoutTests/ChangeLog	2017-04-11 17:06:53 UTC (rev 215238)
+++ trunk/LayoutTests/ChangeLog	2017-04-11 17:27:10 UTC (rev 215239)
@@ -1,5 +1,14 @@
 2017-04-11  Youenn Fablet  <[email protected]>
 
+        Activate WebRTC data channel tests for WK1
+        https://bugs.webkit.org/show_bug.cgi?id=170710
+
+        Reviewed by Eric Carlson.
+
+        * platform/mac-wk1/TestExpectations:
+
+2017-04-11  Youenn Fablet  <[email protected]>
+
         MediaStream id should be equal to msid
         https://bugs.webkit.org/show_bug.cgi?id=170712
 

Modified: trunk/LayoutTests/platform/mac-wk1/TestExpectations (215238 => 215239)


--- trunk/LayoutTests/platform/mac-wk1/TestExpectations	2017-04-11 17:06:53 UTC (rev 215238)
+++ trunk/LayoutTests/platform/mac-wk1/TestExpectations	2017-04-11 17:27:10 UTC (rev 215239)
@@ -97,6 +97,8 @@
 # Skip WebRTC for now in WK1
 imported/w3c/web-platform-tests/webrtc [ Skip ]
 webrtc [ Skip ]
+webrtc/datachannel [ Pass ]
+webrtc/datachannel/bufferedAmountLowThreshold.html [ Failure ]
 
 # These tests test the Shadow DOM based HTML form validation UI but Mac WK1 is using native dialogs instead.
 fast/forms/validation-message-on-listbox.html

Modified: trunk/Source/WebCore/ChangeLog (215238 => 215239)


--- trunk/Source/WebCore/ChangeLog	2017-04-11 17:06:53 UTC (rev 215238)
+++ trunk/Source/WebCore/ChangeLog	2017-04-11 17:27:10 UTC (rev 215239)
@@ -1,5 +1,30 @@
 2017-04-11  Youenn Fablet  <[email protected]>
 
+        Activate WebRTC data channel tests for WK1
+        https://bugs.webkit.org/show_bug.cgi?id=170710
+
+        Reviewed by Eric Carlson.
+
+        Covered by existing and activated tests.
+
+        Making LibWebRTCProvider::factory not static.
+        For that purpose LibWebRTCMediaEndpoint now stores its peer connection factory reference.
+        Making LibWebRTCProvider use libebrtc networking by default.
+
+        Removing some no longer needed checks related to libwebrtc availability.
+
+        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
+        (WebCore::LibWebRTCMediaEndpoint::LibWebRTCMediaEndpoint):
+        (WebCore::LibWebRTCMediaEndpoint::addTrack):
+        (WebCore::LibWebRTCMediaEndpoint::doCreateOffer):
+        (WebCore::LibWebRTCMediaEndpoint::doCreateAnswer):
+        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
+        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
+        (WebCore::LibWebRTCProvider::factory):
+        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
+
+2017-04-11  Youenn Fablet  <[email protected]>
+
         MediaStream id should be equal to msid
         https://bugs.webkit.org/show_bug.cgi?id=170712
 

Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp (215238 => 215239)


--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp	2017-04-11 17:06:53 UTC (rev 215238)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp	2017-04-11 17:27:10 UTC (rev 215239)
@@ -57,6 +57,7 @@
 
 LibWebRTCMediaEndpoint::LibWebRTCMediaEndpoint(LibWebRTCPeerConnectionBackend& peerConnection, LibWebRTCProvider& client)
     : m_peerConnectionBackend(peerConnection)
+    , m_peerConnectionFactory(*client.factory())
     , m_backend(client.createPeerConnection(*this))
     , m_createSessionDescriptionObserver(*this)
     , m_setLocalSessionDescriptionObserver(*this)
@@ -63,6 +64,7 @@
     , m_setRemoteSessionDescriptionObserver(*this)
 {
     ASSERT(m_backend);
+    ASSERT(client.factory());
 }
 
 // FIXME: unify with MediaEndpointSessionDescription::typeString()
@@ -162,14 +164,11 @@
 
 void LibWebRTCMediaEndpoint::addTrack(RTCRtpSender& sender, MediaStreamTrack& track, const Vector<String>& mediaStreamIds)
 {
-    if (!LibWebRTCProvider::factory())
-        return;
-
     std::vector<webrtc::MediaStreamInterface*> mediaStreams;
     rtc::scoped_refptr<webrtc::MediaStreamInterface> mediaStream = nullptr;
     if (mediaStreamIds.size()) {
         // libwebrtc is only using the first one if any.
-        mediaStream = LibWebRTCProvider::factory()->CreateLocalMediaStream(mediaStreamIds[0].utf8().data());
+        mediaStream = m_peerConnectionFactory.CreateLocalMediaStream(mediaStreamIds[0].utf8().data());
         mediaStreams.push_back(mediaStream.get());
     }
     
@@ -177,7 +176,7 @@
     switch (source.type()) {
     case RealtimeMediaSource::Type::Audio: {
         auto trackSource = RealtimeOutgoingAudioSource::create(source);
-        auto audioTrack = LibWebRTCProvider::factory()->CreateAudioTrack(track.id().utf8().data(), trackSource.ptr());
+        auto audioTrack = m_peerConnectionFactory.CreateAudioTrack(track.id().utf8().data(), trackSource.ptr());
         m_peerConnectionBackend.addAudioSource(WTFMove(trackSource));
         m_senders.add(&sender, m_backend->AddTrack(audioTrack.get(), WTFMove(mediaStreams)));
         return;
@@ -184,7 +183,7 @@
     }
     case RealtimeMediaSource::Type::Video: {
         auto videoSource = RealtimeOutgoingVideoSource::create(source);
-        auto videoTrack = LibWebRTCProvider::factory()->CreateVideoTrack(track.id().utf8().data(), videoSource.ptr());
+        auto videoTrack = m_peerConnectionFactory.CreateVideoTrack(track.id().utf8().data(), videoSource.ptr());
         m_peerConnectionBackend.addVideoSource(WTFMove(videoSource));
         m_senders.add(&sender, m_backend->AddTrack(videoTrack.get(), WTFMove(mediaStreams)));
         return;
@@ -196,11 +195,6 @@
 
 void LibWebRTCMediaEndpoint::doCreateOffer()
 {
-    if (!LibWebRTCProvider::factory()) {
-        m_peerConnectionBackend.createOfferFailed(Exception { NOT_SUPPORTED_ERR, ASCIILiteral("libwebrtc backend is missing.") });
-        return;
-    }
-        
     m_isInitiator = true;
     m_backend->CreateOffer(&m_createSessionDescriptionObserver, nullptr);
 }
@@ -207,11 +201,6 @@
 
 void LibWebRTCMediaEndpoint::doCreateAnswer()
 {
-    if (!LibWebRTCProvider::factory()) {
-        m_peerConnectionBackend.createAnswerFailed(Exception { NOT_SUPPORTED_ERR, ASCIILiteral("libwebrtc backend is missing.") });
-        return;
-    }
-
     m_isInitiator = false;
     m_backend->CreateAnswer(&m_createSessionDescriptionObserver, nullptr);
 }

Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h (215238 => 215239)


--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h	2017-04-11 17:06:53 UTC (rev 215238)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h	2017-04-11 17:27:10 UTC (rev 215239)
@@ -171,6 +171,7 @@
     };
 
     LibWebRTCPeerConnectionBackend& m_peerConnectionBackend;
+    webrtc::PeerConnectionFactoryInterface& m_peerConnectionFactory;
     rtc::scoped_refptr<webrtc::PeerConnectionInterface> m_backend;
 
     CreateSessionDescriptionObserver m_createSessionDescriptionObserver;

Modified: trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp (215238 => 215239)


--- trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp	2017-04-11 17:06:53 UTC (rev 215238)
+++ trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp	2017-04-11 17:27:10 UTC (rev 215239)
@@ -131,8 +131,10 @@
 {
     if (!webRTCAvailable())
         return nullptr;
-    if (!staticFactoryAndThreads().factory)
+    if (!staticFactoryAndThreads().factory) {
+        staticFactoryAndThreads().networkThreadWithSocketServer = m_useNetworkThreadWithSocketServer;
         initializePeerConnectionFactoryAndThreads();
+    }
     return staticFactoryAndThreads().factory;
 }
 

Modified: trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h (215238 => 215239)


--- trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h	2017-04-11 17:06:53 UTC (rev 215238)
+++ trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h	2017-04-11 17:27:10 UTC (rev 215239)
@@ -54,10 +54,11 @@
 #if USE(LIBWEBRTC)
     WEBCORE_EXPORT virtual rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&);
 
+    WEBCORE_EXPORT webrtc::PeerConnectionFactoryInterface* factory();
+
     // FIXME: Make these methods not static.
     static WEBCORE_EXPORT void callOnWebRTCNetworkThread(Function<void()>&&);
     static WEBCORE_EXPORT void callOnWebRTCSignalingThread(Function<void()>&&);
-    static WEBCORE_EXPORT webrtc::PeerConnectionFactoryInterface* factory();
     static WEBCORE_EXPORT void setDecoderFactoryGetter(Function<std::unique_ptr<cricket::WebRtcVideoDecoderFactory>()>&&);
     static WEBCORE_EXPORT void setEncoderFactoryGetter(Function<std::unique_ptr<cricket::WebRtcVideoEncoderFactory>()>&&);
 
@@ -71,6 +72,7 @@
     WEBCORE_EXPORT rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, rtc::NetworkManager&, rtc::PacketSocketFactory&);
 
     bool m_enableEnumeratingAllNetworkInterfaces { false };
+    bool m_useNetworkThreadWithSocketServer { true };
 #endif
 };
 

Modified: trunk/Source/WebKit2/ChangeLog (215238 => 215239)


--- trunk/Source/WebKit2/ChangeLog	2017-04-11 17:06:53 UTC (rev 215238)
+++ trunk/Source/WebKit2/ChangeLog	2017-04-11 17:27:10 UTC (rev 215239)
@@ -1,3 +1,12 @@
+2017-04-11  Youenn Fablet  <[email protected]>
+
+        Activate WebRTC data channel tests for WK1
+        https://bugs.webkit.org/show_bug.cgi?id=170710
+
+        Reviewed by Eric Carlson.
+
+        * WebProcess/Network/webrtc/LibWebRTCProvider.h: Making sure networking is not done in the Web process.
+
 2017-04-11  Chris Fleizach  <[email protected]>
 
         AX: PDF plugin needs to support PDF-DOM Mode

Modified: trunk/Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCProvider.h (215238 => 215239)


--- trunk/Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCProvider.h	2017-04-11 17:06:53 UTC (rev 215238)
+++ trunk/Source/WebKit2/WebProcess/Network/webrtc/LibWebRTCProvider.h	2017-04-11 17:27:10 UTC (rev 215239)
@@ -33,7 +33,7 @@
 #if USE(LIBWEBRTC)
 class LibWebRTCProvider final : public WebCore::LibWebRTCProvider {
 public:
-    LibWebRTCProvider() = default;
+    LibWebRTCProvider() { m_useNetworkThreadWithSocketServer = false; }
 
 private:
     rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&) final;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to