123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- // Copyright 2020 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 ASH_CAPTURE_MODE_CAPTURE_MODE_METRICS_H_
- #define ASH_CAPTURE_MODE_CAPTURE_MODE_METRICS_H_
- #include <stdint.h>
- #include <string>
- #include "ash/ash_export.h"
- #include "ash/capture_mode/capture_mode_types.h"
- namespace ash {
- // Enumeration of the reasons that lead to ending the screen recording.
- // Note that these values are persisted to histograms so existing values should
- // remain unchanged and new values should be added to the end.
- enum class EndRecordingReason {
- kStopRecordingButton,
- kDisplayOrWindowClosing,
- kActiveUserChange,
- kSessionBlocked,
- kShuttingDown,
- kImminentSuspend,
- kRecordingServiceDisconnected,
- kFileIoError,
- kDlpInterruption,
- kLowDiskSpace,
- kHdcpInterruption,
- kServiceClosing,
- kVizVideoCaptureDisconnected,
- kAudioEncoderInitializationFailure,
- kVideoEncoderInitializationFailure,
- kAudioEncodingError,
- kVideoEncodingError,
- kProjectorTranscriptionError,
- kLowDriveFsQuota,
- kMaxValue = kLowDriveFsQuota,
- };
- // Enumeration of capture bar buttons that can be pressed while in capture mode.
- // Note that these values are persisted to histograms so existing values should
- // remain unchanged and new values should be added to the end.
- enum class CaptureModeBarButtonType {
- kScreenCapture,
- kScreenRecord,
- kFull,
- kRegion,
- kWindow,
- kExit,
- kMaxValue = kExit,
- };
- // Enumeration of the various configurations a user can have while in capture
- // mode. Note that these values are persisted to histograms so existing values
- // should remain unchanged and new values should be added to the end.
- enum class CaptureModeConfiguration {
- kFullscreenScreenshot,
- kRegionScreenshot,
- kWindowScreenshot,
- kFullscreenRecording,
- kRegionRecording,
- kWindowRecording,
- kMaxValue = kWindowRecording,
- };
- // Enumeration of actions that can be taken to enter capture mode. Note that
- // these values are persisted to histograms so existing values should remain
- // unchanged and new values should be added to the end.
- enum class CaptureModeEntryType {
- kAccelTakePartialScreenshot,
- kAccelTakeWindowScreenshot,
- kQuickSettings,
- kStylusPalette,
- kPowerMenu,
- kSnipKey,
- kCaptureAllDisplays,
- kProjector,
- kMaxValue = kProjector,
- };
- // Enumeration of quick actions on screenshot notification. Note that these
- // values are persisted to histograms so existing values should remain
- // unchanged and new values should be added to the end.
- enum class CaptureQuickAction {
- kBacklight,
- kFiles,
- kDelete,
- kMaxValue = kDelete,
- };
- // Enumeration of user's selection on save-to locations. Note that these values
- // are persisted to histograms so existing values should remain unchanged and
- // new values should be added to the end.
- enum class CaptureModeSaveToLocation {
- kDefault,
- kDrive,
- kDriveFolder,
- kCustomizedFolder,
- kMaxValue = kCustomizedFolder,
- };
- // Enumeration of reasons for which the capture folder is switched to default
- // downloads folder. Note that these values are persisted to histograms so
- // existing values should remain unchanged and new values should be added to the
- // end.
- enum class CaptureModeSwitchToDefaultReason {
- kFolderUnavailable,
- kUserSelectedFromFolderSelectionDialog,
- kUserSelectedFromSettingsMenu,
- kMaxValue = kUserSelectedFromSettingsMenu,
- };
- // Enumeration of the camera preview size. Note that these values are persisted
- // to histograms so existing values should remain unchanged and new values
- // should be added to the end.
- enum class CaptureModeCameraSize {
- kExpanded,
- kCollapsed,
- kMaxValue = kCollapsed,
- };
- // Records the `reason` for which screen recording was ended.
- void RecordEndRecordingReason(EndRecordingReason reason);
- // Records capture mode bar button presses given by `button_type`.
- void RecordCaptureModeBarButtonType(CaptureModeBarButtonType button_type);
- // Records a user's configuration when they perform a capture.
- void RecordCaptureModeConfiguration(CaptureModeType type,
- CaptureModeSource source,
- bool audio_on,
- bool is_in_projector_mode);
- // Records the method the user enters capture mode given by |entry_type|.
- void RecordCaptureModeEntryType(CaptureModeEntryType entry_type);
- // Records the length in seconds of a recording taken by capture mode.
- void RecordCaptureModeRecordTime(int64_t length_in_seconds,
- bool is_in_projector_mode);
- // Records if the user has switched modes during a capture session.
- void RecordCaptureModeSwitchesFromInitialMode(bool switched);
- // Records the number of times a user adjusts a capture region. This includes
- // moving and resizing. The count is started when a user sets the capture source
- // as a region. The count is recorded and reset when a user performs a capture.
- // The count is just reset when a user selects a new region or the user switches
- // capture sources.
- void RecordNumberOfCaptureRegionAdjustments(int num_adjustments,
- bool is_in_projector_mode);
- // Records the number of times a user consecutively screenshots. Only records a
- // sample if `num_consecutive_screenshots` is greater than 1.
- void RecordNumberOfConsecutiveScreenshots(int num_consecutive_screenshots);
- // Records the number of screenshots taken. This metric is meant to be a rough
- // approximation so its counts are not persisted across crashes, restarts or
- // sessions.
- void RecordNumberOfScreenshotsTakenInLastDay(
- int num_screenshots_taken_in_last_day);
- void RecordNumberOfScreenshotsTakenInLastWeek(
- int num_screenshots_taken_in_last_week);
- // Records the action taken on screen notification.
- void RecordScreenshotNotificationQuickAction(CaptureQuickAction action);
- // Records the location where screen capture is saved.
- void RecordSaveToLocation(CaptureModeSaveToLocation save_location);
- // Records the `reason` for which the capture folder is switched to default
- // downloads folder.
- void RecordSwitchToDefaultFolderReason(CaptureModeSwitchToDefaultReason reason);
- // Maps given `type` and `source` to CaptureModeConfiguration enum.
- ASH_EXPORT CaptureModeConfiguration GetConfiguration(CaptureModeType type,
- CaptureModeSource source);
- // Records how often recording starts with a camera on.
- void RecordRecordingStartsWithCamera(bool starts_with_camera,
- bool is_in_projector_mode);
- // Records the number of camera disconnections during recording.
- void RecordCameraDisconnectionsDuringRecordings(int num_camera_disconnections);
- // Records the given `num_camera_connected`.
- void RecordNumberOfConnectedCameras(int num_camera_connected);
- // Records the duration of camera becoming available again after camera
- // disconnection.
- void RecordCameraReconnectDuration(int length_in_seconds,
- int grace_period_in_seconds);
- // Records the camera size when recording starts.
- void RecordCameraSizeOnStart(CaptureModeCameraSize camera_size);
- // Records the camera position when recording starts.
- void RecordCameraPositionOnStart(CameraPreviewSnapPosition camera_position);
- // Appends the proper suffix to `prefix` based on whether the user is in tablet
- // mode or not.
- ASH_EXPORT std::string GetCaptureModeHistogramName(std::string prefix);
- } // namespace ash
- #endif // ASH_CAPTURE_MODE_CAPTURE_MODE_METRICS_H_
|