ChangeId will enable to aggregate events on change, so we understand user flow and we can investigate past issues on change Change-Id: Ib31620a84f8c03a1464386ddf2048312ba97ab79
113 lines
3.6 KiB
TypeScript
113 lines
3.6 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright (C) 2020 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import {NumericChangeId} from '../../types/common';
|
|
|
|
export type EventValue = string | number | {error?: Error};
|
|
|
|
// TODO(dmfilippov): TS-fix-any use more specific type instead if possible
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
export type EventDetails = any;
|
|
|
|
export interface Timer {
|
|
reset(): this;
|
|
end(): this;
|
|
withMaximum(maximum: number): this;
|
|
}
|
|
|
|
export interface ReportingService {
|
|
reporter(
|
|
type: string,
|
|
category: string,
|
|
eventName: string,
|
|
eventValue?: EventValue,
|
|
eventDetails?: EventDetails,
|
|
opt_noLog?: boolean
|
|
): void;
|
|
|
|
appStarted(): void;
|
|
onVisibilityChange(): void;
|
|
beforeLocationChanged(): void;
|
|
locationChanged(page: string): void;
|
|
dashboardDisplayed(): void;
|
|
changeDisplayed(): void;
|
|
changeFullyLoaded(): void;
|
|
diffViewDisplayed(): void;
|
|
diffViewFullyLoaded(): void;
|
|
diffViewContentDisplayed(): void;
|
|
fileListDisplayed(): void;
|
|
reportExtension(name: string): void;
|
|
pluginLoaded(name: string): void;
|
|
pluginsLoaded(pluginsList?: string[]): void;
|
|
error(err: unknown, reporter?: string, details?: EventDetails): void;
|
|
/**
|
|
* Reset named timer.
|
|
*/
|
|
time(name: string): void;
|
|
/**
|
|
* Finish named timer and report it to server.
|
|
*/
|
|
timeEnd(name: string, eventDetails?: EventDetails): void;
|
|
/**
|
|
* Reports just line timeEnd, but additionally reports an average given a
|
|
* denominator and a separate reporiting name for the average.
|
|
*
|
|
* @param name Timing name.
|
|
* @param averageName Average timing name.
|
|
* @param denominator Number by which to divide the total to
|
|
* compute the average.
|
|
*/
|
|
timeEndWithAverage(
|
|
name: string,
|
|
averageName: string,
|
|
denominator: number
|
|
): void;
|
|
/**
|
|
* Get a timer object to for reporing a user timing. The start time will be
|
|
* the time that the object has been created, and the end time will be the
|
|
* time that the "end" method is called on the object.
|
|
*/
|
|
getTimer(name: string): Timer;
|
|
/**
|
|
* Log timing information for an RPC.
|
|
*
|
|
* @param anonymizedUrl The URL of the RPC with tokens obfuscated.
|
|
* @param elapsed The time elapsed of the RPC.
|
|
*/
|
|
reportRpcTiming(anonymizedUrl: string, elapsed: number): void;
|
|
reportLifeCycle(eventName: string, details?: EventDetails): void;
|
|
|
|
/**
|
|
* Use this method, if you want to check/count how often a certain code path
|
|
* is executed. For example you can use this method to prove that certain code
|
|
* paths are dead: Add reportExecution(), check the logs a week later, then
|
|
* safely remove the coe.
|
|
*
|
|
* Every execution is only reported once per session.
|
|
*/
|
|
reportExecution(id: string, details: EventDetails): void;
|
|
reportInteraction(eventName: string, details?: EventDetails): void;
|
|
/**
|
|
* A draft interaction was started. Update the time-betweeen-draft-actions
|
|
* timer.
|
|
*/
|
|
recordDraftInteraction(): void;
|
|
reportErrorDialog(message: string): void;
|
|
setRepoName(repoName: string): void;
|
|
setChangeId(changeId: NumericChangeId): void;
|
|
}
|