Index: third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp |
diff --git a/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp b/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp |
index a460a3a0b47cbaff9b48e755343ea0e3a8f79ed7..e0d50dcbbaea789351eebdfa5c7b5b02303a4bcd 100644 |
--- a/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp |
+++ b/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp |
@@ -16,6 +16,7 @@ |
#include "modules/imagecapture/PhotoSettings.h" |
#include "modules/mediastream/MediaStreamTrack.h" |
#include "modules/mediastream/MediaTrackCapabilities.h" |
+#include "modules/mediastream/MediaTrackConstraints.h" |
#include "platform/WaitableEvent.h" |
#include "platform/mojo/MojoHelper.h" |
#include "public/platform/InterfaceProvider.h" |
@@ -246,17 +247,20 @@ MediaTrackCapabilities& ImageCapture::getMediaTrackCapabilities() { |
return m_capabilities; |
} |
-// TODO(mcasas): make the implementation fully Spec compliant, see inside the |
-// method, https://crbug.com/700607. |
+// TODO(mcasas): make the implementation fully Spec compliant, see the TODOs |
+// inside the method, https://crbug.com/708723. |
void ImageCapture::setMediaTrackConstraints( |
ScriptPromiseResolver* resolver, |
- const MediaTrackConstraintSet& constraints) { |
+ const HeapVector<MediaTrackConstraintSet>& constraintsVector) { |
if (!m_service) { |
resolver->reject(DOMException::create(NotFoundError, kNoServiceError)); |
return; |
} |
m_serviceRequests.insert(resolver); |
+ // TODO(mcasas): add support more than one single advanced constraint. |
+ const auto constraints = constraintsVector[0]; |
+ |
auto settings = media::mojom::blink::PhotoSettings::New(); |
// TODO(mcasas): support other Mode types beyond simple string i.e. the |
@@ -369,6 +373,15 @@ const MediaTrackConstraintSet& ImageCapture::getMediaTrackConstraints() const { |
return m_currentConstraints; |
} |
+void ImageCapture::clearMediaTrackConstraints(ScriptPromiseResolver* resolver) { |
+ m_currentConstraints = MediaTrackConstraintSet(); |
+ resolver->resolve(); |
+ |
+ // TODO(mcasas): Clear also any PhotoSettings that the device might have got |
+ // configured, for that we need to know a "default" state of the device; take |
+ // a snapshot upon first opening. https://crbug.com/700607. |
+} |
+ |
void ImageCapture::getMediaTrackSettings(MediaTrackSettings& settings) const { |
// Merge any present |m_settings| members into |settings|. |
@@ -404,6 +417,29 @@ void ImageCapture::getMediaTrackSettings(MediaTrackSettings& settings) const { |
settings.setTorch(m_settings.torch()); |
} |
+bool ImageCapture::hasNonImageCaptureConstraints( |
+ const MediaTrackConstraints& constraints) const { |
+ if (!constraints.hasAdvanced()) |
+ return false; |
+ |
+ const auto& advancedConstraints = constraints.advanced(); |
+ for (const auto& constraint : advancedConstraints) { |
+ if (constraint.hasWidth() || constraint.hasHeight() || |
+ constraint.hasAspectRatio() || constraint.hasFrameRate() || |
+ constraint.hasFacingMode() || constraint.hasVolume() || |
+ constraint.hasSampleRate() || constraint.hasSampleSize() || |
+ constraint.hasEchoCancellation() || constraint.hasLatency() || |
+ constraint.hasChannelCount() || constraint.hasDeviceId() || |
+ constraint.hasGroupId() || constraint.hasVideoKind() || |
+ constraint.hasDepthNear() || constraint.hasDepthFar() || |
+ constraint.hasFocalLengthX() || constraint.hasFocalLengthY() || |
+ constraint.hasMandatory() || constraint.hasOptional()) { |
+ return true; |
+ } |
+ } |
+ return false; |
+} |
+ |
ImageCapture::ImageCapture(ExecutionContext* context, MediaStreamTrack* track) |
: ContextLifecycleObserver(context), m_streamTrack(track) { |
DCHECK(m_streamTrack); |