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#include "base/strings/string_number_conversions.h"
6#include "base/strings/utf_string_conversions.h"
7#include "content/renderer/media/mock_media_constraint_factory.h"
8#include "third_party/libjingle/source/talk/app/webrtc/mediaconstraintsinterface.h"
9
10namespace content {
11
12namespace {
13
14static const char kValueTrue[] = "true";
15static const char kValueFalse[] = "false";
16
17}  // namespace
18
19MockMediaConstraintFactory::MockMediaConstraintFactory() {
20}
21
22MockMediaConstraintFactory::~MockMediaConstraintFactory() {
23}
24
25blink::WebMediaConstraints
26MockMediaConstraintFactory::CreateWebMediaConstraints() {
27  blink::WebVector<blink::WebMediaConstraint> mandatory(mandatory_);
28  blink::WebVector<blink::WebMediaConstraint> optional(optional_);
29  blink::WebMediaConstraints constraints;
30  constraints.initialize(optional, mandatory);
31  return constraints;
32}
33
34void MockMediaConstraintFactory::AddMandatory(const std::string& key,
35                                              int value) {
36  mandatory_.push_back(blink::WebMediaConstraint(base::UTF8ToUTF16(key),
37                                                 base::IntToString16(value)));
38}
39
40void MockMediaConstraintFactory::AddMandatory(const std::string& key,
41                                              double value) {
42  mandatory_.push_back(blink::WebMediaConstraint(
43      base::UTF8ToUTF16(key),
44      base::UTF8ToUTF16(base::DoubleToString(value))));
45}
46
47void MockMediaConstraintFactory::AddMandatory(const std::string& key,
48                                              const std::string& value) {
49  mandatory_.push_back(blink::WebMediaConstraint(
50      base::UTF8ToUTF16(key), base::UTF8ToUTF16(value)));
51}
52
53void MockMediaConstraintFactory::AddMandatory(const std::string& key,
54                                              bool value) {
55  const std::string string_value = value ? kValueTrue : kValueFalse;
56  AddMandatory(key, string_value);
57}
58
59void MockMediaConstraintFactory::AddOptional(const std::string& key,
60                                             int value) {
61  optional_.push_back(blink::WebMediaConstraint(base::UTF8ToUTF16(key),
62                                                base::IntToString16(value)));
63}
64
65void MockMediaConstraintFactory::AddOptional(const std::string& key,
66                                             double value) {
67  optional_.push_back(blink::WebMediaConstraint(
68      base::UTF8ToUTF16(key),
69      base::UTF8ToUTF16(base::DoubleToString(value))));
70}
71
72void MockMediaConstraintFactory::AddOptional(const std::string& key,
73                                             const std::string& value) {
74  optional_.push_back(blink::WebMediaConstraint(
75      base::UTF8ToUTF16(key), base::UTF8ToUTF16(value)));
76}
77
78void MockMediaConstraintFactory::AddOptional(const std::string& key,
79                                              bool value) {
80  const std::string string_value = value ? kValueTrue : kValueFalse;
81  AddOptional(key, string_value);
82}
83
84void MockMediaConstraintFactory::DisableDefaultAudioConstraints() {
85  static const char* kDefaultAudioConstraints[] = {
86      webrtc::MediaConstraintsInterface::kEchoCancellation,
87      webrtc::MediaConstraintsInterface::kExperimentalEchoCancellation,
88      webrtc::MediaConstraintsInterface::kAutoGainControl,
89      webrtc::MediaConstraintsInterface::kExperimentalAutoGainControl,
90      webrtc::MediaConstraintsInterface::kNoiseSuppression,
91      webrtc::MediaConstraintsInterface::kHighpassFilter,
92      webrtc::MediaConstraintsInterface::kTypingNoiseDetection,
93      webrtc::MediaConstraintsInterface::kExperimentalNoiseSuppression
94  };
95  MockMediaConstraintFactory factory;
96  for (size_t i = 0; i < arraysize(kDefaultAudioConstraints); ++i) {
97    AddMandatory(kDefaultAudioConstraints[i], false);
98  }
99}
100
101}  // namespace content
102