Commit b8ab09a9 authored by Francois Beaufort's avatar Francois Beaufort Committed by Commit Bot

[PTZ] Measure image capture constraints usage

This change will allow us to measure image capture constraints usage and
to decide if we can put the existing "zoom" constraint behind a
permission prompt without much difficulty.

Test: Go to beaufortfrancois.github.io/sandbox/image-capture/playground
and check chrome://histograms/Blink.UseCounter.Features is updated with
requested constraints.

Bug: 934063
Change-Id: I4f5bcb6fc2b9b0c860127c4167fd2258fbaee975
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2151586Reviewed-by: default avatarReilly Grant <reillyg@chromium.org>
Reviewed-by: default avatarRijubrata Bhaumik <rijubrata.bhaumik@intel.com>
Commit-Queue: François Beaufort <beaufort.francois@gmail.com>
Cr-Commit-Position: refs/heads/master@{#760216}
parent 1fc4f4ff
...@@ -2570,6 +2570,23 @@ enum WebFeature { ...@@ -2570,6 +2570,23 @@ enum WebFeature {
kRequiredDocumentPolicy = 3230, kRequiredDocumentPolicy = 3230,
kPerformanceObserverEntryTypesAndBuffered = 3231, kPerformanceObserverEntryTypesAndBuffered = 3231,
kPerformanceObserverTypeError = 3232, kPerformanceObserverTypeError = 3232,
kImageCaptureWhiteBalanceMode = 3233,
kImageCaptureExposureMode = 3234,
kImageCaptureFocusMode = 3235,
kImageCapturePointsOfInterest = 3236,
kImageCaptureExposureCompensation = 3237,
kImageCaptureExposureTime = 3238,
kImageCaptureColorTemperature = 3239,
kImageCaptureIso = 3240,
kImageCaptureBrightness = 3241,
kImageCaptureContrast = 3242,
kImageCaptureSaturation = 3243,
kImageCaptureSharpness = 3244,
kImageCaptureFocusDistance = 3245,
kImageCapturePan = 3246,
kImageCaptureTilt = 3247,
kImageCaptureZoom = 3248,
kImageCaptureTorch = 3249,
// Add new features immediately above this line. Don't change assigned // Add new features immediately above this line. Don't change assigned
// numbers of any item, and don't reuse removed slots. // numbers of any item, and don't reuse removed slots.
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "third_party/blink/renderer/modules/imagecapture/photo_capabilities.h" #include "third_party/blink/renderer/modules/imagecapture/photo_capabilities.h"
#include "third_party/blink/renderer/modules/mediastream/media_stream_track.h" #include "third_party/blink/renderer/modules/mediastream/media_stream_track.h"
#include "third_party/blink/renderer/platform/heap/heap.h" #include "third_party/blink/renderer/platform/heap/heap.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include "third_party/blink/renderer/platform/mojo/mojo_helper.h" #include "third_party/blink/renderer/platform/mojo/mojo_helper.h"
#include "third_party/blink/renderer/platform/wtf/functional.h" #include "third_party/blink/renderer/platform/wtf/functional.h"
...@@ -343,13 +344,50 @@ void ImageCapture::SetMediaTrackConstraints( ...@@ -343,13 +344,50 @@ void ImageCapture::SetMediaTrackConstraints(
ScriptPromiseResolver* resolver, ScriptPromiseResolver* resolver,
const HeapVector<Member<MediaTrackConstraintSet>>& constraints_vector) { const HeapVector<Member<MediaTrackConstraintSet>>& constraints_vector) {
DCHECK_GT(constraints_vector.size(), 0u); DCHECK_GT(constraints_vector.size(), 0u);
// TODO(mcasas): add support more than one single advanced constraint.
const MediaTrackConstraintSet* constraints = constraints_vector[0];
ExecutionContext* context = GetExecutionContext();
if (constraints->hasWhiteBalanceMode())
UseCounter::Count(context, WebFeature::kImageCaptureWhiteBalanceMode);
if (constraints->hasExposureMode())
UseCounter::Count(context, WebFeature::kImageCaptureExposureMode);
if (constraints->hasFocusMode())
UseCounter::Count(context, WebFeature::kImageCaptureFocusMode);
if (constraints->hasPointsOfInterest())
UseCounter::Count(context, WebFeature::kImageCapturePointsOfInterest);
if (constraints->hasExposureCompensation())
UseCounter::Count(context, WebFeature::kImageCaptureExposureCompensation);
if (constraints->hasExposureTime())
UseCounter::Count(context, WebFeature::kImageCaptureExposureTime);
if (constraints->hasColorTemperature())
UseCounter::Count(context, WebFeature::kImageCaptureColorTemperature);
if (constraints->hasIso())
UseCounter::Count(context, WebFeature::kImageCaptureIso);
if (constraints->hasBrightness())
UseCounter::Count(context, WebFeature::kImageCaptureBrightness);
if (constraints->hasContrast())
UseCounter::Count(context, WebFeature::kImageCaptureContrast);
if (constraints->hasSaturation())
UseCounter::Count(context, WebFeature::kImageCaptureSaturation);
if (constraints->hasSharpness())
UseCounter::Count(context, WebFeature::kImageCaptureSharpness);
if (constraints->hasFocusDistance())
UseCounter::Count(context, WebFeature::kImageCaptureFocusDistance);
if (constraints->hasPan())
UseCounter::Count(context, WebFeature::kImageCapturePan);
if (constraints->hasTilt())
UseCounter::Count(context, WebFeature::kImageCaptureTilt);
if (constraints->hasZoom())
UseCounter::Count(context, WebFeature::kImageCaptureZoom);
if (constraints->hasTorch())
UseCounter::Count(context, WebFeature::kImageCaptureTorch);
if (!service_.is_bound()) { if (!service_.is_bound()) {
resolver->Reject(MakeGarbageCollected<DOMException>( resolver->Reject(MakeGarbageCollected<DOMException>(
DOMExceptionCode::kNotFoundError, kNoServiceError)); DOMExceptionCode::kNotFoundError, kNoServiceError));
return; return;
} }
// TODO(mcasas): add support more than one single advanced constraint.
const MediaTrackConstraintSet* constraints = constraints_vector[0];
if ((constraints->hasWhiteBalanceMode() && if ((constraints->hasWhiteBalanceMode() &&
!capabilities_->hasWhiteBalanceMode()) || !capabilities_->hasWhiteBalanceMode()) ||
......
...@@ -26995,6 +26995,23 @@ Called by update_use_counter_feature_enum.py.--> ...@@ -26995,6 +26995,23 @@ Called by update_use_counter_feature_enum.py.-->
<int value="3230" label="RequiredDocumentPolicy"/> <int value="3230" label="RequiredDocumentPolicy"/>
<int value="3231" label="PerformanceObserverEntryTypesAndBuffered"/> <int value="3231" label="PerformanceObserverEntryTypesAndBuffered"/>
<int value="3232" label="PerformanceObserverTypeError"/> <int value="3232" label="PerformanceObserverTypeError"/>
<int value="3233" label="ImageCaptureWhiteBalanceMode"/>
<int value="3234" label="ImageCaptureExposureMode"/>
<int value="3235" label="ImageCaptureFocusMode"/>
<int value="3236" label="ImageCapturePointsOfInterest"/>
<int value="3237" label="ImageCaptureExposureCompensation"/>
<int value="3238" label="ImageCaptureExposureTime"/>
<int value="3239" label="ImageCaptureColorTemperature"/>
<int value="3240" label="ImageCaptureIso"/>
<int value="3241" label="ImageCaptureBrightness"/>
<int value="3242" label="ImageCaptureContrast"/>
<int value="3243" label="ImageCaptureSaturation"/>
<int value="3244" label="ImageCaptureSharpness"/>
<int value="3245" label="ImageCaptureFocusDistance"/>
<int value="3246" label="ImageCapturePan"/>
<int value="3247" label="ImageCaptureTilt"/>
<int value="3248" label="ImageCaptureZoom"/>
<int value="3249" label="ImageCaptureTorch"/>
</enum> </enum>
<enum name="FeaturePolicyAllowlistType"> <enum name="FeaturePolicyAllowlistType">
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment