summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/imagecapture/image_capture.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/imagecapture/image_capture.cc')
-rw-r--r--chromium/third_party/blink/renderer/modules/imagecapture/image_capture.cc133
1 files changed, 78 insertions, 55 deletions
diff --git a/chromium/third_party/blink/renderer/modules/imagecapture/image_capture.cc b/chromium/third_party/blink/renderer/modules/imagecapture/image_capture.cc
index 110e7964e61..e9d81621b24 100644
--- a/chromium/third_party/blink/renderer/modules/imagecapture/image_capture.cc
+++ b/chromium/third_party/blink/renderer/modules/imagecapture/image_capture.cc
@@ -14,7 +14,6 @@
#include "third_party/blink/renderer/bindings/core/v8/callback_promise_adapter.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/core/dom/dom_exception.h"
-#include "third_party/blink/renderer/core/dom/exception_code.h"
#include "third_party/blink/renderer/core/fileapi/blob.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/imagebitmap/image_bitmap.h"
@@ -89,7 +88,7 @@ ImageCapture* ImageCapture::Create(ExecutionContext* context,
ExceptionState& exception_state) {
if (track->kind() != "video") {
exception_state.ThrowDOMException(
- kNotSupportedError,
+ DOMExceptionCode::kNotSupportedError,
"Cannot create an ImageCapturer from a non-video Track.");
return nullptr;
}
@@ -127,7 +126,8 @@ ScriptPromise ImageCapture::getPhotoCapabilities(ScriptState* script_state) {
ScriptPromise promise = resolver->Promise();
if (!service_) {
- resolver->Reject(DOMException::Create(kNotFoundError, kNoServiceError));
+ resolver->Reject(DOMException::Create(DOMExceptionCode::kNotFoundError,
+ kNoServiceError));
return promise;
}
service_requests_.insert(resolver);
@@ -152,7 +152,8 @@ ScriptPromise ImageCapture::getPhotoSettings(ScriptState* script_state) {
ScriptPromise promise = resolver->Promise();
if (!service_) {
- resolver->Reject(DOMException::Create(kNotFoundError, kNoServiceError));
+ resolver->Reject(DOMException::Create(DOMExceptionCode::kNotFoundError,
+ kNoServiceError));
return promise;
}
service_requests_.insert(resolver);
@@ -179,13 +180,15 @@ ScriptPromise ImageCapture::setOptions(ScriptState* script_state,
ScriptPromise promise = resolver->Promise();
if (TrackIsInactive(*stream_track_)) {
- resolver->Reject(DOMException::Create(
- kInvalidStateError, "The associated Track is in an invalid state."));
+ resolver->Reject(
+ DOMException::Create(DOMExceptionCode::kInvalidStateError,
+ "The associated Track is in an invalid state."));
return promise;
}
if (!service_) {
- resolver->Reject(DOMException::Create(kNotFoundError, kNoServiceError));
+ resolver->Reject(DOMException::Create(DOMExceptionCode::kNotFoundError,
+ kNoServiceError));
return promise;
}
service_requests_.insert(resolver);
@@ -199,8 +202,9 @@ ScriptPromise ImageCapture::setOptions(ScriptState* script_state,
if (photo_capabilities_ &&
(height < photo_capabilities_->imageHeight()->min() ||
height > photo_capabilities_->imageHeight()->max())) {
- resolver->Reject(DOMException::Create(
- kNotSupportedError, "imageHeight setting out of range"));
+ resolver->Reject(
+ DOMException::Create(DOMExceptionCode::kNotSupportedError,
+ "imageHeight setting out of range"));
return promise;
}
settings->height = height;
@@ -211,8 +215,9 @@ ScriptPromise ImageCapture::setOptions(ScriptState* script_state,
if (photo_capabilities_ &&
(width < photo_capabilities_->imageWidth()->min() ||
width > photo_capabilities_->imageWidth()->max())) {
- resolver->Reject(DOMException::Create(kNotSupportedError,
- "imageWidth setting out of range"));
+ resolver->Reject(
+ DOMException::Create(DOMExceptionCode::kNotSupportedError,
+ "imageWidth setting out of range"));
return promise;
}
settings->width = width;
@@ -222,8 +227,9 @@ ScriptPromise ImageCapture::setOptions(ScriptState* script_state,
if (settings->has_red_eye_reduction) {
if (photo_capabilities_ &&
!photo_capabilities_->IsRedEyeReductionControllable()) {
- resolver->Reject(DOMException::Create(
- kNotSupportedError, "redEyeReduction is not controllable."));
+ resolver->Reject(
+ DOMException::Create(DOMExceptionCode::kNotSupportedError,
+ "redEyeReduction is not controllable."));
return promise;
}
settings->red_eye_reduction = photo_settings.redEyeReduction();
@@ -234,8 +240,8 @@ ScriptPromise ImageCapture::setOptions(ScriptState* script_state,
const String fill_light_mode = photo_settings.fillLightMode();
if (photo_capabilities_ && photo_capabilities_->fillLightMode().Find(
fill_light_mode) == kNotFound) {
- resolver->Reject(DOMException::Create(kNotSupportedError,
- "Unsupported fillLightMode"));
+ resolver->Reject(DOMException::Create(
+ DOMExceptionCode::kNotSupportedError, "Unsupported fillLightMode"));
return promise;
}
settings->fill_light_mode = ParseFillLightMode(fill_light_mode);
@@ -253,12 +259,14 @@ ScriptPromise ImageCapture::takePhoto(ScriptState* script_state) {
ScriptPromise promise = resolver->Promise();
if (TrackIsInactive(*stream_track_)) {
- resolver->Reject(DOMException::Create(
- kInvalidStateError, "The associated Track is in an invalid state."));
+ resolver->Reject(
+ DOMException::Create(DOMExceptionCode::kInvalidStateError,
+ "The associated Track is in an invalid state."));
return promise;
}
if (!service_) {
- resolver->Reject(DOMException::Create(kNotFoundError, kNoServiceError));
+ resolver->Reject(DOMException::Create(DOMExceptionCode::kNotFoundError,
+ kNoServiceError));
return promise;
}
@@ -286,8 +294,9 @@ ScriptPromise ImageCapture::grabFrame(ScriptState* script_state) {
ScriptPromise promise = resolver->Promise();
if (TrackIsInactive(*stream_track_)) {
- resolver->Reject(DOMException::Create(
- kInvalidStateError, "The associated Track is in an invalid state."));
+ resolver->Reject(
+ DOMException::Create(DOMExceptionCode::kInvalidStateError,
+ "The associated Track is in an invalid state."));
return promise;
}
@@ -298,14 +307,15 @@ ScriptPromise ImageCapture::grabFrame(ScriptState* script_state) {
if (!frame_grabber_) {
resolver->Reject(DOMException::Create(
- kUnknownError, "Couldn't create platform resources"));
+ DOMExceptionCode::kUnknownError, "Couldn't create platform resources"));
return promise;
}
// The platform does not know about MediaStreamTrack, so we wrap it up.
WebMediaStreamTrack track(stream_track_->Component());
- frame_grabber_->GrabFrame(
- &track, new CallbackPromiseAdapter<ImageBitmap, void>(resolver));
+ auto resolver_callback_adapter =
+ std::make_unique<CallbackPromiseAdapter<ImageBitmap, void>>(resolver);
+ frame_grabber_->GrabFrame(&track, std::move(resolver_callback_adapter));
return promise;
}
@@ -321,7 +331,8 @@ void ImageCapture::SetMediaTrackConstraints(
const HeapVector<MediaTrackConstraintSet>& constraints_vector) {
DCHECK_GT(constraints_vector.size(), 0u);
if (!service_) {
- resolver->Reject(DOMException::Create(kNotFoundError, kNoServiceError));
+ resolver->Reject(DOMException::Create(DOMExceptionCode::kNotFoundError,
+ kNoServiceError));
return;
}
// TODO(mcasas): add support more than one single advanced constraint.
@@ -342,8 +353,8 @@ void ImageCapture::SetMediaTrackConstraints(
(constraints.hasSharpness() && !capabilities_.hasSharpness()) ||
(constraints.hasZoom() && !capabilities_.hasZoom()) ||
(constraints.hasTorch() && !capabilities_.hasTorch())) {
- resolver->Reject(
- DOMException::Create(kNotSupportedError, "Unsupported constraint(s)"));
+ resolver->Reject(DOMException::Create(DOMExceptionCode::kNotSupportedError,
+ "Unsupported constraint(s)"));
return;
}
@@ -359,8 +370,9 @@ void ImageCapture::SetMediaTrackConstraints(
constraints.whiteBalanceMode().GetAsString();
if (capabilities_.whiteBalanceMode().Find(white_balance_mode) ==
kNotFound) {
- resolver->Reject(DOMException::Create(kNotSupportedError,
- "Unsupported whiteBalanceMode."));
+ resolver->Reject(
+ DOMException::Create(DOMExceptionCode::kNotSupportedError,
+ "Unsupported whiteBalanceMode."));
return;
}
temp_constraints.setWhiteBalanceMode(constraints.whiteBalanceMode());
@@ -371,8 +383,8 @@ void ImageCapture::SetMediaTrackConstraints(
if (settings->has_exposure_mode) {
const auto exposure_mode = constraints.exposureMode().GetAsString();
if (capabilities_.exposureMode().Find(exposure_mode) == kNotFound) {
- resolver->Reject(DOMException::Create(kNotSupportedError,
- "Unsupported exposureMode."));
+ resolver->Reject(DOMException::Create(
+ DOMExceptionCode::kNotSupportedError, "Unsupported exposureMode."));
return;
}
temp_constraints.setExposureMode(constraints.exposureMode());
@@ -384,8 +396,8 @@ void ImageCapture::SetMediaTrackConstraints(
if (settings->has_focus_mode) {
const auto focus_mode = constraints.focusMode().GetAsString();
if (capabilities_.focusMode().Find(focus_mode) == kNotFound) {
- resolver->Reject(
- DOMException::Create(kNotSupportedError, "Unsupported focusMode."));
+ resolver->Reject(DOMException::Create(
+ DOMExceptionCode::kNotSupportedError, "Unsupported focusMode."));
return;
}
temp_constraints.setFocusMode(constraints.focusMode());
@@ -414,8 +426,9 @@ void ImageCapture::SetMediaTrackConstraints(
constraints.exposureCompensation().GetAsDouble();
if (exposure_compensation < capabilities_.exposureCompensation()->min() ||
exposure_compensation > capabilities_.exposureCompensation()->max()) {
- resolver->Reject(DOMException::Create(
- kNotSupportedError, "exposureCompensation setting out of range"));
+ resolver->Reject(
+ DOMException::Create(DOMExceptionCode::kNotSupportedError,
+ "exposureCompensation setting out of range"));
return;
}
temp_constraints.setExposureCompensation(
@@ -428,8 +441,9 @@ void ImageCapture::SetMediaTrackConstraints(
const auto color_temperature = constraints.colorTemperature().GetAsDouble();
if (color_temperature < capabilities_.colorTemperature()->min() ||
color_temperature > capabilities_.colorTemperature()->max()) {
- resolver->Reject(DOMException::Create(
- kNotSupportedError, "colorTemperature setting out of range"));
+ resolver->Reject(
+ DOMException::Create(DOMExceptionCode::kNotSupportedError,
+ "colorTemperature setting out of range"));
return;
}
temp_constraints.setColorTemperature(constraints.colorTemperature());
@@ -439,8 +453,8 @@ void ImageCapture::SetMediaTrackConstraints(
if (settings->has_iso) {
const auto iso = constraints.iso().GetAsDouble();
if (iso < capabilities_.iso()->min() || iso > capabilities_.iso()->max()) {
- resolver->Reject(
- DOMException::Create(kNotSupportedError, "iso setting out of range"));
+ resolver->Reject(DOMException::Create(
+ DOMExceptionCode::kNotSupportedError, "iso setting out of range"));
return;
}
temp_constraints.setIso(constraints.iso());
@@ -453,8 +467,9 @@ void ImageCapture::SetMediaTrackConstraints(
const auto brightness = constraints.brightness().GetAsDouble();
if (brightness < capabilities_.brightness()->min() ||
brightness > capabilities_.brightness()->max()) {
- resolver->Reject(DOMException::Create(kNotSupportedError,
- "brightness setting out of range"));
+ resolver->Reject(
+ DOMException::Create(DOMExceptionCode::kNotSupportedError,
+ "brightness setting out of range"));
return;
}
temp_constraints.setBrightness(constraints.brightness());
@@ -466,8 +481,9 @@ void ImageCapture::SetMediaTrackConstraints(
const auto contrast = constraints.contrast().GetAsDouble();
if (contrast < capabilities_.contrast()->min() ||
contrast > capabilities_.contrast()->max()) {
- resolver->Reject(DOMException::Create(kNotSupportedError,
- "contrast setting out of range"));
+ resolver->Reject(
+ DOMException::Create(DOMExceptionCode::kNotSupportedError,
+ "contrast setting out of range"));
return;
}
temp_constraints.setContrast(constraints.contrast());
@@ -479,8 +495,9 @@ void ImageCapture::SetMediaTrackConstraints(
const auto saturation = constraints.saturation().GetAsDouble();
if (saturation < capabilities_.saturation()->min() ||
saturation > capabilities_.saturation()->max()) {
- resolver->Reject(DOMException::Create(kNotSupportedError,
- "saturation setting out of range"));
+ resolver->Reject(
+ DOMException::Create(DOMExceptionCode::kNotSupportedError,
+ "saturation setting out of range"));
return;
}
temp_constraints.setSaturation(constraints.saturation());
@@ -492,8 +509,9 @@ void ImageCapture::SetMediaTrackConstraints(
const auto sharpness = constraints.sharpness().GetAsDouble();
if (sharpness < capabilities_.sharpness()->min() ||
sharpness > capabilities_.sharpness()->max()) {
- resolver->Reject(DOMException::Create(kNotSupportedError,
- "sharpness setting out of range"));
+ resolver->Reject(
+ DOMException::Create(DOMExceptionCode::kNotSupportedError,
+ "sharpness setting out of range"));
return;
}
temp_constraints.setSharpness(constraints.sharpness());
@@ -505,8 +523,8 @@ void ImageCapture::SetMediaTrackConstraints(
const auto zoom = constraints.zoom().GetAsDouble();
if (zoom < capabilities_.zoom()->min() ||
zoom > capabilities_.zoom()->max()) {
- resolver->Reject(DOMException::Create(kNotSupportedError,
- "zoom setting out of range"));
+ resolver->Reject(DOMException::Create(
+ DOMExceptionCode::kNotSupportedError, "zoom setting out of range"));
return;
}
temp_constraints.setZoom(constraints.zoom());
@@ -519,8 +537,8 @@ void ImageCapture::SetMediaTrackConstraints(
if (settings->has_torch) {
const auto torch = constraints.torch().GetAsBoolean();
if (torch && !capabilities_.torch()) {
- resolver->Reject(
- DOMException::Create(kNotSupportedError, "torch not supported"));
+ resolver->Reject(DOMException::Create(
+ DOMExceptionCode::kNotSupportedError, "torch not supported"));
return;
}
temp_constraints.setTorch(constraints.torch());
@@ -616,7 +634,8 @@ void ImageCapture::OnMojoGetPhotoState(
DCHECK(service_requests_.Contains(resolver));
if (photo_state.is_null()) {
- resolver->Reject(DOMException::Create(kUnknownError, "platform error"));
+ resolver->Reject(DOMException::Create(DOMExceptionCode::kUnknownError,
+ "platform error"));
service_requests_.erase(resolver);
return;
}
@@ -663,7 +682,8 @@ void ImageCapture::OnMojoSetOptions(ScriptPromiseResolver* resolver,
DCHECK(service_requests_.Contains(resolver));
if (!result) {
- resolver->Reject(DOMException::Create(kUnknownError, "setOptions failed"));
+ resolver->Reject(DOMException::Create(DOMExceptionCode::kUnknownError,
+ "setOptions failed"));
service_requests_.erase(resolver);
return;
}
@@ -685,7 +705,8 @@ void ImageCapture::OnMojoTakePhoto(ScriptPromiseResolver* resolver,
// TODO(mcasas): Should be using a mojo::StructTraits.
if (blob->data.IsEmpty()) {
- resolver->Reject(DOMException::Create(kUnknownError, "platform error"));
+ resolver->Reject(DOMException::Create(DOMExceptionCode::kUnknownError,
+ "platform error"));
} else {
resolver->Resolve(
Blob::Create(blob->data.data(), blob->data.size(), blob->mime_type));
@@ -795,8 +816,10 @@ void ImageCapture::UpdateMediaTrackCapabilities(
void ImageCapture::OnServiceConnectionError() {
service_.reset();
- for (ScriptPromiseResolver* resolver : service_requests_)
- resolver->Reject(DOMException::Create(kNotFoundError, kNoServiceError));
+ for (ScriptPromiseResolver* resolver : service_requests_) {
+ resolver->Reject(DOMException::Create(DOMExceptionCode::kNotFoundError,
+ kNoServiceError));
+ }
service_requests_.clear();
}