Changeset 248592 in webkit


Ignore:
Timestamp:
Aug 13, 2019 1:54:27 AM (5 years ago)
Author:
youenn@apple.com
Message:

User Agent and SessionID should be given to NetworkRTCProvider to set up the correct proxy information
https://bugs.webkit.org/show_bug.cgi?id=200583

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Export of some symbols.

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:

Source/WebCore:

Use a socket factory that is specific to the user agent and session ID.
This factory is stored in the media endpoint.
Not testable without proxy infrastructure.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::setConfiguration):

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

(WebCore::LibWebRTCProvider::createPeerConnection):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:

Source/WebKit:

Pass session id and user agent whenever creating a TCP client socket.
Use this information to get the proxy information from NetworkSession and pass it to libwebrtc socket creation.

  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::proxyInfoFromSession):
(WebKit::NetworkRTCProvider::createClientTCPSocket):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:
  • NetworkProcess/webrtc/NetworkRTCProvider.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • NetworkProcess/webrtc/NetworkRTCProvider.mm: Added.

(WebKit::NetworkRTCProvider::proxyInfoFromSession):

  • WebProcess/Network/webrtc/LibWebRTCProvider.cpp:

(WebKit::LibWebRTCProvider::createPeerConnection):
(WebKit::LibWebRTCProvider::createSocketFactory):

  • WebProcess/Network/webrtc/LibWebRTCProvider.h:
  • WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp:

(WebKit::LibWebRTCSocketFactory::createServerTcpSocket):
(WebKit::LibWebRTCSocketFactory::createUdpSocket):
(WebKit::LibWebRTCSocketFactory::createClientTcpSocket):
(WebKit::LibWebRTCSocketFactory::createAsyncResolver):

  • WebProcess/Network/webrtc/LibWebRTCSocketFactory.h:
Location:
trunk/Source
Files:
1 added
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/ThirdParty/libwebrtc/ChangeLog

    r248165 r248592  
     12019-08-13  Youenn Fablet  <youenn@apple.com>
     2
     3        User Agent and SessionID should be given to NetworkRTCProvider to set up the correct proxy information
     4        https://bugs.webkit.org/show_bug.cgi?id=200583
     5
     6        Reviewed by Eric Carlson.
     7
     8        Export of some symbols.
     9
     10        * Configurations/libwebrtc.iOS.exp:
     11        * Configurations/libwebrtc.iOSsim.exp:
     12        * Configurations/libwebrtc.mac.exp:
     13
    1142019-08-02  Youenn Fablet  <youenn@apple.com>
    215
  • trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp

    r247438 r248592  
    249249__ZN3rtc10LogMessage12SetLogOutputENS_15LoggingSeverityEPFvS1_PKcE
    250250__ZN6webrtc13CryptoOptions5NoGcmEv
     251__ZTVN3rtc23InsecureCryptStringImplE
     252__ZN3rtc11CryptStringC1ERKNS_15CryptStringImplE
     253__ZN3rtc13SocketAddressC1ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEi
     254__ZN3rtc11CryptStringD1Ev
     255__ZN3rtc11CryptStringC1ERKS0_
  • trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp

    r247438 r248592  
    250250__ZN3rtc10LogMessage12SetLogOutputENS_15LoggingSeverityEPFvS1_PKcE
    251251__ZN6webrtc13CryptoOptions5NoGcmEv
     252__ZTVN3rtc23InsecureCryptStringImplE
     253__ZN3rtc11CryptStringC1ERKNS_15CryptStringImplE
     254__ZN3rtc13SocketAddressC1ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEi
     255__ZN3rtc11CryptStringD1Ev
     256__ZN3rtc11CryptStringC1ERKS0_
  • trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp

    r247438 r248592  
    250250__ZN3rtc10LogMessage12SetLogOutputENS_15LoggingSeverityEPFvS1_PKcE
    251251__ZN6webrtc13CryptoOptions5NoGcmEv
     252__ZTVN3rtc23InsecureCryptStringImplE
     253__ZN3rtc11CryptStringC1ERKNS_15CryptStringImplE
     254__ZN3rtc13SocketAddressC1ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEi
     255__ZN3rtc11CryptStringD1Ev
     256__ZN3rtc11CryptStringC1ERKS0_
  • trunk/Source/WebCore/ChangeLog

    r248591 r248592  
     12019-08-13  Youenn Fablet  <youenn@apple.com>
     2
     3        User Agent and SessionID should be given to NetworkRTCProvider to set up the correct proxy information
     4        https://bugs.webkit.org/show_bug.cgi?id=200583
     5
     6        Reviewed by Eric Carlson.
     7
     8        Use a socket factory that is specific to the user agent and session ID.
     9        This factory is stored in the media endpoint.
     10        Not testable without proxy infrastructure.
     11
     12        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
     13        (WebCore::LibWebRTCMediaEndpoint::setConfiguration):
     14        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
     15        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
     16        (WebCore::LibWebRTCProvider::createPeerConnection):
     17        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
     18
    1192019-08-12  Ryosuke Niwa  <rniwa@webkit.org>
    220
  • trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp

    r246436 r248592  
    8787
    8888    if (!m_backend) {
    89         m_backend = client.createPeerConnection(*this, WTFMove(configuration));
     89        if (!m_rtcSocketFactory) {
     90            auto& document = downcast<Document>(*m_peerConnectionBackend.connection().scriptExecutionContext());
     91            m_rtcSocketFactory = client.createSocketFactory(document.sessionID(), document.userAgent(document.url()));
     92        }
     93        m_backend = client.createPeerConnection(*this, m_rtcSocketFactory.get(), WTFMove(configuration));
    9094        return !!m_backend;
    9195    }
  • trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h

    r244736 r248592  
    199199    HashMap<String, rtc::scoped_refptr<webrtc::MediaStreamInterface>> m_localStreams;
    200200
     201    std::unique_ptr<rtc::PacketSocketFactory> m_rtcSocketFactory;
    201202#if !RELEASE_LOG_DISABLED
    202203    int64_t m_statsFirstDeliveredTimestamp { 0 };
  • trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp

    r247438 r248592  
    282282}
    283283
    284 rtc::scoped_refptr<webrtc::PeerConnectionInterface> LibWebRTCProvider::createPeerConnection(webrtc::PeerConnectionObserver& observer, webrtc::PeerConnectionInterface::RTCConfiguration&& configuration)
     284rtc::scoped_refptr<webrtc::PeerConnectionInterface> LibWebRTCProvider::createPeerConnection(webrtc::PeerConnectionObserver& observer, rtc::PacketSocketFactory*, webrtc::PeerConnectionInterface::RTCConfiguration&& configuration)
    285285{
    286286    // Default WK1 implementation.
  • trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h

    r247438 r248592  
    9292
    9393#if USE(LIBWEBRTC)
    94     virtual rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, webrtc::PeerConnectionInterface::RTCConfiguration&&);
     94    virtual rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, rtc::PacketSocketFactory*, webrtc::PeerConnectionInterface::RTCConfiguration&&);
    9595
    9696    webrtc::PeerConnectionFactoryInterface* factory();
     
    118118    void setEnableLogging(bool);
    119119    void setEnableWebRTCEncryption(bool);
     120
     121    virtual std::unique_ptr<rtc::PacketSocketFactory> createSocketFactory(PAL::SessionID, String&& /* userAgent */) { return nullptr; }
    120122
    121123protected:
  • trunk/Source/WebKit/ChangeLog

    r248585 r248592  
     12019-08-13  Youenn Fablet  <youenn@apple.com>
     2
     3        User Agent and SessionID should be given to NetworkRTCProvider to set up the correct proxy information
     4        https://bugs.webkit.org/show_bug.cgi?id=200583
     5
     6        Reviewed by Eric Carlson.
     7
     8        Pass session id and user agent whenever creating a TCP client socket.
     9        Use this information to get the proxy information from NetworkSession and pass it to libwebrtc socket creation.
     10
     11        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
     12        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
     13        (WebKit::NetworkRTCProvider::proxyInfoFromSession):
     14        (WebKit::NetworkRTCProvider::createClientTCPSocket):
     15        * NetworkProcess/webrtc/NetworkRTCProvider.h:
     16        * NetworkProcess/webrtc/NetworkRTCProvider.messages.in:
     17        * WebKit.xcodeproj/project.pbxproj:
     18        * NetworkProcess/webrtc/NetworkRTCProvider.mm: Added.
     19        (WebKit::NetworkRTCProvider::proxyInfoFromSession):
     20        * WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
     21        (WebKit::LibWebRTCProvider::createPeerConnection):
     22        (WebKit::LibWebRTCProvider::createSocketFactory):
     23        * WebProcess/Network/webrtc/LibWebRTCProvider.h:
     24        * WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp:
     25        (WebKit::LibWebRTCSocketFactory::createServerTcpSocket):
     26        (WebKit::LibWebRTCSocketFactory::createUdpSocket):
     27        (WebKit::LibWebRTCSocketFactory::createClientTcpSocket):
     28        (WebKit::LibWebRTCSocketFactory::createAsyncResolver):
     29        * WebProcess/Network/webrtc/LibWebRTCSocketFactory.h:
     30
    1312019-08-12  Chris Dumez  <cdumez@apple.com>
    232
  • trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h

    r247831 r248592  
    8282    DMFWebsitePolicyMonitor *deviceManagementPolicyMonitor();
    8383
     84    CFDictionaryRef proxyConfiguration() const { return m_proxyConfiguration.get(); }
     85
    8486private:
    8587    void invalidateAndCancel() override;
  • trunk/Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.cpp

    r246797 r248592  
    130130}
    131131
    132 void NetworkRTCProvider::createClientTCPSocket(uint64_t identifier, const RTCNetwork::SocketAddress& localAddress, const RTCNetwork::SocketAddress& remoteAddress, int options)
    133 {
    134     callOnRTCNetworkThread([this, identifier, localAddress = RTCNetwork::isolatedCopy(localAddress.value), remoteAddress = RTCNetwork::isolatedCopy(remoteAddress.value), options]() {
    135         std::unique_ptr<rtc::AsyncPacketSocket> socket(m_packetSocketFactory->CreateClientTcpSocket(localAddress, remoteAddress, { }, { }, options));
     132#if !PLATFORM(COCOA)
     133rtc::ProxyInfo NetworkRTCProvider::proxyInfoFromSession(const RTCNetwork::SocketAddress&, NetworkSession&)
     134{
     135    return { };
     136}
     137#endif
     138
     139void NetworkRTCProvider::createClientTCPSocket(uint64_t identifier, const RTCNetwork::SocketAddress& localAddress, const RTCNetwork::SocketAddress& remoteAddress, PAL::SessionID sessionID, String&& userAgent, int options)
     140{
     141    auto* session = m_connection->networkProcess().networkSession(sessionID);
     142    if (!session) {
     143        m_connection->connection().send(Messages::WebRTCSocket::SignalClose(1), identifier);
     144        return;
     145    }
     146    callOnRTCNetworkThread([this, identifier, localAddress = RTCNetwork::isolatedCopy(localAddress.value), remoteAddress = RTCNetwork::isolatedCopy(remoteAddress.value), proxyInfo = proxyInfoFromSession(remoteAddress, *session), userAgent = WTFMove(userAgent).isolatedCopy(), options]() {
     147        std::unique_ptr<rtc::AsyncPacketSocket> socket(m_packetSocketFactory->CreateClientTcpSocket(localAddress, remoteAddress, proxyInfo, userAgent.utf8().data(), options));
    136148        createSocket(identifier, WTFMove(socket), LibWebRTCSocketClient::Type::ClientTCP);
    137149    });
  • trunk/Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.h

    r237075 r248592  
    3232#include "RTCNetwork.h"
    3333#include <WebCore/LibWebRTCMacros.h>
     34#include <pal/SessionID.h>
    3435#include <webrtc/p2p/base/basicpacketsocketfactory.h>
    3536#include <webrtc/rtc_base/third_party/sigslot/sigslot.h>
     
    4849class NetworkRTCResolver;
    4950class NetworkRTCSocket;
     51class NetworkSession;
    5052
    5153class NetworkRTCProvider : public ThreadSafeRefCounted<NetworkRTCProvider>, public rtc::MessageHandler {
     
    7678
    7779    void createUDPSocket(uint64_t, const RTCNetwork::SocketAddress&, uint16_t, uint16_t);
    78     void createClientTCPSocket(uint64_t, const RTCNetwork::SocketAddress&, const RTCNetwork::SocketAddress&, int);
     80    void createClientTCPSocket(uint64_t, const RTCNetwork::SocketAddress&, const RTCNetwork::SocketAddress&, PAL::SessionID, String&& userAgent, int);
    7981    void createServerTCPSocket(uint64_t, const RTCNetwork::SocketAddress&, uint16_t minPort, uint16_t maxPort, int);
    8082    void wrapNewTCPConnection(uint64_t identifier, uint64_t newConnectionSocketIdentifier);
     
    8890
    8991    void OnMessage(rtc::Message*);
     92
     93    static rtc::ProxyInfo proxyInfoFromSession(const RTCNetwork::SocketAddress&, NetworkSession&);
    9094
    9195    HashMap<uint64_t, std::unique_ptr<NetworkRTCResolver>> m_resolvers;
  • trunk/Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.messages.in

    r213104 r248592  
    2626    CreateUDPSocket(int identifier, WebKit::RTCNetwork::SocketAddress localAddress, uint16_t minPort, uint16_t maxPort)
    2727    CreateServerTCPSocket(int identifier, WebKit::RTCNetwork::SocketAddress localAddress, uint16_t minPort, uint16_t maxPort, int options)
    28     CreateClientTCPSocket(int identifier, WebKit::RTCNetwork::SocketAddress localAddress, WebKit::RTCNetwork::SocketAddress remoteAddress, int options)
     28    CreateClientTCPSocket(int identifier, WebKit::RTCNetwork::SocketAddress localAddress, WebKit::RTCNetwork::SocketAddress remoteAddress, PAL::SessionID sessionID, String userAgent, int options)
    2929    CreateResolver(uint64_t identifier, String address)
    3030    StopResolver(uint64_t identifier)
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r248422 r248592  
    884884                414DEDD71F9EDDE50047C40D /* ServiceWorkerProcessProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 414DEDD51F9EDDDF0047C40D /* ServiceWorkerProcessProxy.h */; };
    885885                4157E4B020E2ECDF00A6C0D7 /* com.google.o1dbrowserplugin.sb in Copy Plug-in Sandbox Profiles */ = {isa = PBXBuildFile; fileRef = 4157E4AF20E2EC9800A6C0D7 /* com.google.o1dbrowserplugin.sb */; };
     886                4176901422FDD41B00B1576D /* NetworkRTCProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4176901322FDD41B00B1576D /* NetworkRTCProvider.mm */; };
    886887                417915AF2256BB7500D6F97E /* WebSocketChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 417915AD2256BB7400D6F97E /* WebSocketChannel.h */; };
    887888                417915B12256C0D600D6F97E /* WebSocketChannelManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 417915B02256C0D600D6F97E /* WebSocketChannelManager.h */; };
     
    31283129                4157853021276B6F00DD3800 /* copy-webcontent-resources-to-private-headers.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "copy-webcontent-resources-to-private-headers.sh"; sourceTree = "<group>"; };
    31293130                4157E4AF20E2EC9800A6C0D7 /* com.google.o1dbrowserplugin.sb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = com.google.o1dbrowserplugin.sb; sourceTree = "<group>"; };
     3131                4176901322FDD41B00B1576D /* NetworkRTCProvider.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetworkRTCProvider.mm; sourceTree = "<group>"; };
    31303132                417915AC2256BB7400D6F97E /* WebSocketChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocketChannel.cpp; path = Network/WebSocketChannel.cpp; sourceTree = "<group>"; };
    31313133                417915AD2256BB7400D6F97E /* WebSocketChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketChannel.h; path = Network/WebSocketChannel.h; sourceTree = "<group>"; };
     
    65516553                                41DC45941E3D6E1E00B11F51 /* NetworkRTCProvider.h */,
    65526554                                41DC45981E3D6ED600B11F51 /* NetworkRTCProvider.messages.in */,
     6555                                4176901322FDD41B00B1576D /* NetworkRTCProvider.mm */,
    65536556                                4112B5471F9FD3AB00E67875 /* NetworkRTCResolver.cpp */,
    65546557                                4112B5481F9FD3AC00E67875 /* NetworkRTCResolver.h */,
     
    1114411147                                E152551A17011819003D7ADB /* NetworkResourceLoaderMessageReceiver.cpp in Sources */,
    1114511148                                51F060E11654318500F3281E /* NetworkRTCMonitorMessageReceiver.cpp in Sources */,
     11149                                4176901422FDD41B00B1576D /* NetworkRTCProvider.mm in Sources */,
    1114611150                                51F060E11654318500F3282E /* NetworkRTCProviderMessageReceiver.cpp in Sources */,
    1114711151                                51F060E11654318500F3281D /* NetworkRTCSocketMessageReceiver.cpp in Sources */,
  • trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.cpp

    r237568 r248592  
    4545};
    4646
    47 rtc::scoped_refptr<webrtc::PeerConnectionInterface> LibWebRTCProvider::createPeerConnection(webrtc::PeerConnectionObserver& observer, webrtc::PeerConnectionInterface::RTCConfiguration&& configuration)
     47rtc::scoped_refptr<webrtc::PeerConnectionInterface> LibWebRTCProvider::createPeerConnection(webrtc::PeerConnectionObserver& observer, rtc::PacketSocketFactory* socketFactory, webrtc::PeerConnectionInterface::RTCConfiguration&& configuration)
    4848{
    49     return WebCore::LibWebRTCProvider::createPeerConnection(observer, WebProcess::singleton().libWebRTCNetwork().monitor(), WebProcess::singleton().libWebRTCNetwork().socketFactory(), WTFMove(configuration), std::make_unique<AsyncResolverFactory>());
     49    return WebCore::LibWebRTCProvider::createPeerConnection(observer, WebProcess::singleton().libWebRTCNetwork().monitor(), *socketFactory, WTFMove(configuration), std::make_unique<AsyncResolverFactory>());
    5050}
    5151
     
    6565}
    6666
     67class RTCSocketFactory final : public rtc::PacketSocketFactory {
     68public:
     69    RTCSocketFactory(PAL::SessionID sessionID, String&& userAgent)
     70        : m_sessionID(sessionID)
     71        , m_userAgent(WTFMove(userAgent))
     72    {
     73    }
     74
     75private:
     76    rtc::AsyncPacketSocket* CreateUdpSocket(const rtc::SocketAddress& address, uint16_t minPort, uint16_t maxPort) final
     77    {
     78        return factory().createUdpSocket(address, minPort, maxPort);
     79    }
     80
     81    rtc::AsyncPacketSocket* CreateServerTcpSocket(const rtc::SocketAddress& address, uint16_t minPort, uint16_t maxPort, int options) final
     82    {
     83        return factory().createServerTcpSocket(address, minPort, maxPort, options);
     84    }
     85
     86    rtc::AsyncPacketSocket* CreateClientTcpSocket(const rtc::SocketAddress& localAddress, const rtc::SocketAddress& remoteAddress, const rtc::ProxyInfo&, const std::string&, int options) final
     87    {
     88        return factory().createClientTcpSocket(localAddress, remoteAddress, m_sessionID, String { m_userAgent }, options);
     89    }
     90
     91    rtc::AsyncResolverInterface* CreateAsyncResolver() final
     92    {
     93        return factory().createAsyncResolver();
     94    }
     95
     96    LibWebRTCSocketFactory& factory() { return WebProcess::singleton().libWebRTCNetwork().socketFactory(); }
     97
     98private:
     99    PAL::SessionID m_sessionID;
     100    String m_userAgent;
     101};
     102
     103std::unique_ptr<rtc::PacketSocketFactory> LibWebRTCProvider::createSocketFactory(PAL::SessionID sessionID, String&& userAgent)
     104{
     105    return std::make_unique<RTCSocketFactory>(sessionID, WTFMove(userAgent));
     106}
     107
    67108} // namespace WebKit
    68109
  • trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.h

    r238161 r248592  
    5151
    5252private:
    53     rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, webrtc::PeerConnectionInterface::RTCConfiguration&&) final;
     53    std::unique_ptr<rtc::PacketSocketFactory> createSocketFactory(PAL::SessionID, String&& /* userAgent */) final;
     54
     55    rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, rtc::PacketSocketFactory*, webrtc::PeerConnectionInterface::RTCConfiguration&&) final;
    5456
    5557    void unregisterMDNSNames(uint64_t documentIdentifier) final;
  • trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp

    r232420 r248592  
    4949}
    5050
    51 rtc::AsyncPacketSocket* LibWebRTCSocketFactory::CreateServerTcpSocket(const rtc::SocketAddress& address, uint16_t minPort, uint16_t maxPort, int options)
     51rtc::AsyncPacketSocket* LibWebRTCSocketFactory::createServerTcpSocket(const rtc::SocketAddress& address, uint16_t minPort, uint16_t maxPort, int options)
    5252{
    5353    auto socket = std::make_unique<LibWebRTCSocket>(*this, ++s_uniqueSocketIdentifier, LibWebRTCSocket::Type::ServerTCP, address, rtc::SocketAddress());
     
    6565}
    6666
    67 rtc::AsyncPacketSocket* LibWebRTCSocketFactory::CreateUdpSocket(const rtc::SocketAddress& address, uint16_t minPort, uint16_t maxPort)
     67rtc::AsyncPacketSocket* LibWebRTCSocketFactory::createUdpSocket(const rtc::SocketAddress& address, uint16_t minPort, uint16_t maxPort)
    6868{
    6969    auto socket = std::make_unique<LibWebRTCSocket>(*this, ++s_uniqueSocketIdentifier, LibWebRTCSocket::Type::UDP, address, rtc::SocketAddress());
     
    7979}
    8080
    81 rtc::AsyncPacketSocket* LibWebRTCSocketFactory::CreateClientTcpSocket(const rtc::SocketAddress& localAddress, const rtc::SocketAddress& remoteAddress, const rtc::ProxyInfo&, const std::string&, int options)
     81rtc::AsyncPacketSocket* LibWebRTCSocketFactory::createClientTcpSocket(const rtc::SocketAddress& localAddress, const rtc::SocketAddress& remoteAddress, PAL::SessionID sessionID, String&& userAgent, int options)
    8282{
    8383    auto socket = std::make_unique<LibWebRTCSocket>(*this, ++s_uniqueSocketIdentifier, LibWebRTCSocket::Type::ClientTCP, localAddress, remoteAddress);
     
    8585    m_sockets.set(socket->identifier(), socket.get());
    8686
    87     callOnMainThread([identifier = socket->identifier(), localAddress = prepareSocketAddress(localAddress, m_disableNonLocalhostConnections), remoteAddress = prepareSocketAddress(remoteAddress, m_disableNonLocalhostConnections), options]() {
    88         if (!WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkRTCProvider::CreateClientTCPSocket(identifier, RTCNetwork::SocketAddress(localAddress), RTCNetwork::SocketAddress(remoteAddress), options), 0)) {
     87    callOnMainThread([identifier = socket->identifier(), localAddress = prepareSocketAddress(localAddress, m_disableNonLocalhostConnections), remoteAddress = prepareSocketAddress(remoteAddress, m_disableNonLocalhostConnections), sessionID, userAgent = WTFMove(userAgent).isolatedCopy(), options]() {
     88        if (!WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkRTCProvider::CreateClientTCPSocket(identifier, RTCNetwork::SocketAddress(localAddress), RTCNetwork::SocketAddress(remoteAddress), sessionID, userAgent, options), 0)) {
    8989            // FIXME: Set error back to socket
    9090            return;
     
    116116}
    117117
    118 rtc::AsyncResolverInterface* LibWebRTCSocketFactory::CreateAsyncResolver()
     118rtc::AsyncResolverInterface* LibWebRTCSocketFactory::createAsyncResolver()
    119119{
    120120    auto resolver = std::make_unique<LibWebRTCResolver>(++s_uniqueResolverIdentifier);
  • trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocketFactory.h

    r237568 r248592  
    3737namespace WebKit {
    3838
    39 class LibWebRTCSocketFactory final : public rtc::PacketSocketFactory {
     39class LibWebRTCSocketFactory {
    4040public:
    4141    LibWebRTCSocketFactory() { }
     
    5252    void disableNonLocalhostConnections() { m_disableNonLocalhostConnections = true; }
    5353
    54     rtc::AsyncResolverInterface* createAsyncResolver() { return CreateAsyncResolver(); }
     54    rtc::AsyncPacketSocket* createUdpSocket(const rtc::SocketAddress&, uint16_t minPort, uint16_t maxPort);
     55    rtc::AsyncPacketSocket* createServerTcpSocket(const rtc::SocketAddress&, uint16_t minPort, uint16_t maxPort, int options);
     56    rtc::AsyncPacketSocket* createClientTcpSocket(const rtc::SocketAddress& localAddress, const rtc::SocketAddress& remoteAddress, PAL::SessionID, String&& userAgent, int options);
     57    rtc::AsyncResolverInterface* createAsyncResolver();
    5558
    5659private:
    57     rtc::AsyncPacketSocket* CreateUdpSocket(const rtc::SocketAddress&, uint16_t minPort, uint16_t maxPort) final;
    58     rtc::AsyncPacketSocket* CreateServerTcpSocket(const rtc::SocketAddress&, uint16_t min_port, uint16_t max_port, int options) final;
    59     rtc::AsyncPacketSocket* CreateClientTcpSocket(const rtc::SocketAddress& localAddress, const rtc::SocketAddress& remoteAddress, const rtc::ProxyInfo&, const std::string&, int options);
    60     rtc::AsyncResolverInterface* CreateAsyncResolver() final;
    6160
    6261    // We cannot own sockets, clients of the factory are responsible to free them.
Note: See TracChangeset for help on using the changeset viewer.