tor-browser

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

commit d75a21ae09d73a40aac4ca517cde6d28f757dbf7
parent 1d1c7b90de3599c3b835d1f79db1cb6f9a0eec4d
Author: Michael Froman <mfroman@mozilla.com>
Date:   Wed,  8 Oct 2025 16:09:05 -0500

Bug 1993083 - Vendor libwebrtc from d27b4ef208

We already cherry-picked this when we vendored 1ab982fa34.

Upstream commit: https://webrtc.googlesource.com/src/+/d27b4ef20820c2aeef358b4a465a8b514517b9f3
    Revert "Change SetLocalContent / SetRemoteContent to update header extensions"

    This reverts commit 9496cc0e1b8cc50185ded19522b68d7c94c17298.

    Reason for revert: Investigating downstream issue.

    Bug: webrtc:383078466
    Original change's description:
    > Change SetLocalContent / SetRemoteContent to update header extensions
    >
    > The functions were skipping over updating the sender and receiver when
    > the list of header extensions was changed. Now it should be better.
    >
    > Bug: webrtc:383078466, b/425662432, b/426394283
    > Change-Id: I1b93ed1ba4bbbf6c5b13861a6e21a7a7c82a5a66
    > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/396640
    > Reviewed-by: Per Kjellander <perkj@webrtc.org>
    > Commit-Queue: Harald Alvestrand <hta@webrtc.org>
    > Cr-Commit-Position: refs/heads/main@{#44951}

    Bug: webrtc:383078466
    Change-Id: Ie6db6d995021a8699c1c7aa91334ea0ea0e37c1f
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/397820
    Reviewed-by: Per Kjellander <perkj@webrtc.org>
    Reviewed-by: Harald Alvestrand <hta@webrtc.org>
    Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
    Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
    Owners-Override: Mirko Bonadei <mbonadei@webrtc.org>
    Reviewed-by: Christoffer Dewerin <jansson@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45012}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Dthird_party/libwebrtc/moz-patch-stack/d27b4ef208.no-op-cherry-pick-msg | 1-
Mthird_party/libwebrtc/moz-patch-stack/s0129.patch | 319+++++++++++--------------------------------------------------------------------
Mthird_party/libwebrtc/moz-patch-stack/s0130.patch | 74++++++++++++++++++++++++++++++++++----------------------------------------
Dthird_party/libwebrtc/moz-patch-stack/s0131.patch | 41-----------------------------------------
5 files changed, 78 insertions(+), 361 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-08T21:07:52.860931+00:00. +libwebrtc updated from /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-08T21:08:56.310516+00:00. # base of lastest vendoring -a6a242a9e2 +d27b4ef208 diff --git a/third_party/libwebrtc/moz-patch-stack/d27b4ef208.no-op-cherry-pick-msg b/third_party/libwebrtc/moz-patch-stack/d27b4ef208.no-op-cherry-pick-msg @@ -1 +0,0 @@ -We already cherry-picked this when we vendored 1ab982fa34. diff --git a/third_party/libwebrtc/moz-patch-stack/s0129.patch b/third_party/libwebrtc/moz-patch-stack/s0129.patch @@ -1,282 +1,47 @@ -From: Michael Froman <mjfroman@mac.com> -Date: Wed, 24 Sep 2025 16:16:38 -0500 -Subject: Bug 1990526 - Cherry-pick upstream libwebrtc commit d27b4ef208 r?ng +From: Michael Froman <mfroman@mozilla.com> +Date: Wed, 8 Oct 2025 17:49:00 +0000 +Subject: Bug 1980501 - use forward class decl rather than include + audio_state.h r?ng! -Upstream commit: https://webrtc.googlesource.com/src/+/d27b4ef20820c2aeef358b4a465a8b514517b9f3 - Revert "Change SetLocalContent / SetRemoteContent to update header extensions" +This avoids code outside of libwebrtc inadvertently including +rtc_base/containers/flat_set.h which uses c++20 features. Once +the rest of the Mozilla tree is compiling with c++20, we can +remove this modification (see Bug 1768116). - This reverts commit 9496cc0e1b8cc50185ded19522b68d7c94c17298. - - Reason for revert: Investigating downstream issue. - - Bug: webrtc:383078466 - Original change's description: - > Change SetLocalContent / SetRemoteContent to update header extensions - > - > The functions were skipping over updating the sender and receiver when - > the list of header extensions was changed. Now it should be better. - > - > Bug: webrtc:383078466, b/425662432, b/426394283 - > Change-Id: I1b93ed1ba4bbbf6c5b13861a6e21a7a7c82a5a66 - > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/396640 - > Reviewed-by: Per Kjellander <perkj@webrtc.org> - > Commit-Queue: Harald Alvestrand <hta@webrtc.org> - > Cr-Commit-Position: refs/heads/main@{#44951} - - Bug: webrtc:383078466 - Change-Id: Ie6db6d995021a8699c1c7aa91334ea0ea0e37c1f - Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/397820 - Reviewed-by: Per Kjellander <perkj@webrtc.org> - Reviewed-by: Harald Alvestrand <hta@webrtc.org> - Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> - Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> - Owners-Override: Mirko Bonadei <mbonadei@webrtc.org> - Reviewed-by: Christoffer Dewerin <jansson@webrtc.org> - Cr-Commit-Position: refs/heads/main@{#45012} +Differential Revision: https://phabricator.services.mozilla.com/D267993 +Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/9c487a574d218cc1c261b646c501db4d159754f0 --- - media/base/codec.h | 3 -- - pc/channel.cc | 15 ++---- - pc/channel_unittest.cc | 24 ++++------ - pc/congestion_control_integrationtest.cc | 58 ++---------------------- - pc/peer_connection_integrationtest.cc | 14 ++---- - 5 files changed, 20 insertions(+), 94 deletions(-) + audio/audio_receive_stream.h | 12 ++++++++++++ + 1 file changed, 12 insertions(+) -diff --git a/media/base/codec.h b/media/base/codec.h -index e26306df20..694589dd14 100644 ---- a/media/base/codec.h -+++ b/media/base/codec.h -@@ -192,9 +192,6 @@ struct RTC_EXPORT Codec { - sink.Append("video/"); - } - absl::Format(&sink, "%s/%d/%d", c.name, c.clockrate, c.channels); -- if (c.packetization) { -- absl::Format(&sink, ",packetization=%s", *c.packetization); -- } - for (auto param : c.params) { - sink.Append(";"); - sink.Append(param.first); -diff --git a/pc/channel.cc b/pc/channel.cc -index 8b8d7a7ffb..1ab970f245 100644 ---- a/pc/channel.cc -+++ b/pc/channel.cc -@@ -99,7 +99,7 @@ void MediaChannelParametersFromMediaDescription( - desc->type() == MediaType::VIDEO); - params->is_stream_active = is_stream_active; - params->codecs = desc->codecs(); -- // TODO: bugs.webrtc.org/11513 - See if we really need -+ // TODO(bugs.webrtc.org/11513): See if we really need - // rtp_header_extensions_set() and remove it if we don't. - if (desc->rtp_header_extensions_set()) { - params->extensions = extensions; -@@ -915,6 +915,7 @@ bool VoiceChannel::SetLocalContent_w(const MediaContentDescription* content, - } - } - } +diff --git a/audio/audio_receive_stream.h b/audio/audio_receive_stream.h +index bc248120ef..fd00dfb3ed 100644 +--- a/audio/audio_receive_stream.h ++++ b/audio/audio_receive_stream.h +@@ -31,7 +31,11 @@ + #include "api/scoped_refptr.h" + #include "api/sequence_checker.h" + #include "api/transport/rtp/rtp_source.h" ++// This can be removed after Bug 1768116 enables ++// c++20 builds across the entire Mozilla tree. ++#if !defined(WEBRTC_MOZILLA_BUILD) + #include "audio/audio_state.h" ++#endif + #include "call/audio_receive_stream.h" + #include "call/audio_state.h" + #include "call/syncable.h" +@@ -43,6 +47,14 @@ class PacketRouter; + class RtpStreamReceiverControllerInterface; + class RtpStreamReceiverInterface; + ++// This can be removed after Bug 1768116 enables ++// c++20 builds across the entire Mozilla tree. ++#if defined(WEBRTC_MOZILLA_BUILD) ++namespace internal { ++class AudioState; ++} ++#endif + - last_recv_params_ = recv_params; - - if (!UpdateLocalStreams_w(content->streams(), type, error_desc)) { -@@ -925,7 +926,7 @@ bool VoiceChannel::SetLocalContent_w(const MediaContentDescription* content, - set_local_content_direction(content->direction()); - UpdateMediaSendRecvState_w(); - -- // Disabled because suggesting PTs takes thread jumps. -+ // Disabled because suggeting PTs takes thread jumps. - // TODO: https://issues.webrtc.org/360058654 - reenable after cleanup - // RTC_DCHECK_BLOCK_COUNT_NO_MORE_THAN(0); - -@@ -1041,6 +1042,7 @@ bool VideoChannel::SetLocalContent_w(const MediaContentDescription* content, - media_send_channel()->SetExtmapAllowMixed(content->extmap_allow_mixed()); - - VideoReceiverParameters recv_params = last_recv_params_; -+ - MediaChannelParametersFromMediaDescription( - content, header_extensions, - RtpTransceiverDirectionHasRecv(content->direction()), &recv_params); -@@ -1115,12 +1117,7 @@ bool VideoChannel::SetLocalContent_w(const MediaContentDescription* content, - - last_recv_params_ = recv_params; - -- // Also update send parameters if header extensions are changed. -- needs_send_params_update |= -- (last_send_params_.extensions != header_extensions && -- !send_params.codecs.empty()); - if (needs_send_params_update) { -- send_params.extensions = header_extensions; - if (!media_send_channel()->SetSenderParameters(send_params)) { - error_desc = StringFormat( - "Failed to set send parameters for m-section with mid='%s'.", -@@ -1231,11 +1228,7 @@ bool VideoChannel::SetRemoteContent_w(const MediaContentDescription* content, - media_send_channel()->SendCodecRtxTime()); - last_send_params_ = send_params; - -- needs_recv_params_update |= -- (recv_params.extensions != send_params.extensions && -- !recv_params.codecs.empty()); - if (needs_recv_params_update) { -- recv_params.extensions = send_params.extensions; - if (!media_receive_channel()->SetReceiverParameters(recv_params)) { - error_desc = StringFormat( - "Failed to set recv parameters for m-section with mid='%s'.", -diff --git a/pc/channel_unittest.cc b/pc/channel_unittest.cc -index 4bb9573632..e3488a98a9 100644 ---- a/pc/channel_unittest.cc -+++ b/pc/channel_unittest.cc -@@ -2385,22 +2385,18 @@ TEST_F(VideoChannelSingleThreadTest, - - EXPECT_THAT( - media_receive_channel1_impl()->recv_codecs(), -- ElementsAre( -- AllOf(Field("id", &webrtc::Codec::id, 96), -- Field("packetization", &webrtc::Codec::packetization, "foo")), -- AllOf(Field("id", &webrtc::Codec::id, 98), -- Field("packetization", &webrtc::Codec::packetization, -- std::nullopt)))); -+ ElementsAre(AllOf(Field(&webrtc::Codec::id, 96), -+ Field(&webrtc::Codec::packetization, "foo")), -+ AllOf(Field(&webrtc::Codec::id, 98), -+ Field(&webrtc::Codec::packetization, std::nullopt)))); - EXPECT_THAT( - media_send_channel1_impl()->send_codecs(), -- ElementsAre( -- AllOf(Field("id", &webrtc::Codec::id, 96), -- Field("packetization", &webrtc::Codec::packetization, "foo")), -- AllOf(Field("id", &webrtc::Codec::id, 97), -- Field("packetization", &webrtc::Codec::packetization, "bar")), -- AllOf(Field("id", &webrtc::Codec::id, 99), -- Field("packetization", &webrtc::Codec::packetization, -- std::nullopt)))); -+ ElementsAre(AllOf(Field(&webrtc::Codec::id, 96), -+ Field(&webrtc::Codec::packetization, "foo")), -+ AllOf(Field(&webrtc::Codec::id, 97), -+ Field(&webrtc::Codec::packetization, "bar")), -+ AllOf(Field(&webrtc::Codec::id, 99), -+ Field(&webrtc::Codec::packetization, std::nullopt)))); - } - - TEST_F(VideoChannelSingleThreadTest, -diff --git a/pc/congestion_control_integrationtest.cc b/pc/congestion_control_integrationtest.cc -index e5ba493d1a..d93a31924f 100644 ---- a/pc/congestion_control_integrationtest.cc -+++ b/pc/congestion_control_integrationtest.cc -@@ -12,13 +12,9 @@ - // are correctly negotiated in the SDP offer/answer. - - #include <string> --#include <vector> - - #include "absl/strings/str_cat.h" --#include "api/media_types.h" - #include "api/peer_connection_interface.h" --#include "api/rtp_parameters.h" --#include "api/rtp_transceiver_direction.h" - #include "api/test/rtc_error_matchers.h" - #include "pc/test/integration_test_helpers.h" - #include "test/gmock.h" -@@ -27,12 +23,11 @@ - - namespace webrtc { - --using ::testing::Eq; --using ::testing::Field; -+using testing::Eq; - using ::testing::Gt; --using ::testing::HasSubstr; -+using testing::HasSubstr; - using ::testing::IsTrue; --using ::testing::Not; -+using testing::Not; - - class PeerConnectionCongestionControlTest - : public PeerConnectionIntegrationBaseTest { -@@ -82,53 +77,6 @@ TEST_F(PeerConnectionCongestionControlTest, ReceiveOfferSetsCcfbFlag) { - EXPECT_THAT(answer_str, Not(HasSubstr("transport-cc"))); - } - --TEST_F(PeerConnectionCongestionControlTest, NegotiatingCcfbRemovesTsn) { -- SetFieldTrials("WebRTC-RFC8888CongestionControlFeedback/Enabled/"); -- ASSERT_TRUE(CreatePeerConnectionWrappers()); -- ConnectFakeSignalingForSdpOnly(); -- callee()->AddVideoTrack(); -- // Add transceivers to caller in order to accomodate reception -- caller()->pc()->AddTransceiver(MediaType::VIDEO); -- auto parameters = caller()->pc()->GetSenders()[0]->GetParameters(); -- caller()->CreateAndSetAndSignalOffer(); -- ASSERT_THAT(WaitUntil([&] { return SignalingStateStable(); }, IsTrue()), -- IsRtcOk()); -- -- std::vector<RtpHeaderExtensionCapability> negotiated_header_extensions = -- caller()->pc()->GetTransceivers()[0]->GetNegotiatedHeaderExtensions(); -- EXPECT_THAT( -- negotiated_header_extensions, -- Not(Contains( -- AllOf(Field("uri", &RtpHeaderExtensionCapability::uri, -- RtpExtension::kTransportSequenceNumberUri), -- Not(Field("direction", &RtpHeaderExtensionCapability::direction, -- RtpTransceiverDirection::kStopped)))))) -- << " in caller negotiated header extensions"; -- -- parameters = caller()->pc()->GetSenders()[0]->GetParameters(); -- EXPECT_THAT(parameters.header_extensions, -- Not(Contains(Field("uri", &RtpExtension::uri, -- RtpExtension::kTransportSequenceNumberUri)))) -- << " in caller sender parameters"; -- parameters = caller()->pc()->GetReceivers()[0]->GetParameters(); -- EXPECT_THAT(parameters.header_extensions, -- Not(Contains(Field("uri", &RtpExtension::uri, -- RtpExtension::kTransportSequenceNumberUri)))) -- << " in caller receiver parameters"; -- -- parameters = callee()->pc()->GetSenders()[0]->GetParameters(); -- EXPECT_THAT(parameters.header_extensions, -- Not(Contains(Field("uri", &RtpExtension::uri, -- RtpExtension::kTransportSequenceNumberUri)))) -- << " in callee sender parameters"; -- -- parameters = callee()->pc()->GetReceivers()[0]->GetParameters(); -- EXPECT_THAT(parameters.header_extensions, -- Not(Contains(Field("uri", &RtpExtension::uri, -- RtpExtension::kTransportSequenceNumberUri)))) -- << " in callee receiver parameters"; --} -- - TEST_F(PeerConnectionCongestionControlTest, CcfbGetsUsed) { - SetFieldTrials("WebRTC-RFC8888CongestionControlFeedback/Enabled/"); - ASSERT_TRUE(CreatePeerConnectionWrappers()); -diff --git a/pc/peer_connection_integrationtest.cc b/pc/peer_connection_integrationtest.cc -index 4d4ec552d7..3a2babda3e 100644 ---- a/pc/peer_connection_integrationtest.cc -+++ b/pc/peer_connection_integrationtest.cc -@@ -4631,9 +4631,8 @@ TEST_F(PeerConnectionIntegrationTestUnifiedPlan, - PeerConnectionInterface::kStable); - } - --// TODO: issues.webrtc.org/425336456 - figure out correct behavior and reenable - TEST_F(PeerConnectionIntegrationTestUnifiedPlan, -- DISABLED_OnlyOnePairWantsCorruptionScorePlumbing) { -+ OnlyOnePairWantsCorruptionScorePlumbing) { - // In order for corruption score to be logged, encryption of RTP header - // extensions must be allowed. - CryptoOptions crypto_options; -@@ -4657,19 +4656,12 @@ TEST_F(PeerConnectionIntegrationTestUnifiedPlan, - ASSERT_THAT( - WaitUntil([&] { return SignalingStateStable(); }, ::testing::IsTrue()), - IsRtcOk()); -- std::vector<RtpHeaderExtensionCapability> negotiated_extensions = -- caller()->pc()->GetTransceivers()[0]->GetNegotiatedHeaderExtensions(); -- ASSERT_THAT(negotiated_extensions, -- Contains(Field("uri", &RtpHeaderExtensionCapability::uri, -- RtpExtension::kCorruptionDetectionUri))); - ASSERT_THAT(WaitUntil([&] { return caller()->GetCorruptionScoreCount(); }, - ::testing::Gt(0), {.timeout = kMaxWaitForStats}), -- IsRtcOk()) -- << "Waiting for caller corruption score count > 0"; -+ IsRtcOk()); - ASSERT_THAT(WaitUntil([&] { return callee()->GetCorruptionScoreCount(); }, - ::testing::Eq(0), {.timeout = kMaxWaitForStats}), -- IsRtcOk()) -- << "Waiting for callee corruption score count = 0"; -+ IsRtcOk()); - - for (const auto& pair : {caller(), callee()}) { - scoped_refptr<const RTCStatsReport> report = pair->NewGetStats(); + namespace voe { + class ChannelReceiveInterface; + } // namespace voe diff --git a/third_party/libwebrtc/moz-patch-stack/s0130.patch b/third_party/libwebrtc/moz-patch-stack/s0130.patch @@ -1,47 +1,41 @@ From: Michael Froman <mfroman@mozilla.com> Date: Wed, 8 Oct 2025 17:49:00 +0000 -Subject: Bug 1980501 - use forward class decl rather than include - audio_state.h r?ng! +Subject: Bug 1980501 - enable c++20 builds in libwebrtc. r?ng! -This avoids code outside of libwebrtc inadvertently including -rtc_base/containers/flat_set.h which uses c++20 features. Once -the rest of the Mozilla tree is compiling with c++20, we can -remove this modification (see Bug 1768116). - -Differential Revision: https://phabricator.services.mozilla.com/D267993 -Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/9c487a574d218cc1c261b646c501db4d159754f0 +Differential Revision: https://phabricator.services.mozilla.com/D267994 +Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/43de54a6e52daf0a06956ae01951ef1e29d46e82 --- - audio/audio_receive_stream.h | 12 ++++++++++++ - 1 file changed, 12 insertions(+) + BUILD.gn | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) -diff --git a/audio/audio_receive_stream.h b/audio/audio_receive_stream.h -index bc248120ef..fd00dfb3ed 100644 ---- a/audio/audio_receive_stream.h -+++ b/audio/audio_receive_stream.h -@@ -31,7 +31,11 @@ - #include "api/scoped_refptr.h" - #include "api/sequence_checker.h" - #include "api/transport/rtp/rtp_source.h" -+// This can be removed after Bug 1768116 enables -+// c++20 builds across the entire Mozilla tree. -+#if !defined(WEBRTC_MOZILLA_BUILD) - #include "audio/audio_state.h" -+#endif - #include "call/audio_receive_stream.h" - #include "call/audio_state.h" - #include "call/syncable.h" -@@ -43,6 +47,14 @@ class PacketRouter; - class RtpStreamReceiverControllerInterface; - class RtpStreamReceiverInterface; +diff --git a/BUILD.gn b/BUILD.gn +index ff12ae0545..1ac89c4090 100644 +--- a/BUILD.gn ++++ b/BUILD.gn +@@ -317,6 +317,17 @@ config("common_config") { + cflags_objc = [] + defines = [] -+// This can be removed after Bug 1768116 enables -+// c++20 builds across the entire Mozilla tree. -+#if defined(WEBRTC_MOZILLA_BUILD) -+namespace internal { -+class AudioState; -+} -+#endif ++ # We should be able to remove this after c++20 is enabled ++ # across the Mozilla tree. ++ if (build_with_mozilla) { ++ if (is_win) { ++ cflags_cc += [ "-std:c++20" ] ++ } ++ else { ++ cflags_cc += [ "-std=gnu++20" ] ++ } ++ } + - namespace voe { - class ChannelReceiveInterface; - } // namespace voe + if (rtc_enable_protobuf) { + defines += [ "WEBRTC_ENABLE_PROTOBUF=1" ] + } else { +@@ -418,7 +429,7 @@ config("common_config") { + # "-Wnested-externs", (C/Obj-C only) + ] + cflags_objc += [ "-Wstrict-prototypes" ] +- cflags_cc = [ ++ cflags_cc += [ + "-Wnon-virtual-dtor", + + # This is enabled for clang; enable for gcc as well. diff --git a/third_party/libwebrtc/moz-patch-stack/s0131.patch b/third_party/libwebrtc/moz-patch-stack/s0131.patch @@ -1,41 +0,0 @@ -From: Michael Froman <mfroman@mozilla.com> -Date: Wed, 8 Oct 2025 17:49:00 +0000 -Subject: Bug 1980501 - enable c++20 builds in libwebrtc. r?ng! - -Differential Revision: https://phabricator.services.mozilla.com/D267994 -Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/43de54a6e52daf0a06956ae01951ef1e29d46e82 ---- - BUILD.gn | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/BUILD.gn b/BUILD.gn -index ff12ae0545..1ac89c4090 100644 ---- a/BUILD.gn -+++ b/BUILD.gn -@@ -317,6 +317,17 @@ config("common_config") { - cflags_objc = [] - defines = [] - -+ # We should be able to remove this after c++20 is enabled -+ # across the Mozilla tree. -+ if (build_with_mozilla) { -+ if (is_win) { -+ cflags_cc += [ "-std:c++20" ] -+ } -+ else { -+ cflags_cc += [ "-std=gnu++20" ] -+ } -+ } -+ - if (rtc_enable_protobuf) { - defines += [ "WEBRTC_ENABLE_PROTOBUF=1" ] - } else { -@@ -418,7 +429,7 @@ config("common_config") { - # "-Wnested-externs", (C/Obj-C only) - ] - cflags_objc += [ "-Wstrict-prototypes" ] -- cflags_cc = [ -+ cflags_cc += [ - "-Wnon-virtual-dtor", - - # This is enabled for clang; enable for gcc as well.