| 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 ebb86a9dffc4c2cec8437613c05e6530e6600b33..300a5a1e694976aad1c6b882fd1d09aa6531bfa3 100644
|
| --- a/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
|
| +++ b/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
|
| @@ -131,7 +131,7 @@ ScriptPromise ImageCapture::getPhotoCapabilities(ScriptState* scriptState) {
|
| // scriptState->getExecutionContext()->getSecurityOrigin()->toString()
|
| m_service->GetCapabilities(
|
| m_streamTrack->component()->source()->id(),
|
| - convertToBaseCallback(WTF::bind(&ImageCapture::onCapabilities,
|
| + convertToBaseCallback(WTF::bind(&ImageCapture::onPhotoCapabilities,
|
| wrapPersistent(this),
|
| wrapPersistent(resolver))));
|
| return promise;
|
| @@ -157,61 +157,21 @@ ScriptPromise ImageCapture::setOptions(ScriptState* scriptState,
|
| // TODO(mcasas): should be using a mojo::StructTraits instead.
|
| auto settings = media::mojom::blink::PhotoSettings::New();
|
|
|
| - settings->has_zoom = photoSettings.hasZoom();
|
| - if (settings->has_zoom)
|
| - settings->zoom = photoSettings.zoom();
|
| settings->has_height = photoSettings.hasImageHeight();
|
| if (settings->has_height)
|
| settings->height = photoSettings.imageHeight();
|
| settings->has_width = photoSettings.hasImageWidth();
|
| if (settings->has_width)
|
| settings->width = photoSettings.imageWidth();
|
| - settings->has_focus_mode = photoSettings.hasFocusMode();
|
| - if (settings->has_focus_mode)
|
| - settings->focus_mode = parseMeteringMode(photoSettings.focusMode());
|
| - settings->has_exposure_mode = photoSettings.hasExposureMode();
|
| - if (settings->has_exposure_mode)
|
| - settings->exposure_mode = parseMeteringMode(photoSettings.exposureMode());
|
| - settings->has_exposure_compensation = photoSettings.hasExposureCompensation();
|
| - if (settings->has_exposure_compensation)
|
| - settings->exposure_compensation = photoSettings.exposureCompensation();
|
| - settings->has_white_balance_mode = photoSettings.hasWhiteBalanceMode();
|
| - if (settings->has_white_balance_mode)
|
| - settings->white_balance_mode =
|
| - parseMeteringMode(photoSettings.whiteBalanceMode());
|
| - settings->has_iso = photoSettings.hasIso();
|
| - if (settings->has_iso)
|
| - settings->iso = photoSettings.iso();
|
| +
|
| settings->has_red_eye_reduction = photoSettings.hasRedEyeReduction();
|
| if (settings->has_red_eye_reduction)
|
| settings->red_eye_reduction = photoSettings.redEyeReduction();
|
| settings->has_fill_light_mode = photoSettings.hasFillLightMode();
|
| - if (settings->has_fill_light_mode)
|
| + if (settings->has_fill_light_mode) {
|
| settings->fill_light_mode =
|
| parseFillLightMode(photoSettings.fillLightMode());
|
| - if (photoSettings.hasPointsOfInterest()) {
|
| - for (const auto& point : photoSettings.pointsOfInterest()) {
|
| - auto mojoPoint = media::mojom::blink::Point2D::New();
|
| - mojoPoint->x = point.x();
|
| - mojoPoint->y = point.y();
|
| - settings->points_of_interest.push_back(std::move(mojoPoint));
|
| - }
|
| }
|
| - settings->has_color_temperature = photoSettings.hasColorTemperature();
|
| - if (settings->has_color_temperature)
|
| - settings->color_temperature = photoSettings.colorTemperature();
|
| - settings->has_brightness = photoSettings.hasBrightness();
|
| - if (settings->has_brightness)
|
| - settings->brightness = photoSettings.brightness();
|
| - settings->has_contrast = photoSettings.hasContrast();
|
| - if (settings->has_contrast)
|
| - settings->contrast = photoSettings.contrast();
|
| - settings->has_saturation = photoSettings.hasSaturation();
|
| - if (settings->has_saturation)
|
| - settings->saturation = photoSettings.saturation();
|
| - settings->has_sharpness = photoSettings.hasSharpness();
|
| - if (settings->has_sharpness)
|
| - settings->sharpness = photoSettings.sharpness();
|
|
|
| m_service->SetOptions(m_streamTrack->component()->source()->id(),
|
| std::move(settings),
|
| @@ -320,6 +280,18 @@ void ImageCapture::setMediaTrackConstraints(
|
| parseMeteringMode(constraints.focusMode().getAsString());
|
| }
|
|
|
| + // TODO(mcasas): support ConstrainPoint2DParameters.
|
| + if (constraints.hasPointsOfInterest() &&
|
| + constraints.pointsOfInterest().isPoint2DSequence()) {
|
| + for (const auto& point :
|
| + constraints.pointsOfInterest().getAsPoint2DSequence()) {
|
| + auto mojoPoint = media::mojom::blink::Point2D::New();
|
| + mojoPoint->x = point.x();
|
| + mojoPoint->y = point.y();
|
| + settings->points_of_interest.push_back(std::move(mojoPoint));
|
| + }
|
| + }
|
| +
|
| // TODO(mcasas): support ConstrainDoubleRange where applicable.
|
| settings->has_exposure_compensation =
|
| constraints.hasExposureCompensation() &&
|
| @@ -439,7 +411,7 @@ ImageCapture::ImageCapture(ExecutionContext* context, MediaStreamTrack* track)
|
| wrapPersistent(this))));
|
| }
|
|
|
| -void ImageCapture::onCapabilities(
|
| +void ImageCapture::onPhotoCapabilities(
|
| ScriptPromiseResolver* resolver,
|
| media::mojom::blink::PhotoCapabilitiesPtr capabilities) {
|
| if (!m_serviceRequests.contains(resolver))
|
| @@ -454,31 +426,13 @@ void ImageCapture::onCapabilities(
|
| // TODO(mcasas): Remove the explicit MediaSettingsRange::create() when
|
| // mojo::StructTraits supports garbage-collected mappings,
|
| // https://crbug.com/700180.
|
| - caps->setIso(MediaSettingsRange::create(std::move(capabilities->iso)));
|
| caps->setImageHeight(
|
| MediaSettingsRange::create(std::move(capabilities->height)));
|
| caps->setImageWidth(
|
| MediaSettingsRange::create(std::move(capabilities->width)));
|
| - caps->setZoom(MediaSettingsRange::create(std::move(capabilities->zoom)));
|
| - caps->setExposureCompensation(MediaSettingsRange::create(
|
| - std::move(capabilities->exposure_compensation)));
|
| - caps->setColorTemperature(
|
| - MediaSettingsRange::create(std::move(capabilities->color_temperature)));
|
| - caps->setBrightness(
|
| - MediaSettingsRange::create(std::move(capabilities->brightness)));
|
| - caps->setContrast(
|
| - MediaSettingsRange::create(std::move(capabilities->contrast)));
|
| - caps->setSaturation(
|
| - MediaSettingsRange::create(std::move(capabilities->saturation)));
|
| - caps->setSharpness(
|
| - MediaSettingsRange::create(std::move(capabilities->sharpness)));
|
| -
|
| - caps->setFocusMode(capabilities->focus_mode);
|
| - caps->setExposureMode(capabilities->exposure_mode);
|
| - caps->setWhiteBalanceMode(capabilities->white_balance_mode);
|
| caps->setFillLightMode(capabilities->fill_light_mode);
|
| -
|
| caps->setRedEyeReduction(capabilities->red_eye_reduction);
|
| +
|
| resolver->resolve(caps);
|
| }
|
| m_serviceRequests.erase(resolver);
|
| @@ -497,7 +451,7 @@ void ImageCapture::onSetOptions(ScriptPromiseResolver* resolver, bool result) {
|
| // Retrieve the current device status after setting the options.
|
| m_service->GetCapabilities(
|
| m_streamTrack->component()->source()->id(),
|
| - convertToBaseCallback(WTF::bind(&ImageCapture::onCapabilities,
|
| + convertToBaseCallback(WTF::bind(&ImageCapture::onPhotoCapabilities,
|
| wrapPersistent(this),
|
| wrapPersistent(resolver))));
|
| }
|
| @@ -584,6 +538,7 @@ void ImageCapture::onServiceConnectionError() {
|
| DEFINE_TRACE(ImageCapture) {
|
| visitor->trace(m_streamTrack);
|
| visitor->trace(m_capabilities);
|
| + visitor->trace(m_currentConstraints);
|
| visitor->trace(m_serviceRequests);
|
| EventTargetWithInlineData::trace(visitor);
|
| ContextLifecycleObserver::trace(visitor);
|
|
|