Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index 44b0656aeafd5cb1eefb88e691161ad057a4f4f7..7337e0f651cd558d0a55dbde76f4663ae1f1957f 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -465,6 +465,7 @@ RenderViewImpl::RenderViewImpl( |
input_tag_speech_dispatcher_(NULL), |
device_orientation_dispatcher_(NULL), |
media_stream_dispatcher_(NULL), |
+ media_stream_impl_(NULL), |
p2p_socket_dispatcher_(NULL), |
devtools_agent_(NULL), |
renderer_accessibility_(NULL), |
@@ -593,10 +594,6 @@ RenderViewImpl::~RenderViewImpl() { |
DCHECK_NE(this, it->second) << "Failed to call Close?"; |
#endif |
- // MediaStreamImpl holds weak references to RenderViewObserver objects, |
- // ensure it's deleted before the observers. |
- media_stream_impl_ = NULL; |
- |
FOR_EACH_OBSERVER(RenderViewObserver, observers_, RenderViewGone()); |
FOR_EACH_OBSERVER(RenderViewObserver, observers_, OnDestruct()); |
} |
@@ -658,7 +655,7 @@ RenderViewImpl* RenderViewImpl::Create( |
WebPeerConnectionHandler* RenderViewImpl::CreatePeerConnectionHandler( |
WebPeerConnectionHandlerClient* client) { |
EnsureMediaStreamImpl(); |
- if (!media_stream_impl_.get()) |
+ if (!media_stream_impl_) |
return NULL; |
return media_stream_impl_->CreatePeerConnectionHandler(client); |
} |
@@ -666,7 +663,7 @@ WebPeerConnectionHandler* RenderViewImpl::CreatePeerConnectionHandler( |
WebPeerConnection00Handler* RenderViewImpl::CreatePeerConnectionHandlerJsep( |
WebPeerConnection00HandlerClient* client) { |
EnsureMediaStreamImpl(); |
- if (!media_stream_impl_.get()) |
+ if (!media_stream_impl_) |
return NULL; |
return media_stream_impl_->CreatePeerConnectionHandlerJsep(client); |
} |
@@ -2226,7 +2223,7 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer( |
webkit_media::WebMediaPlayerImpl* media_player = |
content::GetContentClient()->renderer()->OverrideCreateWebMediaPlayer( |
this, frame, client, AsWeakPtr(), collection, audio_source_provider, |
- message_loop_factory, media_stream_impl_.get(), render_media_log); |
+ message_loop_factory, media_stream_impl_, render_media_log); |
#if defined(OS_ANDROID) |
// TODO(qinmin): Implement for android. |
// http://crbug.com/113218 |
@@ -2234,7 +2231,7 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer( |
if (!media_player) { |
media_player = new webkit_media::WebMediaPlayerImpl( |
frame, client, AsWeakPtr(), collection, audio_source_provider, |
- message_loop_factory, media_stream_impl_.get(), render_media_log); |
+ message_loop_factory, media_stream_impl_, render_media_log); |
} |
#endif |
return media_player; |
@@ -3306,9 +3303,10 @@ void RenderViewImpl::EnsureMediaStreamImpl() { |
if (!media_stream_dispatcher_) |
media_stream_dispatcher_ = new MediaStreamDispatcher(this); |
- if (!media_stream_impl_.get()) { |
+ if (!media_stream_impl_) { |
MediaStreamDependencyFactory* factory = new MediaStreamDependencyFactory(); |
media_stream_impl_ = new MediaStreamImpl( |
+ this, |
media_stream_dispatcher_, |
p2p_socket_dispatcher_, |
RenderThreadImpl::current()->video_capture_impl_manager(), |