Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / content / renderer / media / rtc_peer_connection_handler.cc
index 6548faa..34e521f 100644 (file)
@@ -14,8 +14,9 @@
 #include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "content/public/common/content_switches.h"
+#include "content/renderer/media/media_stream_audio_source.h"
 #include "content/renderer/media/media_stream_dependency_factory.h"
-#include "content/renderer/media/media_stream_source_extra_data.h"
+#include "content/renderer/media/media_stream_track_extra_data.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"
@@ -554,12 +555,24 @@ bool RTCPeerConnectionHandler::addStream(
   blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
   stream.audioTracks(audio_tracks);
   for (size_t i = 0; i < audio_tracks.size(); ++i) {
+    MediaStreamTrackExtraData* extra_data =
+        static_cast<MediaStreamTrackExtraData*>(audio_tracks[i].extraData());
+    if (!extra_data->is_local_track()) {
+      // We don't support connecting remote audio tracks to PeerConnection yet.
+      // See issue http://crbug/344303.
+      // TODO(xians): Remove this after we support connecting remote audio track
+      // to PeerConnection.
+      DLOG(ERROR) << "addStream() failed because we don't support connecting"
+                  << " remote audio track to PeerConnection";
+      return false;
+    }
+
+    // This is a local audio track.
     const blink::WebMediaStreamSource& source = audio_tracks[i].source();
-    MediaStreamSourceExtraData* extra_data =
-        static_cast<MediaStreamSourceExtraData*>(source.extraData());
-    // |extra_data| is NULL if the track is a remote audio track.
-    if (extra_data && extra_data->GetAudioCapturer())
-      extra_data->GetAudioCapturer()->EnablePeerConnectionMode();
+    MediaStreamAudioSource* audio_source =
+        static_cast<MediaStreamAudioSource*>(source.extraData());
+    if (audio_source && audio_source->GetAudioCapturer())
+      audio_source->GetAudioCapturer()->EnablePeerConnectionMode();
   }
 
   return AddStream(stream, &constraints);
@@ -595,13 +608,16 @@ void RTCPeerConnectionHandler::getStats(LocalRTCStatsRequest* request) {
       return;
     }
   }
-  GetStats(observer, track);
+  GetStats(observer,
+           track,
+           webrtc::PeerConnectionInterface::kStatsOutputLevelStandard);
 }
 
 void RTCPeerConnectionHandler::GetStats(
     webrtc::StatsObserver* observer,
-    webrtc::MediaStreamTrackInterface* track) {
-  if (!native_peer_connection_->GetStats(observer, track)) {
+    webrtc::MediaStreamTrackInterface* track,
+    webrtc::PeerConnectionInterface::StatsOutputLevel level) {
+  if (!native_peer_connection_->GetStats(observer, track, level)) {
     DVLOG(1) << "GetStats failed.";
     // TODO(hta): Consider how to get an error back.
     std::vector<webrtc::StatsReport> no_reports;