#ifndef CHROMEOS_ASH_COMPONENTS_BOCA_BOCA_METRICS_UTIL_H_
#define CHROMEOS_ASH_COMPONENTS_BOCA_BOCA_METRICS_UTIL_H_
#include "base/time/time.h"
#include "chromeos/ash/components/boca/session_api/session_client_impl.h"
#include "google_apis/common/api_error_codes.h"
namespace ash::boca {
inline constexpr char kBocaActionOfStudentJoinedSession[] =
"Ash.Boca.StudentJoinedSession";
inline constexpr char kBocaNumOfActiveStudentsWhenSessionEnded[] =
"Ash.Boca.NumberOfActiveStudentsWhenSessionEnded";
inline constexpr char kBocaNumOfStudentsJoinedViaCodeDuringSession[] =
"Ash.Boca.NumberOfStudentsJoinedViaCodeDuringSession";
inline constexpr char kBocaBabelorcaActionOfStudentSwitchLanguage[] =
"Ash.Boca.Babelorca.StudentSwitchLanguage";
inline constexpr char kBocaOnTaskActionOfStudentNavigateBack[] =
"Ash.Boca.OnTask.StudentNavigateBack";
inline constexpr char kBocaOnTaskActionOfStudentNavigateForward[] =
"Ash.Boca.OnTask.StudentNavigateForward";
inline constexpr char kBocaOnTaskActionOfStudentReloadPage[] =
"Ash.Boca.OnTask.StudentReloadPage";
inline constexpr char kBocaOnTaskActionOfStudentToggleTabStripVisibility[] =
"Ash.Boca.OnTask.StudentToggleTabStripVisibility";
inline constexpr char kBocaOnTaskActionOfStudentSetSnapLocationToLeft[] =
"Ash.Boca.OnTask.StudentSetSnapLocationToLeft";
inline constexpr char kBocaOnTaskActionOfStudentSetSnapLocationToRight[] =
"Ash.Boca.OnTask.StudentSetSnapLocationToRight";
inline constexpr char kBocaBabelorcaTargetLanguage[] =
"Accessibility.LiveTranslate.Ash.Boca.Babelorca.TargetLanguage";
inline constexpr char kBocaOnTaskLockedSessionDurationPercentage[] =
"Ash.Boca.OnTask.LockedSessionDurationPercentage";
inline constexpr char kBocaOnTaskUnlockedSessionDurationPercentage[] =
"Ash.Boca.OnTask.UnlockedSessionDurationPercentage";
inline constexpr char kBocaOnTaskNumOfTabsWhenSessionEnded[] =
"Ash.Boca.OnTask.NumberOfTabsWhenSessionEnded";
inline constexpr char kBocaOnTaskMaxNumOfTabsDuringSession[] =
"Ash.Boca.OnTask.MaxNumberOfTabsDuringSession";
inline constexpr char kBocaSpotlightGoogleApiCallErrorCodeTemplate[] =
"Ash.Boca.Spotlight.$1.ErrorCode";
inline constexpr char kBocaSpotlightOnRegisterScreenRequestSent[] =
"RegisterScreen";
inline constexpr char kBocaSpotlightViewStudentScreen[] = "ViewStudentScreen";
inline constexpr char kBocaSpotlightEndViewStudentScreen[] =
"EndViewStudentScreen";
inline constexpr char kBocaSpotlightSetViewScreenSessionActive[] =
"SetViewScreenSessionActive";
inline constexpr char kBocaGoogleApiCallErrorCodeTemplate[] =
"Ash.Boca.$1.ErrorCode";
inline constexpr char kBocaGetSession[] = "GetSession";
inline constexpr char kListCourses[] = "ListCourses";
inline constexpr char kListStudents[] = "ListStudents";
inline constexpr char kListCourseWorks[] = "ListCourseWorks";
inline constexpr char kListCourseWorkMaterials[] = "ListCourseWorkMaterials";
inline constexpr char kBocaCreateSession[] = "CreateSession";
inline constexpr char kBocaEndSession[] = "EndSession";
inline constexpr char kBocaUpdateSession[] = "UpdateSession";
inline constexpr char kBocaJoinSessionViaAccessCode[] =
"JoinSessionViaAccessCode";
inline constexpr char kBocaUpdateCaption[] = "UpdateCaption";
inline constexpr char kBocaAddStudents[] = "AddStudents";
inline constexpr char kBocaRemoveStudent[] = "RemoveStudent";
inline constexpr char kBocaUpdateStudentActivities[] =
"UpdateStudentActivities";
inline constexpr char kBocaStudentHeartbeat[] = "StudentHeartbeat";
inline static constexpr char kPollingResult[] = "Ash.Boca.PollingResult";
inline static constexpr char kBocaTokenRetrievalIsValidation[] =
"Ash.Boca.TokenRetrievalIsValidation";
inline constexpr char kBocaUploadToken[] = "UploadToken";
inline constexpr char kBocaScreenSharePresentOwnScreenInSessionResult[] =
"Ash.Boca.ScreenShare.PresentOwnScreenInSession.Result";
inline constexpr char kBocaScreenSharePresentOwnScreenOutOfSessionResult[] =
"Ash.Boca.ScreenShare.PresentOwnScreenOutOfSession.Result";
inline constexpr char kBocaScreenSharePresentStudentScreenResult[] =
"Ash.Boca.ScreenShare.PresentStudentScreen.Result";
inline constexpr char kBocaScreenSharePresentOwnScreenInSessionFailureReason[] =
"Ash.Boca.ScreenShare.PresentOwnScreenInSession.FailureReason";
inline constexpr char
kBocaScreenSharePresentOwnScreenOutOfSessionFailureReason[] =
"Ash.Boca.ScreenShare.PresentOwnScreenOutOfSession.FailureReason";
inline constexpr char kBocaScreenSharePresentStudentScreenFailureReason[] =
"Ash.Boca.ScreenShare.PresentStudentScreen.FailureReason";
enum class BocaPresentOwnScreenFailureReason {
kFeatureDisabled = 0,
kStudentScreenShareActive = 1,
kTeacherScreenShareActive = 2,
kStartKioskConnectionRequestFailed = 3,
kGetReceiverRequestFailed = 4,
kGetCrdConnectionCodeFailed = 5,
kMaxValue = kGetCrdConnectionCodeFailed,
};
enum class BocaPresentStudentScreenFailureReason {
kFeatureDisabled = 0,
kStudentScreenShareActive = 1,
kTeacherScreenShareActive = 2,
kStartKioskConnectionRequestFailed = 3,
kEndSpotlightFailed = 4,
kNoActiveStudentDevice = 5,
kNoSession = 6,
kMaxValue = kNoSession,
};
void RecordOnTaskLockedStateDurationPercentage(
base::TimeDelta unlocked_state_duration,
base::TimeDelta locked_state_duration);
void RecordNumOfStudentsJoinedViaCodeDuringSession(
int num_of_students_joined_via_code);
void RecordNumOfActiveStudentsWhenSessionEnded(int num_of_active_students);
void RecordOnTaskNumOfTabsWhenSessionEnded(int num_of_tabs);
void RecordOnTaskMaxNumOfTabsDuringSession(int max_num_of_tabs);
void RecordStudentJoinedSession();
void RecordBabelOrcaTranslationLanguage(const std::string& language);
void RecordBabelOrcaTranslationLanguageSwitched();
void RecordOnTaskPodNavigateBackClicked();
void RecordOnTaskPodNavigateForwardClicked();
void RecordOnTaskPodReloadPageClicked();
void RecordOnTaskPodToggleTabStripVisibilityClicked();
void RecordOnTaskPodSetSnapLocationClicked(bool is_left);
void RecordOnRegisterScreenRequestSentErrorCode(
google_apis::ApiErrorCode error_code);
void RecordViewStudentScreenErrorCode(google_apis::ApiErrorCode error_code);
void RecordEndViewStudentScreenErrorCode(google_apis::ApiErrorCode error_code);
void RecordSetViewScreenSessionActiveErrorCode(
google_apis::ApiErrorCode error_code);
void RecordSpotlightGoogleApiErrorCode(const std::string& name,
google_apis::ApiErrorCode error_code);
void RecordListCoursesErrorCode(google_apis::ApiErrorCode error_code);
void RecordListStudentsErrorCode(google_apis::ApiErrorCode error_code);
void RecordListCourseWorksErrorCode(google_apis::ApiErrorCode error_code);
void RecordListCourseWorkMaterialsErrorCode(
google_apis::ApiErrorCode error_code);
void RecordGetSessionErrorCode(google_apis::ApiErrorCode error_code);
void RecordCreateSessionErrorCode(google_apis::ApiErrorCode error_code);
void RecordEndSessionErrorCode(google_apis::ApiErrorCode error_code);
void RecordUpdateSessionErrorCode(google_apis::ApiErrorCode error_code);
void RecordJoinSessionViaAccessCodeErrorCode(
google_apis::ApiErrorCode error_code);
void RecordUpdateCaptionErrorCode(google_apis::ApiErrorCode error_code);
void RecordAddStudentsErrorCode(google_apis::ApiErrorCode error_code);
void RecordRemoveStudentErrorCode(google_apis::ApiErrorCode error_code);
void RecordUpdateStudentActivitiesErrorCode(
google_apis::ApiErrorCode error_code);
void RecordStudentHeartBeatErrorCode(google_apis::ApiErrorCode error_code);
void RecordUploadTokenErrorCode(google_apis::ApiErrorCode error_code);
void RecordGoogleApiErrorCode(const std::string& name,
google_apis::ApiErrorCode error_code);
void RecordPollingResult(const ::boca::Session* previous_session,
const ::boca::Session* current_session);
void RecordTokenRetrievalIsValidation(const bool is_validation);
void RecordPresentOwnScreenResult(const bool result,
const bool is_session_active);
void RecordPresentStudentScreenResult(const bool result);
void RecordPresentOwnScreenFailureReason(
BocaPresentOwnScreenFailureReason reason,
const bool is_session_active);
void RecordPresentStudentScreenFailureReason(
BocaPresentStudentScreenFailureReason reason);
}
#endif