@@ -7,13 +7,13 @@ import { Event, Emitter } from 'vs/base/common/event';
77import { Disposable , IDisposable } from 'vs/base/common/lifecycle' ;
88import { IFileSystemProviderWithFileReadWriteCapability , IFileChange , IWatchOptions , IStat , FileOverwriteOptions , FileType , FileWriteOptions , FileDeleteOptions , FileSystemProviderCapabilities , IFileSystemProviderWithOpenReadWriteCloseCapability , FileOpenOptions , hasReadWriteCapability , hasOpenReadWriteCloseCapability , IFileSystemProviderWithFileReadStreamCapability , FileReadStreamOptions , hasFileReadStreamCapability } from 'vs/platform/files/common/files' ;
99import { URI } from 'vs/base/common/uri' ;
10- import { extUriBiasedIgnorePathCase as resources } from 'vs/base/common/resources' ;
1110import { startsWith } from 'vs/base/common/strings' ;
1211import { BACKUPS } from 'vs/platform/environment/common/environment' ;
1312import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService' ;
1413import { CancellationToken } from 'vs/base/common/cancellation' ;
1514import { ReadableStreamEvents } from 'vs/base/common/stream' ;
1615import { ILogService } from 'vs/platform/log/common/log' ;
16+ import { ExtUri , extUri , extUriIgnorePathCase } from 'vs/base/common/resources' ;
1717
1818export class FileUserDataProvider extends Disposable implements
1919 IFileSystemProviderWithFileReadWriteCapability ,
@@ -27,6 +27,7 @@ export class FileUserDataProvider extends Disposable implements
2727 readonly onDidChangeFile : Event < readonly IFileChange [ ] > = this . _onDidChangeFile . event ;
2828
2929 private readonly userDataHome : URI ;
30+ private readonly extUri : ExtUri ;
3031
3132 constructor (
3233 private readonly fileSystemUserDataHome : URI ,
@@ -39,6 +40,9 @@ export class FileUserDataProvider extends Disposable implements
3940
4041 this . userDataHome = environmentService . userRoamingDataHome ;
4142
43+ this . extUri = ! ! ( this . capabilities & FileSystemProviderCapabilities . PathCaseSensitive ) ? extUri : extUriIgnorePathCase ;
44+ // Not required to update extUri as capabilites will not change.
45+
4246 // Assumption: This path always exists
4347 this . _register ( this . fileSystemProvider . watch ( this . fileSystemUserDataHome , { recursive : false , excludes : [ ] } ) ) ;
4448 this . _register ( this . fileSystemProvider . onDidChangeFile ( e => this . handleFileChanges ( e ) ) ) ;
@@ -135,21 +139,21 @@ export class FileUserDataProvider extends Disposable implements
135139 }
136140
137141 private toFileSystemResource ( userDataResource : URI ) : URI {
138- const relativePath = resources . relativePath ( this . userDataHome , userDataResource ) ! ;
142+ const relativePath = this . extUri . relativePath ( this . userDataHome , userDataResource ) ! ;
139143 if ( startsWith ( relativePath , BACKUPS ) ) {
140- return resources . joinPath ( resources . dirname ( this . fileSystemBackupsHome ) , relativePath ) ;
144+ return this . extUri . joinPath ( this . extUri . dirname ( this . fileSystemBackupsHome ) , relativePath ) ;
141145 }
142- return resources . joinPath ( this . fileSystemUserDataHome , relativePath ) ;
146+ return this . extUri . joinPath ( this . fileSystemUserDataHome , relativePath ) ;
143147 }
144148
145149 private toUserDataResource ( fileSystemResource : URI ) : URI | null {
146- if ( resources . isEqualOrParent ( fileSystemResource , this . fileSystemUserDataHome ) ) {
147- const relativePath = resources . relativePath ( this . fileSystemUserDataHome , fileSystemResource ) ;
148- return relativePath ? resources . joinPath ( this . userDataHome , relativePath ) : this . userDataHome ;
150+ if ( this . extUri . isEqualOrParent ( fileSystemResource , this . fileSystemUserDataHome ) ) {
151+ const relativePath = this . extUri . relativePath ( this . fileSystemUserDataHome , fileSystemResource ) ;
152+ return relativePath ? this . extUri . joinPath ( this . userDataHome , relativePath ) : this . userDataHome ;
149153 }
150- if ( resources . isEqualOrParent ( fileSystemResource , this . fileSystemBackupsHome ) ) {
151- const relativePath = resources . relativePath ( this . fileSystemBackupsHome , fileSystemResource ) ;
152- return relativePath ? resources . joinPath ( this . userDataHome , BACKUPS , relativePath ) : resources . joinPath ( this . userDataHome , BACKUPS ) ;
154+ if ( this . extUri . isEqualOrParent ( fileSystemResource , this . fileSystemBackupsHome ) ) {
155+ const relativePath = this . extUri . relativePath ( this . fileSystemBackupsHome , fileSystemResource ) ;
156+ return relativePath ? this . extUri . joinPath ( this . userDataHome , BACKUPS , relativePath ) : this . extUri . joinPath ( this . userDataHome , BACKUPS ) ;
153157 }
154158 return null ;
155159 }
0 commit comments