add telemetry enablement api (#117944)

This commit is contained in:
SteVen Batten
2021-03-02 07:59:50 -08:00
committed by GitHub
parent 4de8cb2907
commit ff225b9fcc
6 changed files with 82 additions and 6 deletions

View File

@@ -4,24 +4,46 @@
*--------------------------------------------------------------------------------------------*/
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { MainThreadTelemetryShape, MainContext, IExtHostContext } from '../common/extHost.protocol';
import { MainThreadTelemetryShape, MainContext, IExtHostContext, ExtHostTelemetryShape, ExtHostContext } from '../common/extHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
import { ClassifiedEvent, StrictPropertyCheck, GDPRClassification } from 'vs/platform/telemetry/common/gdprTypings';
import { Disposable } from 'vs/base/common/lifecycle';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
@extHostNamedCustomer(MainContext.MainThreadTelemetry)
export class MainThreadTelemetry implements MainThreadTelemetryShape {
export class MainThreadTelemetry extends Disposable implements MainThreadTelemetryShape {
private readonly _proxy: ExtHostTelemetryShape;
private static readonly _name = 'pluginHostTelemetry';
constructor(
extHostContext: IExtHostContext,
@ITelemetryService private readonly _telemetryService: ITelemetryService
@ITelemetryService private readonly _telemetryService: ITelemetryService,
@IConfigurationService private readonly _configurationService: IConfigurationService,
@IEnvironmentService private readonly _environmenService: IEnvironmentService,
) {
//
super();
this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostTelemetry);
if (!this._environmenService.disableTelemetry) {
this._register(this._configurationService.onDidChangeConfiguration(e => {
if (e.affectedKeys.includes('telemetry.enableTelemetry')) {
this._proxy.$onDidChangeTelemetryEnabled(this.telemetryEnabled);
}
}));
}
this._proxy.$initializeTelemetryEnabled(this.telemetryEnabled);
}
dispose(): void {
//
private get telemetryEnabled(): boolean {
if (this._environmenService.disableTelemetry) {
return false;
}
return !!this._configurationService.getValue('telemetry.enableTelemetry');
}
$publicLog(eventName: string, data: any = Object.create(null)): void {