blob: 80863832e0fc2f68256319b1c8de9c35003e2b22 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_VIEWS_MEDIA_PREVIEW_MEDIA_PREVIEW_METRICS_H_
#define CHROME_BROWSER_UI_VIEWS_MEDIA_PREVIEW_MEDIA_PREVIEW_METRICS_H_
#include "base/time/time.h"
#include "media/capture/video_capture_types.h"
namespace media_preview_metrics {
enum class UiLocation { kPermissionPrompt, kPageInfo };
enum class PreviewType { kCamera, kMic, kCameraAndMic };
struct Context {
Context(UiLocation ui_location, PreviewType preview_type);
~Context();
// This class is move- and copy-constructible:
Context(const Context& other);
Context(Context&& other);
Context& operator=(const Context& other) = delete;
Context& operator=(Context&& other) = delete;
const UiLocation ui_location;
const PreviewType preview_type;
};
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
enum class MediaPreviewDeviceSelectionUserAction {
kNoAction = 0,
kOpened = 1,
kSelection = 2,
// Add new types only immediately above this line. Remember to also update
// tools/metrics/histograms/metadata/media/enums.xml.
kMaxValue = kSelection,
};
void RecordPageInfoNumInUseDevices(const Context& context, int devices);
void RecordMediaPreviewDuration(const Context& context,
const base::TimeDelta& delta);
void RecordDeviceSelectionTotalDevices(const Context& context, int devices);
void RecordDeviceSelectionAction(
const Context& context,
MediaPreviewDeviceSelectionUserAction user_action);
void RecordPreviewCameraPixelHeight(const Context& context, int pixel_height);
void RecordPreviewVideoExpectedFPS(const Context& context, int expected_fps);
void RecordPreviewVideoActualFPS(const Context& context, int actual_fps);
void RecordPreviewVideoFramesRenderedPercent(const Context& context,
float percent);
void RecordTotalVisiblePreviewDuration(const Context& context,
const base::TimeDelta& delta);
void RecordTimeToActionWithoutPreview(const Context& context,
const base::TimeDelta& delta);
void RecordPreviewDelayTime(const Context& context,
const base::TimeDelta& delta);
void RecordVideoCaptureError(const Context& context,
media::VideoCaptureError received_error);
} // namespace media_preview_metrics
#endif // CHROME_BROWSER_UI_VIEWS_MEDIA_PREVIEW_MEDIA_PREVIEW_METRICS_H_