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

Side by Side 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: Removed todo/refs to https://github.com/w3c/mediacapture-image/pull/51, closed Created 4 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/imagecapture/ImageCapture.h" 5 #include "modules/imagecapture/ImageCapture.h"
6 6
7 #include "bindings/core/v8/CallbackPromiseAdapter.h" 7 #include "bindings/core/v8/CallbackPromiseAdapter.h"
8 #include "bindings/core/v8/ScriptPromiseResolver.h" 8 #include "bindings/core/v8/ScriptPromiseResolver.h"
9 #include "core/dom/DOMException.h" 9 #include "core/dom/DOMException.h"
10 #include "core/dom/ExceptionCode.h" 10 #include "core/dom/ExceptionCode.h"
(...skipping 17 matching lines...) Expand all
28 28
29 const char kNoServiceError[] = "ImageCapture service unavailable."; 29 const char kNoServiceError[] = "ImageCapture service unavailable.";
30 30
31 bool trackIsInactive(const MediaStreamTrack& track) 31 bool trackIsInactive(const MediaStreamTrack& track)
32 { 32 {
33 // Spec instructs to return an exception if the Track's readyState() is not 33 // Spec instructs to return an exception if the Track's readyState() is not
34 // "live". Also reject if the track is disabled or muted. 34 // "live". Also reject if the track is disabled or muted.
35 return track.readyState() != "live" || !track.enabled() || track.muted(); 35 return track.readyState() != "live" || !track.enabled() || track.muted();
36 } 36 }
37 37
38 media::mojom::blink::MeteringMode MeteringModeBlinkToMojo(const String& blinkMod e)
Reilly Grant (use Gerrit) 2016/08/24 18:14:03 This isn't really Blink's metering mode. I'd name
mcasas 2016/08/24 18:36:23 Done.
39 {
40 if (blinkMode == "manual")
41 return media::mojom::blink::MeteringMode::MANUAL;
42 if (blinkMode == "single-shot")
43 return media::mojom::blink::MeteringMode::SINGLE_SHOT;
44 if (blinkMode == "continuous")
45 return media::mojom::blink::MeteringMode::CONTINUOUS;
46 return media::mojom::blink::MeteringMode::UNAVAILABLE;
47 }
48
38 } // anonymous namespace 49 } // anonymous namespace
39 50
40 ImageCapture* ImageCapture::create(ExecutionContext* context, MediaStreamTrack* track, ExceptionState& exceptionState) 51 ImageCapture* ImageCapture::create(ExecutionContext* context, MediaStreamTrack* track, ExceptionState& exceptionState)
41 { 52 {
42 if (track->kind() != "video") { 53 if (track->kind() != "video") {
43 exceptionState.throwDOMException(NotSupportedError, "Cannot create an Im ageCapturer from a non-video Track."); 54 exceptionState.throwDOMException(NotSupportedError, "Cannot create an Im ageCapturer from a non-video Track.");
44 return nullptr; 55 return nullptr;
45 } 56 }
46 57
47 return new ImageCapture(context, track); 58 return new ImageCapture(context, track);
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 settings->has_zoom = photoSettings.hasZoom(); 129 settings->has_zoom = photoSettings.hasZoom();
119 if (settings->has_zoom) 130 if (settings->has_zoom)
120 settings->zoom = photoSettings.zoom(); 131 settings->zoom = photoSettings.zoom();
121 settings->has_height = photoSettings.hasImageHeight(); 132 settings->has_height = photoSettings.hasImageHeight();
122 if (settings->has_height) 133 if (settings->has_height)
123 settings->height = photoSettings.imageHeight(); 134 settings->height = photoSettings.imageHeight();
124 settings->has_width = photoSettings.hasImageWidth(); 135 settings->has_width = photoSettings.hasImageWidth();
125 if (settings->has_width) 136 if (settings->has_width)
126 settings->width = photoSettings.imageWidth(); 137 settings->width = photoSettings.imageWidth();
127 settings->has_focus_mode = photoSettings.hasFocusMode(); 138 settings->has_focus_mode = photoSettings.hasFocusMode();
128 if (settings->has_focus_mode) { 139 if (settings->has_focus_mode)
129 if (photoSettings.focusMode() == "manual") 140 settings->focus_mode = MeteringModeBlinkToMojo(photoSettings.focusMode() );
130 settings->focus_mode = media::mojom::blink::FocusMode::MANUAL; 141 settings->has_exposure_mode = photoSettings.hasExposureMode();
131 else if (photoSettings.focusMode() == "single-shot") 142 if (settings->has_exposure_mode)
132 settings->focus_mode = media::mojom::blink::FocusMode::SINGLE_SHOT; 143 settings->exposure_mode = MeteringModeBlinkToMojo(photoSettings.exposure Mode());
133 else if (photoSettings.focusMode() == "continuous")
134 settings->focus_mode = media::mojom::blink::FocusMode::CONTINUOUS;
135 else
136 settings->has_focus_mode = false;
137 }
138 if (photoSettings.hasPointsOfInterest()) { 144 if (photoSettings.hasPointsOfInterest()) {
139 for (const auto& point : photoSettings.pointsOfInterest()) { 145 for (const auto& point : photoSettings.pointsOfInterest()) {
140 auto mojoPoint = media::mojom::blink::Point2D::New(); 146 auto mojoPoint = media::mojom::blink::Point2D::New();
141 mojoPoint->x = point.x(); 147 mojoPoint->x = point.x();
142 mojoPoint->y = point.y(); 148 mojoPoint->y = point.y();
143 settings->points_of_interest.append(std::move(mojoPoint)); 149 settings->points_of_interest.append(std::move(mojoPoint));
144 } 150 }
145 } 151 }
146 152
147 m_service->SetOptions(m_streamTrack->component()->source()->id(), std::move( settings), convertToBaseCallback(WTF::bind(&ImageCapture::onSetOptions, wrapPers istent(this), wrapPersistent(resolver)))); 153 m_service->SetOptions(m_streamTrack->component()->source()->id(), std::move( settings), convertToBaseCallback(WTF::bind(&ImageCapture::onSetOptions, wrapPers istent(this), wrapPersistent(resolver))));
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 MediaSettingsRange* iso = MediaSettingsRange::create(capabilities->iso-> max, capabilities->iso->min, capabilities->iso->current); 231 MediaSettingsRange* iso = MediaSettingsRange::create(capabilities->iso-> max, capabilities->iso->min, capabilities->iso->current);
226 MediaSettingsRange* height = MediaSettingsRange::create(capabilities->he ight->max, capabilities->height->min, capabilities->height->current); 232 MediaSettingsRange* height = MediaSettingsRange::create(capabilities->he ight->max, capabilities->height->min, capabilities->height->current);
227 MediaSettingsRange* width = MediaSettingsRange::create(capabilities->wid th->max, capabilities->width->min, capabilities->width->current); 233 MediaSettingsRange* width = MediaSettingsRange::create(capabilities->wid th->max, capabilities->width->min, capabilities->width->current);
228 MediaSettingsRange* zoom = MediaSettingsRange::create(capabilities->zoom ->max, capabilities->zoom->min, capabilities->zoom->current); 234 MediaSettingsRange* zoom = MediaSettingsRange::create(capabilities->zoom ->max, capabilities->zoom->min, capabilities->zoom->current);
229 PhotoCapabilities* caps = PhotoCapabilities::create(); 235 PhotoCapabilities* caps = PhotoCapabilities::create();
230 caps->setIso(iso); 236 caps->setIso(iso);
231 caps->setImageHeight(height); 237 caps->setImageHeight(height);
232 caps->setImageWidth(width); 238 caps->setImageWidth(width);
233 caps->setZoom(zoom); 239 caps->setZoom(zoom);
234 caps->setFocusMode(capabilities->focus_mode); 240 caps->setFocusMode(capabilities->focus_mode);
241 caps->setExposureMode(capabilities->exposure_mode);
235 resolver->resolve(caps); 242 resolver->resolve(caps);
236 } 243 }
237 m_serviceRequests.remove(resolver); 244 m_serviceRequests.remove(resolver);
238 } 245 }
239 246
240 void ImageCapture::onSetOptions(ScriptPromiseResolver* resolver, bool result) 247 void ImageCapture::onSetOptions(ScriptPromiseResolver* resolver, bool result)
241 { 248 {
242 if (!m_serviceRequests.contains(resolver)) 249 if (!m_serviceRequests.contains(resolver))
243 return; 250 return;
244 251
(...skipping 27 matching lines...) Expand all
272 279
273 DEFINE_TRACE(ImageCapture) 280 DEFINE_TRACE(ImageCapture)
274 { 281 {
275 visitor->trace(m_streamTrack); 282 visitor->trace(m_streamTrack);
276 visitor->trace(m_serviceRequests); 283 visitor->trace(m_serviceRequests);
277 EventTargetWithInlineData::trace(visitor); 284 EventTargetWithInlineData::trace(visitor);
278 ContextLifecycleObserver::trace(visitor); 285 ContextLifecycleObserver::trace(visitor);
279 } 286 }
280 287
281 } // namespace blink 288 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698