1// Copyright 2014 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 REMOTING_HOST_CAST_EXTENSION_H_
6#define REMOTING_HOST_CAST_EXTENSION_H_
7
8#include <string>
9
10#include "base/memory/ref_counted.h"
11#include "base/memory/scoped_ptr.h"
12#include "remoting/host/host_extension.h"
13
14namespace base {
15class SingleThreadTaskRunner;
16}  // namespace base
17
18namespace net {
19class URLRequestContextGetter;
20}  // namespace net
21
22namespace remoting {
23
24namespace protocol {
25struct NetworkSettings;
26}  // namespace protocol
27
28// CastExtension extends HostExtension to enable WebRTC support.
29class CastExtension : public HostExtension {
30 public:
31  CastExtension(
32      scoped_refptr<base::SingleThreadTaskRunner> network_task_runner,
33      scoped_refptr<net::URLRequestContextGetter> url_request_context_getter,
34      const protocol::NetworkSettings& network_settings);
35  virtual ~CastExtension();
36
37  // HostExtension interface.
38  virtual std::string capability() const OVERRIDE;
39  virtual scoped_ptr<HostExtensionSession> CreateExtensionSession(
40      ClientSessionControl* client_session_control,
41      protocol::ClientStub* client_stub) OVERRIDE;
42
43 private:
44  scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_;
45  scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
46  const protocol::NetworkSettings& network_settings_;
47
48  DISALLOW_COPY_AND_ASSIGN(CastExtension);
49};
50
51}  // namespace remoting
52
53#endif  // REMOTING_HOST_CAST_EXTENSION_H_
54
55