peer_connection_tracker_host.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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 3// found in the LICENSE file. 4 5#ifndef CONTENT_BROWSER_RENDERER_HOST_MEDIA_PEER_CONNECTION_TRACKER_HOST_H_ 6#define CONTENT_BROWSER_RENDERER_HOST_MEDIA_PEER_CONNECTION_TRACKER_HOST_H_ 7 8#include "base/power_monitor/power_observer.h" 9#include "content/public/browser/browser_message_filter.h" 10 11struct PeerConnectionInfo; 12 13namespace base { 14class ListValue; 15} // namespace base 16 17namespace content { 18 19// This class is the host for PeerConnectionTracker in the browser process 20// managed by RenderProcessHostImpl. It receives PeerConnection events from 21// PeerConnectionTracker as IPC messages that it forwards to WebRTCInternals. 22// It also forwards browser process events to PeerConnectionTracker via IPC. 23class PeerConnectionTrackerHost : public BrowserMessageFilter, 24 public base::PowerObserver { 25 public: 26 PeerConnectionTrackerHost(int render_process_id); 27 28 // content::BrowserMessageFilter override. 29 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 30 virtual void OverrideThreadForMessage(const IPC::Message& message, 31 BrowserThread::ID* thread) OVERRIDE; 32 virtual void OnChannelConnected(int32 peer_pid) OVERRIDE; 33 virtual void OnChannelClosing() OVERRIDE; 34 35 // base::PowerObserver override. 36 virtual void OnSuspend() OVERRIDE; 37 38 protected: 39 virtual ~PeerConnectionTrackerHost(); 40 41 private: 42 // Handlers for peer connection messages coming from the renderer. 43 void OnAddPeerConnection(const PeerConnectionInfo& info); 44 void OnRemovePeerConnection(int lid); 45 void OnUpdatePeerConnection( 46 int lid, const std::string& type, const std::string& value); 47 void OnAddStats(int lid, const base::ListValue& value); 48 void OnGetUserMedia(const std::string& origin, 49 bool audio, 50 bool video, 51 const std::string& audio_constraints, 52 const std::string& video_constraints); 53 void SendOnSuspendOnUIThread(); 54 55 int render_process_id_; 56 57 DISALLOW_COPY_AND_ASSIGN(PeerConnectionTrackerHost); 58}; 59 60} // namespace content 61 62#endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_PEER_CONNECTION_TRACKER_HOST_H_ 63