 Chromium Code Reviews
 Chromium Code Reviews Issue 2795693004:
  Image Capture: add |points_of_interest| to mojo and wire it to IDL layer  (Closed)
    
  
    Issue 2795693004:
  Image Capture: add |points_of_interest| to mojo and wire it to IDL layer  (Closed) 
  | 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 b8b0fab4b283e6e7cfd7136999f388282dc7bad3..ce1c5ec2ccb7213926338201699d1538770d76ef 100644 | 
| --- a/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp | 
| +++ b/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp | 
| @@ -295,6 +295,7 @@ void ImageCapture::setMediaTrackConstraints( | 
| mojoPoint->y = point.y(); | 
| settings->points_of_interest.push_back(std::move(mojoPoint)); | 
| } | 
| + m_currentConstraints.setPointsOfInterest(constraints.pointsOfInterest()); | 
| } | 
| // TODO(mcasas): support ConstrainDoubleRange where applicable. | 
| @@ -377,6 +378,9 @@ void ImageCapture::getMediaTrackSettings(MediaTrackSettings& settings) const { | 
| if (m_capabilities.hasFocusMode()) | 
| settings.setFocusMode(m_capabilities.focusMode()[0]); | 
| + if (!m_currentPointsOfInterest.isEmpty()) | 
| + settings.setPointsOfInterest(m_currentPointsOfInterest); | 
| + | 
| if (m_capabilities.hasExposureCompensation()) { | 
| settings.setExposureCompensation( | 
| m_capabilities.exposureCompensation()->current()); | 
| @@ -399,9 +403,6 @@ void ImageCapture::getMediaTrackSettings(MediaTrackSettings& settings) const { | 
| 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. | 
| } | 
| ImageCapture::ImageCapture(ExecutionContext* context, MediaStreamTrack* track) | 
| @@ -432,7 +433,7 @@ void ImageCapture::onPhotoCapabilities( | 
| resolver->reject(DOMException::create(UnknownError, "platform error")); | 
| } else { | 
| // Update the local capabilities cache. | 
| - onCapabilitiesUpdate(capabilities.Clone()); | 
| + onCapabilitiesUpdateInternal(*capabilities); | 
| PhotoCapabilities* caps = PhotoCapabilities::create(); | 
| @@ -485,59 +486,72 @@ void ImageCapture::onTakePhoto(ScriptPromiseResolver* resolver, | 
| void ImageCapture::onCapabilitiesUpdate( | 
| media::mojom::blink::PhotoCapabilitiesPtr capabilities) { | 
| - if (capabilities.is_null()) | 
| - return; | 
| + if (!capabilities.is_null()) | 
| + onCapabilitiesUpdateInternal(*capabilities); | 
| +} | 
| +void ImageCapture::onCapabilitiesUpdateInternal( | 
| + const media::mojom::blink::PhotoCapabilities& capabilities) { | 
| // TODO(mcasas): adapt the mojo interface to return a list of supported Modes | 
| // when moving these out of PhotoCapabilities, https://crbug.com/700607. | 
| m_capabilities.setWhiteBalanceMode( | 
| - WTF::Vector<WTF::String>({toString(capabilities->white_balance_mode)})); | 
| + WTF::Vector<WTF::String>({toString(capabilities.white_balance_mode)})); | 
| m_capabilities.setExposureMode( | 
| - WTF::Vector<WTF::String>({toString(capabilities->exposure_mode)})); | 
| + WTF::Vector<WTF::String>({toString(capabilities.exposure_mode)})); | 
| m_capabilities.setFocusMode( | 
| - WTF::Vector<WTF::String>({toString(capabilities->focus_mode)})); | 
| + WTF::Vector<WTF::String>({toString(capabilities.focus_mode)})); | 
| + | 
| + if (!capabilities.points_of_interest.isEmpty()) { | 
| + m_currentPointsOfInterest.clear(); | 
| + for (const auto& point : capabilities.points_of_interest) { | 
| + Point2D webPoint; | 
| + webPoint.setX(point->x); | 
| + webPoint.setY(point->y); | 
| + m_currentPointsOfInterest.push_back(mojo::Clone(webPoint)); | 
| + } | 
| + } | 
| // TODO(mcasas): Remove the explicit MediaSettingsRange::create() when | 
| // mojo::StructTraits supports garbage-collected mappings, | 
| // https://crbug.com/700180. | 
| - if (capabilities->exposure_compensation->max != | 
| - capabilities->exposure_compensation->min) { | 
| + if (capabilities.exposure_compensation->max != | 
| + capabilities.exposure_compensation->min) { | 
| m_capabilities.setExposureCompensation(MediaSettingsRange::create( | 
| - std::move(capabilities->exposure_compensation))); | 
| + mojo::Clone(capabilities.exposure_compensation))); | 
| 
Reilly Grant (use Gerrit)
2017/04/04 00:06:06
Update MediaSettingsRange::create() to take a cons
 
mcasas
2017/04/04 00:30:42
Done.
 | 
| } | 
| - if (capabilities->color_temperature->max != | 
| - capabilities->color_temperature->min) { | 
| - m_capabilities.setColorTemperature( | 
| - MediaSettingsRange::create(std::move(capabilities->color_temperature))); | 
| + if (capabilities.color_temperature->max != | 
| + capabilities.color_temperature->min) { | 
| + m_capabilities.setColorTemperature(MediaSettingsRange::create( | 
| + mojo::Clone(capabilities.color_temperature))); | 
| } | 
| - if (capabilities->iso->max != capabilities->iso->min) { | 
| + if (capabilities.iso->max != capabilities.iso->min) { | 
| m_capabilities.setIso( | 
| - MediaSettingsRange::create(std::move(capabilities->iso))); | 
| + MediaSettingsRange::create(mojo::Clone(capabilities.iso))); | 
| } | 
| - if (capabilities->brightness->max != capabilities->brightness->min) { | 
| + if (capabilities.brightness->max != capabilities.brightness->min) { | 
| m_capabilities.setBrightness( | 
| - MediaSettingsRange::create(std::move(capabilities->brightness))); | 
| + MediaSettingsRange::create(mojo::Clone(capabilities.brightness))); | 
| } | 
| - if (capabilities->contrast->max != capabilities->contrast->min) { | 
| + if (capabilities.contrast->max != capabilities.contrast->min) { | 
| m_capabilities.setContrast( | 
| - MediaSettingsRange::create(std::move(capabilities->contrast))); | 
| + MediaSettingsRange::create(mojo::Clone(capabilities.contrast))); | 
| } | 
| - if (capabilities->saturation->max != capabilities->saturation->min) { | 
| + if (capabilities.saturation->max != capabilities.saturation->min) { | 
| m_capabilities.setSaturation( | 
| - MediaSettingsRange::create(std::move(capabilities->saturation))); | 
| + MediaSettingsRange::create(mojo::Clone(capabilities.saturation))); | 
| } | 
| - if (capabilities->sharpness->max != capabilities->sharpness->min) { | 
| + if (capabilities.sharpness->max != capabilities.sharpness->min) { | 
| m_capabilities.setSharpness( | 
| - MediaSettingsRange::create(std::move(capabilities->sharpness))); | 
| + MediaSettingsRange::create(mojo::Clone(capabilities.sharpness))); | 
| } | 
| - if (capabilities->zoom->max != capabilities->zoom->min) { | 
| + if (capabilities.zoom->max != capabilities.zoom->min) { | 
| m_capabilities.setZoom( | 
| - MediaSettingsRange::create(std::move(capabilities->zoom))); | 
| + MediaSettingsRange::create(mojo::Clone(capabilities.zoom))); | 
| } | 
| - m_capabilities.setTorch(capabilities->torch); | 
| + m_capabilities.setTorch(capabilities.torch); | 
| // TODO(mcasas): do |torch| when the mojom interface is updated, | 
| // https://crbug.com/700607. | 
| @@ -554,6 +568,7 @@ DEFINE_TRACE(ImageCapture) { | 
| visitor->trace(m_streamTrack); | 
| visitor->trace(m_capabilities); | 
| visitor->trace(m_currentConstraints); | 
| + visitor->trace(m_currentPointsOfInterest); | 
| visitor->trace(m_serviceRequests); | 
| EventTargetWithInlineData::trace(visitor); | 
| ContextLifecycleObserver::trace(visitor); |