| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 #include "content/renderer/media/peer_connection_tracker.h" | 4 #include "content/renderer/media/peer_connection_tracker.h" |
| 5 | 5 |
| 6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
| 7 #include "content/common/media/peer_connection_tracker_messages.h" | 7 #include "content/common/media/peer_connection_tracker_messages.h" |
| 8 #include "content/renderer/media/rtc_media_constraints.h" | 8 #include "content/renderer/media/rtc_media_constraints.h" |
| 9 #include "content/renderer/media/rtc_peer_connection_handler.h" | 9 #include "content/renderer/media/rtc_peer_connection_handler.h" |
| 10 #include "content/renderer/render_thread_impl.h" | 10 #include "content/renderer/render_thread_impl.h" |
| 11 #include "third_party/WebKit/public/platform/WebMediaStream.h" | 11 #include "third_party/WebKit/public/platform/WebMediaStream.h" |
| 12 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" | 12 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
| 13 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" | 13 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
| 14 #include "third_party/WebKit/public/platform/WebRTCICECandidate.h" | 14 #include "third_party/WebKit/public/platform/WebRTCICECandidate.h" |
| 15 #include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandlerClient.h
" | 15 #include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandlerClient.h
" |
| 16 #include "third_party/WebKit/public/web/WebDocument.h" | 16 #include "third_party/WebKit/public/web/WebDocument.h" |
| 17 #include "third_party/WebKit/public/web/WebFrame.h" | 17 #include "third_party/WebKit/public/web/WebFrame.h" |
| 18 | 18 |
| 19 using std::string; | 19 using std::string; |
| 20 using webrtc::MediaConstraintsInterface; | 20 using webrtc::MediaConstraintsInterface; |
| 21 using WebKit::WebRTCPeerConnectionHandlerClient; | 21 using blink::WebRTCPeerConnectionHandlerClient; |
| 22 | 22 |
| 23 namespace content { | 23 namespace content { |
| 24 | 24 |
| 25 static string SerializeServers( | 25 static string SerializeServers( |
| 26 const std::vector<webrtc::PeerConnectionInterface::IceServer>& servers) { | 26 const std::vector<webrtc::PeerConnectionInterface::IceServer>& servers) { |
| 27 string result = "["; | 27 string result = "["; |
| 28 for (size_t i = 0; i < servers.size(); ++i) { | 28 for (size_t i = 0; i < servers.size(); ++i) { |
| 29 result += servers[i].uri; | 29 result += servers[i].uri; |
| 30 if (i != servers.size() - 1) | 30 if (i != servers.size() - 1) |
| 31 result += ", "; | 31 result += ", "; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 56 result += optional[i].key + ":" + optional[i].value; | 56 result += optional[i].key + ":" + optional[i].value; |
| 57 if (i != optional.size() - 1) | 57 if (i != optional.size() - 1) |
| 58 result += ", "; | 58 result += ", "; |
| 59 } | 59 } |
| 60 result += "}"; | 60 result += "}"; |
| 61 } | 61 } |
| 62 return result; | 62 return result; |
| 63 } | 63 } |
| 64 | 64 |
| 65 static string SerializeMediaStreamComponent( | 65 static string SerializeMediaStreamComponent( |
| 66 const WebKit::WebMediaStreamTrack component) { | 66 const blink::WebMediaStreamTrack component) { |
| 67 string id = UTF16ToUTF8(component.source().id()); | 67 string id = UTF16ToUTF8(component.source().id()); |
| 68 return id; | 68 return id; |
| 69 } | 69 } |
| 70 | 70 |
| 71 static string SerializeMediaDescriptor( | 71 static string SerializeMediaDescriptor( |
| 72 const WebKit::WebMediaStream& stream) { | 72 const blink::WebMediaStream& stream) { |
| 73 string label = UTF16ToUTF8(stream.id()); | 73 string label = UTF16ToUTF8(stream.id()); |
| 74 string result = "label: " + label; | 74 string result = "label: " + label; |
| 75 WebKit::WebVector<WebKit::WebMediaStreamTrack> tracks; | 75 blink::WebVector<blink::WebMediaStreamTrack> tracks; |
| 76 stream.audioTracks(tracks); | 76 stream.audioTracks(tracks); |
| 77 if (!tracks.isEmpty()) { | 77 if (!tracks.isEmpty()) { |
| 78 result += ", audio: ["; | 78 result += ", audio: ["; |
| 79 for (size_t i = 0; i < tracks.size(); ++i) { | 79 for (size_t i = 0; i < tracks.size(); ++i) { |
| 80 result += SerializeMediaStreamComponent(tracks[i]); | 80 result += SerializeMediaStreamComponent(tracks[i]); |
| 81 if (i != tracks.size() - 1) | 81 if (i != tracks.size() - 1) |
| 82 result += ", "; | 82 result += ", "; |
| 83 } | 83 } |
| 84 result += "]"; | 84 result += "]"; |
| 85 } | 85 } |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 new talk_base::RefCountedObject<InternalStatsObserver>(it->second)); | 244 new talk_base::RefCountedObject<InternalStatsObserver>(it->second)); |
| 245 | 245 |
| 246 it->first->GetStats(observer, NULL); | 246 it->first->GetStats(observer, NULL); |
| 247 } | 247 } |
| 248 } | 248 } |
| 249 | 249 |
| 250 void PeerConnectionTracker::RegisterPeerConnection( | 250 void PeerConnectionTracker::RegisterPeerConnection( |
| 251 RTCPeerConnectionHandler* pc_handler, | 251 RTCPeerConnectionHandler* pc_handler, |
| 252 const std::vector<webrtc::PeerConnectionInterface::IceServer>& servers, | 252 const std::vector<webrtc::PeerConnectionInterface::IceServer>& servers, |
| 253 const RTCMediaConstraints& constraints, | 253 const RTCMediaConstraints& constraints, |
| 254 const WebKit::WebFrame* frame) { | 254 const blink::WebFrame* frame) { |
| 255 DVLOG(1) << "PeerConnectionTracker::RegisterPeerConnection()"; | 255 DVLOG(1) << "PeerConnectionTracker::RegisterPeerConnection()"; |
| 256 PeerConnectionInfo info; | 256 PeerConnectionInfo info; |
| 257 | 257 |
| 258 info.lid = GetNextLocalID(); | 258 info.lid = GetNextLocalID(); |
| 259 info.servers = SerializeServers(servers); | 259 info.servers = SerializeServers(servers); |
| 260 info.constraints = SerializeMediaConstraints(constraints); | 260 info.constraints = SerializeMediaConstraints(constraints); |
| 261 info.url = frame->document().url().spec(); | 261 info.url = frame->document().url().spec(); |
| 262 RenderThreadImpl::current()->Send( | 262 RenderThreadImpl::current()->Send( |
| 263 new PeerConnectionTrackerHost_AddPeerConnection(info)); | 263 new PeerConnectionTrackerHost_AddPeerConnection(info)); |
| 264 | 264 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 void PeerConnectionTracker::TrackCreateAnswer( | 297 void PeerConnectionTracker::TrackCreateAnswer( |
| 298 RTCPeerConnectionHandler* pc_handler, | 298 RTCPeerConnectionHandler* pc_handler, |
| 299 const RTCMediaConstraints& constraints) { | 299 const RTCMediaConstraints& constraints) { |
| 300 SendPeerConnectionUpdate( | 300 SendPeerConnectionUpdate( |
| 301 pc_handler, "createAnswer", | 301 pc_handler, "createAnswer", |
| 302 "constraints: {" + SerializeMediaConstraints(constraints) + "}"); | 302 "constraints: {" + SerializeMediaConstraints(constraints) + "}"); |
| 303 } | 303 } |
| 304 | 304 |
| 305 void PeerConnectionTracker::TrackSetSessionDescription( | 305 void PeerConnectionTracker::TrackSetSessionDescription( |
| 306 RTCPeerConnectionHandler* pc_handler, | 306 RTCPeerConnectionHandler* pc_handler, |
| 307 const WebKit::WebRTCSessionDescription& desc, | 307 const blink::WebRTCSessionDescription& desc, |
| 308 Source source) { | 308 Source source) { |
| 309 string sdp = UTF16ToUTF8(desc.sdp()); | 309 string sdp = UTF16ToUTF8(desc.sdp()); |
| 310 string type = UTF16ToUTF8(desc.type()); | 310 string type = UTF16ToUTF8(desc.type()); |
| 311 | 311 |
| 312 string value = "type: " + type + ", sdp: " + sdp; | 312 string value = "type: " + type + ", sdp: " + sdp; |
| 313 SendPeerConnectionUpdate( | 313 SendPeerConnectionUpdate( |
| 314 pc_handler, | 314 pc_handler, |
| 315 source == SOURCE_LOCAL ? "setLocalDescription" : "setRemoteDescription", | 315 source == SOURCE_LOCAL ? "setLocalDescription" : "setRemoteDescription", |
| 316 value); | 316 value); |
| 317 } | 317 } |
| 318 | 318 |
| 319 void PeerConnectionTracker::TrackUpdateIce( | 319 void PeerConnectionTracker::TrackUpdateIce( |
| 320 RTCPeerConnectionHandler* pc_handler, | 320 RTCPeerConnectionHandler* pc_handler, |
| 321 const std::vector<webrtc::PeerConnectionInterface::IceServer>& servers, | 321 const std::vector<webrtc::PeerConnectionInterface::IceServer>& servers, |
| 322 const RTCMediaConstraints& options) { | 322 const RTCMediaConstraints& options) { |
| 323 string servers_string = "servers: " + SerializeServers(servers); | 323 string servers_string = "servers: " + SerializeServers(servers); |
| 324 string constraints = | 324 string constraints = |
| 325 "constraints: {" + SerializeMediaConstraints(options) + "}"; | 325 "constraints: {" + SerializeMediaConstraints(options) + "}"; |
| 326 | 326 |
| 327 SendPeerConnectionUpdate( | 327 SendPeerConnectionUpdate( |
| 328 pc_handler, "updateIce", servers_string + ", " + constraints); | 328 pc_handler, "updateIce", servers_string + ", " + constraints); |
| 329 } | 329 } |
| 330 | 330 |
| 331 void PeerConnectionTracker::TrackAddIceCandidate( | 331 void PeerConnectionTracker::TrackAddIceCandidate( |
| 332 RTCPeerConnectionHandler* pc_handler, | 332 RTCPeerConnectionHandler* pc_handler, |
| 333 const WebKit::WebRTCICECandidate& candidate, | 333 const blink::WebRTCICECandidate& candidate, |
| 334 Source source) { | 334 Source source) { |
| 335 string value = "mid: " + UTF16ToUTF8(candidate.sdpMid()) + ", " + | 335 string value = "mid: " + UTF16ToUTF8(candidate.sdpMid()) + ", " + |
| 336 "candidate: " + UTF16ToUTF8(candidate.candidate()); | 336 "candidate: " + UTF16ToUTF8(candidate.candidate()); |
| 337 SendPeerConnectionUpdate( | 337 SendPeerConnectionUpdate( |
| 338 pc_handler, | 338 pc_handler, |
| 339 source == SOURCE_LOCAL ? "onIceCandidate" : "addIceCandidate", value); | 339 source == SOURCE_LOCAL ? "onIceCandidate" : "addIceCandidate", value); |
| 340 } | 340 } |
| 341 | 341 |
| 342 void PeerConnectionTracker::TrackAddStream( | 342 void PeerConnectionTracker::TrackAddStream( |
| 343 RTCPeerConnectionHandler* pc_handler, | 343 RTCPeerConnectionHandler* pc_handler, |
| 344 const WebKit::WebMediaStream& stream, | 344 const blink::WebMediaStream& stream, |
| 345 Source source){ | 345 Source source){ |
| 346 SendPeerConnectionUpdate( | 346 SendPeerConnectionUpdate( |
| 347 pc_handler, source == SOURCE_LOCAL ? "addStream" : "onAddStream", | 347 pc_handler, source == SOURCE_LOCAL ? "addStream" : "onAddStream", |
| 348 SerializeMediaDescriptor(stream)); | 348 SerializeMediaDescriptor(stream)); |
| 349 } | 349 } |
| 350 | 350 |
| 351 void PeerConnectionTracker::TrackRemoveStream( | 351 void PeerConnectionTracker::TrackRemoveStream( |
| 352 RTCPeerConnectionHandler* pc_handler, | 352 RTCPeerConnectionHandler* pc_handler, |
| 353 const WebKit::WebMediaStream& stream, | 353 const blink::WebMediaStream& stream, |
| 354 Source source){ | 354 Source source){ |
| 355 SendPeerConnectionUpdate( | 355 SendPeerConnectionUpdate( |
| 356 pc_handler, source == SOURCE_LOCAL ? "removeStream" : "onRemoveStream", | 356 pc_handler, source == SOURCE_LOCAL ? "removeStream" : "onRemoveStream", |
| 357 SerializeMediaDescriptor(stream)); | 357 SerializeMediaDescriptor(stream)); |
| 358 } | 358 } |
| 359 | 359 |
| 360 void PeerConnectionTracker::TrackCreateDataChannel( | 360 void PeerConnectionTracker::TrackCreateDataChannel( |
| 361 RTCPeerConnectionHandler* pc_handler, | 361 RTCPeerConnectionHandler* pc_handler, |
| 362 const webrtc::DataChannelInterface* data_channel, | 362 const webrtc::DataChannelInterface* data_channel, |
| 363 Source source) { | 363 Source source) { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 SendPeerConnectionUpdate(pc_handler, update_type, value); | 422 SendPeerConnectionUpdate(pc_handler, update_type, value); |
| 423 } | 423 } |
| 424 | 424 |
| 425 void PeerConnectionTracker::TrackOnRenegotiationNeeded( | 425 void PeerConnectionTracker::TrackOnRenegotiationNeeded( |
| 426 RTCPeerConnectionHandler* pc_handler) { | 426 RTCPeerConnectionHandler* pc_handler) { |
| 427 SendPeerConnectionUpdate(pc_handler, "onRenegotiationNeeded", std::string()); | 427 SendPeerConnectionUpdate(pc_handler, "onRenegotiationNeeded", std::string()); |
| 428 } | 428 } |
| 429 | 429 |
| 430 void PeerConnectionTracker::TrackCreateDTMFSender( | 430 void PeerConnectionTracker::TrackCreateDTMFSender( |
| 431 RTCPeerConnectionHandler* pc_handler, | 431 RTCPeerConnectionHandler* pc_handler, |
| 432 const WebKit::WebMediaStreamTrack& track) { | 432 const blink::WebMediaStreamTrack& track) { |
| 433 SendPeerConnectionUpdate(pc_handler, "createDTMFSender", | 433 SendPeerConnectionUpdate(pc_handler, "createDTMFSender", |
| 434 UTF16ToUTF8(track.id())); | 434 UTF16ToUTF8(track.id())); |
| 435 } | 435 } |
| 436 | 436 |
| 437 int PeerConnectionTracker::GetNextLocalID() { | 437 int PeerConnectionTracker::GetNextLocalID() { |
| 438 return next_lid_++; | 438 return next_lid_++; |
| 439 } | 439 } |
| 440 | 440 |
| 441 void PeerConnectionTracker::SendPeerConnectionUpdate( | 441 void PeerConnectionTracker::SendPeerConnectionUpdate( |
| 442 RTCPeerConnectionHandler* pc_handler, | 442 RTCPeerConnectionHandler* pc_handler, |
| 443 const std::string& type, | 443 const std::string& type, |
| 444 const std::string& value) { | 444 const std::string& value) { |
| 445 if (peer_connection_id_map_.find(pc_handler) == peer_connection_id_map_.end()) | 445 if (peer_connection_id_map_.find(pc_handler) == peer_connection_id_map_.end()) |
| 446 return; | 446 return; |
| 447 | 447 |
| 448 RenderThreadImpl::current()->Send( | 448 RenderThreadImpl::current()->Send( |
| 449 new PeerConnectionTrackerHost_UpdatePeerConnection( | 449 new PeerConnectionTrackerHost_UpdatePeerConnection( |
| 450 peer_connection_id_map_[pc_handler], type, value)); | 450 peer_connection_id_map_[pc_handler], type, value)); |
| 451 } | 451 } |
| 452 | 452 |
| 453 } // namespace content | 453 } // namespace content |
| OLD | NEW |