diff --git a/src/vs/platform/url/electron-browser/inactiveExtensionUrlHandler.ts b/src/vs/platform/url/electron-browser/inactiveExtensionUrlHandler.ts index f8c42720026..ffc232d2f09 100644 --- a/src/vs/platform/url/electron-browser/inactiveExtensionUrlHandler.ts +++ b/src/vs/platform/url/electron-browser/inactiveExtensionUrlHandler.ts @@ -57,56 +57,57 @@ export class ExtensionUrlHandler implements IExtensionUrlHandler, IURLHandler { ]); } - async handleURL(uri: URI): TPromise { + handleURL(uri: URI): TPromise { if (!isExtensionId(uri.authority)) { - return false; + return TPromise.as(false); } const extensionId = uri.authority; const wasHandlerAvailable = this.extensionHandlers.has(extensionId); - const extensions = await this.extensionService.getExtensions(); - const extension = extensions.filter(e => e.id === extensionId)[0]; + return this.extensionService.getExtensions().then(extensions => { + const extension = extensions.filter(e => e.id === extensionId)[0]; - if (!extension) { - return false; - } - - const result = await this.dialogService.confirm({ - message: localize('confirmUrl', "Allow an extension to open this URL?", extensionId), - detail: `${extension.displayName || extension.name} (${extensionId}) wants to open a URL:\n\n${uri.toString()}` - }); - - if (!result.confirmed) { - return true; - } - - const handler = this.extensionHandlers.get(extensionId); - if (handler) { - if (!wasHandlerAvailable) { - // forward it directly - return handler.handleURL(uri); + if (!extension) { + return TPromise.as(false); } - // let the ExtensionUrlHandler instance handle this - return TPromise.as(false); - } + return this.dialogService.confirm({ + message: localize('confirmUrl', "Allow an extension to open this URL?", extensionId), + detail: `${extension.displayName || extension.name} (${extensionId}) wants to open a URL:\n\n${uri.toString()}` + }).then(result => { - // collect URI for eventual extension activation - const timestamp = new Date().getTime(); - let uris = this.uriBuffer.get(extensionId); + if (!result.confirmed) { + return TPromise.as(true); + } - if (!uris) { - uris = []; - this.uriBuffer.set(extensionId, uris); - } + const handler = this.extensionHandlers.get(extensionId); + if (handler) { + if (!wasHandlerAvailable) { + // forward it directly + return handler.handleURL(uri); + } - uris.push({ timestamp, uri }); + // let the ExtensionUrlHandler instance handle this + return TPromise.as(false); + } - // activate the extension - await this.extensionService.activateByEvent(`onUri:${extensionId}`); + // collect URI for eventual extension activation + const timestamp = new Date().getTime(); + let uris = this.uriBuffer.get(extensionId); - return true; + if (!uris) { + uris = []; + this.uriBuffer.set(extensionId, uris); + } + + uris.push({ timestamp, uri }); + + // activate the extension + return this.extensionService.activateByEvent(`onUri:${extensionId}`) + .then(() => true); + }); + }); } registerExtensionHandler(extensionId: string, handler: IURLHandler): void { diff --git a/src/vs/platform/windows/electron-main/windowsService.ts b/src/vs/platform/windows/electron-main/windowsService.ts index d9bbd5c7c07..b922375cb9e 100644 --- a/src/vs/platform/windows/electron-main/windowsService.ts +++ b/src/vs/platform/windows/electron-main/windowsService.ts @@ -530,21 +530,21 @@ export class WindowsService implements IWindowsService, IURLHandler, IDisposable return TPromise.as(null); } - async handleURL(uri: URI): TPromise { + handleURL(uri: URI): TPromise { // Catch file URLs if (uri.authority === Schemas.file && !!uri.path) { - return this.openFileForURI(URI.file(uri.fsPath)); + this.openFileForURI(URI.file(uri.fsPath)); + return TPromise.as(true); } - return false; + return TPromise.as(false); } - private async openFileForURI(uri: URI): TPromise { + private openFileForURI(uri: URI): void { const cli = assign(Object.create(null), this.environmentService.args, { goto: true }); const pathsToOpen = [uri.fsPath]; this.windowsMainService.open({ context: OpenContext.API, cli, pathsToOpen }); - return true; } dispose(): void { diff --git a/src/vs/workbench/api/electron-browser/mainThreadSCM.ts b/src/vs/workbench/api/electron-browser/mainThreadSCM.ts index 6bd43da77dc..8ee8daaee7a 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadSCM.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadSCM.ts @@ -401,17 +401,17 @@ export class MainThreadSCM implements MainThreadSCMShape { } if (enabled) { - repository.input.validateInput = async (value, pos): TPromise => { - const result = await this._proxy.$validateInput(sourceControlHandle, value, pos); + repository.input.validateInput = (value, pos): TPromise => { + return this._proxy.$validateInput(sourceControlHandle, value, pos).then(result => { + if (!result) { + return undefined; + } - if (!result) { - return undefined; - } - - return { - message: result[0], - type: result[1] - }; + return { + message: result[0], + type: result[1] + }; + }); }; } else { repository.input.validateInput = () => TPromise.as(undefined); diff --git a/src/vs/workbench/api/node/extHostSCM.ts b/src/vs/workbench/api/node/extHostSCM.ts index b008b72b086..eeafdc4a416 100644 --- a/src/vs/workbench/api/node/extHostSCM.ts +++ b/src/vs/workbench/api/node/extHostSCM.ts @@ -237,14 +237,14 @@ class ExtHostSourceControlResourceGroup implements vscode.SourceControlResourceG return this._resourceStatesMap.get(handle); } - async $executeResourceCommand(handle: number): TPromise { + $executeResourceCommand(handle: number): TPromise { const command = this._resourceStatesCommandsMap.get(handle); if (!command) { - return; + return TPromise.as(null); } - await this._commands.executeCommand(command.command, ...command.arguments); + return asWinJsPromise(_ => this._commands.executeCommand(command.command, ...command.arguments)); } _takeResourceStateSnapshot(): SCMRawResourceSplice[] { @@ -568,25 +568,25 @@ export class ExtHostSCM implements ExtHostSCMShape { return TPromise.as(null); } - async $executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number): TPromise { + $executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number): TPromise { this.logService.trace('ExtHostSCM#$executeResourceCommand', sourceControlHandle, groupHandle, handle); const sourceControl = this._sourceControls.get(sourceControlHandle); if (!sourceControl) { - return; + return TPromise.as(null); } const group = sourceControl.getResourceGroup(groupHandle); if (!group) { - return; + return TPromise.as(null); } - await group.$executeResourceCommand(handle); + return group.$executeResourceCommand(handle); } - async $validateInput(sourceControlHandle: number, value: string, cursorPosition: number): TPromise<[string, number] | undefined> { + $validateInput(sourceControlHandle: number, value: string, cursorPosition: number): TPromise<[string, number] | undefined> { this.logService.trace('ExtHostSCM#$validateInput', sourceControlHandle); const sourceControl = this._sourceControls.get(sourceControlHandle); @@ -599,12 +599,12 @@ export class ExtHostSCM implements ExtHostSCMShape { return TPromise.as(undefined); } - const result = await sourceControl.inputBox.validateInput(value, cursorPosition); + return asWinJsPromise(_ => Promise.resolve(sourceControl.inputBox.validateInput(value, cursorPosition))).then(result => { + if (!result) { + return TPromise.as(undefined); + } - if (!result) { - return TPromise.as(undefined); - } - - return [result.message, result.type]; + return TPromise.as<[string, number]>([result.message, result.type]); + }); } } diff --git a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts index b09e7e2b83e..7fee4c8e629 100644 --- a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts +++ b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts @@ -964,13 +964,13 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService, this.notificationService.error(err); } - async handleURL(uri: URI): TPromise { + handleURL(uri: URI): TPromise { if (!/^extension/.test(uri.path)) { - return false; + return TPromise.as(false); } this.onOpenExtensionUrl(uri); - return true; + return TPromise.as(true); } private onOpenExtensionUrl(uri: URI): void {