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); |