blob: b62e0924874b38279d86747dc85cadb663e0702e [file] [log] [blame]
htaa2a49d92016-03-04 10:51:391/*
2 * Copyright 2016 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
Steve Anton10542f22019-01-11 17:11:0011#include "api/media_constraints_interface.h"
htaa2a49d92016-03-04 10:51:3912
Yves Gerey3e707812018-11-28 15:47:4913#include "absl/types/optional.h"
Steve Anton10542f22019-01-11 17:11:0014#include "api/test/fake_constraints.h"
15#include "media/base/media_config.h"
Yves Gerey3e707812018-11-28 15:47:4916#include "test/gtest.h"
htaa2a49d92016-03-04 10:51:3917
18namespace webrtc {
19
20namespace {
21
nissec36b31b2016-04-12 06:25:2922// Checks all settings touched by CopyConstraintsIntoRtcConfiguration,
23// plus audio_jitter_buffer_max_packets.
htaa2a49d92016-03-04 10:51:3924bool Matches(const PeerConnectionInterface::RTCConfiguration& a,
25 const PeerConnectionInterface::RTCConfiguration& b) {
nissec36b31b2016-04-12 06:25:2926 return a.disable_ipv6 == b.disable_ipv6 &&
27 a.audio_jitter_buffer_max_packets ==
htaa2a49d92016-03-04 10:51:3928 b.audio_jitter_buffer_max_packets &&
nissec36b31b2016-04-12 06:25:2929 a.enable_rtp_data_channel == b.enable_rtp_data_channel &&
30 a.screencast_min_bitrate == b.screencast_min_bitrate &&
31 a.combined_audio_video_bwe == b.combined_audio_video_bwe &&
32 a.enable_dtls_srtp == b.enable_dtls_srtp &&
Niels Möller1d7ecd22018-01-18 14:25:1233 a.media_config == b.media_config;
htaa2a49d92016-03-04 10:51:3934}
35
36TEST(MediaConstraintsInterface, CopyConstraintsIntoRtcConfiguration) {
37 FakeConstraints constraints;
38 PeerConnectionInterface::RTCConfiguration old_configuration;
39 PeerConnectionInterface::RTCConfiguration configuration;
40
41 CopyConstraintsIntoRtcConfiguration(&constraints, &configuration);
42 EXPECT_TRUE(Matches(old_configuration, configuration));
43
44 constraints.SetMandatory(MediaConstraintsInterface::kEnableIPv6, "true");
45 CopyConstraintsIntoRtcConfiguration(&constraints, &configuration);
46 EXPECT_FALSE(configuration.disable_ipv6);
47 constraints.SetMandatory(MediaConstraintsInterface::kEnableIPv6, "false");
48 CopyConstraintsIntoRtcConfiguration(&constraints, &configuration);
49 EXPECT_TRUE(configuration.disable_ipv6);
50
51 constraints.SetMandatory(MediaConstraintsInterface::kScreencastMinBitrate,
52 27);
53 CopyConstraintsIntoRtcConfiguration(&constraints, &configuration);
54 EXPECT_TRUE(configuration.screencast_min_bitrate);
55 EXPECT_EQ(27, *(configuration.screencast_min_bitrate));
56
57 // An empty set of constraints will not overwrite
58 // values that are already present.
59 constraints = FakeConstraints();
60 configuration = old_configuration;
Oskar Sundbom36f8f3e2017-11-16 09:54:2761 configuration.enable_dtls_srtp = true;
htaa2a49d92016-03-04 10:51:3962 configuration.audio_jitter_buffer_max_packets = 34;
63 CopyConstraintsIntoRtcConfiguration(&constraints, &configuration);
64 EXPECT_EQ(34, configuration.audio_jitter_buffer_max_packets);
65 ASSERT_TRUE(configuration.enable_dtls_srtp);
66 EXPECT_TRUE(*(configuration.enable_dtls_srtp));
67}
68
69} // namespace
70
71} // namespace webrtc