1// Copyright (c) 2012 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_RENDERER_MEDIA_RTC_MEDIA_CONSTRAINTS_H_
6#define CONTENT_RENDERER_MEDIA_RTC_MEDIA_CONSTRAINTS_H_
7
8#include "base/compiler_specific.h"
9#include "content/common/content_export.h"
10#include "third_party/libjingle/source/talk/app/webrtc/mediaconstraintsinterface.h"
11
12namespace blink {
13class WebMediaConstraints;
14}
15
16namespace content {
17
18// RTCMediaConstraints acts as a glue layer between WebKits MediaConstraints and
19// libjingle webrtc::MediaConstraintsInterface.
20// Constraints are used by PeerConnection and getUserMedia API calls.
21class CONTENT_EXPORT RTCMediaConstraints
22    : public NON_EXPORTED_BASE(webrtc::MediaConstraintsInterface) {
23 public:
24  RTCMediaConstraints();
25  explicit RTCMediaConstraints(
26      const blink::WebMediaConstraints& constraints);
27  virtual ~RTCMediaConstraints();
28  virtual const Constraints& GetMandatory() const OVERRIDE;
29  virtual const Constraints& GetOptional() const OVERRIDE;
30  // Adds a mandatory constraint, optionally overriding an existing one.
31  // If the constraint is already set and |override_if_exists| is false,
32  // the function will return false, otherwise true.
33  bool AddMandatory(const std::string& key, const std::string& value,
34                    bool override_if_exists);
35  // As above, but against the optional constraints.
36  bool AddOptional(const std::string& key, const std::string& value,
37                   bool override_if_exists);
38
39 protected:
40  bool AddConstraint(Constraints* constraints,
41                     const std::string& key,
42                     const std::string& value,
43                     bool override_if_exists);
44  Constraints mandatory_;
45  Constraints optional_;
46};
47
48}  // namespace content
49
50
51#endif  // CONTENT_RENDERER_MEDIA_RTC_MEDIA_CONSTRAINTS_H_
52