Title: [222902] trunk/Source
Revision
222902
Author
commit-qu...@webkit.org
Date
2017-10-05 00:44:35 -0700 (Thu, 05 Oct 2017)

Log Message

Make LibWebRTCProvider port agnostic
https://bugs.webkit.org/show_bug.cgi?id=177747

Patch by Youenn Fablet <you...@apple.com> on 2017-10-05
Reviewed by Alex Christensen & Alex Garcia.

Source/WebCore:

No change of behavior.

LibWebRTCProvider had some Mac/iOS specific members that are now
moved to LibWebRTCProviderCocoa.
This consists in the codec factories that are VideoToolBox specific.
Introducing LibWebRTCProvider::create to allow different port implementations of LibWebRTCProvider.

* WebCore.xcodeproj/project.pbxproj:
* inspector/InspectorOverlay.cpp:
(WebCore::InspectorOverlay::overlayPage):
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::LibWebRTCProvider::create):
(WebCore::LibWebRTCProvider::factory):
(WebCore::LibWebRTCProvider::createPeerConnectionFactory):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
(WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
(WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
(WebCore::LibWebRTCProviderCocoa::setActive):
* platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.h:
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::dataChanged):

Source/WebKit:

* WebProcess/Network/webrtc/LibWebRTCProvider.h: Making sure Mac/iOS provider creates the codec factories.

Source/WebKitLegacy/mac:

* WebView/WebView.mm:
(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (222901 => 222902)


--- trunk/Source/WebCore/ChangeLog	2017-10-05 07:38:00 UTC (rev 222901)
+++ trunk/Source/WebCore/ChangeLog	2017-10-05 07:44:35 UTC (rev 222902)
@@ -1,3 +1,33 @@
+2017-10-05  Youenn Fablet  <you...@apple.com>
+
+        Make LibWebRTCProvider port agnostic
+        https://bugs.webkit.org/show_bug.cgi?id=177747
+
+        Reviewed by Alex Christensen & Alex Garcia.
+
+        No change of behavior.
+
+        LibWebRTCProvider had some Mac/iOS specific members that are now
+        moved to LibWebRTCProviderCocoa.
+        This consists in the codec factories that are VideoToolBox specific.
+        Introducing LibWebRTCProvider::create to allow different port implementations of LibWebRTCProvider.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * inspector/InspectorOverlay.cpp:
+        (WebCore::InspectorOverlay::overlayPage):
+        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
+        (WebCore::LibWebRTCProvider::create):
+        (WebCore::LibWebRTCProvider::factory):
+        (WebCore::LibWebRTCProvider::createPeerConnectionFactory):
+        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
+        * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
+        (WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
+        (WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
+        (WebCore::LibWebRTCProviderCocoa::setActive):
+        * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.h:
+        * svg/graphics/SVGImage.cpp:
+        (WebCore::SVGImage::dataChanged):
+
 2017-10-04  Alex Christensen  <achristen...@webkit.org>
 
         Remove WebCoreSystemInterface

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (222901 => 222902)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2017-10-05 07:38:00 UTC (rev 222901)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2017-10-05 07:44:35 UTC (rev 222902)
@@ -1795,6 +1795,8 @@
 		41AD753A1CEF6BD100A31486 /* FetchOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 41AD75391CEF6BCE00A31486 /* FetchOptions.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		41B28B141F8501A600FB52AC /* MediaEndpointConfiguration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41B28B131F8501A400FB52AC /* MediaEndpointConfiguration.cpp */; };
 		41B28B151F8501D300FB52AC /* MediaEndpointConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 41B28B121F8501A300FB52AC /* MediaEndpointConfiguration.h */; };
+		41B28B391F860BD600FB52AC /* LibWebRTCProviderCocoa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41B28B381F860BD100FB52AC /* LibWebRTCProviderCocoa.cpp */; };
+		41B28B3D1F860EF300FB52AC /* LibWebRTCProviderCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 41B28B361F860BD000FB52AC /* LibWebRTCProviderCocoa.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		41B2A6261EF1BF6D002B9D7A /* WebAudioSourceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 41B2A6251EF1BF60002B9D7A /* WebAudioSourceProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		41B459EF1F55EBD10000F6FD /* ReadableStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41B459ED1F55EBC70000F6FD /* ReadableStream.cpp */; };
 		41BF700C0FE86F49005E8DEC /* MessagePortChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 41BF700A0FE86F49005E8DEC /* MessagePortChannel.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -9590,6 +9592,8 @@
 		41AD75391CEF6BCE00A31486 /* FetchOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FetchOptions.h; sourceTree = "<group>"; };
 		41B28B121F8501A300FB52AC /* MediaEndpointConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaEndpointConfiguration.h; sourceTree = "<group>"; };
 		41B28B131F8501A400FB52AC /* MediaEndpointConfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaEndpointConfiguration.cpp; sourceTree = "<group>"; };
+		41B28B361F860BD000FB52AC /* LibWebRTCProviderCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LibWebRTCProviderCocoa.h; path = libwebrtc/LibWebRTCProviderCocoa.h; sourceTree = "<group>"; };
+		41B28B381F860BD100FB52AC /* LibWebRTCProviderCocoa.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibWebRTCProviderCocoa.cpp; path = libwebrtc/LibWebRTCProviderCocoa.cpp; sourceTree = "<group>"; };
 		41B2A6251EF1BF60002B9D7A /* WebAudioSourceProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebAudioSourceProvider.h; sourceTree = "<group>"; };
 		41B459DA1F4CADB90000F6FD /* ReadableStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadableStream.h; sourceTree = "<group>"; };
 		41B459ED1F55EBC70000F6FD /* ReadableStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReadableStream.cpp; sourceTree = "<group>"; };
@@ -18054,6 +18058,8 @@
 				415747431E38699E00E914D8 /* LibWebRTCMacros.h */,
 				41A1B00D1E52656E007F3769 /* LibWebRTCProvider.cpp */,
 				415747441E38699E00E914D8 /* LibWebRTCProvider.h */,
+				41B28B381F860BD100FB52AC /* LibWebRTCProviderCocoa.cpp */,
+				41B28B361F860BD000FB52AC /* LibWebRTCProviderCocoa.h */,
 				41D7E5551F73085000E26991 /* VideoToolBoxDecoderFactory.cpp */,
 				41D7E5541F73085000E26991 /* VideoToolBoxDecoderFactory.h */,
 				41CAD71C1EA0905700178164 /* VideoToolBoxEncoderFactory.cpp */,
@@ -29129,6 +29135,7 @@
 				417612B01E3A994000C3D81D /* LibWebRTCMediaEndpoint.h in Headers */,
 				417612B21E3A994000C3D81D /* LibWebRTCPeerConnectionBackend.h in Headers */,
 				415747481E3869A700E914D8 /* LibWebRTCProvider.h in Headers */,
+				41B28B3D1F860EF300FB52AC /* LibWebRTCProviderCocoa.h in Headers */,
 				84730D911248F0B300D3A9C9 /* LightSource.h in Headers */,
 				B22279650D00BF220071B782 /* LinearGradientAttributes.h in Headers */,
 				AB31C91E10AE1B8E000C7B92 /* LineClampValue.h in Headers */,
@@ -33201,6 +33208,7 @@
 				417612AF1E3A994000C3D81D /* LibWebRTCMediaEndpoint.cpp in Sources */,
 				417612B11E3A994000C3D81D /* LibWebRTCPeerConnectionBackend.cpp in Sources */,
 				41A1B00E1E526579007F3769 /* LibWebRTCProvider.cpp in Sources */,
+				41B28B391F860BD600FB52AC /* LibWebRTCProviderCocoa.cpp in Sources */,
 				FFB698CC1833EE0D00158A31 /* LineBreaker.cpp in Sources */,
 				FFB698CF183402BB00158A31 /* LineInfo.cpp in Sources */,
 				FFDBC048183D27B700407109 /* LineWidth.cpp in Sources */,

Modified: trunk/Source/WebCore/inspector/InspectorOverlay.cpp (222901 => 222902)


--- trunk/Source/WebCore/inspector/InspectorOverlay.cpp	2017-10-05 07:38:00 UTC (rev 222901)
+++ trunk/Source/WebCore/inspector/InspectorOverlay.cpp	2017-10-05 07:44:35 UTC (rev 222902)
@@ -690,7 +690,7 @@
     PageConfiguration pageConfiguration(
         createEmptyEditorClient(),
         SocketProvider::create(),
-        makeUniqueRef<LibWebRTCProvider>(),
+        LibWebRTCProvider::create(),
         CacheStorageProvider::create()
     );
     fillWithEmptyClients(pageConfiguration);

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


--- trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp	2017-10-05 07:38:00 UTC (rev 222901)
+++ trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp	2017-10-05 07:44:35 UTC (rev 222902)
@@ -26,6 +26,10 @@
 #include "config.h"
 #include "LibWebRTCProvider.h"
 
+#if PLATFORM(COCOA)
+#include "LibWebRTCProviderCocoa.h"
+#endif
+
 #if USE(LIBWEBRTC)
 #include "LibWebRTCAudioModule.h"
 #include "Logging.h"
@@ -43,6 +47,15 @@
 
 namespace WebCore {
 
+UniqueRef<LibWebRTCProvider> LibWebRTCProvider::create()
+{
+#if USE(LIBWEBRTC) && PLATFORM(COCOA)
+    return makeUniqueRef<LibWebRTCProviderCocoa>();
+#else
+    return makeUniqueRef<LibWebRTCProvider>();
+#endif
+}
+
 #if USE(LIBWEBRTC)
 struct PeerConnectionFactoryAndThreads : public rtc::MessageHandler {
     std::unique_ptr<rtc::Thread> networkThread;
@@ -138,17 +151,16 @@
 
     auto& factoryAndThreads = getStaticFactoryAndThreads(m_useNetworkThreadWithSocketServer);
 
-    auto decoderFactory = std::make_unique<VideoToolboxVideoDecoderFactory>();
-    auto encoderFactory = std::make_unique<VideoToolboxVideoEncoderFactory>();
+    m_factory = createPeerConnectionFactory(factoryAndThreads.networkThread.get(), factoryAndThreads.networkThread.get(), factoryAndThreads.audioDeviceModule.get());
 
-    m_decoderFactory = decoderFactory.get();
-    m_encoderFactory = encoderFactory.get();
-
-    m_factory = webrtc::CreatePeerConnectionFactory(factoryAndThreads.networkThread.get(), factoryAndThreads.networkThread.get(), factoryAndThreads.signalingThread.get(), factoryAndThreads.audioDeviceModule.get(), encoderFactory.release(), decoderFactory.release());
-
     return m_factory;
 }
 
+rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> LibWebRTCProvider::createPeerConnectionFactory(rtc::Thread* networkThread, rtc::Thread* signalingThread, LibWebRTCAudioModule* audioModule)
+{
+    return webrtc::CreatePeerConnectionFactory(networkThread, networkThread, signalingThread, audioModule, createEncoderFactory().release(), createDecoderFactory().release());
+}
+
 void LibWebRTCProvider::setPeerConnectionFactory(rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface>&& factory)
 {
     m_factory = webrtc::PeerConnectionFactoryProxy::Create(getStaticFactoryAndThreads(m_useNetworkThreadWithSocketServer).signalingThread.get(), WTFMove(factory));
@@ -188,18 +200,6 @@
 
 #endif // USE(LIBWEBRTC)
 
-void LibWebRTCProvider::setActive(bool value)
-{
-#if USE(LIBWEBRTC)
-    if (m_decoderFactory)
-        m_decoderFactory->setActive(value);
-    if (m_encoderFactory)
-        m_encoderFactory->setActive(value);
-#else
-    UNUSED_PARAM(value);
-#endif
-}
-
 bool LibWebRTCProvider::webRTCAvailable()
 {
 #if USE(LIBWEBRTC)

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


--- trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h	2017-10-05 07:38:00 UTC (rev 222901)
+++ trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h	2017-10-05 07:44:35 UTC (rev 222902)
@@ -27,15 +27,19 @@
 
 #include "LibWebRTCMacros.h"
 #include <wtf/Forward.h>
+#include <wtf/UniqueRef.h>
 
 #if USE(LIBWEBRTC)
 
 #include <webrtc/api/peerconnectioninterface.h>
 #include <webrtc/base/scoped_ref_ptr.h>
+#include <webrtc/media/engine/webrtcvideodecoderfactory.h>
+#include <webrtc/media/engine/webrtcvideoencoderfactory.h>
 
 namespace rtc {
 class NetworkManager;
 class PacketSocketFactory;
+class Thread;
 }
 
 namespace webrtc {
@@ -45,26 +49,26 @@
 
 namespace WebCore {
 
-class VideoToolboxVideoDecoderFactory;
-class VideoToolboxVideoEncoderFactory;
+class LibWebRTCAudioModule;
 
 class WEBCORE_EXPORT LibWebRTCProvider {
 public:
-    LibWebRTCProvider() = default;
+    static UniqueRef<LibWebRTCProvider> create();
+
     virtual ~LibWebRTCProvider() = default;
 
     static bool webRTCAvailable();
 
-    void setActive(bool);
+    virtual void setActive(bool) { };
 
 #if USE(LIBWEBRTC)
-    WEBCORE_EXPORT virtual rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, webrtc::PeerConnectionInterface::RTCConfiguration&&);
+    virtual rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, webrtc::PeerConnectionInterface::RTCConfiguration&&);
 
-    WEBCORE_EXPORT webrtc::PeerConnectionFactoryInterface* factory();
+    webrtc::PeerConnectionFactoryInterface* factory();
 
     // FIXME: Make these methods not static.
-    static WEBCORE_EXPORT void callOnWebRTCNetworkThread(Function<void()>&&);
-    static WEBCORE_EXPORT void callOnWebRTCSignalingThread(Function<void()>&&);
+    static void callOnWebRTCNetworkThread(Function<void()>&&);
+    static void callOnWebRTCSignalingThread(Function<void()>&&);
 
     // Used for mock testing
     void setPeerConnectionFactory(rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface>&&);
@@ -73,15 +77,19 @@
     void enableEnumeratingAllNetworkInterfaces() { m_enableEnumeratingAllNetworkInterfaces = true; }
 
 protected:
-    WEBCORE_EXPORT rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, rtc::NetworkManager&, rtc::PacketSocketFactory&, webrtc::PeerConnectionInterface::RTCConfiguration&&);
+    LibWebRTCProvider() = default;
 
+    rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, rtc::NetworkManager&, rtc::PacketSocketFactory&, webrtc::PeerConnectionInterface::RTCConfiguration&&);
+
+    rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> createPeerConnectionFactory(rtc::Thread* networkThread, rtc::Thread* signalingThread, LibWebRTCAudioModule*);
+    virtual std::unique_ptr<cricket::WebRtcVideoDecoderFactory> createDecoderFactory() { return nullptr; }
+    virtual std::unique_ptr<cricket::WebRtcVideoEncoderFactory> createEncoderFactory() { return nullptr; }
+
     bool m_enableEnumeratingAllNetworkInterfaces { false };
     // FIXME: Remove m_useNetworkThreadWithSocketServer member variable and make it a global.
     bool m_useNetworkThreadWithSocketServer { true };
 
     rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> m_factory;
-    VideoToolboxVideoDecoderFactory* m_decoderFactory { nullptr };
-    VideoToolboxVideoEncoderFactory* m_encoderFactory { nullptr };
 #endif
 };
 

Copied: trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp (from rev 222901, trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.h) (0 => 222902)


--- trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp	                        (rev 0)
+++ trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp	2017-10-05 07:44:35 UTC (rev 222902)
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "LibWebRTCProviderCocoa.h"
+
+#if USE(LIBWEBRTC)
+
+#include "VideoToolBoxDecoderFactory.h"
+#include "VideoToolBoxEncoderFactory.h"
+
+namespace WebCore {
+
+std::unique_ptr<cricket::WebRtcVideoDecoderFactory> LibWebRTCProviderCocoa::createDecoderFactory()
+{
+    ASSERT(!m_decoderFactory);
+    auto decoderFactory = std::make_unique<VideoToolboxVideoDecoderFactory>();
+    m_decoderFactory = decoderFactory.get();
+
+    return WTFMove(decoderFactory);
+}
+
+std::unique_ptr<cricket::WebRtcVideoEncoderFactory> LibWebRTCProviderCocoa::createEncoderFactory()
+{
+    ASSERT(!m_encoderFactory);
+    auto encoderFactory = std::make_unique<VideoToolboxVideoEncoderFactory>();
+    m_encoderFactory = encoderFactory.get();
+
+    return WTFMove(encoderFactory);
+}
+
+void LibWebRTCProviderCocoa::setActive(bool value)
+{
+    if (m_decoderFactory)
+        m_decoderFactory->setActive(value);
+    if (m_encoderFactory)
+        m_encoderFactory->setActive(value);
+}
+
+} // namespace WebCore
+
+#endif

Copied: trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.h (from rev 222901, trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.h) (0 => 222902)


--- trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.h	2017-10-05 07:44:35 UTC (rev 222902)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "LibWebRTCProvider.h"
+
+#if USE(LIBWEBRTC)
+
+namespace WebCore {
+
+class VideoToolboxVideoDecoderFactory;
+class VideoToolboxVideoEncoderFactory;
+
+class WEBCORE_EXPORT LibWebRTCProviderCocoa : public LibWebRTCProvider {
+public:
+    LibWebRTCProviderCocoa() = default;
+
+private:
+    void setActive(bool) final;
+    std::unique_ptr<cricket::WebRtcVideoDecoderFactory> createDecoderFactory() final;
+    std::unique_ptr<cricket::WebRtcVideoEncoderFactory> createEncoderFactory() final;
+
+    VideoToolboxVideoDecoderFactory* m_decoderFactory { nullptr };
+    VideoToolboxVideoEncoderFactory* m_encoderFactory { nullptr };
+};
+
+} // namespace WebCore
+
+#endif

Modified: trunk/Source/WebCore/svg/graphics/SVGImage.cpp (222901 => 222902)


--- trunk/Source/WebCore/svg/graphics/SVGImage.cpp	2017-10-05 07:38:00 UTC (rev 222901)
+++ trunk/Source/WebCore/svg/graphics/SVGImage.cpp	2017-10-05 07:44:35 UTC (rev 222902)
@@ -428,7 +428,7 @@
         PageConfiguration pageConfiguration(
             createEmptyEditorClient(),
             SocketProvider::create(),
-            makeUniqueRef<LibWebRTCProvider>(),
+            LibWebRTCProvider::create(),
             CacheStorageProvider::create()
         );
         fillWithEmptyClients(pageConfiguration);

Modified: trunk/Source/WebKit/ChangeLog (222901 => 222902)


--- trunk/Source/WebKit/ChangeLog	2017-10-05 07:38:00 UTC (rev 222901)
+++ trunk/Source/WebKit/ChangeLog	2017-10-05 07:44:35 UTC (rev 222902)
@@ -1,3 +1,12 @@
+2017-10-05  Youenn Fablet  <you...@apple.com>
+
+        Make LibWebRTCProvider port agnostic
+        https://bugs.webkit.org/show_bug.cgi?id=177747
+
+        Reviewed by Alex Christensen & Alex Garcia.
+
+        * WebProcess/Network/webrtc/LibWebRTCProvider.h: Making sure Mac/iOS provider creates the codec factories.
+
 2017-10-04  Alex Christensen  <achristen...@webkit.org>
 
         Stop linking with WebKitSystemInterface

Modified: trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.h (222901 => 222902)


--- trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.h	2017-10-05 07:38:00 UTC (rev 222901)
+++ trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.h	2017-10-05 07:44:35 UTC (rev 222902)
@@ -25,13 +25,23 @@
 
 #pragma once
 
+#if PLATFORM(COCOA)
+#include <WebCore/LibWebRTCProviderCocoa.h>
+#else
 #include <WebCore/LibWebRTCProvider.h>
+#endif
 
-
 namespace WebKit {
 
 #if USE(LIBWEBRTC)
-class LibWebRTCProvider final : public WebCore::LibWebRTCProvider {
+
+#if PLATFORM(COCOA)
+using LibWebRTCProviderBase = WebCore::LibWebRTCProviderCocoa;
+#else
+using LibWebRTCProviderBase = WebCore::LibWebRTCProvider;
+#endif
+
+class LibWebRTCProvider final : public LibWebRTCProviderBase {
 public:
     LibWebRTCProvider() { m_useNetworkThreadWithSocketServer = false; }
 

Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (222901 => 222902)


--- trunk/Source/WebKitLegacy/mac/ChangeLog	2017-10-05 07:38:00 UTC (rev 222901)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog	2017-10-05 07:44:35 UTC (rev 222902)
@@ -1,3 +1,14 @@
+2017-10-05  Youenn Fablet  <you...@apple.com>
+
+        Make LibWebRTCProvider port agnostic
+        https://bugs.webkit.org/show_bug.cgi?id=177747
+
+        Reviewed by Alex Christensen & Alex Garcia.
+
+        * WebView/WebView.mm:
+        (-[WebView _commonInitializationWithFrameName:groupName:]):
+        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
+
 2017-10-04  Alex Christensen  <achristen...@webkit.org>
 
         Stop linking with WebKitSystemInterface

Modified: trunk/Source/WebKitLegacy/mac/WebView/WebView.mm (222901 => 222902)


--- trunk/Source/WebKitLegacy/mac/WebView/WebView.mm	2017-10-05 07:38:00 UTC (rev 222901)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebView.mm	2017-10-05 07:44:35 UTC (rev 222902)
@@ -1415,7 +1415,7 @@
     PageConfiguration pageConfiguration(
         makeUniqueRef<WebEditorClient>(self),
         SocketProvider::create(),
-        makeUniqueRef<WebCore::LibWebRTCProvider>(),
+        LibWebRTCProvider::create(),
         WebCore::CacheStorageProvider::create()
     );
 #if !PLATFORM(IOS)
@@ -1679,7 +1679,7 @@
     PageConfiguration pageConfiguration(
         makeUniqueRef<WebEditorClient>(self),
         SocketProvider::create(),
-        makeUniqueRef<WebCore::LibWebRTCProvider>(),
+        LibWebRTCProvider::create(),
         WebCore::CacheStorageProvider::create()
     );
     pageConfiguration.chromeClient = new WebChromeClientIOS(self);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to