Index: content/renderer/media/media_stream_impl.cc |
diff --git a/content/renderer/media/media_stream_impl.cc b/content/renderer/media/media_stream_impl.cc |
index f3cf45fc18ef98c41fa2fd69faf836a01e702a3d..9841e5626d4fd04af1794c9fb29aedc61dc9b966 100644 |
--- a/content/renderer/media/media_stream_impl.cc |
+++ b/content/renderer/media/media_stream_impl.cc |
@@ -69,18 +69,12 @@ MediaStreamImpl::MediaStreamImpl( |
MediaStreamImpl::~MediaStreamImpl() { |
} |
-void MediaStreamImpl::StopLocalMediaStream( |
+void MediaStreamImpl::OnLocalMediaStreamStop( |
const WebKit::WebMediaStreamDescriptor& stream) { |
- DVLOG(1) << "MediaStreamImpl::StopLocalMediaStream"; |
- |
- MediaStreamExtraData* extra_data = |
- static_cast<MediaStreamExtraData*>(stream.extraData()); |
- if (extra_data && extra_data->local_stream()) { |
- media_stream_dispatcher_->StopStream(extra_data->local_stream()->label()); |
- local_media_streams_.erase(extra_data->local_stream()->label()); |
- } else { |
- NOTREACHED(); |
- } |
+ DVLOG(1) << "MediaStreamImpl::OnLocalMediaStreamStop"; |
+ std::string label = UTF16ToUTF8(stream.label()); |
+ media_stream_dispatcher_->StopStream(label); |
+ local_media_streams_.erase(label); |
} |
void MediaStreamImpl::requestUserMedia( |
@@ -205,7 +199,9 @@ void MediaStreamImpl::OnStreamGenerated( |
description.initialize(webkit_label, audio_source_vector, |
video_source_vector); |
- if (!dependency_factory_->CreateNativeLocalMediaStream(&description)) { |
+ if (!dependency_factory_->CreateNativeLocalMediaStream( |
+ &description, base::Bind(&MediaStreamImpl::OnLocalMediaStreamStop, |
+ base::Unretained(this)))) { |
DVLOG(1) << "Failed to create native stream in OnStreamGenerated."; |
media_stream_dispatcher_->StopStream(label); |
it->second.request_.requestFailed(); |
@@ -357,9 +353,16 @@ MediaStreamExtraData::MediaStreamExtraData( |
webrtc::MediaStreamInterface* remote_stream) |
: remote_stream_(remote_stream) { |
} |
+ |
MediaStreamExtraData::MediaStreamExtraData( |
webrtc::LocalMediaStreamInterface* local_stream) |
: local_stream_(local_stream) { |
} |
+ |
+void MediaStreamExtraData::SetLocalStreamStopCallback( |
+ const StreamStopCallback& stop_callback) { |
+ stream_stop_callback_ = stop_callback; |
+} |
+ |
MediaStreamExtraData::~MediaStreamExtraData() { |
} |