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 8b463aae9b1e4979d974b736a45a334a42d14e97..b8b0fab4b283e6e7cfd7136999f388282dc7bad3 100644 |
--- a/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp |
+++ b/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp |
@@ -28,6 +28,7 @@ |
namespace blink { |
using FillLightMode = media::mojom::blink::FillLightMode; |
+using MeteringMode = media::mojom::blink::MeteringMode; |
namespace { |
@@ -39,14 +40,17 @@ bool trackIsInactive(const MediaStreamTrack& track) { |
return track.readyState() != "live" || !track.enabled() || track.muted(); |
} |
-media::mojom::blink::MeteringMode parseMeteringMode(const String& blinkMode) { |
+MeteringMode parseMeteringMode(const String& blinkMode) { |
if (blinkMode == "manual") |
- return media::mojom::blink::MeteringMode::MANUAL; |
+ return MeteringMode::MANUAL; |
if (blinkMode == "single-shot") |
- return media::mojom::blink::MeteringMode::SINGLE_SHOT; |
+ return MeteringMode::SINGLE_SHOT; |
if (blinkMode == "continuous") |
- return media::mojom::blink::MeteringMode::CONTINUOUS; |
- return media::mojom::blink::MeteringMode::NONE; |
+ return MeteringMode::CONTINUOUS; |
+ if (blinkMode == "none") |
+ return MeteringMode::NONE; |
+ NOTREACHED(); |
+ return MeteringMode::NONE; |
} |
FillLightMode parseFillLightMode(const String& blinkMode) { |
@@ -56,18 +60,19 @@ FillLightMode parseFillLightMode(const String& blinkMode) { |
return FillLightMode::AUTO; |
if (blinkMode == "flash") |
return FillLightMode::FLASH; |
- return FillLightMode::NONE; |
+ NOTREACHED(); |
+ return FillLightMode::OFF; |
} |
-WebString toString(media::mojom::blink::MeteringMode value) { |
+WebString toString(MeteringMode value) { |
switch (value) { |
- case media::mojom::blink::MeteringMode::NONE: |
+ case MeteringMode::NONE: |
return WebString::fromUTF8("none"); |
- case media::mojom::blink::MeteringMode::MANUAL: |
+ case MeteringMode::MANUAL: |
return WebString::fromUTF8("manual"); |
- case media::mojom::blink::MeteringMode::SINGLE_SHOT: |
+ case MeteringMode::SINGLE_SHOT: |
return WebString::fromUTF8("single-shot"); |
- case media::mojom::blink::MeteringMode::CONTINUOUS: |
+ case MeteringMode::CONTINUOUS: |
return WebString::fromUTF8("continuous"); |
default: |
NOTREACHED() << "Unknown MeteringMode"; |
@@ -345,8 +350,13 @@ void ImageCapture::setMediaTrackConstraints( |
settings->zoom = constraints.zoom().getAsDouble(); |
} |
- // TODO(mcasas): add |torch| when the mojom interface is updated, |
- // https://crbug.com/700607. |
+ // TODO(mcasas): support ConstrainBooleanParameters where applicable. |
+ settings->has_torch = |
+ constraints.hasTorch() && constraints.torch().isBoolean(); |
+ if (settings->has_torch) { |
+ m_currentConstraints.setTorch(constraints.torch()); |
+ settings->torch = constraints.torch().getAsBoolean(); |
+ } |
m_service->SetOptions(m_streamTrack->component()->source()->id(), |
std::move(settings), |
@@ -387,6 +397,8 @@ void ImageCapture::getMediaTrackSettings(MediaTrackSettings& settings) const { |
if (m_capabilities.hasZoom()) |
settings.setZoom(m_capabilities.zoom()->current()); |
+ if (m_capabilities.hasTorch()) |
+ settings.setTorch(m_capabilities.torch()); |
// TODO(mcasas): add |torch| when the mojom interface is updated, |
// https://crbug.com/700607. |
@@ -423,6 +435,8 @@ void ImageCapture::onPhotoCapabilities( |
onCapabilitiesUpdate(capabilities.Clone()); |
PhotoCapabilities* caps = PhotoCapabilities::create(); |
+ |
+ caps->setRedEyeReduction(capabilities->red_eye_reduction); |
// TODO(mcasas): Remove the explicit MediaSettingsRange::create() when |
// mojo::StructTraits supports garbage-collected mappings, |
// https://crbug.com/700180. |
@@ -430,17 +444,7 @@ void ImageCapture::onPhotoCapabilities( |
MediaSettingsRange::create(std::move(capabilities->height))); |
caps->setImageWidth( |
MediaSettingsRange::create(std::move(capabilities->width))); |
- |
- // TODO(mcasas): use a list of supported modes when mojo is updated. |
- // https://crbug.com/700607. |
- if (capabilities->fill_light_mode == FillLightMode::NONE) |
- caps->setFillLightMode(Vector<FillLightMode>()); |
- else |
- caps->setFillLightMode({capabilities->fill_light_mode}); |
- |
- // TODO(mcasas): use a list of supported modes when mojo is updated. |
- // https://crbug.com/700607. |
- caps->setRedEyeReduction(capabilities->red_eye_reduction); |
+ caps->setFillLightMode(capabilities->fill_light_mode); |
resolver->resolve(caps); |
} |
@@ -533,6 +537,8 @@ void ImageCapture::onCapabilitiesUpdate( |
MediaSettingsRange::create(std::move(capabilities->zoom))); |
} |
+ m_capabilities.setTorch(capabilities->torch); |
+ |
// TODO(mcasas): do |torch| when the mojom interface is updated, |
// https://crbug.com/700607. |
} |