12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/browser/renderer_host/media/peer_connection_tracker_host.h" 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/browser/media/webrtc_internals.h" 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/common/media/peer_connection_tracker_messages.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace content { 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PeerConnectionTrackerHost::PeerConnectionTrackerHost(int render_process_id) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : render_process_id_(render_process_id) {} 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool PeerConnectionTrackerHost::OnMessageReceived(const IPC::Message& message, 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool* message_was_ok) { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool handled = true; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IPC_BEGIN_MESSAGE_MAP_EX(PeerConnectionTrackerHost, message, *message_was_ok) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IPC_MESSAGE_HANDLER(PeerConnectionTrackerHost_AddPeerConnection, 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OnAddPeerConnection) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IPC_MESSAGE_HANDLER(PeerConnectionTrackerHost_RemovePeerConnection, 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OnRemovePeerConnection) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IPC_MESSAGE_HANDLER(PeerConnectionTrackerHost_UpdatePeerConnection, 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OnUpdatePeerConnection) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IPC_MESSAGE_HANDLER(PeerConnectionTrackerHost_AddStats, OnAddStats) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IPC_MESSAGE_UNHANDLED(handled = false) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IPC_END_MESSAGE_MAP_EX() 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return handled; 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PeerConnectionTrackerHost::OverrideThreadForMessage( 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const IPC::Message& message, BrowserThread::ID* thread) { 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (IPC_MESSAGE_CLASS(message) == PeerConnectionTrackerMsgStart) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *thread = BrowserThread::UI; 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PeerConnectionTrackerHost::~PeerConnectionTrackerHost() { 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PeerConnectionTrackerHost::OnAddPeerConnection( 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const PeerConnectionInfo& info) { 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) WebRTCInternals::GetInstance()->OnAddPeerConnection( 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) render_process_id_, 447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch peer_pid(), 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) info.lid, 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) info.url, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) info.servers, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) info.constraints); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PeerConnectionTrackerHost::OnRemovePeerConnection(int lid) { 527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch WebRTCInternals::GetInstance()->OnRemovePeerConnection(peer_pid(), lid); 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PeerConnectionTrackerHost::OnUpdatePeerConnection( 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int lid, const std::string& type, const std::string& value) { 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) WebRTCInternals::GetInstance()->OnUpdatePeerConnection( 587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch peer_pid(), 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) lid, 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) type, 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) value); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PeerConnectionTrackerHost::OnAddStats(int lid, 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::ListValue& value) { 667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch WebRTCInternals::GetInstance()->OnAddStats(peer_pid(), lid, value); 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace content 70