提交 d6d6fb2c 编写于 作者: S Sandeep Somavarapu

#93368 Replace biased util with using extUri based on fileservice provider's...

#93368 Replace biased util with using extUri based on fileservice provider's case sensiive capability
上级 4c030c46
...@@ -7,13 +7,13 @@ import { Event, Emitter } from 'vs/base/common/event'; ...@@ -7,13 +7,13 @@ import { Event, Emitter } from 'vs/base/common/event';
import { Disposable, IDisposable } from 'vs/base/common/lifecycle'; import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
import { IFileSystemProviderWithFileReadWriteCapability, IFileChange, IWatchOptions, IStat, FileOverwriteOptions, FileType, FileWriteOptions, FileDeleteOptions, FileSystemProviderCapabilities, IFileSystemProviderWithOpenReadWriteCloseCapability, FileOpenOptions, hasReadWriteCapability, hasOpenReadWriteCloseCapability, IFileSystemProviderWithFileReadStreamCapability, FileReadStreamOptions, hasFileReadStreamCapability } from 'vs/platform/files/common/files'; import { IFileSystemProviderWithFileReadWriteCapability, IFileChange, IWatchOptions, IStat, FileOverwriteOptions, FileType, FileWriteOptions, FileDeleteOptions, FileSystemProviderCapabilities, IFileSystemProviderWithOpenReadWriteCloseCapability, FileOpenOptions, hasReadWriteCapability, hasOpenReadWriteCloseCapability, IFileSystemProviderWithFileReadStreamCapability, FileReadStreamOptions, hasFileReadStreamCapability } from 'vs/platform/files/common/files';
import { URI } from 'vs/base/common/uri'; import { URI } from 'vs/base/common/uri';
import { extUriBiasedIgnorePathCase as resources } from 'vs/base/common/resources';
import { startsWith } from 'vs/base/common/strings'; import { startsWith } from 'vs/base/common/strings';
import { BACKUPS } from 'vs/platform/environment/common/environment'; import { BACKUPS } from 'vs/platform/environment/common/environment';
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
import { CancellationToken } from 'vs/base/common/cancellation'; import { CancellationToken } from 'vs/base/common/cancellation';
import { ReadableStreamEvents } from 'vs/base/common/stream'; import { ReadableStreamEvents } from 'vs/base/common/stream';
import { ILogService } from 'vs/platform/log/common/log'; import { ILogService } from 'vs/platform/log/common/log';
import { ExtUri, extUri, extUriIgnorePathCase } from 'vs/base/common/resources';
export class FileUserDataProvider extends Disposable implements export class FileUserDataProvider extends Disposable implements
IFileSystemProviderWithFileReadWriteCapability, IFileSystemProviderWithFileReadWriteCapability,
...@@ -27,6 +27,7 @@ export class FileUserDataProvider extends Disposable implements ...@@ -27,6 +27,7 @@ export class FileUserDataProvider extends Disposable implements
readonly onDidChangeFile: Event<readonly IFileChange[]> = this._onDidChangeFile.event; readonly onDidChangeFile: Event<readonly IFileChange[]> = this._onDidChangeFile.event;
private readonly userDataHome: URI; private readonly userDataHome: URI;
private readonly extUri: ExtUri;
constructor( constructor(
private readonly fileSystemUserDataHome: URI, private readonly fileSystemUserDataHome: URI,
...@@ -39,6 +40,9 @@ export class FileUserDataProvider extends Disposable implements ...@@ -39,6 +40,9 @@ export class FileUserDataProvider extends Disposable implements
this.userDataHome = environmentService.userRoamingDataHome; this.userDataHome = environmentService.userRoamingDataHome;
this.extUri = !!(this.capabilities & FileSystemProviderCapabilities.PathCaseSensitive) ? extUri : extUriIgnorePathCase;
// Not required to update extUri as capabilites will not change.
// Assumption: This path always exists // Assumption: This path always exists
this._register(this.fileSystemProvider.watch(this.fileSystemUserDataHome, { recursive: false, excludes: [] })); this._register(this.fileSystemProvider.watch(this.fileSystemUserDataHome, { recursive: false, excludes: [] }));
this._register(this.fileSystemProvider.onDidChangeFile(e => this.handleFileChanges(e))); this._register(this.fileSystemProvider.onDidChangeFile(e => this.handleFileChanges(e)));
...@@ -135,21 +139,21 @@ export class FileUserDataProvider extends Disposable implements ...@@ -135,21 +139,21 @@ export class FileUserDataProvider extends Disposable implements
} }
private toFileSystemResource(userDataResource: URI): URI { private toFileSystemResource(userDataResource: URI): URI {
const relativePath = resources.relativePath(this.userDataHome, userDataResource)!; const relativePath = this.extUri.relativePath(this.userDataHome, userDataResource)!;
if (startsWith(relativePath, BACKUPS)) { if (startsWith(relativePath, BACKUPS)) {
return resources.joinPath(resources.dirname(this.fileSystemBackupsHome), relativePath); return this.extUri.joinPath(this.extUri.dirname(this.fileSystemBackupsHome), relativePath);
} }
return resources.joinPath(this.fileSystemUserDataHome, relativePath); return this.extUri.joinPath(this.fileSystemUserDataHome, relativePath);
} }
private toUserDataResource(fileSystemResource: URI): URI | null { private toUserDataResource(fileSystemResource: URI): URI | null {
if (resources.isEqualOrParent(fileSystemResource, this.fileSystemUserDataHome)) { if (this.extUri.isEqualOrParent(fileSystemResource, this.fileSystemUserDataHome)) {
const relativePath = resources.relativePath(this.fileSystemUserDataHome, fileSystemResource); const relativePath = this.extUri.relativePath(this.fileSystemUserDataHome, fileSystemResource);
return relativePath ? resources.joinPath(this.userDataHome, relativePath) : this.userDataHome; return relativePath ? this.extUri.joinPath(this.userDataHome, relativePath) : this.userDataHome;
} }
if (resources.isEqualOrParent(fileSystemResource, this.fileSystemBackupsHome)) { if (this.extUri.isEqualOrParent(fileSystemResource, this.fileSystemBackupsHome)) {
const relativePath = resources.relativePath(this.fileSystemBackupsHome, fileSystemResource); const relativePath = this.extUri.relativePath(this.fileSystemBackupsHome, fileSystemResource);
return relativePath ? resources.joinPath(this.userDataHome, BACKUPS, relativePath) : resources.joinPath(this.userDataHome, BACKUPS); return relativePath ? this.extUri.joinPath(this.userDataHome, BACKUPS, relativePath) : this.extUri.joinPath(this.userDataHome, BACKUPS);
} }
return null; return null;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册