Skip to content

Commit 959728d

Browse files
committed
Add telemetry to App
1 parent fefb2f6 commit 959728d

4 files changed

Lines changed: 22 additions & 0 deletions

File tree

extensions/ql-vscode/src/common/app.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ import { AppEventEmitter } from "./events";
44
import { NotificationLogger } from "./logging";
55
import { Memento } from "./memento";
66
import { AppCommandManager } from "./commands";
7+
import { AppTelemetry } from "./telemetry";
78

89
export interface App {
910
createEventEmitter<T>(): AppEventEmitter<T>;
1011
readonly mode: AppMode;
1112
readonly logger: NotificationLogger;
13+
readonly telemetry?: AppTelemetry;
1214
readonly subscriptions: Disposable[];
1315
readonly extensionPath: string;
1416
readonly globalStoragePath: string;

extensions/ql-vscode/src/common/vscode/vscode-app.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import { VSCodeAppEventEmitter } from "./events";
99
import { AppCommandManager, QueryServerCommandManager } from "../commands";
1010
import { createVSCodeCommandManager } from "./commands";
1111
import { AppEnvironmentContext } from "./environment-context";
12+
import { AppTelemetry } from "../telemetry";
13+
import { telemetryListener } from "./telemetry";
1214

1315
export class ExtensionApp implements App {
1416
public readonly credentials: VSCodeCredentials;
@@ -59,6 +61,10 @@ export class ExtensionApp implements App {
5961
return extLogger;
6062
}
6163

64+
public get telemetry(): AppTelemetry | undefined {
65+
return telemetryListener;
66+
}
67+
6268
public createEventEmitter<T>(): AppEventEmitter<T> {
6369
return new VSCodeAppEventEmitter<T>();
6470
}

extensions/ql-vscode/test/__mocks__/appMock.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import { Credentials } from "../../src/common/authentication";
99
import { AppCommandManager } from "../../src/common/commands";
1010
import { createMockCommandManager } from "./commandsMock";
1111
import { NotificationLogger } from "../../src/common";
12+
import { AppTelemetry } from "../../src/common/telemetry";
13+
import { createMockTelemetryReporter } from "./telemetryMock";
1214

1315
export function createMockApp({
1416
extensionPath = "/mock/extension/path",
@@ -20,6 +22,7 @@ export function createMockApp({
2022
commands = createMockCommandManager(),
2123
environment = createMockEnvironmentContext(),
2224
logger = createMockLogger(),
25+
telemetry = createMockTelemetryReporter(),
2326
}: {
2427
extensionPath?: string;
2528
workspaceStoragePath?: string;
@@ -30,10 +33,12 @@ export function createMockApp({
3033
commands?: AppCommandManager;
3134
environment?: EnvironmentContext;
3235
logger?: NotificationLogger;
36+
telemetry?: AppTelemetry;
3337
}): App {
3438
return {
3539
mode: AppMode.Test,
3640
logger,
41+
telemetry,
3742
subscriptions: [],
3843
extensionPath,
3944
workspaceStoragePath,
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { AppTelemetry } from "../../src/common/telemetry";
2+
3+
export function createMockTelemetryReporter(): AppTelemetry {
4+
return {
5+
sendCommandUsage: jest.fn(),
6+
sendUIInteraction: jest.fn(),
7+
sendError: jest.fn(),
8+
};
9+
}

0 commit comments

Comments
 (0)