Loading src/__mocks__/vscode.js +1 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,7 @@ module.exports = { env: { isTelemetryEnabled: true, uriScheme: 'vscode', remoteName: undefined, clipboard: { writeText: jest.fn(), readText: jest.fn(), Loading src/browser/gitlab_telemetry_environment_browser.test.ts +9 −0 Original line number Diff line number Diff line Loading @@ -47,4 +47,13 @@ describe('GitLabTelemetryEnvironmentBrowser', () => { }, }); }); it('getOs returns navigator.platform when userAgentData is unavailable', () => { Object.defineProperty(global, 'navigator', { value: { platform: 'MacIntel' }, configurable: true, }); expect(subject.getOs()).toBe('MacIntel'); }); }); src/browser/gitlab_telemetry_environment_browser.ts +7 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,13 @@ export class GitLabTelemetryEnvironmentBrowser implements GitLabTelemetryEnviron return this.#webIdeExtension?.isTelemetryEnabled() || false; } getOs(): string { // navigator.userAgentData is experimental and not in the standard DOM types yet const uaData = (navigator as Navigator & { userAgentData?: { platform: string } }) .userAgentData; return uaData?.platform ?? navigator.platform ?? 'unknown'; } buildIdeExtensionContext(extVersion: string): IdeExtensionContext { return { schema: IDE_EXTENSION_VERSION_SCHEMA_URL, Loading src/common/language_server/language_client_wrapper.test.ts +8 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,13 @@ import { RepositoryClient } from './repository_client'; jest.mock('../code_suggestions/gitlab_platform_manager_for_code_suggestions'); jest.mock('../log'); // disable logging in tests jest.mock('../feature_flags/local_feature_flag_service'); jest.mock('../snowplow/snowplow', () => ({ Snowplow: { getInstance: jest .fn() .mockReturnValue({ trackStructEvent: jest.fn().mockResolvedValue(undefined) }), }, })); jest.mock('../webview'); Loading @@ -56,6 +63,7 @@ describe('LanguageClientWrapper', () => { const gitLabTelemetryEnvironment = createFakePartial<GitLabTelemetryEnvironment>({ isTelemetryEnabled: jest.fn(), getOs: jest.fn().mockReturnValue('linux'), }); let lsGitProvider: LSGitProvider; Loading src/common/language_server/language_client_wrapper.ts +2 −1 Original line number Diff line number Diff line Loading @@ -128,7 +128,7 @@ export class LanguageClientWrapperImpl implements LanguageClientWrapper { #platformClientConfig?: Partial<ClientConfig>; #startupMonitor = new LanguageServerStartupMonitor(); #startupMonitor: LanguageServerStartupMonitor; set startupMonitor(monitor: LanguageServerStartupMonitor) { this.#startupMonitor = monitor; Loading Loading @@ -157,6 +157,7 @@ export class LanguageClientWrapperImpl implements LanguageClientWrapper { this.#documentQualityHandler = new DocumentQualityHandler(); this.#repositoryClient = repositoryClient; this.#subscriptions.push(this.#documentQualityHandler); this.#startupMonitor = new LanguageServerStartupMonitor(telemetryEnvironment); } setCustomPlatformConfig(clientConfig: Partial<ClientConfig>): void { Loading Loading
src/__mocks__/vscode.js +1 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,7 @@ module.exports = { env: { isTelemetryEnabled: true, uriScheme: 'vscode', remoteName: undefined, clipboard: { writeText: jest.fn(), readText: jest.fn(), Loading
src/browser/gitlab_telemetry_environment_browser.test.ts +9 −0 Original line number Diff line number Diff line Loading @@ -47,4 +47,13 @@ describe('GitLabTelemetryEnvironmentBrowser', () => { }, }); }); it('getOs returns navigator.platform when userAgentData is unavailable', () => { Object.defineProperty(global, 'navigator', { value: { platform: 'MacIntel' }, configurable: true, }); expect(subject.getOs()).toBe('MacIntel'); }); });
src/browser/gitlab_telemetry_environment_browser.ts +7 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,13 @@ export class GitLabTelemetryEnvironmentBrowser implements GitLabTelemetryEnviron return this.#webIdeExtension?.isTelemetryEnabled() || false; } getOs(): string { // navigator.userAgentData is experimental and not in the standard DOM types yet const uaData = (navigator as Navigator & { userAgentData?: { platform: string } }) .userAgentData; return uaData?.platform ?? navigator.platform ?? 'unknown'; } buildIdeExtensionContext(extVersion: string): IdeExtensionContext { return { schema: IDE_EXTENSION_VERSION_SCHEMA_URL, Loading
src/common/language_server/language_client_wrapper.test.ts +8 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,13 @@ import { RepositoryClient } from './repository_client'; jest.mock('../code_suggestions/gitlab_platform_manager_for_code_suggestions'); jest.mock('../log'); // disable logging in tests jest.mock('../feature_flags/local_feature_flag_service'); jest.mock('../snowplow/snowplow', () => ({ Snowplow: { getInstance: jest .fn() .mockReturnValue({ trackStructEvent: jest.fn().mockResolvedValue(undefined) }), }, })); jest.mock('../webview'); Loading @@ -56,6 +63,7 @@ describe('LanguageClientWrapper', () => { const gitLabTelemetryEnvironment = createFakePartial<GitLabTelemetryEnvironment>({ isTelemetryEnabled: jest.fn(), getOs: jest.fn().mockReturnValue('linux'), }); let lsGitProvider: LSGitProvider; Loading
src/common/language_server/language_client_wrapper.ts +2 −1 Original line number Diff line number Diff line Loading @@ -128,7 +128,7 @@ export class LanguageClientWrapperImpl implements LanguageClientWrapper { #platformClientConfig?: Partial<ClientConfig>; #startupMonitor = new LanguageServerStartupMonitor(); #startupMonitor: LanguageServerStartupMonitor; set startupMonitor(monitor: LanguageServerStartupMonitor) { this.#startupMonitor = monitor; Loading Loading @@ -157,6 +157,7 @@ export class LanguageClientWrapperImpl implements LanguageClientWrapper { this.#documentQualityHandler = new DocumentQualityHandler(); this.#repositoryClient = repositoryClient; this.#subscriptions.push(this.#documentQualityHandler); this.#startupMonitor = new LanguageServerStartupMonitor(telemetryEnvironment); } setCustomPlatformConfig(clientConfig: Partial<ClientConfig>): void { Loading