Path: blob/main/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { CancellationToken } from '../../../base/common/cancellation.js';6import { localize } from '../../../nls.js';7import { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';8import { extHostCustomer, IExtHostContext } from '../../services/extensions/common/extHostCustomers.js';9import { IDisposable } from '../../../base/common/lifecycle.js';10import { raceCancellationError } from '../../../base/common/async.js';11import { IEditSessionIdentityCreateParticipant, IEditSessionIdentityService } from '../../../platform/workspace/common/editSessions.js';12import { ExtHostContext, ExtHostWorkspaceShape } from '../common/extHost.protocol.js';13import { WorkspaceFolder } from '../../../platform/workspace/common/workspace.js';1415class ExtHostEditSessionIdentityCreateParticipant implements IEditSessionIdentityCreateParticipant {1617private readonly _proxy: ExtHostWorkspaceShape;18private readonly timeout = 20000;1920constructor(extHostContext: IExtHostContext) {21this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostWorkspace);22}2324async participate(workspaceFolder: WorkspaceFolder, token: CancellationToken): Promise<void> {25const p = new Promise<any>((resolve, reject) => {2627setTimeout(28() => reject(new Error(localize('timeout.onWillCreateEditSessionIdentity', "Aborted onWillCreateEditSessionIdentity-event after 10000ms"))),29this.timeout30);31this._proxy.$onWillCreateEditSessionIdentity(workspaceFolder.uri, token, this.timeout).then(resolve, reject);32});3334return raceCancellationError(p, token);35}36}3738@extHostCustomer39export class EditSessionIdentityCreateParticipant {4041private _saveParticipantDisposable: IDisposable;4243constructor(44extHostContext: IExtHostContext,45@IInstantiationService instantiationService: IInstantiationService,46@IEditSessionIdentityService private readonly _editSessionIdentityService: IEditSessionIdentityService47) {48this._saveParticipantDisposable = this._editSessionIdentityService.addEditSessionIdentityCreateParticipant(instantiationService.createInstance(ExtHostEditSessionIdentityCreateParticipant, extHostContext));49}5051dispose(): void {52this._saveParticipantDisposable.dispose();53}54}555657