Commit 5edb3dba authored by Antonio Gomes's avatar Antonio Gomes Committed by Commit Bot

Change WebRtcMediaStreamTrackAdapter to operate over MediaStreamComponent

... instead WebMediaStreamTrack.

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

BUG=704136
R=guidou@chromium.org

Change-Id: I37023bcd6f1b5fa5f25a475e6a2b19671e8285e9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2247059
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: default avatarGuido Urdaneta <guidou@chromium.org>
Cr-Commit-Position: refs/heads/master@{#779507}
parent 76b26fee
...@@ -100,7 +100,7 @@ void RemoteAudioTrackAdapter::InitializeWebAudioTrack( ...@@ -100,7 +100,7 @@ void RemoteAudioTrackAdapter::InitializeWebAudioTrack(
observed_track().get(), main_thread); observed_track().get(), main_thread);
auto* source_ptr = source.get(); auto* source_ptr = source.get();
source_ptr->SetOwner(track()->Source()); source_ptr->SetOwner(track()->Source());
track()->Source()->SetPlatformSource(std::move(source)); track()->Source()->SetPlatformSource(std::move(source)); // Takes ownership.
WebMediaStreamSource::Capabilities capabilities; WebMediaStreamSource::Capabilities capabilities;
capabilities.device_id = id(); capabilities.device_id = id();
......
...@@ -2314,7 +2314,7 @@ void RTCPeerConnectionHandler::OnAddReceiverPlanB( ...@@ -2314,7 +2314,7 @@ void RTCPeerConnectionHandler::OnAddReceiverPlanB(
DCHECK(task_runner_->RunsTasksInCurrentSequence()); DCHECK(task_runner_->RunsTasksInCurrentSequence());
DCHECK(receiver_state.is_initialized()); DCHECK(receiver_state.is_initialized());
TRACE_EVENT0("webrtc", "RTCPeerConnectionHandler::OnAddReceiverPlanB"); TRACE_EVENT0("webrtc", "RTCPeerConnectionHandler::OnAddReceiverPlanB");
auto web_track = receiver_state.track_ref()->web_track(); WebMediaStreamTrack web_track = receiver_state.track_ref()->web_track();
// Update metrics. // Update metrics.
track_metrics_.AddTrack(MediaStreamTrackMetrics::Direction::kReceive, track_metrics_.AddTrack(MediaStreamTrackMetrics::Direction::kReceive,
MediaStreamTrackMetricsKind(web_track), MediaStreamTrackMetricsKind(web_track),
......
...@@ -500,7 +500,7 @@ webrtc::DtlsTransportInformation RTCRtpSenderImpl::DtlsTransportInformation() { ...@@ -500,7 +500,7 @@ webrtc::DtlsTransportInformation RTCRtpSenderImpl::DtlsTransportInformation() {
MediaStreamComponent* RTCRtpSenderImpl::Track() const { MediaStreamComponent* RTCRtpSenderImpl::Track() const {
const auto& track_ref = internal_->state().track_ref(); const auto& track_ref = internal_->state().track_ref();
return track_ref ? track_ref->web_track() : blink::WebMediaStreamTrack(); return track_ref ? track_ref->web_track() : nullptr;
} }
Vector<String> RTCRtpSenderImpl::StreamIds() const { Vector<String> RTCRtpSenderImpl::StreamIds() const {
......
...@@ -28,18 +28,17 @@ scoped_refptr<WebRtcMediaStreamTrackAdapter> ...@@ -28,18 +28,17 @@ scoped_refptr<WebRtcMediaStreamTrackAdapter>
WebRtcMediaStreamTrackAdapter::CreateLocalTrackAdapter( WebRtcMediaStreamTrackAdapter::CreateLocalTrackAdapter(
blink::PeerConnectionDependencyFactory* factory, blink::PeerConnectionDependencyFactory* factory,
const scoped_refptr<base::SingleThreadTaskRunner>& main_thread, const scoped_refptr<base::SingleThreadTaskRunner>& main_thread,
const blink::WebMediaStreamTrack& web_track) { MediaStreamComponent* component) {
DCHECK(factory); DCHECK(factory);
DCHECK(main_thread->BelongsToCurrentThread()); DCHECK(main_thread->BelongsToCurrentThread());
DCHECK(!web_track.IsNull()); DCHECK(component);
scoped_refptr<WebRtcMediaStreamTrackAdapter> local_track_adapter( scoped_refptr<WebRtcMediaStreamTrackAdapter> local_track_adapter(
base::AdoptRef(new WebRtcMediaStreamTrackAdapter(factory, main_thread))); base::AdoptRef(new WebRtcMediaStreamTrackAdapter(factory, main_thread)));
if (web_track.Source().GetType() == blink::WebMediaStreamSource::kTypeAudio) { if (component->Source()->GetType() == MediaStreamSource::kTypeAudio) {
local_track_adapter->InitializeLocalAudioTrack(web_track); local_track_adapter->InitializeLocalAudioTrack(component);
} else { } else {
DCHECK_EQ(web_track.Source().GetType(), DCHECK_EQ(component->Source()->GetType(), MediaStreamSource::kTypeVideo);
blink::WebMediaStreamSource::kTypeVideo); local_track_adapter->InitializeLocalVideoTrack(component);
local_track_adapter->InitializeLocalVideoTrack(web_track);
} }
return local_track_adapter; return local_track_adapter;
} }
...@@ -108,15 +107,13 @@ void WebRtcMediaStreamTrackAdapter::Dispose() { ...@@ -108,15 +107,13 @@ void WebRtcMediaStreamTrackAdapter::Dispose() {
return; return;
remote_track_can_complete_initialization_.Reset(); remote_track_can_complete_initialization_.Reset();
is_disposed_ = true; is_disposed_ = true;
if (web_track_.Source().GetType() == if (component_->Source()->GetType() == MediaStreamSource::kTypeAudio) {
blink::WebMediaStreamSource::kTypeAudio) {
if (local_track_audio_sink_) if (local_track_audio_sink_)
DisposeLocalAudioTrack(); DisposeLocalAudioTrack();
else else
DisposeRemoteAudioTrack(); DisposeRemoteAudioTrack();
} else { } else {
DCHECK_EQ(web_track_.Source().GetType(), DCHECK_EQ(component_->Source()->GetType(), MediaStreamSource::kTypeVideo);
blink::WebMediaStreamSource::kTypeVideo);
if (local_track_video_sink_) if (local_track_video_sink_)
DisposeLocalVideoTrack(); DisposeLocalVideoTrack();
else else
...@@ -137,11 +134,11 @@ void WebRtcMediaStreamTrackAdapter::InitializeOnMainThread() { ...@@ -137,11 +134,11 @@ void WebRtcMediaStreamTrackAdapter::InitializeOnMainThread() {
EnsureTrackIsInitialized(); EnsureTrackIsInitialized();
} }
const blink::WebMediaStreamTrack& WebRtcMediaStreamTrackAdapter::web_track() { MediaStreamComponent* WebRtcMediaStreamTrackAdapter::track() {
DCHECK(main_thread_->BelongsToCurrentThread()); DCHECK(main_thread_->BelongsToCurrentThread());
EnsureTrackIsInitialized(); EnsureTrackIsInitialized();
DCHECK(!web_track_.IsNull()); DCHECK(component_);
return web_track_; return component_.Get();
} }
webrtc::MediaStreamTrackInterface* webrtc::MediaStreamTrackInterface*
...@@ -152,37 +149,34 @@ WebRtcMediaStreamTrackAdapter::webrtc_track() { ...@@ -152,37 +149,34 @@ WebRtcMediaStreamTrackAdapter::webrtc_track() {
return webrtc_track_.get(); return webrtc_track_.get();
} }
bool WebRtcMediaStreamTrackAdapter::IsEqual( bool WebRtcMediaStreamTrackAdapter::IsEqual(MediaStreamComponent* component) {
const blink::WebMediaStreamTrack& web_track) {
DCHECK(main_thread_->BelongsToCurrentThread()); DCHECK(main_thread_->BelongsToCurrentThread());
EnsureTrackIsInitialized(); EnsureTrackIsInitialized();
return web_track_.GetPlatformTrack() == web_track.GetPlatformTrack(); return component_->GetPlatformTrack() == component->GetPlatformTrack();
} }
void WebRtcMediaStreamTrackAdapter::InitializeLocalAudioTrack( void WebRtcMediaStreamTrackAdapter::InitializeLocalAudioTrack(
const blink::WebMediaStreamTrack& web_track) { MediaStreamComponent* component) {
DCHECK(main_thread_->BelongsToCurrentThread()); DCHECK(main_thread_->BelongsToCurrentThread());
DCHECK(!is_initialized_); DCHECK(!is_initialized_);
DCHECK(!web_track.IsNull()); DCHECK(component);
DCHECK_EQ(web_track.Source().GetType(), DCHECK_EQ(component->Source()->GetType(), MediaStreamSource::kTypeAudio);
blink::WebMediaStreamSource::kTypeAudio);
SendLogMessage(base::StringPrintf("InitializeLocalAudioTrack({id=%s})", SendLogMessage(base::StringPrintf("InitializeLocalAudioTrack({id=%s})",
web_track.Id().Utf8().c_str())); component->Id().Utf8().c_str()));
web_track_ = web_track; component_ = component;
blink::MediaStreamAudioTrack* native_track = auto* native_track = MediaStreamAudioTrack::From(component_);
blink::MediaStreamAudioTrack::From(web_track_);
DCHECK(native_track); DCHECK(native_track);
// Non-WebRtc remote sources and local sources do not provide an instance of // Non-WebRtc remote sources and local sources do not provide an instance of
// the webrtc::AudioSourceInterface, and also do not need references to the // the webrtc::AudioSourceInterface, and also do not need references to the
// audio level calculator or audio processor passed to the sink. // audio level calculator or audio processor passed to the sink.
webrtc::AudioSourceInterface* source_interface = nullptr; webrtc::AudioSourceInterface* source_interface = nullptr;
local_track_audio_sink_.reset(new blink::WebRtcAudioSink( local_track_audio_sink_ = std::make_unique<blink::WebRtcAudioSink>(
web_track_.Id().Utf8(), source_interface, component_->Id().Utf8(), source_interface,
factory_->GetWebRtcSignalingTaskRunner(), main_thread_)); factory_->GetWebRtcSignalingTaskRunner(), main_thread_);
if (auto* media_stream_source = blink::ProcessedLocalAudioSource::From( if (auto* media_stream_source = blink::ProcessedLocalAudioSource::From(
blink::MediaStreamAudioSource::From(web_track_.Source()))) { blink::MediaStreamAudioSource::From(component_->Source()))) {
local_track_audio_sink_->SetLevel(media_stream_source->audio_level()); local_track_audio_sink_->SetLevel(media_stream_source->audio_level());
// The sink only grabs stats from the audio processor. Stats are only // The sink only grabs stats from the audio processor. Stats are only
// available if audio processing is turned on. Therefore, only provide the // available if audio processing is turned on. Therefore, only provide the
...@@ -199,15 +193,14 @@ void WebRtcMediaStreamTrackAdapter::InitializeLocalAudioTrack( ...@@ -199,15 +193,14 @@ void WebRtcMediaStreamTrackAdapter::InitializeLocalAudioTrack(
} }
void WebRtcMediaStreamTrackAdapter::InitializeLocalVideoTrack( void WebRtcMediaStreamTrackAdapter::InitializeLocalVideoTrack(
const blink::WebMediaStreamTrack& web_track) { MediaStreamComponent* component) {
DCHECK(main_thread_->BelongsToCurrentThread()); DCHECK(main_thread_->BelongsToCurrentThread());
DCHECK(!is_initialized_); DCHECK(!is_initialized_);
DCHECK(!web_track.IsNull()); DCHECK(component);
DCHECK_EQ(web_track.Source().GetType(), DCHECK_EQ(component->Source()->GetType(), MediaStreamSource::kTypeVideo);
blink::WebMediaStreamSource::kTypeVideo); component_ = component;
web_track_ = web_track; local_track_video_sink_ = std::make_unique<blink::MediaStreamVideoWebRtcSink>(
local_track_video_sink_.reset(new blink::MediaStreamVideoWebRtcSink( component_.Get(), factory_, main_thread_);
web_track_, factory_, main_thread_));
webrtc_track_ = local_track_video_sink_->webrtc_video_track(); webrtc_track_ = local_track_video_sink_->webrtc_video_track();
DCHECK(webrtc_track_); DCHECK(webrtc_track_);
is_initialized_ = true; is_initialized_ = true;
...@@ -267,10 +260,10 @@ void WebRtcMediaStreamTrackAdapter:: ...@@ -267,10 +260,10 @@ void WebRtcMediaStreamTrackAdapter::
if (remote_audio_track_adapter_) { if (remote_audio_track_adapter_) {
remote_audio_track_adapter_->Initialize(); remote_audio_track_adapter_->Initialize();
web_track_ = remote_audio_track_adapter_->track(); component_ = remote_audio_track_adapter_->track();
} else { } else {
remote_video_track_adapter_->Initialize(); remote_video_track_adapter_->Initialize();
web_track_ = remote_video_track_adapter_->track(); component_ = remote_video_track_adapter_->track();
} }
is_initialized_ = true; is_initialized_ = true;
} }
...@@ -289,32 +282,28 @@ void WebRtcMediaStreamTrackAdapter::EnsureTrackIsInitialized() { ...@@ -289,32 +282,28 @@ void WebRtcMediaStreamTrackAdapter::EnsureTrackIsInitialized() {
void WebRtcMediaStreamTrackAdapter::DisposeLocalAudioTrack() { void WebRtcMediaStreamTrackAdapter::DisposeLocalAudioTrack() {
DCHECK(main_thread_->BelongsToCurrentThread()); DCHECK(main_thread_->BelongsToCurrentThread());
DCHECK(local_track_audio_sink_); DCHECK(local_track_audio_sink_);
DCHECK_EQ(web_track_.Source().GetType(), DCHECK_EQ(component_->Source()->GetType(), MediaStreamSource::kTypeAudio);
blink::WebMediaStreamSource::kTypeAudio); auto* audio_track = MediaStreamAudioTrack::From(component_);
blink::MediaStreamAudioTrack* audio_track =
blink::MediaStreamAudioTrack::From(web_track_);
DCHECK(audio_track); DCHECK(audio_track);
audio_track->RemoveSink(local_track_audio_sink_.get()); audio_track->RemoveSink(local_track_audio_sink_.get());
local_track_audio_sink_.reset(); local_track_audio_sink_.reset();
webrtc_track_ = nullptr; webrtc_track_ = nullptr;
web_track_.Reset(); component_ = nullptr;
} }
void WebRtcMediaStreamTrackAdapter::DisposeLocalVideoTrack() { void WebRtcMediaStreamTrackAdapter::DisposeLocalVideoTrack() {
DCHECK(main_thread_->BelongsToCurrentThread()); DCHECK(main_thread_->BelongsToCurrentThread());
DCHECK(local_track_video_sink_); DCHECK(local_track_video_sink_);
DCHECK_EQ(web_track_.Source().GetType(), DCHECK_EQ(component_->Source()->GetType(), MediaStreamSource::kTypeVideo);
blink::WebMediaStreamSource::kTypeVideo);
local_track_video_sink_.reset(); local_track_video_sink_.reset();
webrtc_track_ = nullptr; webrtc_track_ = nullptr;
web_track_.Reset(); component_ = nullptr;
} }
void WebRtcMediaStreamTrackAdapter::DisposeRemoteAudioTrack() { void WebRtcMediaStreamTrackAdapter::DisposeRemoteAudioTrack() {
DCHECK(main_thread_->BelongsToCurrentThread()); DCHECK(main_thread_->BelongsToCurrentThread());
DCHECK(remote_audio_track_adapter_); DCHECK(remote_audio_track_adapter_);
DCHECK_EQ(web_track_.Source().GetType(), DCHECK_EQ(component_->Source()->GetType(), MediaStreamSource::kTypeAudio);
blink::WebMediaStreamSource::kTypeAudio);
PostCrossThreadTask( PostCrossThreadTask(
*factory_->GetWebRtcSignalingTaskRunner().get(), FROM_HERE, *factory_->GetWebRtcSignalingTaskRunner().get(), FROM_HERE,
CrossThreadBindOnce( CrossThreadBindOnce(
...@@ -326,8 +315,7 @@ void WebRtcMediaStreamTrackAdapter::DisposeRemoteAudioTrack() { ...@@ -326,8 +315,7 @@ void WebRtcMediaStreamTrackAdapter::DisposeRemoteAudioTrack() {
void WebRtcMediaStreamTrackAdapter::DisposeRemoteVideoTrack() { void WebRtcMediaStreamTrackAdapter::DisposeRemoteVideoTrack() {
DCHECK(main_thread_->BelongsToCurrentThread()); DCHECK(main_thread_->BelongsToCurrentThread());
DCHECK(remote_video_track_adapter_); DCHECK(remote_video_track_adapter_);
DCHECK_EQ(web_track_.Source().GetType(), DCHECK_EQ(component_->Source()->GetType(), MediaStreamSource::kTypeVideo);
blink::WebMediaStreamSource::kTypeVideo);
FinalizeRemoteTrackDisposingOnMainThread(); FinalizeRemoteTrackDisposingOnMainThread();
} }
...@@ -349,7 +337,7 @@ void WebRtcMediaStreamTrackAdapter::FinalizeRemoteTrackDisposingOnMainThread() { ...@@ -349,7 +337,7 @@ void WebRtcMediaStreamTrackAdapter::FinalizeRemoteTrackDisposingOnMainThread() {
remote_audio_track_adapter_ = nullptr; remote_audio_track_adapter_ = nullptr;
remote_video_track_adapter_ = nullptr; remote_video_track_adapter_ = nullptr;
webrtc_track_ = nullptr; webrtc_track_ = nullptr;
web_track_.Reset(); component_ = nullptr;
} }
} // namespace blink } // namespace blink
...@@ -9,10 +9,10 @@ ...@@ -9,10 +9,10 @@
#include "base/synchronization/waitable_event.h" #include "base/synchronization/waitable_event.h"
#include "third_party/blink/public/platform/web_media_stream.h" #include "third_party/blink/public/platform/web_media_stream.h"
#include "third_party/blink/public/platform/web_media_stream_track.h"
#include "third_party/blink/renderer/modules/mediastream/remote_media_stream_track_adapter.h" #include "third_party/blink/renderer/modules/mediastream/remote_media_stream_track_adapter.h"
#include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/modules/modules_export.h"
#include "third_party/blink/renderer/modules/peerconnection/media_stream_video_webrtc_sink.h" #include "third_party/blink/renderer/modules/peerconnection/media_stream_video_webrtc_sink.h"
#include "third_party/blink/renderer/platform/mediastream/media_stream_component.h"
#include "third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink.h" #include "third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink.h"
#include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h" #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h"
#include "third_party/webrtc/api/media_stream_interface.h" #include "third_party/webrtc/api/media_stream_interface.h"
...@@ -35,9 +35,9 @@ class MODULES_EXPORT WebRtcMediaStreamTrackAdapter ...@@ -35,9 +35,9 @@ class MODULES_EXPORT WebRtcMediaStreamTrackAdapter
// Invoke on the main thread. The returned adapter is fully initialized, see // Invoke on the main thread. The returned adapter is fully initialized, see
// |is_initialized|. The adapter will keep a reference to the |main_thread|. // |is_initialized|. The adapter will keep a reference to the |main_thread|.
static scoped_refptr<WebRtcMediaStreamTrackAdapter> CreateLocalTrackAdapter( static scoped_refptr<WebRtcMediaStreamTrackAdapter> CreateLocalTrackAdapter(
blink::PeerConnectionDependencyFactory* factory, PeerConnectionDependencyFactory* factory,
const scoped_refptr<base::SingleThreadTaskRunner>& main_thread, const scoped_refptr<base::SingleThreadTaskRunner>& main_thread,
const blink::WebMediaStreamTrack& web_track); MediaStreamComponent* component);
// Invoke on the webrtc signaling thread. Initialization finishes on the main // Invoke on the webrtc signaling thread. Initialization finishes on the main
// thread in a post, meaning returned adapters are ensured to be initialized // thread in a post, meaning returned adapters are ensured to be initialized
// in posts to the main thread, see |is_initialized|. The adapter will keep // in posts to the main thread, see |is_initialized|. The adapter will keep
...@@ -58,9 +58,9 @@ class MODULES_EXPORT WebRtcMediaStreamTrackAdapter ...@@ -58,9 +58,9 @@ class MODULES_EXPORT WebRtcMediaStreamTrackAdapter
// These methods must be called on the main thread. // These methods must be called on the main thread.
// TODO(hbos): Allow these methods to be called on any thread and make them // TODO(hbos): Allow these methods to be called on any thread and make them
// const. https://crbug.com/756436 // const. https://crbug.com/756436
const blink::WebMediaStreamTrack& web_track(); MediaStreamComponent* track();
webrtc::MediaStreamTrackInterface* webrtc_track(); webrtc::MediaStreamTrackInterface* webrtc_track();
bool IsEqual(const blink::WebMediaStreamTrack& web_track); bool IsEqual(MediaStreamComponent* component);
// For testing. // For testing.
blink::WebRtcAudioSink* GetLocalTrackAudioSinkForTesting() { blink::WebRtcAudioSink* GetLocalTrackAudioSinkForTesting() {
...@@ -88,8 +88,8 @@ class MODULES_EXPORT WebRtcMediaStreamTrackAdapter ...@@ -88,8 +88,8 @@ class MODULES_EXPORT WebRtcMediaStreamTrackAdapter
private: private:
// Initialization of local tracks occurs on the main thread. // Initialization of local tracks occurs on the main thread.
void InitializeLocalAudioTrack(const blink::WebMediaStreamTrack& web_track); void InitializeLocalAudioTrack(MediaStreamComponent* component);
void InitializeLocalVideoTrack(const blink::WebMediaStreamTrack& web_track); void InitializeLocalVideoTrack(MediaStreamComponent* component);
// Initialization of remote tracks starts on the webrtc signaling thread and // Initialization of remote tracks starts on the webrtc signaling thread and
// finishes on the main thread. // finishes on the main thread.
void InitializeRemoteAudioTrack( void InitializeRemoteAudioTrack(
...@@ -121,7 +121,7 @@ class MODULES_EXPORT WebRtcMediaStreamTrackAdapter ...@@ -121,7 +121,7 @@ class MODULES_EXPORT WebRtcMediaStreamTrackAdapter
base::WaitableEvent remote_track_can_complete_initialization_; base::WaitableEvent remote_track_can_complete_initialization_;
bool is_initialized_; bool is_initialized_;
bool is_disposed_; bool is_disposed_;
blink::WebMediaStreamTrack web_track_; CrossThreadPersistent<MediaStreamComponent> component_;
scoped_refptr<webrtc::MediaStreamTrackInterface> webrtc_track_; scoped_refptr<webrtc::MediaStreamTrackInterface> webrtc_track_;
// If the track is local, a sink is added to the local webrtc track that is // If the track is local, a sink is added to the local webrtc track that is
// owned by us. // owned by us.
......
...@@ -42,7 +42,7 @@ WebRtcMediaStreamTrackAdapterMap::AdapterRef::~AdapterRef() { ...@@ -42,7 +42,7 @@ WebRtcMediaStreamTrackAdapterMap::AdapterRef::~AdapterRef() {
DCHECK(adapter->is_initialized()); DCHECK(adapter->is_initialized());
if (type_ == Type::kLocal) { if (type_ == Type::kLocal) {
map_->local_track_adapters_.EraseByPrimary( map_->local_track_adapters_.EraseByPrimary(
adapter->web_track().UniqueId()); adapter->track()->UniqueId());
} else { } else {
map_->remote_track_adapters_.EraseByPrimary(adapter->webrtc_track()); map_->remote_track_adapters_.EraseByPrimary(adapter->webrtc_track());
} }
...@@ -66,9 +66,10 @@ void WebRtcMediaStreamTrackAdapterMap::AdapterRef::InitializeOnMainThread() { ...@@ -66,9 +66,10 @@ void WebRtcMediaStreamTrackAdapterMap::AdapterRef::InitializeOnMainThread() {
adapter_->InitializeOnMainThread(); adapter_->InitializeOnMainThread();
if (type_ == WebRtcMediaStreamTrackAdapterMap::AdapterRef::Type::kRemote) { if (type_ == WebRtcMediaStreamTrackAdapterMap::AdapterRef::Type::kRemote) {
base::AutoLock scoped_lock(map_->lock_); base::AutoLock scoped_lock(map_->lock_);
if (!map_->remote_track_adapters_.FindBySecondary(web_track().UniqueId())) { if (!map_->remote_track_adapters_.FindBySecondary(
web_track()->UniqueId())) {
map_->remote_track_adapters_.SetSecondaryKey(webrtc_track(), map_->remote_track_adapters_.SetSecondaryKey(webrtc_track(),
web_track().UniqueId()); web_track()->UniqueId());
} }
} }
} }
......
...@@ -38,9 +38,7 @@ class MODULES_EXPORT WebRtcMediaStreamTrackAdapterMap ...@@ -38,9 +38,7 @@ class MODULES_EXPORT WebRtcMediaStreamTrackAdapterMap
std::unique_ptr<AdapterRef> Copy() const; std::unique_ptr<AdapterRef> Copy() const;
bool is_initialized() const { return adapter_->is_initialized(); } bool is_initialized() const { return adapter_->is_initialized(); }
void InitializeOnMainThread(); void InitializeOnMainThread();
const blink::WebMediaStreamTrack& web_track() const { MediaStreamComponent* web_track() const { return adapter_->track(); }
return adapter_->web_track();
}
webrtc::MediaStreamTrackInterface* webrtc_track() const { webrtc::MediaStreamTrackInterface* webrtc_track() const {
return adapter_->webrtc_track(); return adapter_->webrtc_track();
} }
......
...@@ -127,14 +127,14 @@ TEST_F(WebRtcMediaStreamTrackAdapterTest, LocalAudioTrack) { ...@@ -127,14 +127,14 @@ TEST_F(WebRtcMediaStreamTrackAdapterTest, LocalAudioTrack) {
blink::WebRtcMediaStreamTrackAdapter::CreateLocalTrackAdapter( blink::WebRtcMediaStreamTrackAdapter::CreateLocalTrackAdapter(
dependency_factory_.get(), main_thread_, CreateLocalAudioTrack()); dependency_factory_.get(), main_thread_, CreateLocalAudioTrack());
EXPECT_TRUE(track_adapter_->is_initialized()); EXPECT_TRUE(track_adapter_->is_initialized());
EXPECT_TRUE(!track_adapter_->web_track().IsNull()); EXPECT_TRUE(track_adapter_->track());
EXPECT_EQ(track_adapter_->web_track().Source().GetType(), EXPECT_EQ(track_adapter_->track()->Source()->GetType(),
blink::WebMediaStreamSource::kTypeAudio); MediaStreamSource::kTypeAudio);
EXPECT_TRUE(track_adapter_->webrtc_track()); EXPECT_TRUE(track_adapter_->webrtc_track());
EXPECT_EQ(track_adapter_->webrtc_track()->kind(), EXPECT_EQ(track_adapter_->webrtc_track()->kind(),
webrtc::MediaStreamTrackInterface::kAudioKind); webrtc::MediaStreamTrackInterface::kAudioKind);
EXPECT_EQ(track_adapter_->webrtc_track()->id().c_str(), EXPECT_EQ(track_adapter_->webrtc_track()->id().c_str(),
track_adapter_->web_track().Id()); track_adapter_->track()->Id());
EXPECT_TRUE(track_adapter_->GetLocalTrackAudioSinkForTesting()); EXPECT_TRUE(track_adapter_->GetLocalTrackAudioSinkForTesting());
EXPECT_EQ( EXPECT_EQ(
track_adapter_->GetLocalTrackAudioSinkForTesting()->webrtc_audio_track(), track_adapter_->GetLocalTrackAudioSinkForTesting()->webrtc_audio_track(),
...@@ -147,14 +147,14 @@ TEST_F(WebRtcMediaStreamTrackAdapterTest, DISABLED_LocalVideoTrack) { ...@@ -147,14 +147,14 @@ TEST_F(WebRtcMediaStreamTrackAdapterTest, DISABLED_LocalVideoTrack) {
blink::WebRtcMediaStreamTrackAdapter::CreateLocalTrackAdapter( blink::WebRtcMediaStreamTrackAdapter::CreateLocalTrackAdapter(
dependency_factory_.get(), main_thread_, CreateLocalVideoTrack()); dependency_factory_.get(), main_thread_, CreateLocalVideoTrack());
EXPECT_TRUE(track_adapter_->is_initialized()); EXPECT_TRUE(track_adapter_->is_initialized());
EXPECT_TRUE(!track_adapter_->web_track().IsNull()); EXPECT_TRUE(track_adapter_->track());
EXPECT_EQ(track_adapter_->web_track().Source().GetType(), EXPECT_EQ(track_adapter_->track()->Source()->GetType(),
blink::WebMediaStreamSource::kTypeVideo); MediaStreamSource::kTypeVideo);
EXPECT_TRUE(track_adapter_->webrtc_track()); EXPECT_TRUE(track_adapter_->webrtc_track());
EXPECT_EQ(track_adapter_->webrtc_track()->kind(), EXPECT_EQ(track_adapter_->webrtc_track()->kind(),
webrtc::MediaStreamTrackInterface::kVideoKind); webrtc::MediaStreamTrackInterface::kVideoKind);
EXPECT_EQ(track_adapter_->webrtc_track()->id().c_str(), EXPECT_EQ(track_adapter_->webrtc_track()->id().c_str(),
track_adapter_->web_track().Id()); track_adapter_->track()->Id());
EXPECT_TRUE(track_adapter_->GetLocalTrackVideoSinkForTesting()); EXPECT_TRUE(track_adapter_->GetLocalTrackVideoSinkForTesting());
EXPECT_EQ( EXPECT_EQ(
track_adapter_->GetLocalTrackVideoSinkForTesting()->webrtc_video_track(), track_adapter_->GetLocalTrackVideoSinkForTesting()->webrtc_video_track(),
...@@ -173,14 +173,14 @@ TEST_F(WebRtcMediaStreamTrackAdapterTest, RemoteAudioTrack) { ...@@ -173,14 +173,14 @@ TEST_F(WebRtcMediaStreamTrackAdapterTest, RemoteAudioTrack) {
RunMessageLoopsUntilIdle(); RunMessageLoopsUntilIdle();
DCHECK(track_adapter_); DCHECK(track_adapter_);
EXPECT_TRUE(track_adapter_->is_initialized()); EXPECT_TRUE(track_adapter_->is_initialized());
EXPECT_TRUE(!track_adapter_->web_track().IsNull()); EXPECT_TRUE(track_adapter_->track());
EXPECT_EQ(track_adapter_->web_track().Source().GetType(), EXPECT_EQ(track_adapter_->track()->Source()->GetType(),
blink::WebMediaStreamSource::kTypeAudio); MediaStreamSource::kTypeAudio);
EXPECT_TRUE(track_adapter_->webrtc_track()); EXPECT_TRUE(track_adapter_->webrtc_track());
EXPECT_EQ(track_adapter_->webrtc_track()->kind(), EXPECT_EQ(track_adapter_->webrtc_track()->kind(),
webrtc::MediaStreamTrackInterface::kAudioKind); webrtc::MediaStreamTrackInterface::kAudioKind);
EXPECT_EQ(track_adapter_->webrtc_track()->id().c_str(), EXPECT_EQ(track_adapter_->webrtc_track()->id().c_str(),
track_adapter_->web_track().Id()); track_adapter_->track()->Id());
EXPECT_TRUE(track_adapter_->GetRemoteAudioTrackAdapterForTesting()); EXPECT_TRUE(track_adapter_->GetRemoteAudioTrackAdapterForTesting());
EXPECT_TRUE( EXPECT_TRUE(
track_adapter_->GetRemoteAudioTrackAdapterForTesting()->initialized()); track_adapter_->GetRemoteAudioTrackAdapterForTesting()->initialized());
...@@ -198,14 +198,14 @@ TEST_F(WebRtcMediaStreamTrackAdapterTest, RemoteVideoTrack) { ...@@ -198,14 +198,14 @@ TEST_F(WebRtcMediaStreamTrackAdapterTest, RemoteVideoTrack) {
RunMessageLoopsUntilIdle(); RunMessageLoopsUntilIdle();
DCHECK(track_adapter_); DCHECK(track_adapter_);
EXPECT_TRUE(track_adapter_->is_initialized()); EXPECT_TRUE(track_adapter_->is_initialized());
EXPECT_TRUE(!track_adapter_->web_track().IsNull()); EXPECT_TRUE(track_adapter_->track());
EXPECT_EQ(track_adapter_->web_track().Source().GetType(), EXPECT_EQ(track_adapter_->track()->Source()->GetType(),
blink::WebMediaStreamSource::kTypeVideo); MediaStreamSource::kTypeVideo);
EXPECT_TRUE(track_adapter_->webrtc_track()); EXPECT_TRUE(track_adapter_->webrtc_track());
EXPECT_EQ(track_adapter_->webrtc_track()->kind(), EXPECT_EQ(track_adapter_->webrtc_track()->kind(),
webrtc::MediaStreamTrackInterface::kVideoKind); webrtc::MediaStreamTrackInterface::kVideoKind);
EXPECT_EQ(track_adapter_->webrtc_track()->id().c_str(), EXPECT_EQ(track_adapter_->webrtc_track()->id().c_str(),
track_adapter_->web_track().Id()); track_adapter_->track()->Id());
EXPECT_TRUE(track_adapter_->GetRemoteVideoTrackAdapterForTesting()); EXPECT_TRUE(track_adapter_->GetRemoteVideoTrackAdapterForTesting());
EXPECT_TRUE( EXPECT_TRUE(
track_adapter_->GetRemoteVideoTrackAdapterForTesting()->initialized()); track_adapter_->GetRemoteVideoTrackAdapterForTesting()->initialized());
...@@ -227,14 +227,14 @@ TEST_F(WebRtcMediaStreamTrackAdapterTest, RemoteTrackExplicitlyInitialized) { ...@@ -227,14 +227,14 @@ TEST_F(WebRtcMediaStreamTrackAdapterTest, RemoteTrackExplicitlyInitialized) {
// Explicitly initialize before the main thread loop has a chance to run. // Explicitly initialize before the main thread loop has a chance to run.
track_adapter_->InitializeOnMainThread(); track_adapter_->InitializeOnMainThread();
EXPECT_TRUE(track_adapter_->is_initialized()); EXPECT_TRUE(track_adapter_->is_initialized());
EXPECT_TRUE(!track_adapter_->web_track().IsNull()); EXPECT_TRUE(track_adapter_->track());
EXPECT_EQ(track_adapter_->web_track().Source().GetType(), EXPECT_EQ(track_adapter_->track()->Source()->GetType(),
blink::WebMediaStreamSource::kTypeAudio); MediaStreamSource::kTypeAudio);
EXPECT_TRUE(track_adapter_->webrtc_track()); EXPECT_TRUE(track_adapter_->webrtc_track());
EXPECT_EQ(track_adapter_->webrtc_track()->kind(), EXPECT_EQ(track_adapter_->webrtc_track()->kind(),
webrtc::MediaStreamTrackInterface::kAudioKind); webrtc::MediaStreamTrackInterface::kAudioKind);
EXPECT_EQ(track_adapter_->webrtc_track()->id().c_str(), EXPECT_EQ(track_adapter_->webrtc_track()->id().c_str(),
track_adapter_->web_track().Id()); track_adapter_->track()->Id());
EXPECT_TRUE(track_adapter_->GetRemoteAudioTrackAdapterForTesting()); EXPECT_TRUE(track_adapter_->GetRemoteAudioTrackAdapterForTesting());
EXPECT_TRUE( EXPECT_TRUE(
track_adapter_->GetRemoteAudioTrackAdapterForTesting()->initialized()); track_adapter_->GetRemoteAudioTrackAdapterForTesting()->initialized());
......
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