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) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CONTENT_BROWSER_RENDERER_HOST_MEDIA_PEER_CONNECTION_TRACKER_HOST_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CONTENT_BROWSER_RENDERER_HOST_MEDIA_PEER_CONNECTION_TRACKER_HOST_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "base/power_monitor/power_observer.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/browser_message_filter.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct PeerConnectionInfo; 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ListValue; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace base 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace content { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This class is the host for PeerConnectionTracker in the browser process 2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// managed by RenderProcessHostImpl. It receives PeerConnection events from 2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// PeerConnectionTracker as IPC messages that it forwards to WebRTCInternals. 2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// It also forwards browser process events to PeerConnectionTracker via IPC. 2303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class PeerConnectionTrackerHost : public BrowserMessageFilter, 2403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) public base::PowerObserver { 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PeerConnectionTrackerHost(int render_process_id); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // content::BrowserMessageFilter override. 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OverrideThreadForMessage(const IPC::Message& message, 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BrowserThread::ID* thread) OVERRIDE; 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void OnChannelConnected(int32 peer_pid) OVERRIDE; 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void OnChannelClosing() OVERRIDE; 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // base::PowerObserver override. 3603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void OnSuspend() OVERRIDE; 3703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~PeerConnectionTrackerHost(); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Handlers for peer connection messages coming from the renderer. 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnAddPeerConnection(const PeerConnectionInfo& info); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnRemovePeerConnection(int lid); 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnUpdatePeerConnection( 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int lid, const std::string& type, const std::string& value); 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnAddStats(int lid, const base::ListValue& value); 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnGetUserMedia(const std::string& origin, 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool audio, 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool video, 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& audio_constraints, 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& video_constraints); 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SendOnSuspendOnUIThread(); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int render_process_id_; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PeerConnectionTrackerHost); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace content 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_PEER_CONNECTION_TRACKER_HOST_H_ 63