Index: content/renderer/media/rtc_peer_connection_handler.cc |
diff --git a/content/renderer/media/rtc_peer_connection_handler.cc b/content/renderer/media/rtc_peer_connection_handler.cc |
index c14e48be23fd1d8b3f93bd7642f2038395c16e58..80daec0fdc16b209dcd3756a46a7276dd65bcbe8 100644 |
--- a/content/renderer/media/rtc_peer_connection_handler.cc |
+++ b/content/renderer/media/rtc_peer_connection_handler.cc |
@@ -10,9 +10,11 @@ |
#include "base/logging.h" |
#include "base/memory/scoped_ptr.h" |
+#include "base/stl_util.h" |
#include "base/utf_string_conversions.h" |
#include "content/renderer/media/media_stream_dependency_factory.h" |
#include "content/renderer/media/peer_connection_tracker.h" |
+#include "content/renderer/media/remote_media_stream_impl.h" |
#include "content/renderer/media/rtc_data_channel_handler.h" |
#include "content/renderer/media/rtc_dtmf_sender_handler.h" |
#include "content/renderer/media/rtc_media_constraints.h" |
@@ -323,6 +325,7 @@ RTCPeerConnectionHandler::RTCPeerConnectionHandler( |
RTCPeerConnectionHandler::~RTCPeerConnectionHandler() { |
if (peer_connection_tracker_) |
peer_connection_tracker_->UnregisterPeerConnection(this); |
+ STLDeleteValues(&remote_streams_); |
} |
void RTCPeerConnectionHandler::associateWithFrame(WebKit::WebFrame* frame) { |
@@ -660,17 +663,19 @@ void RTCPeerConnectionHandler::OnAddStream( |
webrtc::MediaStreamInterface* stream_interface) { |
DCHECK(stream_interface); |
DCHECK(remote_streams_.find(stream_interface) == remote_streams_.end()); |
- WebKit::WebMediaStream stream = |
- CreateRemoteWebKitMediaStream(stream_interface); |
+ |
+ RemoteMediaStreamImpl* remote_stream = |
+ new RemoteMediaStreamImpl(stream_interface); |
+ remote_streams_.insert( |
+ std::pair<webrtc::MediaStreamInterface*, RemoteMediaStreamImpl*> ( |
+ stream_interface, remote_stream)); |
if (peer_connection_tracker_) |
peer_connection_tracker_->TrackAddStream( |
- this, stream, PeerConnectionTracker::SOURCE_REMOTE); |
+ this, remote_stream->webkit_stream(), |
+ PeerConnectionTracker::SOURCE_REMOTE); |
- remote_streams_.insert( |
- std::pair<webrtc::MediaStreamInterface*, |
- WebKit::WebMediaStream>(stream_interface, stream)); |
- client_->didAddRemoteStream(stream); |
+ client_->didAddRemoteStream(remote_stream->webkit_stream()); |
} |
void RTCPeerConnectionHandler::OnRemoveStream( |
@@ -681,15 +686,17 @@ void RTCPeerConnectionHandler::OnRemoveStream( |
NOTREACHED() << "Stream not found"; |
return; |
} |
- WebKit::WebMediaStream stream = it->second; |
- DCHECK(!stream.isNull()); |
+ |
+ scoped_ptr<RemoteMediaStreamImpl> remote_stream(it->second); |
+ const WebKit::WebMediaStream& webkit_stream = remote_stream->webkit_stream(); |
+ DCHECK(!webkit_stream.isNull()); |
remote_streams_.erase(it); |
if (peer_connection_tracker_) |
peer_connection_tracker_->TrackRemoveStream( |
- this, stream, PeerConnectionTracker::SOURCE_REMOTE); |
+ this, webkit_stream, PeerConnectionTracker::SOURCE_REMOTE); |
- client_->didRemoveRemoteStream(stream); |
+ client_->didRemoveRemoteStream(webkit_stream); |
} |
void RTCPeerConnectionHandler::OnIceCandidate( |