Commit 5b2f993b authored by Thomas Guilbert's avatar Thomas Guilbert Committed by Commit Bot

Add WebCodecs API UseCounter

WebCodec already has UseCounters on its different subcomponents. Origin
trial infrastructure cannot aggregate UseCounters. This CL adds a
global counter that tracks anytime WebCodecs is used, to allow running
an origin trial.

Bug: 1123170
Change-Id: Ic8c816d99af16c78a50ebc16d693362368a7483b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2382408
Commit-Queue: Thomas Guilbert <tguilbert@chromium.org>
Auto-Submit: Thomas Guilbert <tguilbert@chromium.org>
Reviewed-by: default avatarDan Sanders <sandersd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#802859}
parent bff25f25
......@@ -2789,6 +2789,7 @@ enum WebFeature {
kBackForwardCacheExperimentHTTPHeader = 3461,
kV8Navigator_OpenTCPSocket_Method = 3462,
kV8Navigator_OpenUDPSocket_Method = 3463,
kWebCodecs = 3464,
// Add new features immediately above this line. Don't change assigned
// numbers of any item, and don't reuse removed slots.
......
......@@ -13,11 +13,13 @@
#include "media/base/mime_util.h"
#include "media/base/supported_types.h"
#include "media/base/waiting.h"
#include "third_party/blink/public/mojom/web_feature/web_feature.mojom-blink.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_audio_decoder_init.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_encoded_audio_chunk.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_encoded_audio_config.h"
#include "third_party/blink/renderer/modules/webcodecs/audio_decoder_broker.h"
#include "third_party/blink/renderer/modules/webcodecs/codec_config_eval.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include <memory>
#include <vector>
......@@ -58,6 +60,8 @@ AudioDecoder::AudioDecoder(ScriptState* script_state,
const AudioDecoderInit* init,
ExceptionState& exception_state)
: DecoderTemplate<AudioDecoderTraits>(script_state, init, exception_state) {
UseCounter::Count(ExecutionContext::From(script_state),
WebFeature::kWebCodecs);
}
CodecConfigEval AudioDecoder::MakeMediaConfig(const ConfigType& config,
......
......@@ -9,6 +9,7 @@
#include "base/logging.h"
#include "base/time/time.h"
#include "third_party/blink/public/common/mime_util/mime_util.h"
#include "third_party/blink/public/mojom/web_feature/web_feature.mojom-blink.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_image_bitmap_options.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_image_decoder_init.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_image_frame.h"
......@@ -23,6 +24,7 @@
#include "third_party/blink/renderer/platform/graphics/unaccelerated_static_bitmap_image.h"
#include "third_party/blink/renderer/platform/image-decoders/image_decoder.h"
#include "third_party/blink/renderer/platform/image-decoders/segment_reader.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
namespace blink {
......@@ -59,6 +61,9 @@ ImageDecoderExternal::ImageDecoderExternal(ScriptState* script_state,
const ImageDecoderInit* init,
ExceptionState& exception_state)
: script_state_(script_state) {
UseCounter::Count(ExecutionContext::From(script_state),
WebFeature::kWebCodecs);
// |data| is a required field.
DCHECK(init->hasData());
DCHECK(!init->data().IsNull());
......
......@@ -14,6 +14,7 @@
#include "media/base/supported_types.h"
#include "media/base/video_decoder.h"
#include "media/media_buildflags.h"
#include "third_party/blink/public/mojom/web_feature/web_feature.mojom-blink.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_encoded_video_chunk.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_video_decoder_config.h"
......@@ -26,6 +27,7 @@
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h"
#include "third_party/blink/renderer/platform/heap/persistent.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include "third_party/blink/renderer/platform/wtf/functional.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"
......@@ -73,6 +75,8 @@ VideoDecoder::VideoDecoder(ScriptState* script_state,
const VideoDecoderInit* init,
ExceptionState& exception_state)
: DecoderTemplate<VideoDecoderTraits>(script_state, init, exception_state) {
UseCounter::Count(ExecutionContext::From(script_state),
WebFeature::kWebCodecs);
}
CodecConfigEval VideoDecoder::MakeMediaConfig(const ConfigType& config,
......
......@@ -20,6 +20,7 @@
#include "media/base/async_destroy_video_encoder.h"
#include "media/video/gpu_video_accelerator_factories.h"
#include "media/video/video_encode_accelerator_adapter.h"
#include "third_party/blink/public/mojom/web_feature/web_feature.mojom-blink.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/platform/task_type.h"
#include "third_party/blink/renderer/bindings/core/v8/script_function.h"
......@@ -37,6 +38,7 @@
#include "third_party/blink/renderer/platform/bindings/enumeration_base.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include "third_party/blink/renderer/platform/scheduler/public/thread.h"
#include "third_party/libyuv/include/libyuv.h"
......@@ -108,6 +110,9 @@ VideoEncoder::VideoEncoder(ScriptState* script_state,
const VideoEncoderInit* init,
ExceptionState& exception_state)
: state_(V8CodecState::Enum::kUnconfigured), script_state_(script_state) {
UseCounter::Count(ExecutionContext::From(script_state),
WebFeature::kWebCodecs);
output_callback_ = init->output();
if (init->hasError())
error_callback_ = init->error();
......
......@@ -6,11 +6,13 @@
#include "base/threading/thread_task_runner_handle.h"
#include "media/base/video_frame.h"
#include "third_party/blink/public/mojom/web_feature/web_feature.mojom-blink.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
#include "third_party/blink/renderer/modules/mediastream/media_stream_video_track.h"
#include "third_party/blink/renderer/modules/webcodecs/video_frame.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
#include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
......@@ -23,7 +25,10 @@ VideoTrackReader::VideoTrackReader(ScriptState* script_state,
real_time_media_task_runner_(
ExecutionContext::From(script_state)
->GetTaskRunner(TaskType::kInternalMediaRealTime)),
track_(track) {}
track_(track) {
UseCounter::Count(ExecutionContext::From(script_state),
WebFeature::kWebCodecs);
}
void VideoTrackReader::start(V8VideoFrameOutputCallback* callback,
ExceptionState& exception_state) {
......
......@@ -29038,6 +29038,7 @@ Called by update_use_counter_feature_enum.py.-->
<int value="3461" label="BackForwardCacheExperimentHTTPHeader"/>
<int value="3462" label="V8Navigator_OpenTCPSocket_Method"/>
<int value="3463" label="V8Navigator_OpenUDPSocket_Method"/>
<int value="3464" label="WebCodecs"/>
</enum>
<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