/* * Copyright 2023 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #include "pc/test/enable_fake_media.h" #include #include #include "absl/base/nullability.h" #include "api/environment/environment.h" #include "api/peer_connection_interface.h" #include "call/call.h" #include "call/call_config.h" #include "media/base/fake_media_engine.h" #include "pc/media_factory.h" #include "rtc_base/checks.h" namespace webrtc { using ::cricket::FakeMediaEngine; using ::cricket::MediaEngineInterface; void EnableFakeMedia( PeerConnectionFactoryDependencies& deps, absl::Nonnull> fake_media_engine) { class FakeMediaFactory : public MediaFactory { public: explicit FakeMediaFactory( absl::Nonnull> fake) : fake_(std::move(fake)) {} std::unique_ptr CreateCall(const CallConfig& config) override { return Call::Create(config); } std::unique_ptr CreateMediaEngine( const Environment& /*env*/, PeerConnectionFactoryDependencies& /*dependencies*/) { RTC_CHECK(fake_ != nullptr) << "CreateMediaEngine can be called at most once."; return std::move(fake_); } private: absl::Nullable> fake_; }; deps.media_factory = std::make_unique(std::move(fake_media_engine)); } void EnableFakeMedia(PeerConnectionFactoryDependencies& deps) { EnableFakeMedia(deps, std::make_unique()); } } // namespace webrtc