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 a93e097575f7b153eadf2a430bede2cdb5fa05ec..2fd6badd389eea03400bf0894138b04807cfd9f7 100644 |
--- a/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp |
+++ b/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp |
@@ -216,10 +216,6 @@ MediaStreamTrack* MediaStreamTrack::clone(ScriptState* scriptState) { |
return clonedTrack; |
} |
-void MediaStreamTrack::getConstraints(MediaTrackConstraints& constraints) { |
- MediaConstraintsImpl::convertConstraints(m_constraints, constraints); |
-} |
- |
void MediaStreamTrack::setConstraints(const WebMediaConstraints& constraints) { |
m_constraints = constraints; |
} |
@@ -229,18 +225,43 @@ void MediaStreamTrack::getCapabilities(MediaTrackCapabilities& capabilities) { |
capabilities = m_imageCapture->getMediaTrackCapabilities(); |
} |
+void MediaStreamTrack::getConstraints(MediaTrackConstraints& constraints) { |
+ MediaConstraintsImpl::convertConstraints(m_constraints, constraints); |
+ |
+ if (!m_imageCapture) |
+ return; |
+ HeapVector<MediaTrackConstraintSet> vector; |
+ if (constraints.hasAdvanced()) |
+ vector = constraints.advanced(); |
+ // TODO(mcasas): consider consolidating this code in MediaContraintsImpl. |
+ auto imageCaptureConstraints = m_imageCapture->getMediaTrackConstraints(); |
+ // TODO(mcasas): add |torch|, https://crbug.com/700607. |
+ if (imageCaptureConstraints.hasWhiteBalanceMode() || |
+ imageCaptureConstraints.hasExposureMode() || |
+ imageCaptureConstraints.hasFocusMode() || |
+ imageCaptureConstraints.hasExposureCompensation() || |
+ imageCaptureConstraints.hasColorTemperature() || |
+ imageCaptureConstraints.hasIso() || |
+ imageCaptureConstraints.hasBrightness() || |
+ imageCaptureConstraints.hasContrast() || |
+ imageCaptureConstraints.hasSaturation() || |
+ imageCaptureConstraints.hasSharpness() || |
+ imageCaptureConstraints.hasZoom()) { |
+ // Add image capture constraints, if any, as another entry to advanced(). |
+ vector.emplace_back(imageCaptureConstraints); |
+ constraints.setAdvanced(vector); |
+ } |
+} |
+ |
void MediaStreamTrack::getSettings(MediaTrackSettings& settings) { |
WebMediaStreamTrack::Settings platformSettings; |
m_component->getSettings(platformSettings); |
- if (platformSettings.hasFrameRate()) { |
+ if (platformSettings.hasFrameRate()) |
settings.setFrameRate(platformSettings.frameRate); |
- } |
- if (platformSettings.hasWidth()) { |
+ if (platformSettings.hasWidth()) |
settings.setWidth(platformSettings.width); |
- } |
- if (platformSettings.hasHeight()) { |
+ if (platformSettings.hasHeight()) |
settings.setHeight(platformSettings.height); |
- } |
if (RuntimeEnabledFeatures::mediaCaptureDepthEnabled() && |
m_component->source()->type() == MediaStreamSource::TypeVideo) { |
if (platformSettings.hasVideoKind()) |
@@ -296,6 +317,7 @@ ScriptPromise MediaStreamTrack::applyConstraints( |
return promise; |
} |
+ // TODO(mcasas): support more advanced constraints, https://crbug.com/700607. |
m_imageCapture->setMediaTrackConstraints(resolver, constraints.advanced()[0]); |
return promise; |
} |