From fe5bdd75e06200916a72f68e1b3850c7517fd004 Mon Sep 17 00:00:00 2001 From: Evan Shrubsole Date: Fri, 7 Feb 2025 13:24:05 +0000 Subject: [PATCH] Move ArrayView, Buffer and related to webrtc namespace Bug: webrtc:42232595 Change-Id: Idcd603d534eda6a5c1eea36d2c1c1e80c19fa0ca Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/376561 Reviewed-by: Tomas Gunnarsson Reviewed-by: Mirko Bonadei Commit-Queue: Evan Shrubsole Cr-Commit-Position: refs/heads/main@{#43863} --- api/array_view.h | 12 +++++++++++- api/array_view_unittest.cc | 14 +++++++------- pc/rtp_transport.h | 3 ++- pc/rtp_transport_internal.h | 3 ++- pc/sctp_utils.h | 5 +---- rtc_base/buffer.h | 12 +++++++++++- rtc_base/buffer_unittest.cc | 18 +++++++++--------- rtc_base/copy_on_write_buffer.cc | 4 ++-- rtc_base/copy_on_write_buffer.h | 8 +++++++- rtc_base/copy_on_write_buffer_unittest.cc | 8 ++++---- rtc_base/zero_memory.cc | 4 ++-- rtc_base/zero_memory.h | 8 +++++++- rtc_base/zero_memory_unittest.cc | 6 +++--- 13 files changed, 68 insertions(+), 37 deletions(-) diff --git a/api/array_view.h b/api/array_view.h index f1eb6c1e55..ee73583be3 100644 --- a/api/array_view.h +++ b/api/array_view.h @@ -20,7 +20,7 @@ #include "rtc_base/checks.h" #include "rtc_base/type_traits.h" -namespace rtc { +namespace webrtc { // tl;dr: rtc::ArrayView is the same thing as gsl::span from the Guideline // Support Library. @@ -330,6 +330,16 @@ inline ArrayView reinterpret_array_view(ArrayView view) { return ArrayView(reinterpret_cast(view.data()), view.size()); } +} // namespace webrtc + +// Re-export symbols from the webrtc namespace for backwards compatibility. +// TODO(bugs.webrtc.org/4222596): Remove once all references are updated. +namespace rtc { +template +using ArrayView = ::webrtc::ArrayView; +using ::webrtc::MakeArrayView; +using ::webrtc::reinterpret_array_view; } // namespace rtc #endif // API_ARRAY_VIEW_H_ diff --git a/api/array_view_unittest.cc b/api/array_view_unittest.cc index af1372b7c7..79e955b7f8 100644 --- a/api/array_view_unittest.cc +++ b/api/array_view_unittest.cc @@ -23,7 +23,7 @@ #include "test/gmock.h" #include "test/gtest.h" -namespace rtc { +namespace webrtc { namespace { @@ -300,11 +300,11 @@ TEST(ArrayViewTest, TestStdArray) { constexpr size_t size = 5; std::array arr{}; // Fixed size view. - rtc::ArrayView arr_view_fixed(arr); + ArrayView arr_view_fixed(arr); EXPECT_EQ(arr.data(), arr_view_fixed.data()); static_assert(size == arr_view_fixed.size(), ""); // Variable size view. - rtc::ArrayView arr_view(arr); + ArrayView arr_view(arr); EXPECT_EQ(arr.data(), arr_view.data()); EXPECT_EQ(size, arr_view.size()); } @@ -313,17 +313,17 @@ TEST(ArrayViewTest, TestConstStdArray) { constexpr size_t size = 5; constexpr std::array constexpr_arr{}; - rtc::ArrayView constexpr_arr_view(constexpr_arr); + ArrayView constexpr_arr_view(constexpr_arr); EXPECT_EQ(constexpr_arr.data(), constexpr_arr_view.data()); static_assert(constexpr_arr.size() == constexpr_arr_view.size(), ""); const std::array const_arr{}; - rtc::ArrayView const_arr_view(const_arr); + ArrayView const_arr_view(const_arr); EXPECT_EQ(const_arr.data(), const_arr_view.data()); static_assert(const_arr.size() == const_arr_view.size(), ""); std::array non_const_arr{}; - rtc::ArrayView non_const_arr_view(non_const_arr); + ArrayView non_const_arr_view(non_const_arr); EXPECT_EQ(non_const_arr.data(), non_const_arr_view.data()); static_assert(non_const_arr.size() == non_const_arr_view.size(), ""); } @@ -629,4 +629,4 @@ TEST(ArrayViewTest, TestReinterpretCastVariableSize) { EXPECT_EQ(uint8_av[1], 2); EXPECT_EQ(uint8_av[2], 3); } -} // namespace rtc +} // namespace webrtc diff --git a/pc/rtp_transport.h b/pc/rtp_transport.h index 284bd300bf..748214f459 100644 --- a/pc/rtp_transport.h +++ b/pc/rtp_transport.h @@ -35,7 +35,6 @@ namespace rtc { -class CopyOnWriteBuffer; struct PacketOptions; class PacketTransportInternal; @@ -43,6 +42,8 @@ class PacketTransportInternal; namespace webrtc { +class CopyOnWriteBuffer; + class RtpTransport : public RtpTransportInternal { public: RtpTransport(const RtpTransport&) = delete; diff --git a/pc/rtp_transport_internal.h b/pc/rtp_transport_internal.h index 90537dd4ea..ee567dd034 100644 --- a/pc/rtp_transport_internal.h +++ b/pc/rtp_transport_internal.h @@ -22,12 +22,13 @@ #include "rtc_base/ssl_stream_adapter.h" namespace rtc { -class CopyOnWriteBuffer; struct PacketOptions; } // namespace rtc namespace webrtc { +class CopyOnWriteBuffer; + // This class is an internal interface; it is not accessible to API consumers // but is accessible to internal classes in order to send and receive RTP and // RTCP packets belonging to a single RTP session. Additional convenience and diff --git a/pc/sctp_utils.h b/pc/sctp_utils.h index 16759a1511..e2ded86d05 100644 --- a/pc/sctp_utils.h +++ b/pc/sctp_utils.h @@ -22,11 +22,8 @@ #include "rtc_base/copy_on_write_buffer.h" #include "rtc_base/ssl_stream_adapter.h" // For SSLRole -namespace rtc { -class CopyOnWriteBuffer; -} // namespace rtc - namespace webrtc { +class CopyOnWriteBuffer; struct DataChannelInit; // Wraps the `uint16_t` sctp data channel stream id value and does range diff --git a/rtc_base/buffer.h b/rtc_base/buffer.h index 6663c687b8..2f7fa93d4f 100644 --- a/rtc_base/buffer.h +++ b/rtc_base/buffer.h @@ -25,7 +25,7 @@ #include "rtc_base/type_traits.h" #include "rtc_base/zero_memory.h" -namespace rtc { +namespace webrtc { namespace internal { @@ -447,6 +447,16 @@ using Buffer = BufferT; template using ZeroOnFreeBuffer = BufferT; +} // namespace webrtc + +// Re-export symbols from the webrtc namespace for backwards compatibility. +// TODO(bugs.webrtc.org/4222596): Remove once all references are updated. +namespace rtc { +template +using BufferT = ::webrtc::BufferT; +using ::webrtc::Buffer; +template +using ZeroOnFreeBuffer = ::webrtc::ZeroOnFreeBuffer; } // namespace rtc #endif // RTC_BASE_BUFFER_H_ diff --git a/rtc_base/buffer_unittest.cc b/rtc_base/buffer_unittest.cc index b56118afde..e6f5d8eb92 100644 --- a/rtc_base/buffer_unittest.cc +++ b/rtc_base/buffer_unittest.cc @@ -18,7 +18,7 @@ #include "test/gmock.h" #include "test/gtest.h" -namespace rtc { +namespace webrtc { namespace { @@ -102,7 +102,7 @@ TEST(BufferTest, TestAppendData) { EXPECT_EQ(buf, Buffer(exp)); Buffer buf2; buf2.AppendData(buf); - buf2.AppendData(rtc::ArrayView(buf)); + buf2.AppendData(ArrayView(buf)); const int8_t exp2[] = {0x4, 0x5, 0x6, 0xa, 0xb, 0x4, 0x5, 0x6, 0xa, 0xb}; EXPECT_EQ(buf2, Buffer(exp2)); } @@ -242,7 +242,7 @@ TEST(BufferTest, TestClear) { } TEST(BufferTest, TestLambdaSetAppend) { - auto setter = [](rtc::ArrayView av) { + auto setter = [](ArrayView av) { for (int i = 0; i != 15; ++i) av[i] = kTestData[i]; return 15; @@ -262,7 +262,7 @@ TEST(BufferTest, TestLambdaSetAppend) { } TEST(BufferTest, TestLambdaSetAppendSigned) { - auto setter = [](rtc::ArrayView av) { + auto setter = [](ArrayView av) { for (int i = 0; i != 15; ++i) av[i] = kTestData[i]; return 15; @@ -282,7 +282,7 @@ TEST(BufferTest, TestLambdaSetAppendSigned) { } TEST(BufferTest, TestLambdaAppendEmpty) { - auto setter = [](rtc::ArrayView av) { + auto setter = [](ArrayView av) { for (int i = 0; i != 15; ++i) av[i] = kTestData[i]; return 15; @@ -300,7 +300,7 @@ TEST(BufferTest, TestLambdaAppendEmpty) { } TEST(BufferTest, TestLambdaAppendPartial) { - auto setter = [](rtc::ArrayView av) { + auto setter = [](ArrayView av) { for (int i = 0; i != 7; ++i) av[i] = kTestData[i]; return 7; @@ -316,7 +316,7 @@ TEST(BufferTest, TestLambdaAppendPartial) { TEST(BufferTest, TestMutableLambdaSetAppend) { uint8_t magic_number = 17; - auto setter = [magic_number](rtc::ArrayView av) mutable { + auto setter = [magic_number](ArrayView av) mutable { for (int i = 0; i != 15; ++i) { av[i] = magic_number; ++magic_number; @@ -489,7 +489,7 @@ TEST(ZeroOnFreeBufferTest, TestZeroOnSetData) { TEST(ZeroOnFreeBufferTest, TestZeroOnSetDataFromSetter) { static constexpr size_t offset = 1; - const auto setter = [](rtc::ArrayView av) { + const auto setter = [](ArrayView av) { for (int i = 0; i != 2; ++i) av[i] = kTestData[offset + i]; return 2; @@ -545,4 +545,4 @@ TEST(ZeroOnFreeBufferTest, TestZeroOnClear) { } } -} // namespace rtc +} // namespace webrtc diff --git a/rtc_base/copy_on_write_buffer.cc b/rtc_base/copy_on_write_buffer.cc index d8ab53cb24..51bdb17f07 100644 --- a/rtc_base/copy_on_write_buffer.cc +++ b/rtc_base/copy_on_write_buffer.cc @@ -14,7 +14,7 @@ #include "absl/strings/string_view.h" -namespace rtc { +namespace webrtc { CopyOnWriteBuffer::CopyOnWriteBuffer() : offset_(0), size_(0) { RTC_DCHECK(IsConsistent()); @@ -124,4 +124,4 @@ void CopyOnWriteBuffer::UnshareAndEnsureCapacity(size_t new_capacity) { RTC_DCHECK(IsConsistent()); } -} // namespace rtc +} // namespace webrtc diff --git a/rtc_base/copy_on_write_buffer.h b/rtc_base/copy_on_write_buffer.h index 6cd135d3f5..b7454682b9 100644 --- a/rtc_base/copy_on_write_buffer.h +++ b/rtc_base/copy_on_write_buffer.h @@ -27,7 +27,7 @@ #include "rtc_base/system/rtc_export.h" #include "rtc_base/type_traits.h" -namespace rtc { +namespace webrtc { class RTC_EXPORT CopyOnWriteBuffer { public: @@ -316,6 +316,12 @@ class RTC_EXPORT CopyOnWriteBuffer { // Should be 0 if the buffer_ is empty. }; +} // namespace webrtc + +// Re-export symbols from the webrtc namespace for backwards compatibility. +// TODO(bugs.webrtc.org/4222596): Remove once all references are updated. +namespace rtc { +using ::webrtc::CopyOnWriteBuffer; } // namespace rtc #endif // RTC_BASE_COPY_ON_WRITE_BUFFER_H_ diff --git a/rtc_base/copy_on_write_buffer_unittest.cc b/rtc_base/copy_on_write_buffer_unittest.cc index 8bf53c4d4c..25d6d9bcba 100644 --- a/rtc_base/copy_on_write_buffer_unittest.cc +++ b/rtc_base/copy_on_write_buffer_unittest.cc @@ -14,7 +14,7 @@ #include "test/gtest.h" -namespace rtc { +namespace webrtc { namespace { @@ -370,8 +370,8 @@ TEST(CopyOnWriteBufferTest, SlicesAreIndependent) { TEST(CopyOnWriteBufferTest, AcceptsVectorLikeTypes) { std::vector a = {1, 2}; std::vector b = {3, 4}; - rtc::ArrayView c(a); - rtc::ArrayView d(b); + ArrayView c(a); + ArrayView d(b); CopyOnWriteBuffer a_buf(a); CopyOnWriteBuffer b_buf(b); @@ -387,4 +387,4 @@ TEST(CopyOnWriteBufferTest, AcceptsVectorLikeTypes) { EXPECT_EQ(all.size(), 8U); } -} // namespace rtc +} // namespace webrtc diff --git a/rtc_base/zero_memory.cc b/rtc_base/zero_memory.cc index b9c5b380ac..2727ed9e7b 100644 --- a/rtc_base/zero_memory.cc +++ b/rtc_base/zero_memory.cc @@ -17,7 +17,7 @@ #include "rtc_base/checks.h" #include "rtc_base/zero_memory.h" -namespace rtc { +namespace webrtc { // Code and comment taken from "OPENSSL_cleanse" of BoringSSL. void ExplicitZeroMemory(void* ptr, size_t len) { @@ -35,4 +35,4 @@ void ExplicitZeroMemory(void* ptr, size_t len) { #endif // !WEBRTC_WIN } -} // namespace rtc +} // namespace webrtc diff --git a/rtc_base/zero_memory.h b/rtc_base/zero_memory.h index b92f52f9b6..c5cd2d5921 100644 --- a/rtc_base/zero_memory.h +++ b/rtc_base/zero_memory.h @@ -17,7 +17,7 @@ #include "api/array_view.h" -namespace rtc { +namespace webrtc { // Fill memory with zeros in a way that the compiler doesn't optimize it away // even if the pointer is not used afterwards. @@ -30,6 +30,12 @@ void ExplicitZeroMemory(rtc::ArrayView a) { ExplicitZeroMemory(a.data(), a.size()); } +} // namespace webrtc + +// Re-export symbols from the webrtc namespace for backwards compatibility. +// TODO(bugs.webrtc.org/4222596): Remove once all references are updated. +namespace rtc { +using ::webrtc::ExplicitZeroMemory; } // namespace rtc #endif // RTC_BASE_ZERO_MEMORY_H_ diff --git a/rtc_base/zero_memory_unittest.cc b/rtc_base/zero_memory_unittest.cc index 74d95f49e9..b75e3795ad 100644 --- a/rtc_base/zero_memory_unittest.cc +++ b/rtc_base/zero_memory_unittest.cc @@ -15,7 +15,7 @@ #include "api/array_view.h" #include "test/gtest.h" -namespace rtc { +namespace webrtc { TEST(ZeroMemoryTest, TestZeroMemory) { static const size_t kBufferSize = 32; @@ -35,7 +35,7 @@ TEST(ZeroMemoryTest, TestZeroArrayView) { for (size_t i = 0; i < kBufferSize; i++) { buffer[i] = static_cast(i + 1); } - ExplicitZeroMemory(rtc::ArrayView(buffer, sizeof(buffer))); + ExplicitZeroMemory(ArrayView(buffer, sizeof(buffer))); for (size_t i = 0; i < kBufferSize; i++) { EXPECT_EQ(buffer[i], 0); } @@ -50,4 +50,4 @@ TEST(ZeroMemoryTest, TestZeroMemoryUnused) { ExplicitZeroMemory(buffer, sizeof(buffer)); } -} // namespace rtc +} // namespace webrtc