summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp')
-rw-r--r--chromium/third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp103
1 files changed, 41 insertions, 62 deletions
diff --git a/chromium/third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp b/chromium/third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp
index 2a93b96818f..f1c002734a6 100644
--- a/chromium/third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp
+++ b/chromium/third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp
@@ -36,55 +36,50 @@
#include "bindings/v8/Dictionary.h"
#include "bindings/v8/ExceptionState.h"
#include "core/dom/ExceptionCode.h"
+#include "wtf/HashMap.h"
+#include "wtf/Vector.h"
#include "wtf/text/StringHash.h"
namespace WebCore {
+namespace MediaConstraintsImpl {
-PassRefPtr<MediaConstraintsImpl> MediaConstraintsImpl::create(const Dictionary& constraints, ExceptionState& exceptionState)
+static bool parse(const Dictionary& constraintsDictionary, blink::WebVector<blink::WebMediaConstraint>& optional, blink::WebVector<blink::WebMediaConstraint>& mandatory)
{
- RefPtr<MediaConstraintsImpl> object = adoptRef(new MediaConstraintsImpl());
- if (!object->initialize(constraints)) {
- exceptionState.throwUninformativeAndGenericDOMException(TypeMismatchError);
- return 0;
- }
- return object.release();
-}
-
-PassRefPtr<MediaConstraintsImpl> MediaConstraintsImpl::create()
-{
- return adoptRef(new MediaConstraintsImpl());
-}
-
-bool MediaConstraintsImpl::initialize(const Dictionary& constraints)
-{
- if (constraints.isUndefinedOrNull())
+ if (constraintsDictionary.isUndefinedOrNull())
return true;
Vector<String> names;
- constraints.getOwnPropertyNames(names);
+ constraintsDictionary.getOwnPropertyNames(names);
- String mandatory("mandatory");
- String optional("optional");
+ String mandatoryName("mandatory");
+ String optionalName("optional");
for (Vector<String>::iterator it = names.begin(); it != names.end(); ++it) {
- if (*it != mandatory && *it != optional)
+ if (*it != mandatoryName && *it != optionalName)
return false;
}
- if (names.contains(mandatory)) {
- Dictionary mandatoryConstraints;
- bool ok = constraints.get(mandatory, mandatoryConstraints);
- if (!ok || mandatoryConstraints.isUndefinedOrNull())
+ Vector<blink::WebMediaConstraint> mandatoryConstraintsVector;
+ if (names.contains(mandatoryName)) {
+ Dictionary mandatoryConstraintsDictionary;
+ bool ok = constraintsDictionary.get(mandatoryName, mandatoryConstraintsDictionary);
+ if (!ok || mandatoryConstraintsDictionary.isUndefinedOrNull())
return false;
- ok = mandatoryConstraints.getOwnPropertiesAsStringHashMap(m_mandatoryConstraints);
+ HashMap<String, String> mandatoryConstraintsHashMap;
+ ok = mandatoryConstraintsDictionary.getOwnPropertiesAsStringHashMap(mandatoryConstraintsHashMap);
if (!ok)
return false;
+
+ HashMap<String, String>::const_iterator iter = mandatoryConstraintsHashMap.begin();
+ for (; iter != mandatoryConstraintsHashMap.end(); ++iter)
+ mandatoryConstraintsVector.append(blink::WebMediaConstraint(iter->key, iter->value));
}
- if (names.contains(optional)) {
+ Vector<blink::WebMediaConstraint> optionalConstraintsVector;
+ if (names.contains(optionalName)) {
ArrayValue optionalConstraints;
- bool ok = constraints.get(optional, optionalConstraints);
+ bool ok = constraintsDictionary.get(optionalName, optionalConstraints);
if (!ok || optionalConstraints.isUndefinedOrNull())
return false;
@@ -107,52 +102,36 @@ bool MediaConstraintsImpl::initialize(const Dictionary& constraints)
ok = constraint.get(key, value);
if (!ok)
return false;
- m_optionalConstraints.append(MediaConstraint(key, value));
+ optionalConstraintsVector.append(blink::WebMediaConstraint(key, value));
}
}
+ optional.assign(optionalConstraintsVector);
+ mandatory.assign(mandatoryConstraintsVector);
return true;
}
-MediaConstraintsImpl::~MediaConstraintsImpl()
-{
-}
-void MediaConstraintsImpl::getMandatoryConstraints(Vector<MediaConstraint>& constraints) const
+blink::WebMediaConstraints create(const Dictionary& constraintsDictionary, ExceptionState& exceptionState)
{
- constraints.clear();
- HashMap<String, String>::const_iterator i = m_mandatoryConstraints.begin();
- for (; i != m_mandatoryConstraints.end(); ++i)
- constraints.append(MediaConstraint(i->key, i->value));
-}
-
-void MediaConstraintsImpl::getOptionalConstraints(Vector<MediaConstraint>& constraints) const
-{
- constraints.clear();
- constraints.append(m_optionalConstraints);
-}
-
-bool MediaConstraintsImpl::getMandatoryConstraintValue(const String& name, String& value) const
-{
- HashMap<String, String>::const_iterator i = m_mandatoryConstraints.find(name);
- if (i == m_mandatoryConstraints.end())
- return false;
+ blink::WebVector<blink::WebMediaConstraint> optional;
+ blink::WebVector<blink::WebMediaConstraint> mandatory;
+ if (!parse(constraintsDictionary, optional, mandatory)) {
+ exceptionState.throwTypeError("Malformed constraints object.");
+ return blink::WebMediaConstraints();
+ }
- value = i->value;
- return true;
+ blink::WebMediaConstraints constraints;
+ constraints.initialize(optional, mandatory);
+ return constraints;
}
-bool MediaConstraintsImpl::getOptionalConstraintValue(const String& name, String& value) const
+blink::WebMediaConstraints create()
{
- Vector<MediaConstraint>::const_iterator i = m_optionalConstraints.begin();
- for (; i != m_optionalConstraints.end(); ++i) {
- if (i->m_name == name) {
- value = i->m_value;
- return true;
- }
- }
-
- return false;
+ blink::WebMediaConstraints constraints;
+ constraints.initialize();
+ return constraints;
}
+} // namespace MediaConstraintsImpl
} // namespace WebCore