mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-24 20:26:08 +00:00
Fixes #8379: validate column argument of vscode.previewHtml
This commit is contained in:
@@ -72,7 +72,7 @@ suite('commands namespace tests', () => {
|
||||
let virtualDocumentUri = Uri.parse('speciale://authority/path');
|
||||
let title = 'A title';
|
||||
|
||||
return commands.executeCommand('vscode.previewHtml', virtualDocumentUri, title).then(success => {
|
||||
return commands.executeCommand('vscode.previewHtml', virtualDocumentUri, ViewColumn.Three, title).then(success => {
|
||||
assert.ok(success);
|
||||
registration.dispose();
|
||||
});
|
||||
|
||||
@@ -170,7 +170,7 @@ class ExtHostApiCommands {
|
||||
`,
|
||||
args: [
|
||||
{ name: 'uri', description: 'Uri of the resource to preview.', constraint: value => value instanceof URI || typeof value === 'string' },
|
||||
{ name: 'column', description: '(optional) Column in which to preview.' },
|
||||
{ name: 'column', description: '(optional) Column in which to preview.', constraint: value => typeof value === 'undefined' || (typeof value === 'number' && typeof types.ViewColumn[value] === 'string') },
|
||||
{ name: 'label', description: '(optional) An human readable string that is used as title for the preview.', constraint: v => typeof v === 'string' || typeof v === 'undefined' }
|
||||
]
|
||||
});
|
||||
|
||||
@@ -85,13 +85,20 @@ export class ExtHostCommands {
|
||||
if (!command) {
|
||||
return Promise.reject<T>(`Contributed command '${id}' does not exist.`);
|
||||
}
|
||||
try {
|
||||
let {callback, thisArg, description} = command;
|
||||
if (description) {
|
||||
for (let i = 0; i < description.args.length; i++) {
|
||||
|
||||
let {callback, thisArg, description} = command;
|
||||
|
||||
if (description) {
|
||||
for (let i = 0; i < description.args.length; i++) {
|
||||
try {
|
||||
validateConstraint(args[i], description.args[i].constraint);
|
||||
} catch (err) {
|
||||
return Promise.reject<T>(`Running the contributed command:'${id}' failed. Illegal argument '${description.args[i].name}' - ${description.args[i].description}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
let result = callback.apply(thisArg, args);
|
||||
return Promise.resolve(result);
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user