未验证 提交 a4889e61 编写于 作者: L Ladislau Szomoru 提交者: GitHub

Workspace trust - Add telemetry for workspace trust dialogs (#132530)

上级 0df5af83
......@@ -95,6 +95,7 @@ export class WorkspaceTrustRequestHandler extends Disposable implements IWorkben
constructor(
@IDialogService private readonly dialogService: IDialogService,
@ICommandService private readonly commandService: ICommandService,
@ITelemetryService private readonly telemetryService: ITelemetryService,
@IWorkspaceContextService private readonly workspaceContextService: IWorkspaceContextService,
@IWorkspaceTrustManagementService private readonly workspaceTrustManagementService: IWorkspaceTrustManagementService,
@IWorkspaceTrustRequestService private readonly workspaceTrustRequestService: IWorkspaceTrustRequestService) {
......@@ -121,6 +122,7 @@ export class WorkspaceTrustRequestHandler extends Disposable implements IWorkben
];
// Dialog
const startTime = Date.now();
const result = await this.dialogService.show(
Severity.Info,
localize('openLooseFileMesssage', "Do you trust the authors of these files?"),
......@@ -137,6 +139,9 @@ export class WorkspaceTrustRequestHandler extends Disposable implements IWorkben
}
});
// Log dialog result
this.telemetryService.publicLog2<WorkspaceTrustDialogResultEvent, WorkspaceTrustDialogResultEventClassification>('workspaceTrustOpenFileRequestDialogResult', { duration: Date.now() - startTime, ...result });
switch (result.choice) {
case 0:
await this.workspaceTrustRequestService.completeOpenFilesTrustRequest(WorkspaceTrustUriResponse.Open, !!result.checkboxChecked);
......@@ -173,6 +178,7 @@ export class WorkspaceTrustRequestHandler extends Disposable implements IWorkben
}
// Dialog
const startTime = Date.now();
const result = await this.dialogService.show(
Severity.Info,
title,
......@@ -189,6 +195,9 @@ export class WorkspaceTrustRequestHandler extends Disposable implements IWorkben
}
);
// Log dialog result
this.telemetryService.publicLog2<WorkspaceTrustDialogResultEvent, WorkspaceTrustDialogResultEventClassification>('workspaceTrustRequestDialogResult', { duration: Date.now() - startTime, ...result });
// Dialog result
switch (buttons[result.choice].type) {
case 'ContinueWithTrust':
......@@ -227,6 +236,7 @@ export class WorkspaceTrustUXHandler extends Disposable implements IWorkbenchCon
@IConfigurationService private readonly configurationService: IConfigurationService,
@IStatusbarService private readonly statusbarService: IStatusbarService,
@IStorageService private readonly storageService: IStorageService,
@ITelemetryService private readonly telemetryService: ITelemetryService,
@IWorkspaceTrustRequestService private readonly workspaceTrustRequestService: IWorkspaceTrustRequestService,
@IBannerService private readonly bannerService: IBannerService,
@ILabelService private readonly labelService: ILabelService,
......@@ -275,6 +285,7 @@ export class WorkspaceTrustUXHandler extends Disposable implements IWorkbenchCon
const addedFoldersTrustInfo = await Promise.all(e.changes.added.map(folder => this.workspaceTrustManagementService.getUriTrustInfo(folder.uri)));
if (!addedFoldersTrustInfo.map(info => info.trusted).every(trusted => trusted)) {
const startTime = Date.now();
const result = await this.dialogService.show(
Severity.Info,
localize('addWorkspaceFolderMessage', "Do you trust the authors of the files in this folder?"),
......@@ -286,6 +297,9 @@ export class WorkspaceTrustUXHandler extends Disposable implements IWorkbenchCon
}
);
// Log dialog result
this.telemetryService.publicLog2<WorkspaceTrustDialogResultEvent, WorkspaceTrustDialogResultEventClassification>('workspaceTrustAddWorkspaceFolderDialogResult', { duration: Date.now() - startTime, ...result });
// Mark added/changed folders as trusted
await this.workspaceTrustManagementService.setUrisTrust(addedFoldersTrustInfo.map(i => i.uri), result.choice === 0);
......@@ -319,6 +333,7 @@ export class WorkspaceTrustUXHandler extends Disposable implements IWorkbenchCon
//#region Dialog
private async doShowModal(question: string, trustedOption: { label: string, sublabel: string }, untrustedOption: { label: string, sublabel: string }, markdownStrings: string[], trustParentString?: string): Promise<void> {
const startTime = Date.now();
const result = await this.dialogService.show(
Severity.Info,
question,
......@@ -342,6 +357,9 @@ export class WorkspaceTrustUXHandler extends Disposable implements IWorkbenchCon
}
);
// Log dialog result
this.telemetryService.publicLog2<WorkspaceTrustDialogResultEvent, WorkspaceTrustDialogResultEventClassification>('workspaceTrustStartupDialogResult', { duration: Date.now() - startTime, ...result });
// Dialog result
switch (result.choice) {
case 0:
......@@ -753,6 +771,18 @@ Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration)
/**
* Telemetry
*/
type WorkspaceTrustDialogResultEventClassification = {
duration: { classification: 'SystemMetaData', purpose: 'FeatureInsight', expiration: '1.64', isMeasurement: true };
choice: { classification: 'SystemMetaData', purpose: 'FeatureInsight', expiration: '1.64', isMeasurement: true };
checkboxChecked?: { classification: 'SystemMetaData', purpose: 'FeatureInsight', expiration: '1.64', isMeasurement: true };
};
type WorkspaceTrustDialogResultEvent = {
duration: number;
choice: number;
checkboxChecked?: boolean;
};
class WorkspaceTrustTelemetryContribution extends Disposable implements IWorkbenchContribution {
constructor(
@IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册