blob: 4f46e705a0c70a05d890237a8e4401e12560b689 [file] [log] [blame]
htaa2a49d92016-03-04 02:51:39 -08001/*
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
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#include "api/mediaconstraintsinterface.h"
htaa2a49d92016-03-04 02:51:39 -080012
Yves Gerey3e707812018-11-28 16:47:49 +010013#include "absl/types/optional.h"
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020014#include "api/test/fakeconstraints.h"
Yves Gerey3e707812018-11-28 16:47:49 +010015#include "media/base/mediaconfig.h"
16#include "test/gtest.h"
htaa2a49d92016-03-04 02:51:39 -080017
18namespace webrtc {
19
20namespace {
21
nissec36b31b2016-04-11 23:25:29 -070022// Checks all settings touched by CopyConstraintsIntoRtcConfiguration,
23// plus audio_jitter_buffer_max_packets.
htaa2a49d92016-03-04 02:51:39 -080024bool Matches(const PeerConnectionInterface::RTCConfiguration& a,
25 const PeerConnectionInterface::RTCConfiguration& b) {
nissec36b31b2016-04-11 23:25:29 -070026 return a.disable_ipv6 == b.disable_ipv6 &&
27 a.audio_jitter_buffer_max_packets ==
htaa2a49d92016-03-04 02:51:39 -080028 b.audio_jitter_buffer_max_packets &&
nissec36b31b2016-04-11 23:25:29 -070029 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 15:25:12 +010033 a.media_config == b.media_config;
htaa2a49d92016-03-04 02:51:39 -080034}
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 10:54:27 +010061 configuration.enable_dtls_srtp = true;
htaa2a49d92016-03-04 02:51:39 -080062 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