diff options
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.cc | 133 |
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(); } |