Skip to content

Commit ad09e3d

Browse files
authored
Merge pull request microsoft#226614 from BABA983/fix-146732
Resolve custom editor with canonical resource
2 parents 648def3 + 72dba68 commit ad09e3d

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

src/vs/workbench/api/browser/mainThreadCustomEditors.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import { ResourceWorkingCopy } from '../../services/workingCopy/common/resourceW
4444
import { IWorkingCopy, IWorkingCopyBackup, IWorkingCopySaveEvent, NO_TYPE_ID, WorkingCopyCapabilities } from '../../services/workingCopy/common/workingCopy.js';
4545
import { IWorkingCopyFileService, WorkingCopyFileEvent } from '../../services/workingCopy/common/workingCopyFileService.js';
4646
import { IWorkingCopyService } from '../../services/workingCopy/common/workingCopyService.js';
47+
import { IUriIdentityService } from '../../../platform/uriIdentity/common/uriIdentity.js';
4748

4849
const enum CustomEditorModelType {
4950
Custom,
@@ -73,6 +74,7 @@ export class MainThreadCustomEditors extends Disposable implements extHostProtoc
7374
@IEditorService private readonly _editorService: IEditorService,
7475
@IInstantiationService private readonly _instantiationService: IInstantiationService,
7576
@IWebviewWorkbenchService private readonly _webviewWorkbenchService: IWebviewWorkbenchService,
77+
@IUriIdentityService private readonly _uriIdentityService: IUriIdentityService,
7678
) {
7779
super();
7880

@@ -197,7 +199,7 @@ export class MainThreadCustomEditors extends Disposable implements extHostProtoc
197199
}
198200

199201
try {
200-
await this._proxyCustomEditors.$resolveCustomEditor(resource, handle, viewType, {
202+
await this._proxyCustomEditors.$resolveCustomEditor(this._uriIdentityService.asCanonicalUri(resource), handle, viewType, {
201203
title: webviewInput.getTitle(),
202204
contentOptions: webviewInput.webview.contentOptions,
203205
options: webviewInput.webview.options,

src/vs/workbench/contrib/customEditor/browser/customEditors.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { IUriIdentityService } from '../../../../platform/uriIdentity/common/uri
2121
import { DEFAULT_EDITOR_ASSOCIATION, EditorExtensions, GroupIdentifier, IEditorFactoryRegistry, IResourceDiffEditorInput } from '../../../common/editor.js';
2222
import { DiffEditorInput } from '../../../common/editor/diffEditorInput.js';
2323
import { EditorInput } from '../../../common/editor/editorInput.js';
24-
import { CONTEXT_ACTIVE_CUSTOM_EDITOR_ID, CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE, CustomEditorCapabilities, CustomEditorInfo, CustomEditorInfoCollection, ICustomEditorService } from '../common/customEditor.js';
24+
import { CONTEXT_ACTIVE_CUSTOM_EDITOR_ID, CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE, CustomEditorCapabilities, CustomEditorInfo, CustomEditorInfoCollection, ICustomEditorModelManager, ICustomEditorService } from '../common/customEditor.js';
2525
import { CustomEditorModelManager } from '../common/customEditorModelManager.js';
2626
import { IEditorGroup, IEditorGroupContextKeyProvider, IEditorGroupsService } from '../../../services/editor/common/editorGroupsService.js';
2727
import { IEditorResolverService, IEditorType, RegisteredEditorPriority } from '../../../services/editor/common/editorResolverService.js';
@@ -37,7 +37,7 @@ export class CustomEditorService extends Disposable implements ICustomEditorServ
3737
private readonly _editorResolverDisposables = this._register(new DisposableStore());
3838
private readonly _editorCapabilities = new Map<string, CustomEditorCapabilities>();
3939

40-
private readonly _models = new CustomEditorModelManager();
40+
private readonly _models: ICustomEditorModelManager;
4141

4242
private readonly _onDidChangeEditorTypes = this._register(new Emitter<void>());
4343
public readonly onDidChangeEditorTypes: Event<void> = this._onDidChangeEditorTypes.event;
@@ -55,6 +55,8 @@ export class CustomEditorService extends Disposable implements ICustomEditorServ
5555
) {
5656
super();
5757

58+
this._models = new CustomEditorModelManager(this.uriIdentityService);
59+
5860
this._contributedEditors = this._register(new ContributedCustomEditors(storageService));
5961
// Register the contribution points only emitting one change from the resolver
6062
this.editorResolverService.bufferChangeEvents(this.registerContributionPoints.bind(this));

src/vs/workbench/contrib/customEditor/common/customEditorModelManager.ts

+9
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,17 @@
66
import { createSingleCallFunction } from '../../../../base/common/functional.js';
77
import { IReference } from '../../../../base/common/lifecycle.js';
88
import { URI } from '../../../../base/common/uri.js';
9+
import { IUriIdentityService } from '../../../../platform/uriIdentity/common/uriIdentity.js';
910
import { ICustomEditorModel, ICustomEditorModelManager } from './customEditor.js';
1011

1112
export class CustomEditorModelManager implements ICustomEditorModelManager {
13+
private readonly _uriIdentityService: IUriIdentityService;
14+
15+
constructor(
16+
uriIdentityService: IUriIdentityService,
17+
) {
18+
this._uriIdentityService = uriIdentityService;
19+
}
1220

1321
private readonly _references = new Map<string, {
1422
readonly viewType: string;
@@ -76,6 +84,7 @@ export class CustomEditorModelManager implements ICustomEditorModelManager {
7684
}
7785

7886
private key(resource: URI, viewType: string): string {
87+
resource = this._uriIdentityService.asCanonicalUri(resource);
7988
return `${resource.toString()}@@@${viewType}`;
8089
}
8190
}

0 commit comments

Comments
 (0)