Skip to content

Commit c3050fc

Browse files
Merge pull request #2030 from github/robertbrignull/disable-new-telemetry
Don't send new telemetry data unless opted-in
2 parents fa8def3 + d780c24 commit c3050fc

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

extensions/ql-vscode/src/config.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,15 @@ export const GLOBAL_ENABLE_TELEMETRY = new Setting(
9292
GLOBAL_TELEMETRY_SETTING,
9393
);
9494

95+
const ENABLE_NEW_TELEMETRY = new Setting(
96+
"enableNewTelemetry",
97+
TELEMETRY_SETTING,
98+
);
99+
100+
export function newTelemetryEnabled(): boolean {
101+
return ENABLE_NEW_TELEMETRY.getValue<boolean>();
102+
}
103+
95104
// Distribution configuration
96105
const DISTRIBUTION_SETTING = new Setting("cli", ROOT_SETTING);
97106
export const CUSTOM_CODEQL_PATH_SETTING = new Setting(

extensions/ql-vscode/src/telemetry.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
LOG_TELEMETRY,
1414
isIntegrationTestMode,
1515
isCanary,
16+
newTelemetryEnabled,
1617
} from "./config";
1718
import * as appInsights from "applicationinsights";
1819
import { extLogger } from "./common";
@@ -172,6 +173,10 @@ export class TelemetryListener extends ConfigListener {
172173
return;
173174
}
174175

176+
if (!newTelemetryEnabled()) {
177+
return;
178+
}
179+
175180
this.reporter.sendTelemetryEvent(
176181
"ui-interaction",
177182
{

extensions/ql-vscode/test/vscode-tests/no-workspace/telemetry.test.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
} from "../../../src/telemetry";
1212
import { UserCancellationException } from "../../../src/commandRunner";
1313
import { ENABLE_TELEMETRY } from "../../../src/config";
14+
import * as Config from "../../../src/config";
1415
import { createMockExtensionContext } from "./index";
1516

1617
// setting preferences can trigger lots of background activity
@@ -388,6 +389,37 @@ describe("telemetry reporting", () => {
388389
expect(showInformationMessageSpy).toBeCalledTimes(1);
389390
});
390391

392+
describe("when new telementry is not enabled", () => {
393+
it("should not send a telementry event", async () => {
394+
await telemetryListener.initialize();
395+
396+
telemetryListener.sendUIInteraction("test");
397+
398+
expect(sendTelemetryEventSpy).not.toBeCalled();
399+
});
400+
});
401+
402+
describe("when new telementry is enabled", () => {
403+
beforeEach(async () => {
404+
jest.spyOn(Config, "newTelemetryEnabled").mockReturnValue(true);
405+
});
406+
407+
it("should not send a telementry event", async () => {
408+
await telemetryListener.initialize();
409+
410+
telemetryListener.sendUIInteraction("test");
411+
412+
expect(sendTelemetryEventSpy).toHaveBeenCalledWith(
413+
"ui-interaction",
414+
{
415+
name: "test",
416+
isCanary,
417+
},
418+
{},
419+
);
420+
});
421+
});
422+
391423
async function enableTelemetry(section: string, value: boolean | undefined) {
392424
await workspace
393425
.getConfiguration(section)

0 commit comments

Comments
 (0)