Index: third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp |
diff --git a/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp b/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp |
index 9c077a357f0561216582bd91aee69e73f1510c8f..a93e097575f7b153eadf2a430bede2cdb5fa05ec 100644 |
--- a/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp |
+++ b/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp |
@@ -27,6 +27,8 @@ |
#include <memory> |
#include "bindings/core/v8/ExceptionMessages.h" |
+#include "bindings/core/v8/ScriptPromiseResolver.h" |
+#include "core/dom/DOMException.h" |
#include "core/dom/Document.h" |
#include "core/dom/ExceptionCode.h" |
#include "core/dom/ExecutionContext.h" |
@@ -36,6 +38,7 @@ |
#include "modules/mediastream/MediaConstraintsImpl.h" |
#include "modules/mediastream/MediaStream.h" |
#include "modules/mediastream/MediaTrackCapabilities.h" |
+#include "modules/mediastream/MediaTrackConstraints.h" |
#include "modules/mediastream/MediaTrackSettings.h" |
#include "modules/mediastream/UserMediaController.h" |
#include "platform/mediastream/MediaStreamCenter.h" |
@@ -273,6 +276,30 @@ void MediaStreamTrack::getSettings(MediaTrackSettings& settings) { |
} |
} |
+ScriptPromise MediaStreamTrack::applyConstraints( |
+ ScriptState* scriptState, |
+ const MediaTrackConstraints& constraints) { |
+ ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
+ ScriptPromise promise = resolver->promise(); |
+ |
+ // |constraints| is an optional argument, which is strange. |
+ // TODO(mcasas): remove this provision if |constraints| is not optional: |
+ // https://github.com/w3c/mediacapture-main/issues/438 |
+ if (!constraints.hasAdvanced()) { |
+ resolver->resolve(); |
haraken
2017/03/17 09:43:51
Would it be better to reject with NotSupportedErro
mcasas
2017/03/17 15:12:47
|constraints| is a dictionary having just one memb
|
+ return promise; |
+ } |
+ |
+ if (!m_imageCapture) { |
+ resolver->reject(DOMException::create( |
+ NotSupportedError, "Track type not currently supported")); |
+ return promise; |
+ } |
+ |
+ m_imageCapture->setMediaTrackConstraints(resolver, constraints.advanced()[0]); |
+ return promise; |
+} |
+ |
bool MediaStreamTrack::ended() const { |
return m_stopped || (m_readyState == MediaStreamSource::ReadyStateEnded); |
} |