Commit 25c80f24 authored by Antonio Gomes's avatar Antonio Gomes Committed by Commit Bot

Change RTCPeerConnectionHandlerTest to operate over MediaStreamComponent

... instead of WebMediaStreamTrack.

This is part of the effort to reduce the needless use of
public Blink APIs (wrappers) within renderer/modules.

Note that some WebMediaStream -> MediaStreamDescriptor, and similar
conversions were also performed.

BUG=704136
R=guidou@chromium.org

Change-Id: I7c8cd40f009e6e464487fdd46983567a13c9ae41
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2260932
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: default avatarGuido Urdaneta <guidou@chromium.org>
Cr-Commit-Position: refs/heads/master@{#783080}
parent cc32ec67
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
#include "third_party/blink/renderer/platform/mediastream/media_stream_audio_source.h" #include "third_party/blink/renderer/platform/mediastream/media_stream_audio_source.h"
#include "third_party/blink/renderer/platform/mediastream/media_stream_audio_track.h" #include "third_party/blink/renderer/platform/mediastream/media_stream_audio_track.h"
#include "third_party/blink/renderer/platform/mediastream/media_stream_component.h" #include "third_party/blink/renderer/platform/mediastream/media_stream_component.h"
#include "third_party/blink/renderer/platform/mediastream/media_stream_descriptor.h"
#include "third_party/blink/renderer/platform/peerconnection/rtc_dtmf_sender_handler.h" #include "third_party/blink/renderer/platform/peerconnection/rtc_dtmf_sender_handler.h"
#include "third_party/blink/renderer/platform/peerconnection/rtc_ice_candidate_platform.h" #include "third_party/blink/renderer/platform/peerconnection/rtc_ice_candidate_platform.h"
#include "third_party/blink/renderer/platform/peerconnection/rtc_peer_connection_handler_client.h" #include "third_party/blink/renderer/platform/peerconnection/rtc_peer_connection_handler_client.h"
...@@ -318,41 +319,39 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test { ...@@ -318,41 +319,39 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test {
} }
// Creates a WebKit local MediaStream. // Creates a WebKit local MediaStream.
WebMediaStream CreateLocalMediaStream(const std::string& stream_label) { MediaStreamDescriptor* CreateLocalMediaStream(const String& stream_label) {
std::string video_track_label("video-label"); String video_track_label("video-label");
std::string audio_track_label("audio-label"); String audio_track_label("audio-label");
blink::WebMediaStreamSource blink_audio_source; auto* audio_source = MakeGarbageCollected<MediaStreamSource>(
blink_audio_source.Initialize(blink::WebString::FromUTF8(audio_track_label), audio_track_label, MediaStreamSource::kTypeAudio,
blink::WebMediaStreamSource::kTypeAudio, String::FromUTF8("audio_track"), false /* remote */);
blink::WebString::FromUTF8("audio_track"), auto processed_audio_source = std::make_unique<ProcessedLocalAudioSource>(
false /* remote */);
auto* const audio_source = new blink::ProcessedLocalAudioSource(
nullptr /* consumer_web_frame is N/A for non-browser tests */, nullptr /* consumer_web_frame is N/A for non-browser tests */,
blink::MediaStreamDevice( MediaStreamDevice(blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE,
blink::mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE, "mock_device_id", "Mock device",
"mock_device_id", "Mock device", media::AudioParameters::kAudioCDSampleRate,
media::AudioParameters::kAudioCDSampleRate, media::CHANNEL_LAYOUT_STEREO,
media::CHANNEL_LAYOUT_STEREO, media::AudioParameters::kAudioCDSampleRate / 100),
media::AudioParameters::kAudioCDSampleRate / 100),
false /* disable_local_echo */, blink::AudioProcessingProperties(), false /* disable_local_echo */, blink::AudioProcessingProperties(),
base::DoNothing(), base::DoNothing(),
blink::scheduler::GetSingleThreadTaskRunnerForTesting()); blink::scheduler::GetSingleThreadTaskRunnerForTesting());
audio_source->SetAllowInvalidRenderFrameIdForTesting(true); auto* processed_audio_source_ptr = processed_audio_source.get();
blink_audio_source.SetPlatformSource( processed_audio_source->SetAllowInvalidRenderFrameIdForTesting(true);
base::WrapUnique(audio_source)); // Takes ownership. processed_audio_source->SetOwner(audio_source);
audio_source->SetPlatformSource(std::move(processed_audio_source));
blink::WebMediaStreamSource video_source;
video_source.Initialize(blink::WebString::FromUTF8(video_track_label), auto* video_source = MakeGarbageCollected<MediaStreamSource>(
blink::WebMediaStreamSource::kTypeVideo, video_track_label, MediaStreamSource::kTypeVideo,
blink::WebString::FromUTF8("video_track"), String::FromUTF8("video_track"), false /* remote */);
false /* remote */); auto native_video_source = std::make_unique<MockMediaStreamVideoSource>();
blink::MockMediaStreamVideoSource* native_video_source = auto* native_video_source_ptr = native_video_source.get();
new blink::MockMediaStreamVideoSource(); native_video_source->SetOwner(video_source);
video_source.SetPlatformSource(base::WrapUnique(native_video_source)); video_source->SetPlatformSource(std::move(native_video_source));
blink::WebVector<blink::WebMediaStreamTrack> audio_tracks( HeapVector<Member<MediaStreamComponent>> audio_components(
static_cast<size_t>(1)); static_cast<size_t>(1));
audio_tracks[0].Initialize(blink_audio_source.Id(), blink_audio_source); audio_components[0] = MakeGarbageCollected<MediaStreamComponent>(
audio_source->Id(), audio_source);
EXPECT_CALL( EXPECT_CALL(
*webrtc_audio_device_platform_support_->mock_audio_capturer_source(), *webrtc_audio_device_platform_support_->mock_audio_capturer_source(),
Initialize(_, _)); Initialize(_, _));
...@@ -365,16 +364,16 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test { ...@@ -365,16 +364,16 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test {
EXPECT_CALL( EXPECT_CALL(
*webrtc_audio_device_platform_support_->mock_audio_capturer_source(), *webrtc_audio_device_platform_support_->mock_audio_capturer_source(),
Stop()); Stop());
CHECK(audio_source->ConnectToTrack(audio_tracks[0])); CHECK(processed_audio_source_ptr->ConnectToTrack(audio_components[0]));
blink::WebVector<blink::WebMediaStreamTrack> video_tracks(
HeapVector<Member<MediaStreamComponent>> video_components(
static_cast<size_t>(1)); static_cast<size_t>(1));
video_tracks[0] = blink::MediaStreamVideoTrack::CreateVideoTrack( video_components[0] = *MediaStreamVideoTrack::CreateVideoTrack(
native_video_source, native_video_source_ptr,
blink::MediaStreamVideoSource::ConstraintsOnceCallback(), true); MediaStreamVideoSource::ConstraintsOnceCallback(), true);
blink::WebMediaStream local_stream; auto* local_stream = MakeGarbageCollected<MediaStreamDescriptor>(
local_stream.Initialize(blink::WebString::FromUTF8(stream_label), stream_label, audio_components, video_components);
audio_tracks, video_tracks);
return local_stream; return local_stream;
} }
...@@ -398,11 +397,14 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test { ...@@ -398,11 +397,14 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test {
return stream; return stream;
} }
void StopAllTracks(const blink::WebMediaStream& stream) { void StopAllTracks(MediaStreamDescriptor* descriptor) {
for (const auto& track : stream.AudioTracks()) for (auto component : descriptor->AudioComponents())
blink::MediaStreamAudioTrack::From(track)->Stop(); MediaStreamAudioTrack::From(WebMediaStreamTrack(component.Get()))->Stop();
for (const auto& track : stream.VideoTracks())
blink::MediaStreamVideoTrack::GetVideoTrack(track)->Stop(); for (auto component : descriptor->VideoComponents()) {
MediaStreamVideoTrack::GetVideoTrack(WebMediaStreamTrack(component.Get()))
->Stop();
}
} }
bool AddStream(const blink::WebMediaStream& web_stream) { bool AddStream(const blink::WebMediaStream& web_stream) {
...@@ -435,9 +437,9 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test { ...@@ -435,9 +437,9 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test {
} }
std::vector<std::unique_ptr<blink::RTCRtpSenderImpl>>::iterator std::vector<std::unique_ptr<blink::RTCRtpSenderImpl>>::iterator
FindSenderForTrack(const blink::WebMediaStreamTrack& web_track) { FindSenderForTrack(MediaStreamComponent* component) {
for (auto it = senders_.begin(); it != senders_.end(); ++it) { for (auto it = senders_.begin(); it != senders_.end(); ++it) {
if ((*it)->Track()->UniqueId() == web_track.UniqueId()) if ((*it)->Track()->UniqueId() == component->UniqueId())
return it; return it;
} }
return senders_.end(); return senders_.end();
...@@ -812,7 +814,7 @@ TEST_F(RTCPeerConnectionHandlerTest, addICECandidate) { ...@@ -812,7 +814,7 @@ TEST_F(RTCPeerConnectionHandlerTest, addICECandidate) {
} }
TEST_F(RTCPeerConnectionHandlerTest, addAndRemoveStream) { TEST_F(RTCPeerConnectionHandlerTest, addAndRemoveStream) {
std::string stream_label = "local_stream"; String stream_label = "local_stream";
blink::WebMediaStream local_stream(CreateLocalMediaStream(stream_label)); blink::WebMediaStream local_stream(CreateLocalMediaStream(stream_label));
EXPECT_CALL( EXPECT_CALL(
...@@ -828,7 +830,7 @@ TEST_F(RTCPeerConnectionHandlerTest, addAndRemoveStream) { ...@@ -828,7 +830,7 @@ TEST_F(RTCPeerConnectionHandlerTest, addAndRemoveStream) {
PeerConnectionTracker::TransceiverUpdatedReason::kRemoveTrack, _, _)) PeerConnectionTracker::TransceiverUpdatedReason::kRemoveTrack, _, _))
.Times(2); .Times(2);
EXPECT_TRUE(AddStream(local_stream)); EXPECT_TRUE(AddStream(local_stream));
EXPECT_EQ(stream_label, mock_peer_connection_->stream_label()); EXPECT_EQ(stream_label.Utf8(), mock_peer_connection_->stream_label());
EXPECT_EQ(2u, mock_peer_connection_->GetSenders().size()); EXPECT_EQ(2u, mock_peer_connection_->GetSenders().size());
EXPECT_FALSE(AddStream(local_stream)); EXPECT_FALSE(AddStream(local_stream));
...@@ -839,24 +841,21 @@ TEST_F(RTCPeerConnectionHandlerTest, addAndRemoveStream) { ...@@ -839,24 +841,21 @@ TEST_F(RTCPeerConnectionHandlerTest, addAndRemoveStream) {
} }
TEST_F(RTCPeerConnectionHandlerTest, addStreamWithStoppedAudioAndVideoTrack) { TEST_F(RTCPeerConnectionHandlerTest, addStreamWithStoppedAudioAndVideoTrack) {
std::string stream_label = "local_stream"; String stream_label = "local_stream";
blink::WebMediaStream local_stream(CreateLocalMediaStream(stream_label)); MediaStreamDescriptor* local_stream(CreateLocalMediaStream(stream_label));
blink::WebVector<blink::WebMediaStreamTrack> audio_tracks = auto audio_tracks = local_stream->AudioComponents();
local_stream.AudioTracks(); auto* native_audio_source =
blink::MediaStreamAudioSource* native_audio_source = MediaStreamAudioSource::From(audio_tracks[0]->Source());
blink::MediaStreamAudioSource::From(audio_tracks[0].Source());
native_audio_source->StopSource(); native_audio_source->StopSource();
blink::WebVector<blink::WebMediaStreamTrack> video_tracks = auto video_tracks = local_stream->VideoComponents();
local_stream.VideoTracks(); auto* native_video_source = static_cast<MediaStreamVideoSource*>(
blink::MediaStreamVideoSource* native_video_source = video_tracks[0]->Source()->GetPlatformSource());
static_cast<blink::MediaStreamVideoSource*>(
video_tracks[0].Source().GetPlatformSource());
native_video_source->StopSource(); native_video_source->StopSource();
EXPECT_TRUE(AddStream(local_stream)); EXPECT_TRUE(AddStream(local_stream));
EXPECT_EQ(stream_label, mock_peer_connection_->stream_label()); EXPECT_EQ(stream_label.Utf8(), mock_peer_connection_->stream_label());
EXPECT_EQ(2u, mock_peer_connection_->GetSenders().size()); EXPECT_EQ(2u, mock_peer_connection_->GetSenders().size());
StopAllTracks(local_stream); StopAllTracks(local_stream);
...@@ -883,15 +882,14 @@ TEST_F(RTCPeerConnectionHandlerTest, GetStatsAfterClose) { ...@@ -883,15 +882,14 @@ TEST_F(RTCPeerConnectionHandlerTest, GetStatsAfterClose) {
} }
TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithLocalSelector) { TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithLocalSelector) {
blink::WebMediaStream local_stream(CreateLocalMediaStream("local_stream")); MediaStreamDescriptor* local_stream(CreateLocalMediaStream("local_stream"));
EXPECT_TRUE(AddStream(local_stream)); EXPECT_TRUE(AddStream(local_stream));
blink::WebVector<blink::WebMediaStreamTrack> tracks = auto components = local_stream->AudioComponents();
local_stream.AudioTracks(); ASSERT_LE(1ul, components.size());
ASSERT_LE(1ul, tracks.size());
scoped_refptr<MockRTCStatsRequest> request( scoped_refptr<MockRTCStatsRequest> request(
new rtc::RefCountedObject<MockRTCStatsRequest>()); new rtc::RefCountedObject<MockRTCStatsRequest>());
request->setSelector(tracks[0]); request->setSelector(components[0]);
pc_handler_->getStats(request.get()); pc_handler_->getStats(request.get());
RunMessageLoopsUntilIdle(); RunMessageLoopsUntilIdle();
EXPECT_EQ(1, request->result()->report_count()); EXPECT_EQ(1, request->result()->report_count());
...@@ -902,10 +900,9 @@ TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithLocalSelector) { ...@@ -902,10 +900,9 @@ TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithLocalSelector) {
TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithBadSelector) { TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithBadSelector) {
// The setup is the same as GetStatsWithLocalSelector, but the stream is not // The setup is the same as GetStatsWithLocalSelector, but the stream is not
// added to the PeerConnection. // added to the PeerConnection.
blink::WebMediaStream local_stream(CreateLocalMediaStream("local_stream_2")); MediaStreamDescriptor* local_stream(CreateLocalMediaStream("local_stream_2"));
blink::WebVector<blink::WebMediaStreamTrack> tracks = auto tracks = local_stream->AudioComponents();
local_stream.AudioTracks(); Member<MediaStreamComponent> component = tracks[0];
blink::WebMediaStreamTrack component = tracks[0];
mock_peer_connection_->SetGetStatsResult(false); mock_peer_connection_->SetGetStatsResult(false);
scoped_refptr<MockRTCStatsRequest> request( scoped_refptr<MockRTCStatsRequest> request(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment