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 |