tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 3e54277cb863766f707714adc6079e66093ca3c2
parent 692a56b0257a84dcab290d28b21de1a7d4bcdeee
Author: Dan Baker <dbaker@mozilla.com>
Date:   Mon,  1 Dec 2025 20:26:25 -0700

Bug 2000941 - Vendor libwebrtc from 86a538129d

Upstream commit: https://webrtc.googlesource.com/src/+/86a538129db71b3ec61179d5d05c56786af8937d
    Propogate Environment through TestEchoServer to AsyncTCPSocket

    This removes the last usage of the AsyncTCPSocket constructor that
    doesn't provide Environment

    restructure AsyncTCPSocket unittest removing usage of bare 'new' and
    fixture

    Bug: webrtc:42223992
    Change-Id: I6da93cbdd2339be81132e2d877d9128c2032ef96
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/409180
    Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
    Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
    Reviewed-by: Harald Alvestrand <hta@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45645}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/moz-patch-stack/s0001.patch | 2+-
Mthird_party/libwebrtc/moz-patch-stack/s0027.patch | 16++++++++--------
Mthird_party/libwebrtc/moz-patch-stack/s0053.patch | 2+-
Mthird_party/libwebrtc/moz-patch-stack/s0091.patch | 2+-
Mthird_party/libwebrtc/moz-patch-stack/s0094.patch | 6+++---
Mthird_party/libwebrtc/moz-patch-stack/s0102.patch | 4++--
Mthird_party/libwebrtc/moz-patch-stack/s0107.patch | 8++++----
Mthird_party/libwebrtc/rtc_base/BUILD.gn | 2++
Mthird_party/libwebrtc/rtc_base/async_tcp_socket.cc | 3---
Mthird_party/libwebrtc/rtc_base/async_tcp_socket.h | 5+----
Mthird_party/libwebrtc/rtc_base/async_tcp_socket_unittest.cc | 46++++++++++++++++++++++++----------------------
Mthird_party/libwebrtc/rtc_base/test_client_unittest.cc | 2+-
Mthird_party/libwebrtc/rtc_base/test_echo_server.cc | 10+++++++---
Mthird_party/libwebrtc/rtc_base/test_echo_server.h | 15+++++++++++----
15 files changed, 68 insertions(+), 59 deletions(-)

diff --git a/third_party/libwebrtc/README.mozilla.last-vendor b/third_party/libwebrtc/README.mozilla.last-vendor @@ -1,4 +1,4 @@ # ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc -libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-12-02T03:23:54.849472+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-12-02T03:26:12.124156+00:00. # base of lastest vendoring -83ffd8d236 +86a538129d diff --git a/third_party/libwebrtc/moz-patch-stack/s0001.patch b/third_party/libwebrtc/moz-patch-stack/s0001.patch @@ -1392,7 +1392,7 @@ index 5ccc3d7d38..cd957416bc 100644 const bool enable_svc_for_simulcast_; std::optional<SimulcastToSvcConverter> simulcast_to_svc_converter_; diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn -index 4d4014adc9..8cbca254d4 100644 +index bcf754532a..4ee3f2e5da 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -449,6 +449,12 @@ rtc_library("logging") { diff --git a/third_party/libwebrtc/moz-patch-stack/s0027.patch b/third_party/libwebrtc/moz-patch-stack/s0027.patch @@ -1008,7 +1008,7 @@ index 39aa39a41c..b26e30e8bb 100644 "/config/external/nspr", "/nsprpub/lib/ds", diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn -index 8cbca254d4..d8a0a3630c 100644 +index 4ee3f2e5da..7c81cb7e11 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -326,6 +326,7 @@ rtc_library("sample_counter") { @@ -1128,7 +1128,7 @@ index 8cbca254d4..d8a0a3630c 100644 if (rtc_include_tests) { rtc_library("async_packet_socket_unittest") { -@@ -1463,6 +1481,7 @@ rtc_library("data_rate_limiter") { +@@ -1464,6 +1482,7 @@ rtc_library("data_rate_limiter") { } rtc_library("unique_id_generator") { @@ -1136,7 +1136,7 @@ index 8cbca254d4..d8a0a3630c 100644 sources = [ "unique_id_generator.cc", "unique_id_generator.h", -@@ -1480,6 +1499,7 @@ rtc_library("unique_id_generator") { +@@ -1481,6 +1500,7 @@ rtc_library("unique_id_generator") { "//third_party/abseil-cpp/absl/strings:string_view", ] } @@ -1144,7 +1144,7 @@ index 8cbca254d4..d8a0a3630c 100644 rtc_library("crc32") { sources = [ -@@ -1511,6 +1531,7 @@ rtc_library("stream") { +@@ -1512,6 +1532,7 @@ rtc_library("stream") { } rtc_library("rtc_certificate_generator") { @@ -1152,7 +1152,7 @@ index 8cbca254d4..d8a0a3630c 100644 visibility = [ "*" ] sources = [ "rtc_certificate_generator.cc", -@@ -1525,6 +1546,7 @@ rtc_library("rtc_certificate_generator") { +@@ -1526,6 +1547,7 @@ rtc_library("rtc_certificate_generator") { "//third_party/abseil-cpp/absl/functional:any_invocable", ] } @@ -1160,7 +1160,7 @@ index 8cbca254d4..d8a0a3630c 100644 rtc_source_set("ssl_header") { visibility = [ "*" ] -@@ -1581,6 +1603,7 @@ rtc_library("crypto_random") { +@@ -1582,6 +1604,7 @@ rtc_library("crypto_random") { } rtc_library("ssl") { @@ -1168,7 +1168,7 @@ index 8cbca254d4..d8a0a3630c 100644 visibility = [ "*" ] sources = [ "openssl_key_pair.cc", -@@ -1653,6 +1676,7 @@ rtc_library("ssl") { +@@ -1654,6 +1677,7 @@ rtc_library("ssl") { deps += [ ":win32" ] } } @@ -1176,7 +1176,7 @@ index 8cbca254d4..d8a0a3630c 100644 rtc_library("ssl_adapter") { visibility = [ "*" ] -@@ -2379,7 +2403,7 @@ if (rtc_include_tests) { +@@ -2381,7 +2405,7 @@ if (rtc_include_tests) { } } diff --git a/third_party/libwebrtc/moz-patch-stack/s0053.patch b/third_party/libwebrtc/moz-patch-stack/s0053.patch @@ -29,7 +29,7 @@ index 7db75d5fd3..d0feb5007c 100644 rtc_library("task_queue_test") { visibility = [ "*" ] diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn -index d8a0a3630c..938a1d24d8 100644 +index 7c81cb7e11..4fcb24dac9 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -664,10 +664,14 @@ if (is_mac || is_ios) { diff --git a/third_party/libwebrtc/moz-patch-stack/s0091.patch b/third_party/libwebrtc/moz-patch-stack/s0091.patch @@ -13,7 +13,7 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/4e7b3c485e549e7e3 1 file changed, 6 insertions(+) diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn -index 938a1d24d8..ef3ea9f86a 100644 +index 4fcb24dac9..cfd568a547 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -992,6 +992,12 @@ rtc_library("threading") { diff --git a/third_party/libwebrtc/moz-patch-stack/s0094.patch b/third_party/libwebrtc/moz-patch-stack/s0094.patch @@ -9,10 +9,10 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/ee2f06666bcc6d22c 1 file changed, 2 insertions(+) diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn -index ef3ea9f86a..322928e857 100644 +index cfd568a547..ac5509181c 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn -@@ -1689,6 +1689,7 @@ if (!build_with_mozilla) { +@@ -1690,6 +1690,7 @@ if (!build_with_mozilla) { } rtc_library("ssl_adapter") { @@ -20,7 +20,7 @@ index ef3ea9f86a..322928e857 100644 visibility = [ "*" ] sources = [ "openssl_adapter.cc", -@@ -1737,6 +1738,7 @@ rtc_library("ssl_adapter") { +@@ -1738,6 +1739,7 @@ rtc_library("ssl_adapter") { configs += [ "..:external_ssl_library" ] } } diff --git a/third_party/libwebrtc/moz-patch-stack/s0102.patch b/third_party/libwebrtc/moz-patch-stack/s0102.patch @@ -616,7 +616,7 @@ index 4c837bb838..96fbcc9539 100644 if (rtc_build_libsrtp) { diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn -index 322928e857..ea0fa53396 100644 +index ac5509181c..9a77523e17 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -9,8 +9,8 @@ @@ -630,7 +630,7 @@ index 322928e857..ea0fa53396 100644 } rtc_source_set("protobuf_utils") { -@@ -1931,8 +1931,8 @@ if (!rtc_rusty_base64) { +@@ -1933,8 +1933,8 @@ if (!rtc_rusty_base64) { ] } } else { diff --git a/third_party/libwebrtc/moz-patch-stack/s0107.patch b/third_party/libwebrtc/moz-patch-stack/s0107.patch @@ -116,10 +116,10 @@ index ecbb7eae7e..a13fe19324 100644 public_configs = [] if (!build_with_chromium) { diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn -index ea0fa53396..78476b68a6 100644 +index 9a77523e17..3b7ad9be91 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn -@@ -1568,6 +1568,7 @@ rtc_source_set("ssl_header") { +@@ -1569,6 +1569,7 @@ rtc_source_set("ssl_header") { } rtc_library("digest") { @@ -127,7 +127,7 @@ index ea0fa53396..78476b68a6 100644 visibility = [ "*" ] sources = [ "message_digest.cc", -@@ -1589,8 +1590,10 @@ rtc_library("digest") { +@@ -1590,8 +1591,10 @@ rtc_library("digest") { configs += [ "..:external_ssl_library" ] } } @@ -138,7 +138,7 @@ index ea0fa53396..78476b68a6 100644 visibility = [ "*" ] sources = [ "crypto_random.cc", -@@ -1611,6 +1614,7 @@ rtc_library("crypto_random") { +@@ -1612,6 +1615,7 @@ rtc_library("crypto_random") { configs += [ "..:external_ssl_library" ] } } diff --git a/third_party/libwebrtc/rtc_base/BUILD.gn b/third_party/libwebrtc/rtc_base/BUILD.gn @@ -1448,6 +1448,7 @@ if (rtc_include_tests) { ":net_helpers", ":rtc_base_tests_utils", ":socket", + "../test:create_test_environment", "../test:test_support", "third_party/sigslot", ] @@ -1863,6 +1864,7 @@ rtc_library("rtc_base_tests_utils") { "../api:refcountedbase", "../api:scoped_refptr", "../api:sequence_checker", + "../api/environment", "../api/task_queue", "../api/task_queue:pending_task_safety_flag", "../api/units:time_delta", diff --git a/third_party/libwebrtc/rtc_base/async_tcp_socket.cc b/third_party/libwebrtc/rtc_base/async_tcp_socket.cc @@ -237,9 +237,6 @@ AsyncTCPSocket::AsyncTCPSocket(const Environment& /*env*/, absl_nonnull std::unique_ptr<Socket> socket) : AsyncTCPSocketBase(std::move(socket), kBufSize) {} -AsyncTCPSocket::AsyncTCPSocket(Socket* socket) - : AsyncTCPSocketBase(absl::WrapUnique(socket), kBufSize) {} - int AsyncTCPSocket::Send(const void* pv, size_t cb, const AsyncSocketPacketOptions& options) { diff --git a/third_party/libwebrtc/rtc_base/async_tcp_socket.h b/third_party/libwebrtc/rtc_base/async_tcp_socket.h @@ -85,10 +85,7 @@ class AsyncTCPSocket : public AsyncTCPSocketBase { public: AsyncTCPSocket(const Environment& env, absl_nonnull std::unique_ptr<Socket> socket); - // TODO: bugs.webrtc.org/42223992 - Delete or deprecate constructor below when - // WebRTC is updated to use constructor that provides Environment. - explicit AsyncTCPSocket(Socket* socket); - ~AsyncTCPSocket() override {} + ~AsyncTCPSocket() override = default; AsyncTCPSocket(const AsyncTCPSocket&) = delete; AsyncTCPSocket& operator=(const AsyncTCPSocket&) = delete; diff --git a/third_party/libwebrtc/rtc_base/async_tcp_socket_unittest.cc b/third_party/libwebrtc/rtc_base/async_tcp_socket_unittest.cc @@ -11,40 +11,42 @@ #include "rtc_base/async_tcp_socket.h" #include <memory> +#include <utility> #include "rtc_base/async_packet_socket.h" #include "rtc_base/net_helpers.h" #include "rtc_base/socket.h" #include "rtc_base/third_party/sigslot/sigslot.h" #include "rtc_base/virtual_socket_server.h" +#include "test/create_test_environment.h" +#include "test/gmock.h" #include "test/gtest.h" namespace webrtc { +namespace { -class AsyncTCPSocketTest : public ::testing::Test, public sigslot::has_slots<> { - public: - AsyncTCPSocketTest() - : vss_(new VirtualSocketServer()), - socket_(vss_->CreateSocket(AF_INET, SOCK_STREAM)), - tcp_socket_(new AsyncTCPSocket(socket_)), - ready_to_send_(false) { - tcp_socket_->SignalReadyToSend.connect(this, - &AsyncTCPSocketTest::OnReadyToSend); - } - - void OnReadyToSend(AsyncPacketSocket* socket) { ready_to_send_ = true; } - - protected: - std::unique_ptr<VirtualSocketServer> vss_; - Socket* socket_; - std::unique_ptr<AsyncTCPSocket> tcp_socket_; - bool ready_to_send_; +using ::testing::NotNull; + +struct AsyncTCPSocketObserver : public sigslot::has_slots<> { + void OnReadyToSend(AsyncPacketSocket* socket) { ready_to_send = true; } + + bool ready_to_send = false; }; -TEST_F(AsyncTCPSocketTest, OnWriteEvent) { - EXPECT_FALSE(ready_to_send_); - socket_->SignalWriteEvent(socket_); - EXPECT_TRUE(ready_to_send_); +TEST(AsyncTCPSocketTest, OnWriteEvent) { + VirtualSocketServer vss; + std::unique_ptr<Socket> socket = vss.Create(AF_INET, SOCK_STREAM); + ASSERT_THAT(socket, NotNull()); + Socket& socket_ref = *socket; + AsyncTCPSocketObserver observer; + AsyncTCPSocket tcp_socket(webrtc::CreateTestEnvironment(), std::move(socket)); + tcp_socket.SignalReadyToSend.connect(&observer, + &AsyncTCPSocketObserver::OnReadyToSend); + + EXPECT_FALSE(observer.ready_to_send); + socket_ref.SignalWriteEvent(&socket_ref); + EXPECT_TRUE(observer.ready_to_send); } +} // namespace } // namespace webrtc diff --git a/third_party/libwebrtc/rtc_base/test_client_unittest.cc b/third_party/libwebrtc/rtc_base/test_client_unittest.cc @@ -65,7 +65,7 @@ void TestTcpInternal(const SocketAddress& loopback) { const Environment env = CreateTestEnvironment(); PhysicalSocketServer socket_server; AutoSocketServerThread main_thread(&socket_server); - TestEchoServer server(&main_thread, loopback); + TestEchoServer server(env, &main_thread, loopback); std::unique_ptr<Socket> socket = socket_server.Create(loopback.family(), SOCK_STREAM); diff --git a/third_party/libwebrtc/rtc_base/test_echo_server.cc b/third_party/libwebrtc/rtc_base/test_echo_server.cc @@ -10,14 +10,18 @@ #include "rtc_base/test_echo_server.h" +#include "api/environment/environment.h" #include "rtc_base/socket_address.h" #include "rtc_base/socket_server.h" namespace webrtc { -TestEchoServer::TestEchoServer(Thread* thread, const SocketAddress& addr) - : server_socket_( - thread->socketserver()->CreateSocket(addr.family(), SOCK_STREAM)) { +TestEchoServer::TestEchoServer(const Environment& env, + Thread* thread, + const SocketAddress& addr) + : env_(env), + server_socket_( + thread->socketserver()->Create(addr.family(), SOCK_STREAM)) { server_socket_->Bind(addr); server_socket_->Listen(5); server_socket_->SignalReadEvent.connect(this, &TestEchoServer::OnAccept); diff --git a/third_party/libwebrtc/rtc_base/test_echo_server.h b/third_party/libwebrtc/rtc_base/test_echo_server.h @@ -16,9 +16,11 @@ #include <list> #include <memory> +#include <utility> #include "absl/algorithm/container.h" #include "absl/memory/memory.h" +#include "api/environment/environment.h" #include "rtc_base/async_packet_socket.h" #include "rtc_base/async_tcp_socket.h" #include "rtc_base/network/received_packet.h" @@ -33,7 +35,9 @@ namespace webrtc { // Useful for unit tests. class TestEchoServer : public sigslot::has_slots<> { public: - TestEchoServer(Thread* thread, const SocketAddress& addr); + TestEchoServer(const Environment& env, + Thread* thread, + const SocketAddress& addr); ~TestEchoServer() override; TestEchoServer(const TestEchoServer&) = delete; @@ -43,16 +47,18 @@ class TestEchoServer : public sigslot::has_slots<> { private: void OnAccept(Socket* socket) { - Socket* raw_socket = socket->Accept(nullptr); + std::unique_ptr<Socket> raw_socket = + absl::WrapUnique(socket->Accept(nullptr)); if (raw_socket) { - AsyncTCPSocket* packet_socket = new AsyncTCPSocket(raw_socket); + auto packet_socket = + std::make_unique<AsyncTCPSocket>(env_, std::move(raw_socket)); packet_socket->RegisterReceivedPacketCallback( [&](AsyncPacketSocket* socket, const ReceivedIpPacket& packet) { OnPacket(socket, packet); }); packet_socket->SubscribeCloseEvent( this, [this](AsyncPacketSocket* s, int err) { OnClose(s, err); }); - client_sockets_.push_back(packet_socket); + client_sockets_.push_back(packet_socket.release()); } } void OnPacket(AsyncPacketSocket* socket, const ReceivedIpPacket& packet) { @@ -68,6 +74,7 @@ class TestEchoServer : public sigslot::has_slots<> { } typedef std::list<AsyncTCPSocket*> ClientList; + const Environment env_; std::unique_ptr<Socket> server_socket_; ClientList client_sockets_; };