Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(493)

Unified Diff: third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp

Issue 2270563006: ImageCapture: support exposure mode configuration (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: reillyg@ comments Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 cbf441f258c67d68247c467845a1b6c6623572da..29de1ef4996807567989fcfd719aebc378cdcd7b 100644
--- a/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
+++ b/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
@@ -35,6 +35,17 @@ bool trackIsInactive(const MediaStreamTrack& track)
return track.readyState() != "live" || !track.enabled() || track.muted();
}
+media::mojom::blink::MeteringMode parseMeteringMode(const String& blinkMode)
+{
+ if (blinkMode == "manual")
+ return media::mojom::blink::MeteringMode::MANUAL;
+ if (blinkMode == "single-shot")
+ return media::mojom::blink::MeteringMode::SINGLE_SHOT;
+ if (blinkMode == "continuous")
+ return media::mojom::blink::MeteringMode::CONTINUOUS;
+ return media::mojom::blink::MeteringMode::UNAVAILABLE;
+}
+
} // anonymous namespace
ImageCapture* ImageCapture::create(ExecutionContext* context, MediaStreamTrack* track, ExceptionState& exceptionState)
@@ -125,16 +136,11 @@ ScriptPromise ImageCapture::setOptions(ScriptState* scriptState, const PhotoSett
if (settings->has_width)
settings->width = photoSettings.imageWidth();
settings->has_focus_mode = photoSettings.hasFocusMode();
- if (settings->has_focus_mode) {
- if (photoSettings.focusMode() == "manual")
- settings->focus_mode = media::mojom::blink::FocusMode::MANUAL;
- else if (photoSettings.focusMode() == "single-shot")
- settings->focus_mode = media::mojom::blink::FocusMode::SINGLE_SHOT;
- else if (photoSettings.focusMode() == "continuous")
- settings->focus_mode = media::mojom::blink::FocusMode::CONTINUOUS;
- else
- settings->has_focus_mode = false;
- }
+ 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());
if (photoSettings.hasPointsOfInterest()) {
for (const auto& point : photoSettings.pointsOfInterest()) {
auto mojoPoint = media::mojom::blink::Point2D::New();
@@ -232,6 +238,7 @@ void ImageCapture::onCapabilities(ScriptPromiseResolver* resolver, media::mojom:
caps->setImageWidth(width);
caps->setZoom(zoom);
caps->setFocusMode(capabilities->focus_mode);
+ caps->setExposureMode(capabilities->exposure_mode);
resolver->resolve(caps);
}
m_serviceRequests.remove(resolver);

Powered by Google App Engine
This is Rietveld 408576698