peer_connection_tracker_host.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/browser_message_filter.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct PeerConnectionInfo;
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base {
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ListValue;
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace base
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace content {
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This class is the host for PeerConnectionTracker in the browser process
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// managed by RenderProcessHostImpl. It passes IPC messages between
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// WebRTCInternals and PeerConnectionTracker.
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PeerConnectionTrackerHost : public BrowserMessageFilter {
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PeerConnectionTrackerHost(int render_process_id);
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // content::BrowserMessageFilter override.
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OverrideThreadForMessage(const IPC::Message& message,
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                        BrowserThread::ID* thread) OVERRIDE;
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected:
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual ~PeerConnectionTrackerHost();
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Handlers for peer connection messages coming from the renderer.
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnAddPeerConnection(const PeerConnectionInfo& info);
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnRemovePeerConnection(int lid);
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnUpdatePeerConnection(
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      int lid, const std::string& type, const std::string& value);
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnAddStats(int lid, const base::ListValue& value);
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void OnGetUserMedia(const std::string& origin,
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                      bool audio,
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                      bool video,
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                      const std::string& audio_constraints,
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                      const std::string& video_constraints);
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int render_process_id_;
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(PeerConnectionTrackerHost);
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace content
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // CONTENT_BROWSER_RENDERER_HOST_MEDIA_PEER_CONNECTION_TRACKER_HOST_H_
54