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