peer_connection_tracker_host.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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 "content/public/browser/browser_message_filter.h"
9
10struct PeerConnectionInfo;
11
12namespace base {
13class ListValue;
14}  // namespace base
15
16namespace content {
17
18// This class is the host for PeerConnectionTracker in the browser process
19// managed by RenderProcessHostImpl. It passes IPC messages between
20// WebRTCInternals and PeerConnectionTracker.
21class PeerConnectionTrackerHost : public BrowserMessageFilter {
22 public:
23  PeerConnectionTrackerHost(int render_process_id);
24
25  // content::BrowserMessageFilter override.
26  virtual bool OnMessageReceived(const IPC::Message& message,
27                                 bool* message_was_ok) OVERRIDE;
28  virtual void OverrideThreadForMessage(const IPC::Message& message,
29                                        BrowserThread::ID* thread) OVERRIDE;
30
31 protected:
32  virtual ~PeerConnectionTrackerHost();
33
34 private:
35  // Handlers for peer connection messages coming from the renderer.
36  void OnAddPeerConnection(const PeerConnectionInfo& info);
37  void OnRemovePeerConnection(int lid);
38  void OnUpdatePeerConnection(
39      int lid, const std::string& type, const std::string& value);
40  void OnAddStats(int lid, const base::ListValue& value);
41
42  int render_process_id_;
43
44  DISALLOW_COPY_AND_ASSIGN(PeerConnectionTrackerHost);
45};
46
47}  // namespace content
48
49#endif  // CONTENT_BROWSER_RENDERER_HOST_MEDIA_PEER_CONNECTION_TRACKER_HOST_H_
50