// 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.

#ifndef MEDIA_BASE_WATCH_TIME_KEYS_H_
#define MEDIA_BASE_WATCH_TIME_KEYS_H_

#include "base/strings/string_piece.h"
#include "media/base/media_export.h"

namespace media {

enum class WatchTimeKey : int {
  kAudioAll = 0,
  kAudioMse,
  kAudioEme,
  kAudioSrc,
  kAudioBattery,
  kAudioAc,
  kAudioEmbeddedExperience,
  kAudioNativeControlsOn,
  kAudioNativeControlsOff,
  kAudioBackgroundAll,
  kAudioBackgroundMse,
  kAudioBackgroundEme,
  kAudioBackgroundSrc,
  kAudioBackgroundBattery,
  kAudioBackgroundAc,
  kAudioBackgroundEmbeddedExperience,
  kAudioVideoAll,
  kAudioVideoMse,
  kAudioVideoEme,
  kAudioVideoSrc,
  kAudioVideoBattery,
  kAudioVideoAc,
  kAudioVideoDisplayFullscreen,
  kAudioVideoDisplayInline,
  kAudioVideoDisplayPictureInPicture,
  kAudioVideoEmbeddedExperience,
  kAudioVideoNativeControlsOn,
  kAudioVideoNativeControlsOff,
  kAudioVideoBackgroundAll,
  kAudioVideoBackgroundMse,
  kAudioVideoBackgroundEme,
  kAudioVideoBackgroundSrc,
  kAudioVideoBackgroundBattery,
  kAudioVideoBackgroundAc,
  kAudioVideoBackgroundEmbeddedExperience,
  kAudioVideoMutedAll,
  kAudioVideoMutedMse,
  kAudioVideoMutedEme,
  kAudioVideoMutedSrc,
  kAudioVideoMutedBattery,
  kAudioVideoMutedAc,
  kAudioVideoMutedEmbeddedExperience,
  kAudioVideoMutedDisplayFullscreen,
  kAudioVideoMutedDisplayInline,
  kAudioVideoMutedDisplayPictureInPicture,
  kAudioVideoMutedNativeControlsOn,
  kAudioVideoMutedNativeControlsOff,
  kVideoAll,
  kVideoMse,
  kVideoEme,
  kVideoSrc,
  kVideoBattery,
  kVideoAc,
  kVideoDisplayFullscreen,
  kVideoDisplayInline,
  kVideoDisplayPictureInPicture,
  kVideoEmbeddedExperience,
  kVideoNativeControlsOn,
  kVideoNativeControlsOff,
  kVideoBackgroundAll,
  kVideoBackgroundMse,
  kVideoBackgroundEme,
  kVideoBackgroundSrc,
  kVideoBackgroundBattery,
  kVideoBackgroundAc,
  kVideoBackgroundEmbeddedExperience,
  kWatchTimeKeyMax = kVideoBackgroundEmbeddedExperience
};

// Count of the number of underflow events during a media session.
MEDIA_EXPORT extern const char kWatchTimeUnderflowCount[];

// UMA keys for MTBR samples.
MEDIA_EXPORT extern const char kMeanTimeBetweenRebuffersAudioSrc[];
MEDIA_EXPORT extern const char kMeanTimeBetweenRebuffersAudioMse[];
MEDIA_EXPORT extern const char kMeanTimeBetweenRebuffersAudioEme[];
MEDIA_EXPORT extern const char kMeanTimeBetweenRebuffersAudioVideoSrc[];
MEDIA_EXPORT extern const char kMeanTimeBetweenRebuffersAudioVideoMse[];
MEDIA_EXPORT extern const char kMeanTimeBetweenRebuffersAudioVideoEme[];

// Whether there were any rebuffers within a given watch time report.
MEDIA_EXPORT extern const char kRebuffersCountAudioSrc[];
MEDIA_EXPORT extern const char kRebuffersCountAudioMse[];
MEDIA_EXPORT extern const char kRebuffersCountAudioEme[];
MEDIA_EXPORT extern const char kRebuffersCountAudioVideoSrc[];
MEDIA_EXPORT extern const char kRebuffersCountAudioVideoMse[];
MEDIA_EXPORT extern const char kRebuffersCountAudioVideoEme[];

// Amount of watch time less than minimum required, which ends up not being
// reported as part of the standard WatchTime keys. Allows estimation of an
// upper bound on uncollected watch time.
MEDIA_EXPORT extern const char kDiscardedWatchTimeAudioSrc[];
MEDIA_EXPORT extern const char kDiscardedWatchTimeAudioMse[];
MEDIA_EXPORT extern const char kDiscardedWatchTimeAudioEme[];
MEDIA_EXPORT extern const char kDiscardedWatchTimeAudioVideoSrc[];
MEDIA_EXPORT extern const char kDiscardedWatchTimeAudioVideoMse[];
MEDIA_EXPORT extern const char kDiscardedWatchTimeAudioVideoEme[];

// Returns the UMA key name associated with a given WatchTimeKey or an empty
// string if they key should not be logged to UMA.
MEDIA_EXPORT base::StringPiece ConvertWatchTimeKeyToStringForUma(
    WatchTimeKey key);

}  // namespace media

#endif  // MEDIA_BASE_WATCH_TIME_KEYS_H_
