Implement legacy offer_to_receive options for Unified Plan
This implements the WebRTC specification for handling
the legacy offer options offer_to_receive_audio and
offer_to_receive_video. They are not implemented for CreateAnswer.
With Unified Plan semantics, clients should switch to the
RtpTransceiver API for ensuring the correct media sections are
offered.
Bug: webrtc:7600
Change-Id: I6ced00b86b165a352bd0ca3d64b48fadcfd12235
Reviewed-on: https://webrtc-review.googlesource.com/41341
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21784}
diff --git a/pc/rtpmediautils_unittest.cc b/pc/rtpmediautils_unittest.cc
index d72f35b..af7e8f6 100644
--- a/pc/rtpmediautils_unittest.cc
+++ b/pc/rtpmediautils_unittest.cc
@@ -8,16 +8,24 @@
* be found in the AUTHORS file in the root of the source tree.
*/
+#include <tuple>
+
#include "pc/rtpmediautils.h"
#include "test/gtest.h"
namespace webrtc {
+using ::testing::Bool;
+using ::testing::Combine;
using ::testing::Values;
+using ::testing::ValuesIn;
+
+RtpTransceiverDirection kAllDirections[] = {
+ RtpTransceiverDirection::kSendRecv, RtpTransceiverDirection::kSendOnly,
+ RtpTransceiverDirection::kRecvOnly, RtpTransceiverDirection::kInactive};
class EnumerateAllDirectionsTest
- : public ::testing::Test,
- public ::testing::WithParamInterface<RtpTransceiverDirection> {};
+ : public ::testing::TestWithParam<RtpTransceiverDirection> {};
// Test that converting the direction to send/recv and back again results in the
// same direction.
@@ -51,9 +59,38 @@
INSTANTIATE_TEST_CASE_P(RtpTransceiverDirectionTest,
EnumerateAllDirectionsTest,
- Values(RtpTransceiverDirection::kSendRecv,
- RtpTransceiverDirection::kSendOnly,
- RtpTransceiverDirection::kRecvOnly,
- RtpTransceiverDirection::kInactive));
+ ValuesIn(kAllDirections));
+
+class EnumerateAllDirectionsAndBool
+ : public ::testing::TestWithParam<
+ std::tuple<RtpTransceiverDirection, bool>> {};
+
+TEST_P(EnumerateAllDirectionsAndBool, TestWithSendSet) {
+ RtpTransceiverDirection direction = std::get<0>(GetParam());
+ bool send = std::get<1>(GetParam());
+
+ RtpTransceiverDirection result =
+ RtpTransceiverDirectionWithSendSet(direction, send);
+
+ EXPECT_EQ(send, RtpTransceiverDirectionHasSend(result));
+ EXPECT_EQ(RtpTransceiverDirectionHasRecv(direction),
+ RtpTransceiverDirectionHasRecv(result));
+}
+
+TEST_P(EnumerateAllDirectionsAndBool, TestWithRecvSet) {
+ RtpTransceiverDirection direction = std::get<0>(GetParam());
+ bool recv = std::get<1>(GetParam());
+
+ RtpTransceiverDirection result =
+ RtpTransceiverDirectionWithRecvSet(direction, recv);
+
+ EXPECT_EQ(RtpTransceiverDirectionHasSend(direction),
+ RtpTransceiverDirectionHasSend(result));
+ EXPECT_EQ(recv, RtpTransceiverDirectionHasRecv(result));
+}
+
+INSTANTIATE_TEST_CASE_P(RtpTransceiverDirectionTest,
+ EnumerateAllDirectionsAndBool,
+ Combine(ValuesIn(kAllDirections), Bool()));
} // namespace webrtc