Index: content/renderer/media/user_media_client_impl.cc |
diff --git a/content/renderer/media/user_media_client_impl.cc b/content/renderer/media/user_media_client_impl.cc |
index 15e096b6469d9b1bc061d68be7d41c99bb18666c..e6e40d377dd3fd9754bfd9948869228d486580f7 100644 |
--- a/content/renderer/media/user_media_client_impl.cc |
+++ b/content/renderer/media/user_media_client_impl.cc |
@@ -598,14 +598,22 @@ void UserMediaClientImpl::InitializeSourceObject( |
weak_factory_.GetWeakPtr()))); |
} else { |
DCHECK_EQ(blink::WebMediaStreamSource::TypeAudio, type); |
- MediaStreamAudioSource* audio_source( |
- new MediaStreamAudioSource( |
- RenderFrameObserver::routing_id(), |
- device, |
- base::Bind(&UserMediaClientImpl::OnLocalSourceStopped, |
- weak_factory_.GetWeakPtr()), |
- dependency_factory_)); |
- webkit_source->setExtraData(audio_source); |
+ MediaStreamAudioSource* audio_source; |
+ // When no RenderFrame was provided, create a "null" |
+ // MediaStreamAudioSource. This should only happen for non-browser unit |
+ // tests (e.g., user_media_client_impl_unittest.cc). |
+ if (RenderFrameObserver::render_frame()) { |
+ audio_source = |
+ new MediaStreamAudioSource(RenderFrameObserver::routing_id(), device); |
+ } else { |
+ audio_source = new MediaStreamAudioSource(); |
+ audio_source->SetDeviceInfo(device); |
+ } |
+ audio_source->SetStopCallback( |
+ base::Bind(&UserMediaClientImpl::OnLocalSourceStopped, |
+ weak_factory_.GetWeakPtr())); |
+ audio_source->set_dependency_factory(dependency_factory_); |
+ webkit_source->setExtraData(audio_source); // Takes ownership. |
} |
local_sources_.push_back(*webkit_source); |
} |
@@ -1055,10 +1063,10 @@ void UserMediaClientImpl::UserMediaRequestInfo::StartAudioTrack( |
sources_.push_back(track.source()); |
sources_waiting_for_callback_.push_back(native_source); |
- native_source->AddTrack( |
- track, constraints, base::Bind( |
- &UserMediaClientImpl::UserMediaRequestInfo::OnTrackStarted, |
- AsWeakPtr())); |
+ if (native_source->ConnectToTrack(track, constraints)) |
+ OnTrackStarted(native_source, MEDIA_DEVICE_OK, ""); |
+ else |
+ OnTrackStarted(native_source, MEDIA_DEVICE_TRACK_START_FAILURE, ""); |
} |
blink::WebMediaStreamTrack |