tor-browser

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

commit 9ac3e2af89896ce6d03eb929ed2a899d93656a83
parent 131055c87b6a89c5016f2e1a94f5190f8cae6257
Author: Michael Froman <mfroman@mozilla.com>
Date:   Thu,  9 Oct 2025 15:30:21 -0500

Bug 1993083 - Vendor libwebrtc from b690d7eb35

Essentially a no-op since we're going to see this change
reverted when we vendor in d552ad7fc0.

Upstream commit: https://webrtc.googlesource.com/src/+/b690d7eb3521c90ae78c0abf5e7454201855b953
    Remove jni_generator_helper.h from WebRTC

    Bug: b/325408567, b/319078685, b/351773023
    Change-Id: I84c168b4ef8c6936e2644ad85edda8687c6c491a
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/401480
    Reviewed-by: Jeremy Leconte <jleconte@google.com>
    Reviewed-by: Harald Alvestrand <hta@webrtc.org>
    Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45191}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Athird_party/libwebrtc/moz-patch-stack/d552ad7fc0.no-op-cherry-pick-msg | 1+
Mthird_party/libwebrtc/moz-patch-stack/p0001.patch | 384+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
Cthird_party/libwebrtc/moz-patch-stack/p0001.patch -> third_party/libwebrtc/moz-patch-stack/p0002.patch | 0
4 files changed, 348 insertions(+), 41 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 /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc -libwebrtc updated from /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-09T20:29:06.119751+00:00. +libwebrtc updated from /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-09T20:30:12.094121+00:00. # base of lastest vendoring -68274fb959 +b690d7eb35 diff --git a/third_party/libwebrtc/moz-patch-stack/d552ad7fc0.no-op-cherry-pick-msg b/third_party/libwebrtc/moz-patch-stack/d552ad7fc0.no-op-cherry-pick-msg @@ -0,0 +1 @@ +We already cherry-picked this when we vendored b690d7eb35. diff --git a/third_party/libwebrtc/moz-patch-stack/p0001.patch b/third_party/libwebrtc/moz-patch-stack/p0001.patch @@ -1,46 +1,352 @@ -From: Guido Urdaneta <guidou@webrtc.org> -Date: Thu, 24 Jul 2025 11:01:29 +0200 -Subject: (cherry-pick-branch-heads/7258) Use FieldTrialsView::IsEnabled for - DTLS 1.3 +From: Michael Froman <mjfroman@mac.com> +Date: Thu, 9 Oct 2025 15:29:59 -0500 +Subject: (tmp-cherry-pick) Revert "Remove jni_generator_helper.h from WebRTC" + (d552ad7fc0) -No behavior changes. +This reverts commit b690d7eb3521c90ae78c0abf5e7454201855b953. -(cherry picked from commit 5ff715d5666106e01d27205c1775d1e2d07ea254) +Reason for revert: Breaks downstream -Bug: webrtc:383141571, chromium:433885045, chromium:434133034 -Change-Id: Ice5f3e5cbd245ddea407248a6f29c61c646e6a72 -Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/401740 -Reviewed-by: Harald Alvestrand <hta@webrtc.org> -Commit-Queue: Guido Urdaneta <guidou@webrtc.org> -Cr-Original-Commit-Position: refs/heads/main@{#45206} -Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/402200 -Cr-Commit-Position: refs/branch-heads/7258@{#3} -Cr-Branched-From: 74fa937f86ed8432c07676f7a1ce0e5e2812b3d5-refs/heads/main@{#44974} +Bug: b/325408567, b/319078685, b/351773023 +Original change's description: +> Remove jni_generator_helper.h from WebRTC +> +> Bug: b/325408567, b/319078685, b/351773023 +> Change-Id: I84c168b4ef8c6936e2644ad85edda8687c6c491a +> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/401480 +> Reviewed-by: Jeremy Leconte <jleconte@google.com> +> Reviewed-by: Harald Alvestrand <hta@webrtc.org> +> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> +> Cr-Commit-Position: refs/heads/main@{#45191} + +Bug: b/325408567, b/319078685, b/351773023 +No-Presubmit: true +No-Tree-Checks: true +No-Try: true +Change-Id: Ib7820a585f15940ea4d6ecb6075b80da85700e60 +Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/401580 +Reviewed-by: Jeremy Leconte <jleconte@google.com> +Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> +Owners-Override: Mirko Bonadei <mbonadei@webrtc.org> +Cr-Commit-Position: refs/heads/main@{#45192} --- - rtc_base/openssl_stream_adapter.cc | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) + examples/androidnativeapi/BUILD.gn | 1 + + examples/androidvoip/BUILD.gn | 1 + + sdk/android/BUILD.gn | 21 ++++ + sdk/android/src/jni/OWNERS | 3 + + sdk/android/src/jni/jni_generator_helper.h | 114 +++++++++++++++++++++ + 5 files changed, 140 insertions(+) + create mode 100644 sdk/android/src/jni/jni_generator_helper.h -diff --git a/rtc_base/openssl_stream_adapter.cc b/rtc_base/openssl_stream_adapter.cc -index 7d7466b1cc..604a9465c7 100644 ---- a/rtc_base/openssl_stream_adapter.cc -+++ b/rtc_base/openssl_stream_adapter.cc -@@ -144,13 +144,15 @@ int GetForceDtls13(const FieldTrialsView* field_trials) { - return kForceDtls13Off; - } - #ifdef DTLS1_3_VERSION -- auto mode = field_trials->Lookup("WebRTC-ForceDtls13"); -- RTC_LOG(LS_WARNING) << "WebRTC-ForceDtls13: " << mode; -- if (mode == "Enabled") { -+ if (field_trials->IsEnabled("WebRTC-ForceDtls13")) { -+ RTC_LOG(LS_WARNING) << "WebRTC-ForceDtls13 Enabled"; - return kForceDtls13Enabled; -- } else if (mode == "Only") { -+ } -+ if (field_trials->Lookup("WebRTC-ForceDtls13") == "Only") { -+ RTC_LOG(LS_WARNING) << "WebRTC-ForceDtls13 Only"; - return kForceDtls13Only; +diff --git a/examples/androidnativeapi/BUILD.gn b/examples/androidnativeapi/BUILD.gn +index 64cd43e923..d0f9014a66 100644 +--- a/examples/androidnativeapi/BUILD.gn ++++ b/examples/androidnativeapi/BUILD.gn +@@ -31,6 +31,7 @@ if (is_android) { + testonly = true + sources = [ "java/org/webrtc/examples/androidnativeapi/CallClient.java" ] + namespace = "webrtc_examples" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + rtc_shared_library("examples_androidnativeapi_jni") { +diff --git a/examples/androidvoip/BUILD.gn b/examples/androidvoip/BUILD.gn +index be28f08b3c..3f517b73c0 100644 +--- a/examples/androidvoip/BUILD.gn ++++ b/examples/androidvoip/BUILD.gn +@@ -40,6 +40,7 @@ if (is_android) { + testonly = true + sources = [ "java/org/webrtc/examples/androidvoip/VoipClient.java" ] + namespace = "webrtc_examples" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + rtc_shared_library("examples_androidvoip_jni") { +diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn +index f3db81c780..ae44285fc9 100644 +--- a/sdk/android/BUILD.gn ++++ b/sdk/android/BUILD.gn +@@ -1000,6 +1000,7 @@ if (current_os == "linux" || is_android) { + "native_api/jni/class_loader.cc", + "native_api/jni/java_types.cc", + "native_api/jni/jvm.cc", ++ "src/jni/jni_generator_helper.h", + ] + + public = [ +@@ -1361,16 +1362,19 @@ if (current_os == "linux" || is_android) { + "java/util/ArrayList.class", + "java/lang/Enum.class", + ] ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_environment_jni") { + sources = [ "api/org/webrtc/Environment.java" ] + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_metrics_jni") { + sources = [ "api/org/webrtc/Metrics.java" ] + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + # Generated JNI for public JNI targets, matching order of targets +@@ -1384,6 +1388,7 @@ if (current_os == "linux" || is_android) { + "src/java/org/webrtc/JniCommon.java", + ] + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_video_jni") { +@@ -1413,11 +1418,13 @@ if (current_os == "linux" || is_android) { + "src/java/org/webrtc/WrappedNativeI420Buffer.java", + ] + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_video_egl_jni") { + sources = [ "src/java/org/webrtc/EglBase10Impl.java" ] + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_libvpx_vp8_jni") { +@@ -1427,6 +1434,7 @@ if (current_os == "linux" || is_android) { + ] + + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_libvpx_vp9_jni") { +@@ -1436,18 +1444,21 @@ if (current_os == "linux" || is_android) { + ] + + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_libaom_av1_encoder_jni") { + sources = [ "api/org/webrtc/LibaomAv1Encoder.java" ] + + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_dav1d_jni") { + sources = [ "api/org/webrtc/Dav1dDecoder.java" ] + + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_swcodecs_jni") { +@@ -1457,11 +1468,13 @@ if (current_os == "linux" || is_android) { + ] + + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_rtcerror_jni") { + sources = [ "src/java/org/webrtc/RtcError.java" ] + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_peerconnection_jni") { +@@ -1498,11 +1511,13 @@ if (current_os == "linux" || is_android) { + "api/org/webrtc/TurnCustomizer.java", + ] + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_java_audio_jni") { + sources = [ "api/org/webrtc/audio/JavaAudioDeviceModule.java" ] + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_builtin_audio_codecs_jni") { +@@ -1511,6 +1526,7 @@ if (current_os == "linux" || is_android) { + "api/org/webrtc/BuiltinAudioEncoderFactoryFactory.java", + ] + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + # Generated JNI for native API targets +@@ -1522,17 +1538,20 @@ if (current_os == "linux" || is_android) { + "src/java/org/webrtc/WebRtcClassLoader.java", + ] + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + # Generated JNI for internal targets. + + generate_jni("generated_logging_jni") { + sources = [ "src/java/org/webrtc/JNILogging.java" ] ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_audio_device_module_base_jni") { + sources = [ "src/java/org/webrtc/audio/WebRtcAudioManager.java" ] + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + generate_jni("generated_java_audio_device_module_native_jni") { +@@ -1541,6 +1560,7 @@ if (current_os == "linux" || is_android) { + "src/java/org/webrtc/audio/WebRtcAudioTrack.java", + ] + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" } -+ RTC_LOG(LS_WARNING) << "WebRTC-ForceDtls13 Disabled"; - #endif - return kForceDtls13Off; } + +@@ -1788,6 +1808,7 @@ if (is_android) { + "native_unittests/org/webrtc/PeerConnectionFactoryInitializationHelper.java", + ] + namespace = "webrtc::jni" ++ jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h" + } + + robolectric_binary("android_sdk_junit_tests") { +diff --git a/sdk/android/src/jni/OWNERS b/sdk/android/src/jni/OWNERS +index 557373424b..6d01899f22 100644 +--- a/sdk/android/src/jni/OWNERS ++++ b/sdk/android/src/jni/OWNERS +@@ -2,3 +2,6 @@ per-file androidhistogram.cc=xalep@webrtc.org + per-file androidmetrics.cc=xalep@webrtc.org + per-file androidvideotracksource.*=xalep@webrtc.org + per-file androidvideotracksource.cc=xalep@webrtc.org ++ ++per-file jni_generator_helper.cc=file://infra/OWNERS ++per-file jni_generator_helper.h=file://infra/OWNERS +diff --git a/sdk/android/src/jni/jni_generator_helper.h b/sdk/android/src/jni/jni_generator_helper.h +new file mode 100644 +index 0000000000..8fc711b8ac +--- /dev/null ++++ b/sdk/android/src/jni/jni_generator_helper.h +@@ -0,0 +1,114 @@ ++/* ++ * Copyright 2017 The WebRTC project authors. All Rights Reserved. ++ * ++ * Use of this source code is governed by a BSD-style license ++ * that can be found in the LICENSE file in the root of the source ++ * tree. An additional intellectual property rights grant can be found ++ * in the file PATENTS. All contributing project authors may ++ * be found in the AUTHORS file in the root of the source tree. ++ */ ++// Do not include this file directly. It's intended to be used only by the JNI ++// generation script. We are exporting types in strange namespaces in order to ++// be compatible with the generated code targeted for Chromium. ++ ++#ifndef SDK_ANDROID_SRC_JNI_JNI_GENERATOR_HELPER_H_ ++#define SDK_ANDROID_SRC_JNI_JNI_GENERATOR_HELPER_H_ ++ ++#include <jni.h> ++ ++#include <atomic> ++#include <cstdint> ++#include <cstring> ++ ++#include "third_party/jni_zero/jni_zero_internal.h" ++ ++#define JNI_REGISTRATION_EXPORT __attribute__((visibility("default"))) ++ ++#if defined(WEBRTC_ARCH_X86) ++// Dalvik JIT generated code doesn't guarantee 16-byte stack alignment on ++// x86 - use force_align_arg_pointer to realign the stack at the JNI ++// boundary. crbug.com/655248 ++#define JNI_GENERATOR_EXPORT \ ++ __attribute__((force_align_arg_pointer)) extern "C" JNIEXPORT JNICALL ++#else ++#define JNI_GENERATOR_EXPORT extern "C" JNIEXPORT JNICALL ++#endif ++ ++// Re-export helpers in the old jni_generator namespace. ++// TODO(b/319078685): Remove once all uses of the jni_generator has been ++// updated. ++namespace jni_generator { ++using jni_zero::internal::kJniStackMarkerValue; ++ ++// TODO(b/319078685): Remove JniJavaCallContextUnchecked once all uses of the ++// jni_generator has been updated. ++struct JniJavaCallContextUnchecked { ++ inline JniJavaCallContextUnchecked() { ++// TODO(ssid): Implement for other architectures. ++#if defined(__arm__) || defined(__aarch64__) ++ // This assumes that this method does not increment the stack pointer. ++ asm volatile("mov %0, sp" : "=r"(sp)); ++#else ++ sp = 0; ++#endif ++ } ++ ++ // Force no inline to reduce code size. ++ template <jni_zero::MethodID::Type type> ++ void Init(JNIEnv* env, ++ jclass clazz, ++ const char* method_name, ++ const char* jni_signature, ++ std::atomic<jmethodID>* atomic_method_id) { ++ env1 = env; ++ ++ // Make sure compiler doesn't optimize out the assignment. ++ memcpy(&marker, &kJniStackMarkerValue, sizeof(kJniStackMarkerValue)); ++ // Gets PC of the calling function. ++ pc = reinterpret_cast<uintptr_t>(__builtin_return_address(0)); ++ ++ method_id = jni_zero::MethodID::LazyGet<type>( ++ env, clazz, method_name, jni_signature, atomic_method_id); ++ } ++ ++ ~JniJavaCallContextUnchecked() { ++ // Reset so that spurious marker finds are avoided. ++ memset(&marker, 0, sizeof(marker)); ++ } ++ ++ uint64_t marker; ++ uintptr_t sp; ++ uintptr_t pc; ++ ++ JNIEnv* env1; ++ jmethodID method_id; ++}; ++ ++// TODO(b/319078685): Remove JniJavaCallContextChecked once all uses of the ++// jni_generator has been updated. ++// Context about the JNI call with exception unchecked to be stored in stack. ++struct JniJavaCallContextChecked { ++ // Force no inline to reduce code size. ++ template <jni_zero::MethodID::Type type> ++ void Init(JNIEnv* env, ++ jclass clazz, ++ const char* method_name, ++ const char* jni_signature, ++ std::atomic<jmethodID>* atomic_method_id) { ++ base.Init<type>(env, clazz, method_name, jni_signature, atomic_method_id); ++ // Reset `pc` to correct caller. ++ base.pc = reinterpret_cast<uintptr_t>(__builtin_return_address(0)); ++ } ++ ++ ~JniJavaCallContextChecked() { jni_zero::CheckException(base.env1); } ++ ++ JniJavaCallContextUnchecked base; ++}; ++ ++static_assert(sizeof(JniJavaCallContextChecked) == ++ sizeof(JniJavaCallContextUnchecked), ++ "Stack unwinder cannot work with structs of different sizes."); ++ ++} // namespace jni_generator ++ ++#endif // SDK_ANDROID_SRC_JNI_JNI_GENERATOR_HELPER_H_ diff --git a/third_party/libwebrtc/moz-patch-stack/p0001.patch b/third_party/libwebrtc/moz-patch-stack/p0002.patch