| 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 0c161acbfefae5bd29c5d8526575a3bc33c248e1..a460a3a0b47cbaff9b48e755343ea0e3a8f79ed7 100644
|
| --- a/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
|
| +++ b/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
|
| @@ -16,7 +16,6 @@
|
| #include "modules/imagecapture/PhotoSettings.h"
|
| #include "modules/mediastream/MediaStreamTrack.h"
|
| #include "modules/mediastream/MediaTrackCapabilities.h"
|
| -#include "modules/mediastream/MediaTrackSettings.h"
|
| #include "platform/WaitableEvent.h"
|
| #include "platform/mojo/MojoHelper.h"
|
| #include "public/platform/InterfaceProvider.h"
|
| @@ -371,38 +370,38 @@ const MediaTrackConstraintSet& ImageCapture::getMediaTrackConstraints() const {
|
| }
|
|
|
| void ImageCapture::getMediaTrackSettings(MediaTrackSettings& settings) const {
|
| - if (m_capabilities.hasWhiteBalanceMode())
|
| - settings.setWhiteBalanceMode(m_capabilities.whiteBalanceMode()[0]);
|
| - if (m_capabilities.hasExposureMode())
|
| - settings.setExposureMode(m_capabilities.exposureMode()[0]);
|
| - if (m_capabilities.hasFocusMode())
|
| - settings.setFocusMode(m_capabilities.focusMode()[0]);
|
| -
|
| - if (!m_currentPointsOfInterest.isEmpty())
|
| - settings.setPointsOfInterest(m_currentPointsOfInterest);
|
| -
|
| - if (m_capabilities.hasExposureCompensation()) {
|
| - settings.setExposureCompensation(
|
| - m_capabilities.exposureCompensation()->current());
|
| - }
|
| - if (m_capabilities.hasColorTemperature())
|
| - settings.setColorTemperature(m_capabilities.colorTemperature()->current());
|
| - if (m_capabilities.hasIso())
|
| - settings.setIso(m_capabilities.iso()->current());
|
| -
|
| - if (m_capabilities.hasBrightness())
|
| - settings.setBrightness(m_capabilities.brightness()->current());
|
| - if (m_capabilities.hasContrast())
|
| - settings.setContrast(m_capabilities.contrast()->current());
|
| - if (m_capabilities.hasSaturation())
|
| - settings.setSaturation(m_capabilities.saturation()->current());
|
| - if (m_capabilities.hasSharpness())
|
| - settings.setSharpness(m_capabilities.sharpness()->current());
|
| -
|
| - if (m_capabilities.hasZoom())
|
| - settings.setZoom(m_capabilities.zoom()->current());
|
| - if (m_capabilities.hasTorch())
|
| - settings.setTorch(m_capabilities.torch());
|
| + // Merge any present |m_settings| members into |settings|.
|
| +
|
| + if (m_settings.hasWhiteBalanceMode())
|
| + settings.setWhiteBalanceMode(m_settings.whiteBalanceMode());
|
| + if (m_settings.hasExposureMode())
|
| + settings.setExposureMode(m_settings.exposureMode());
|
| + if (m_settings.hasFocusMode())
|
| + settings.setFocusMode(m_settings.focusMode());
|
| +
|
| + if (m_settings.hasPointsOfInterest())
|
| + settings.setPointsOfInterest(m_settings.pointsOfInterest());
|
| +
|
| + if (m_settings.hasExposureCompensation())
|
| + settings.setExposureCompensation(m_settings.exposureCompensation());
|
| + if (m_settings.hasColorTemperature())
|
| + settings.setColorTemperature(m_settings.colorTemperature());
|
| + if (m_settings.hasIso())
|
| + settings.setIso(m_settings.iso());
|
| +
|
| + if (m_settings.hasBrightness())
|
| + settings.setBrightness(m_settings.brightness());
|
| + if (m_settings.hasContrast())
|
| + settings.setContrast(m_settings.contrast());
|
| + if (m_settings.hasSaturation())
|
| + settings.setSaturation(m_settings.saturation());
|
| + if (m_settings.hasSharpness())
|
| + settings.setSharpness(m_settings.sharpness());
|
| +
|
| + if (m_settings.hasZoom())
|
| + settings.setZoom(m_settings.zoom());
|
| + if (m_settings.hasTorch())
|
| + settings.setTorch(m_settings.torch());
|
| }
|
|
|
| ImageCapture::ImageCapture(ExecutionContext* context, MediaStreamTrack* track)
|
| @@ -496,20 +495,27 @@ void ImageCapture::onCapabilitiesUpdateInternal(
|
| // when moving these out of PhotoCapabilities, https://crbug.com/700607.
|
| m_capabilities.setWhiteBalanceMode(
|
| WTF::Vector<WTF::String>({toString(capabilities.white_balance_mode)}));
|
| + if (m_capabilities.hasWhiteBalanceMode())
|
| + m_settings.setWhiteBalanceMode(m_capabilities.whiteBalanceMode()[0]);
|
| m_capabilities.setExposureMode(
|
| WTF::Vector<WTF::String>({toString(capabilities.exposure_mode)}));
|
| + if (m_capabilities.hasExposureMode())
|
| + m_settings.setExposureMode(m_capabilities.exposureMode()[0]);
|
| m_capabilities.setFocusMode(
|
| WTF::Vector<WTF::String>({toString(capabilities.focus_mode)}));
|
| + if (m_capabilities.hasFocusMode())
|
| + m_settings.setFocusMode(m_capabilities.focusMode()[0]);
|
|
|
| + HeapVector<Point2D> currentPointsOfInterest;
|
| if (!capabilities.points_of_interest.isEmpty()) {
|
| - m_currentPointsOfInterest.clear();
|
| for (const auto& point : capabilities.points_of_interest) {
|
| Point2D webPoint;
|
| webPoint.setX(point->x);
|
| webPoint.setY(point->y);
|
| - m_currentPointsOfInterest.push_back(mojo::Clone(webPoint));
|
| + currentPointsOfInterest.push_back(mojo::Clone(webPoint));
|
| }
|
| }
|
| + m_settings.setPointsOfInterest(std::move(currentPointsOfInterest));
|
|
|
| // TODO(mcasas): Remove the explicit MediaSettingsRange::create() when
|
| // mojo::StructTraits supports garbage-collected mappings,
|
| @@ -518,34 +524,45 @@ void ImageCapture::onCapabilitiesUpdateInternal(
|
| capabilities.exposure_compensation->min) {
|
| m_capabilities.setExposureCompensation(
|
| MediaSettingsRange::create(*capabilities.exposure_compensation));
|
| + m_settings.setExposureCompensation(
|
| + capabilities.exposure_compensation->current);
|
| }
|
| if (capabilities.color_temperature->max !=
|
| capabilities.color_temperature->min) {
|
| m_capabilities.setColorTemperature(
|
| MediaSettingsRange::create(*capabilities.color_temperature));
|
| + m_settings.setColorTemperature(capabilities.color_temperature->current);
|
| }
|
| - if (capabilities.iso->max != capabilities.iso->min)
|
| + if (capabilities.iso->max != capabilities.iso->min) {
|
| m_capabilities.setIso(MediaSettingsRange::create(*capabilities.iso));
|
| + m_settings.setIso(capabilities.iso->current);
|
| + }
|
|
|
| if (capabilities.brightness->max != capabilities.brightness->min) {
|
| m_capabilities.setBrightness(
|
| MediaSettingsRange::create(*capabilities.brightness));
|
| + m_settings.setBrightness(capabilities.brightness->current);
|
| }
|
| if (capabilities.contrast->max != capabilities.contrast->min) {
|
| m_capabilities.setContrast(
|
| MediaSettingsRange::create(*capabilities.contrast));
|
| + m_settings.setContrast(capabilities.contrast->current);
|
| }
|
| if (capabilities.saturation->max != capabilities.saturation->min) {
|
| m_capabilities.setSaturation(
|
| MediaSettingsRange::create(*capabilities.saturation));
|
| + m_settings.setSaturation(capabilities.saturation->current);
|
| }
|
| if (capabilities.sharpness->max != capabilities.sharpness->min) {
|
| m_capabilities.setSharpness(
|
| MediaSettingsRange::create(*capabilities.sharpness));
|
| + m_settings.setSharpness(capabilities.sharpness->current);
|
| }
|
|
|
| - if (capabilities.zoom->max != capabilities.zoom->min)
|
| + if (capabilities.zoom->max != capabilities.zoom->min) {
|
| m_capabilities.setZoom(MediaSettingsRange::create(*capabilities.zoom));
|
| + m_settings.setZoom(capabilities.zoom->current);
|
| + }
|
|
|
| m_capabilities.setTorch(capabilities.torch);
|
|
|
| @@ -563,8 +580,8 @@ void ImageCapture::onServiceConnectionError() {
|
| DEFINE_TRACE(ImageCapture) {
|
| visitor->trace(m_streamTrack);
|
| visitor->trace(m_capabilities);
|
| + visitor->trace(m_settings);
|
| visitor->trace(m_currentConstraints);
|
| - visitor->trace(m_currentPointsOfInterest);
|
| visitor->trace(m_serviceRequests);
|
| EventTargetWithInlineData::trace(visitor);
|
| ContextLifecycleObserver::trace(visitor);
|
|
|