Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b5877b229ffa2ae13da637a0fd8910e30ffafc29
      
https://github.com/WebKit/WebKit/commit/b5877b229ffa2ae13da637a0fd8910e30ffafc29
  Author: Youenn Fablet <[email protected]>
  Date:   2024-07-01 (Mon, 01 Jul 2024)

  Changed paths:
    A LayoutTests/http/wpt/webrtc/resources/cacheable-iframe.py
    A LayoutTests/http/wpt/webrtc/rtcNetworkInterface-expected.txt
    A LayoutTests/http/wpt/webrtc/rtcNetworkInterface.html
    M LayoutTests/platform/glib/TestExpectations
    M Source/WebCore/Modules/mediastream/RTCNetworkManager.h
    M Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h
    M Source/WebCore/testing/Internals.cpp
    M Source/WebCore/testing/Internals.h
    M Source/WebCore/testing/Internals.idl
    M Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.cpp
    M Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.h
    M Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.messages.in
    M Source/WebKit/NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.h
    M Source/WebKit/NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.mm
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetworkManager.cpp
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetworkManager.h

  Log Message:
  -----------
  Allow WebRTC network traffic on the interface used to load the document main 
resource even if it is not the default interface
https://bugs.webkit.org/show_bug.cgi?id=275986
rdar://problem/130748643

Reviewed by Eric Carlson.

With split VPN, HTTP trafic may go through either default interface or the VPN 
interface.
But WebRTC UDP traffic will only go through the default interface as we do not 
enumerate all interfaces even post getUserMedia.

To improve the support of split VPN, we use the following heuristic:
- We continue allow using the default network interface.
- We get the interface that would be used to create a TCP connection to the 
document's host.

In case of no VPN, or full VPN, the same interface will be used.
In case of split VPN, two interfaces may be used.
This only happens post getUserMedia and is controlled by 
EnumeratingVisibleNetworkInterfacesEnabled flag.

* LayoutTests/http/wpt/webrtc/resources/cacheable-iframe.py: Added.
(main):
* LayoutTests/http/wpt/webrtc/rtcNetworkInterface-expected.txt: Added.
* LayoutTests/http/wpt/webrtc/rtcNetworkInterface.html: Added.
* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/Modules/mediastream/RTCNetworkManager.h:
* Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::rtcNetworkInterfaceName const):
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:
* Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.cpp:
(WebKit::NetworkRTCProvider::getInterfaceName):
* Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.h:
* Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.messages.in:
* Source/WebKit/NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.h:
* Source/WebKit/NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.mm:
(WebKit::createNWConnection):
(WebKit::NetworkRTCTCPSocketCocoa::NetworkRTCTCPSocketCocoa):
(WebKit::NetworkRTCTCPSocketCocoa::getInterfaceName):
* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetworkManager.cpp:
(WebKit::LibWebRTCNetworkManager::networksChanged):
(WebKit::LibWebRTCNetworkManager::interfaceNameForTesting const):
* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetworkManager.h:

Canonical link: https://commits.webkit.org/280535@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to