re #243049. property initialisation order for file user data provider. (#243101)

This commit is contained in:
Peng Lyu 2025-03-10 11:22:52 -07:00 committed by GitHub
parent 20dccd9313
commit 0bec97c0bf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 13 additions and 9 deletions

View File

@ -74,7 +74,6 @@ const ignored = new Set([
'vs/platform/extensionManagement/common/extensionsScannerService.ts',
'vs/platform/utilityProcess/electron-main/utilityProcessWorkerMainService.ts',
'vs/platform/configuration/common/configurations.ts',
'vs/platform/userData/common/fileUserDataProvider.ts',
'vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/tokenizer.ts',
'vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/bracketPairsTree.ts',
'vs/editor/common/model/textModelTokens.ts',

View File

@ -43,7 +43,6 @@ const ignored = new Set([
'vs/platform/extensionManagement/common/extensionsScannerService.ts',
'vs/platform/utilityProcess/electron-main/utilityProcessWorkerMainService.ts',
'vs/platform/configuration/common/configurations.ts',
'vs/platform/userData/common/fileUserDataProvider.ts',
'vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/tokenizer.ts',
'vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/bracketPairsTree.ts',
'vs/editor/common/model/textModelTokens.ts',

View File

@ -2,7 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Emitter } from '../../../base/common/event.js';
import { Emitter, Event } from '../../../base/common/event.js';
import { Disposable, IDisposable, toDisposable } from '../../../base/common/lifecycle.js';
import { IFileSystemProviderWithFileReadWriteCapability, IFileChange, IWatchOptions, IStat, IFileOverwriteOptions, FileType, IFileWriteOptions, IFileDeleteOptions, FileSystemProviderCapabilities, IFileSystemProviderWithFileReadStreamCapability, IFileReadStreamOptions, IFileSystemProviderWithFileAtomicReadCapability, hasFileFolderCopyCapability, IFileSystemProviderWithOpenReadWriteCloseCapability, IFileOpenOptions, IFileSystemProviderWithFileAtomicWriteCapability, IFileSystemProviderWithFileAtomicDeleteCapability, IFileSystemProviderWithFileFolderCopyCapability, IFileSystemProviderWithFileCloneCapability, hasFileCloneCapability, IFileAtomicReadOptions, IFileAtomicOptions } from '../../files/common/files.js';
import { URI } from '../../../base/common/uri.js';
@ -29,14 +29,14 @@ export class FileUserDataProvider extends Disposable implements
IFileSystemProviderWithFileAtomicDeleteCapability,
IFileSystemProviderWithFileCloneCapability {
readonly capabilities = this.fileSystemProvider.capabilities;
readonly onDidChangeCapabilities = this.fileSystemProvider.onDidChangeCapabilities;
readonly capabilities: FileSystemProviderCapabilities;
readonly onDidChangeCapabilities: Event<void>;
private readonly _onDidChangeFile = this._register(new Emitter<readonly IFileChange[]>());
readonly onDidChangeFile = this._onDidChangeFile.event;
private readonly _onDidChangeFile: Emitter<readonly IFileChange[]>;
readonly onDidChangeFile: Event<readonly IFileChange[]>;
private readonly watchResources = TernarySearchTree.forUris<URI>(() => !(this.capabilities & FileSystemProviderCapabilities.PathCaseSensitive));
private readonly atomicReadWriteResources = new ResourceSet((uri) => this.uriIdentityService.extUri.getComparisonKey(this.toFileSystemResource(uri)));
private readonly watchResources: TernarySearchTree<URI, URI>;
private readonly atomicReadWriteResources: ResourceSet;
constructor(
private readonly fileSystemScheme: string,
@ -47,6 +47,12 @@ export class FileUserDataProvider extends Disposable implements
private readonly logService: ILogService,
) {
super();
this.capabilities = this.fileSystemProvider.capabilities;
this.onDidChangeCapabilities = this.fileSystemProvider.onDidChangeCapabilities;
this._onDidChangeFile = this._register(new Emitter());
this.onDidChangeFile = this._onDidChangeFile.event;
this.watchResources = TernarySearchTree.forUris(() => !(this.capabilities & 1024 /* FileSystemProviderCapabilities.PathCaseSensitive */));
this.atomicReadWriteResources = new ResourceSet((uri) => this.uriIdentityService.extUri.getComparisonKey(this.toFileSystemResource(uri)));
this.updateAtomicReadWritesResources();
this._register(userDataProfilesService.onDidChangeProfiles(() => this.updateAtomicReadWritesResources()));
this._register(this.fileSystemProvider.onDidChangeFile(e => this.handleFileChanges(e)));