Skip to content

Commit d6d6fb2

Browse files
committed
microsoft#93368 Replace biased util with using extUri based on fileservice provider's case sensiive capability
1 parent 4c030c4 commit d6d6fb2

1 file changed

Lines changed: 14 additions & 10 deletions

File tree

src/vs/workbench/services/userData/common/fileUserDataProvider.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import { Event, Emitter } from 'vs/base/common/event';
77
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
88
import { IFileSystemProviderWithFileReadWriteCapability, IFileChange, IWatchOptions, IStat, FileOverwriteOptions, FileType, FileWriteOptions, FileDeleteOptions, FileSystemProviderCapabilities, IFileSystemProviderWithOpenReadWriteCloseCapability, FileOpenOptions, hasReadWriteCapability, hasOpenReadWriteCloseCapability, IFileSystemProviderWithFileReadStreamCapability, FileReadStreamOptions, hasFileReadStreamCapability } from 'vs/platform/files/common/files';
99
import { URI } from 'vs/base/common/uri';
10-
import { extUriBiasedIgnorePathCase as resources } from 'vs/base/common/resources';
1110
import { startsWith } from 'vs/base/common/strings';
1211
import { BACKUPS } from 'vs/platform/environment/common/environment';
1312
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
1413
import { CancellationToken } from 'vs/base/common/cancellation';
1514
import { ReadableStreamEvents } from 'vs/base/common/stream';
1615
import { ILogService } from 'vs/platform/log/common/log';
16+
import { ExtUri, extUri, extUriIgnorePathCase } from 'vs/base/common/resources';
1717

1818
export 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

Comments
 (0)