Error if registering an unsupported scheme for external opener

Fixes #115168
This commit is contained in:
Matt Bierner
2021-01-26 17:46:00 -08:00
parent 9421e50aa8
commit 9ee751e859
2 changed files with 10 additions and 2 deletions

View File

@@ -5,6 +5,7 @@
import { CancellationToken } from 'vs/base/common/cancellation';
import { toDisposable } from 'vs/base/common/lifecycle';
import { Schemas } from 'vs/base/common/network';
import { URI, UriComponents } from 'vs/base/common/uri';
import * as modes from 'vs/editor/common/modes';
import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions';
@@ -14,6 +15,8 @@ import { ExtHostUriOpenersShape, IMainContext, MainContext, MainThreadUriOpeners
export class ExtHostUriOpeners implements ExtHostUriOpenersShape {
private static readonly supportedSchemes = new Set<string>([Schemas.http, Schemas.https]);
private readonly _proxy: MainThreadUriOpenersShape;
private readonly _openers = new Map<string, vscode.ExternalUriOpener>();
@@ -24,7 +27,7 @@ export class ExtHostUriOpeners implements ExtHostUriOpenersShape {
this._proxy = mainContext.getProxy(MainContext.MainThreadUriOpeners);
}
registerUriOpener(
registerExternalUriOpener(
extensionId: ExtensionIdentifier,
id: string,
opener: vscode.ExternalUriOpener,
@@ -34,6 +37,11 @@ export class ExtHostUriOpeners implements ExtHostUriOpenersShape {
throw new Error(`Opener with id '${id}' already registered`);
}
const invalidScheme = metadata.schemes.find(scheme => !ExtHostUriOpeners.supportedSchemes.has(scheme));
if (invalidScheme) {
throw new Error(`Scheme '${invalidScheme}' is not supported. Only http and https are currently supported.`);
}
this._openers.set(id, opener);
this._proxy.$registerUriOpener(id, metadata.schemes, extensionId, metadata.label);