blob: c08f8171ca1bf4a7426bb70adac0680acd17ad9a [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module media.mojom;
import "media/mojo/interfaces/media_types.mojom";
import "media/mojo/interfaces/video_decode_stats_recorder.mojom";
import "media/mojo/interfaces/watch_time_recorder.mojom";
import "mojo/public/mojom/base/time.mojom";
import "ui/gfx/geometry/mojo/geometry.mojom";
// Used for reporting to UMA and UKM. Represents the URL scheme of the src URL
// given to an <audio> or <video> tag. Always add new entries to the end.
enum MediaURLScheme {
kUnknown = 0,
kMissing,
kHttp,
kHttps,
kFtp,
kChromeExtension,
kJavascript,
kFile,
kBlob,
kData,
kFileSystem,
kChrome,
kContent,
kContentId,
};
// Provider interface used to avoid having one time setters on each interface.
// Each recorder will be stamped with an ID which can be used for linking UKM.
interface MediaMetricsProvider {
// Assigns a playback ID and sets up this provider instance with information
// needed to make UKM reports. No other methods may be called until after
// Initialize() has been called. |url_scheme| is only used if |!is_mse|.
Initialize(bool is_mse, MediaURLScheme url_scheme);
// Called when a playback ends in error. The status is reported to UKM when
// the provider is destructed.
OnError(PipelineStatus status);
// Setters for various one-time lazily generated metrics or properties.
SetIsAdMedia();
SetIsEME();
SetTimeToMetadata(mojo_base.mojom.TimeDelta elapsed);
SetTimeToFirstFrame(mojo_base.mojom.TimeDelta elapsed);
SetTimeToPlayReady(mojo_base.mojom.TimeDelta elapsed);
// For src= playbacks, this is the container (".mp4", ".webm", etc).
SetContainerName(MediaContainerName container_name);
// Creates a WatchTimeRecorder instance using |properties|. If any of those
// properties changes, a new recorder should be requested.
AcquireWatchTimeRecorder(PlaybackProperties properties,
WatchTimeRecorder& recorder);
// Creates a VideoDecodeStatsRecorder instance.
AcquireVideoDecodeStatsRecorder(VideoDecodeStatsRecorder& recorder);
// Reports that bytes have been received by the media player.
AddBytesReceived(uint64 bytes_received);
};