Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(499)

Unified Diff: webrtc/api/peerconnectioninterface_unittest.cc

Issue 1670153003: Introduce struct MediaConfig, with construction-time settings. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Addressed test nit; use reference. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/api/peerconnectionfactory.cc ('k') | webrtc/api/statscollector_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/api/peerconnectioninterface_unittest.cc
diff --git a/webrtc/api/peerconnectioninterface_unittest.cc b/webrtc/api/peerconnectioninterface_unittest.cc
index b9629f50437b76de888cb8419e177e38886bd7fd..2c7cc128adeb03ea463895a84dc7499d98f99c48 100644
--- a/webrtc/api/peerconnectioninterface_unittest.cc
+++ b/webrtc/api/peerconnectioninterface_unittest.cc
@@ -2328,6 +2328,105 @@ TEST_F(PeerConnectionInterfaceTest, SignalSameTracksInSeparateMediaStream) {
EXPECT_TRUE(ContainsSender(senders, kVideoTracks[0]));
}
+// The PeerConnectionMediaConfig tests below verify that configuration
+// and constraints are propagated into the MediaConfig passed to
+// CreateMediaController. These settings are intended for MediaChannel
+// constructors, but that is not exercised by these unittest.
+class PeerConnectionFactoryForTest : public webrtc::PeerConnectionFactory {
+ public:
+ webrtc::MediaControllerInterface* CreateMediaController(
+ const cricket::MediaConfig& config) const override {
+ create_media_controller_called_ = true;
+ create_media_controller_config_ = config;
+
+ webrtc::MediaControllerInterface* mc =
+ PeerConnectionFactory::CreateMediaController(config);
+ EXPECT_TRUE(mc != nullptr);
+ return mc;
+ }
+
+ // Mutable, so they can be modified in the above const-declared method.
+ mutable bool create_media_controller_called_ = false;
+ mutable cricket::MediaConfig create_media_controller_config_;
+};
+
+class PeerConnectionMediaConfigTest : public testing::Test {
+ protected:
+ void SetUp() override {
+ pcf_= new rtc::RefCountedObject<PeerConnectionFactoryForTest>();
+ pcf_->Initialize();
+ }
+ const cricket::MediaConfig& TestCreatePeerConnection(
+ const PeerConnectionInterface::RTCConfiguration& config,
+ const MediaConstraintsInterface *constraints) {
+ pcf_->create_media_controller_called_ = false;
+
+ scoped_refptr<PeerConnectionInterface> pc(
+ pcf_->CreatePeerConnection(config, constraints, nullptr, nullptr,
+ &observer_));
+ EXPECT_TRUE(pc.get());
+ EXPECT_TRUE(pcf_->create_media_controller_called_);
+ return pcf_->create_media_controller_config_;
+ }
+
+ scoped_refptr<PeerConnectionFactoryForTest> pcf_;
+ MockPeerConnectionObserver observer_;
+};
+
+// This test verifies the default behaviour with no constraints and a
+// default RTCConfiguration.
+TEST_F(PeerConnectionMediaConfigTest, TestDefaults) {
+ PeerConnectionInterface::RTCConfiguration config;
+ FakeConstraints constraints;
+
+ const cricket::MediaConfig& media_config =
+ TestCreatePeerConnection(config, &constraints);
+
+ EXPECT_FALSE(media_config.enable_dscp);
+ EXPECT_TRUE(media_config.enable_cpu_overuse_detection);
+ EXPECT_FALSE(media_config.disable_prerenderer_smoothing);
+}
+
+// This test verifies the DSCP constraint is recognized and passed to
+// the CreateMediaController call.
+TEST_F(PeerConnectionMediaConfigTest, TestDscpConstraintTrue) {
+ PeerConnectionInterface::RTCConfiguration config;
+ FakeConstraints constraints;
+
+ constraints.AddOptional(webrtc::MediaConstraintsInterface::kEnableDscp, true);
+ const cricket::MediaConfig& media_config =
+ TestCreatePeerConnection(config, &constraints);
+
+ EXPECT_TRUE(media_config.enable_dscp);
+}
+
+// This test verifies the cpu overuse detection constraint is
+// recognized and passed to the CreateMediaController call.
+TEST_F(PeerConnectionMediaConfigTest, TestCpuOveruseConstraintFalse) {
+ PeerConnectionInterface::RTCConfiguration config;
+ FakeConstraints constraints;
+
+ constraints.AddOptional(
+ webrtc::MediaConstraintsInterface::kCpuOveruseDetection, false);
+ const cricket::MediaConfig media_config =
+ TestCreatePeerConnection(config, &constraints);
+
+ EXPECT_FALSE(media_config.enable_cpu_overuse_detection);
+}
+
+// This test verifies that the disable_prerenderer_smoothing flag is
+// propagated from RTCConfiguration to the CreateMediaController call.
+TEST_F(PeerConnectionMediaConfigTest, TestDisablePrerendererSmoothingTrue) {
+ PeerConnectionInterface::RTCConfiguration config;
+ FakeConstraints constraints;
+
+ config.disable_prerenderer_smoothing = true;
+ const cricket::MediaConfig& media_config =
+ TestCreatePeerConnection(config, &constraints);
+
+ EXPECT_TRUE(media_config.disable_prerenderer_smoothing);
+}
+
// The following tests verify that session options are created correctly.
// TODO(deadbeef): Convert these tests to be more end-to-end. Instead of
// "verify options are converted correctly", should be "pass options into
« no previous file with comments | « webrtc/api/peerconnectionfactory.cc ('k') | webrtc/api/statscollector_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698