Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(368)

Side by Side Diff: content/renderer/media/media_stream_constraints_util.cc

Issue 1729683002: Remove old-style constraints from Chrome internals (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Complete the interface change Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/media_stream_constraints_util.h" 5 #include "content/renderer/media/media_stream_constraints_util.h"
6 6
7 #include "base/strings/string_number_conversions.h" 7 #include "base/strings/string_number_conversions.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" 9 #include "third_party/WebKit/public/platform/WebMediaConstraints.h"
10 #include "third_party/WebKit/public/platform/WebString.h" 10 #include "third_party/WebKit/public/platform/WebString.h"
11 11
12 namespace content { 12 namespace content {
13 13
14 namespace { 14 namespace {
15 15
16 // Convert a string ("true", "false") to a boolean. 16 template <typename P, typename T>
17 bool ConvertStringToBoolean(const std::string& string, bool* value) { 17 bool ScanConstraintsForExactValue(const blink::WebMediaConstraints& constraints,
18 static const char kValueTrue[] = "true"; 18 P picker,
19 static const char kValueFalse[] = "false"; 19 T* value) {
20 const auto& the_field = constraints.basic().*picker;
21 if (the_field.hasExact()) {
22 *value = the_field.exact();
23 return true;
24 }
25 for (const auto& advanced_constraint : constraints.advanced()) {
26 const auto& the_field = advanced_constraint.*picker;
27 if (the_field.hasExact()) {
28 *value = the_field.exact();
29 return true;
30 }
31 }
32 return false;
33 }
20 34
21 *value = (string == kValueTrue); 35 template <typename P, typename T>
22 return *value || (string == kValueFalse); 36 bool ScanConstraintsForMaxValue(const blink::WebMediaConstraints& constraints,
37 P picker,
38 T* value) {
39 const auto& the_field = constraints.basic().*picker;
40 if (the_field.hasMax()) {
41 *value = the_field.max();
42 return true;
43 }
44 for (const auto& advanced_constraint : constraints.advanced()) {
45 const auto& the_field = advanced_constraint.*picker;
46 if (the_field.hasMax()) {
47 *value = the_field.max();
48 return true;
49 }
50 }
51 return false;
52 }
53
54 template <typename P, typename T>
55 bool ScanConstraintsForMinValue(const blink::WebMediaConstraints& constraints,
56 P picker,
57 T* value) {
58 const auto& the_field = constraints.basic().*picker;
59 if (the_field.hasMin()) {
60 *value = the_field.min();
61 return true;
62 }
63 for (const auto& advanced_constraint : constraints.advanced()) {
64 const auto& the_field = advanced_constraint.*picker;
65 if (the_field.hasMin()) {
66 *value = the_field.min();
67 return true;
68 }
69 }
70 return false;
23 } 71 }
24 72
25 } // namespace 73 } // namespace
26 74
27 bool GetConstraintValueAsBoolean(const blink::WebMediaConstraints& constraints, 75 bool GetConstraintValueAsBoolean(
28 const std::string& name, 76 const blink::WebMediaConstraints& constraints,
29 bool* value) { 77 const blink::BooleanConstraint blink::WebMediaTrackConstraintSet::*picker,
30 return GetMandatoryConstraintValueAsBoolean(constraints, name, value) || 78 bool* value) {
31 GetOptionalConstraintValueAsBoolean(constraints, name, value); 79 return ScanConstraintsForExactValue(constraints, picker, value);
32 } 80 }
33 81
34 bool GetConstraintValueAsInteger(const blink::WebMediaConstraints& constraints, 82 bool GetConstraintValueAsInteger(
35 const std::string& name, 83 const blink::WebMediaConstraints& constraints,
36 int* value) { 84 const blink::LongConstraint blink::WebMediaTrackConstraintSet::*picker,
37 return GetMandatoryConstraintValueAsInteger(constraints, name, value) || 85 int* value) {
38 GetOptionalConstraintValueAsInteger(constraints, name, value); 86 return ScanConstraintsForExactValue(constraints, picker, value);
39 } 87 }
40 88
41 bool GetConstraintValueAsDouble(const blink::WebMediaConstraints& constraints, 89 bool GetConstraintMinAsInteger(
42 const std::string& name, 90 const blink::WebMediaConstraints& constraints,
43 double* value) { 91 const blink::LongConstraint blink::WebMediaTrackConstraintSet::*picker,
44 return GetMandatoryConstraintValueAsDouble(constraints, name, value) || 92 int* value) {
45 GetOptionalConstraintValueAsDouble(constraints, name, value); 93 return ScanConstraintsForMinValue(constraints, picker, value);
46 } 94 }
47 95
48 bool GetConstraintValueAsString(const blink::WebMediaConstraints& constraints, 96 bool GetConstraintMaxAsInteger(
49 const std::string& name, 97 const blink::WebMediaConstraints& constraints,
50 std::string* value) { 98 const blink::LongConstraint blink::WebMediaTrackConstraintSet::*picker,
51 blink::WebString value_str; 99 int* value) {
52 base::string16 name_16 = base::UTF8ToUTF16(name); 100 return ScanConstraintsForMaxValue(constraints, picker, value);
53 if (!constraints.getMandatoryConstraintValue(name_16, value_str) &&
54 !constraints.getOptionalConstraintValue(name_16, value_str)) {
55 return false;
56 }
57
58 *value = value_str.utf8();
59 return true;
60 } 101 }
61 102
62 bool GetMandatoryConstraintValueAsBoolean( 103 bool GetConstraintValueAsDouble(
63 const blink::WebMediaConstraints& constraints, 104 const blink::WebMediaConstraints& constraints,
64 const std::string& name, 105 const blink::DoubleConstraint blink::WebMediaTrackConstraintSet::*picker,
65 bool* value) { 106 double* value) {
66 blink::WebString value_str; 107 return ScanConstraintsForExactValue(constraints, picker, value);
67 if (!constraints.getMandatoryConstraintValue(base::UTF8ToUTF16(name),
68 value_str)) {
69 return false;
70 }
71
72 return ConvertStringToBoolean(value_str.utf8(), value);
73 } 108 }
74 109
75 bool GetMandatoryConstraintValueAsInteger( 110 bool GetConstraintMaxAsDouble(
76 const blink::WebMediaConstraints& constraints, 111 const blink::WebMediaConstraints& constraints,
77 const std::string& name, 112 const blink::DoubleConstraint blink::WebMediaTrackConstraintSet::*picker,
78 int* value) { 113 double* value) {
79 blink::WebString value_str; 114 return ScanConstraintsForExactValue(constraints, picker, value);
80 if (!constraints.getMandatoryConstraintValue(base::UTF8ToUTF16(name),
81 value_str)) {
82 return false;
83 }
84
85 return base::StringToInt(value_str.utf8(), value);
86 } 115 }
87 116
88 bool GetMandatoryConstraintValueAsDouble( 117 bool GetConstraintValueAsString(
89 const blink::WebMediaConstraints& constraints, 118 const blink::WebMediaConstraints& constraints,
90 const std::string& name, 119 const blink::StringConstraint blink::WebMediaTrackConstraintSet::*picker,
91 double* value) { 120 std::string* value) {
92 blink::WebString value_str; 121 blink::WebVector<blink::WebString> return_value;
93 if (!constraints.getMandatoryConstraintValue(base::UTF8ToUTF16(name), 122 if (ScanConstraintsForExactValue(constraints, picker, &return_value)) {
94 value_str)) { 123 *value = return_value[0].utf8();
95 return false; 124 return true;
96 } 125 }
97 return base::StringToDouble(value_str.utf8(), value); 126 return false;
98 } 127 }
99 128
100 bool GetOptionalConstraintValueAsBoolean( 129 rtc::Optional<bool> ConstraintToOptional(
101 const blink::WebMediaConstraints& constraints, 130 const blink::WebMediaConstraints& constraints,
102 const std::string& name, 131 const blink::BooleanConstraint blink::WebMediaTrackConstraintSet::*picker) {
103 bool* value) { 132 bool value;
104 blink::WebString value_str; 133 if (GetConstraintValueAsBoolean(constraints, picker, &value)) {
105 if (!constraints.getOptionalConstraintValue(base::UTF8ToUTF16(name), 134 return rtc::Optional<bool>(value);
106 value_str)) {
107 return false;
108 } 135 }
109 136 return rtc::Optional<bool>();
110 return ConvertStringToBoolean(value_str.utf8(), value);
111 }
112
113 bool GetOptionalConstraintValueAsInteger(
114 const blink::WebMediaConstraints& constraints,
115 const std::string& name,
116 int* value) {
117 blink::WebString value_str;
118 if (!constraints.getOptionalConstraintValue(base::UTF8ToUTF16(name),
119 value_str)) {
120 return false;
121 }
122
123 return base::StringToInt(value_str.utf8(), value);
124 }
125
126 bool GetOptionalConstraintValueAsDouble(
127 const blink::WebMediaConstraints& constraints,
128 const std::string& name,
129 double* value) {
130 blink::WebString value_str;
131 if (!constraints.getOptionalConstraintValue(base::UTF8ToUTF16(name),
132 value_str)) {
133 return false;
134 }
135
136 return base::StringToDouble(value_str.utf8(), value);
137 } 137 }
138 138
139 } // namespace content 139 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698