From c385dfe391d566d00b8cd68a1bee8c894002ee25 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 16 Nov 2018 10:34:04 +0100 Subject: [PATCH] cleanup TPromise in driver.ts related to #62716 --- .../platform/driver/electron-main/driver.ts | 157 ++++++++---------- 1 file changed, 72 insertions(+), 85 deletions(-) diff --git a/src/vs/platform/driver/electron-main/driver.ts b/src/vs/platform/driver/electron-main/driver.ts index b5cfae7f8e1..e7d9049de7e 100644 --- a/src/vs/platform/driver/electron-main/driver.ts +++ b/src/vs/platform/driver/electron-main/driver.ts @@ -3,7 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { TPromise } from 'vs/base/common/winjs.base'; import { IDriver, DriverChannel, IElement, WindowDriverChannelClient, IWindowDriverRegistry, WindowDriverRegistryChannel, IWindowDriver, IDriverOptions } from 'vs/platform/driver/node/driver'; import { IWindowsMainService } from 'vs/platform/windows/electron-main/windows'; import { serve as serveNet } from 'vs/base/parts/ipc/node/ipc.net'; @@ -37,59 +36,60 @@ export class Driver implements IDriver, IWindowDriverRegistry { @IWindowsMainService private windowsService: IWindowsMainService ) { } - registerWindowDriver(windowId: number): TPromise { + async registerWindowDriver(windowId: number): Promise { this.registeredWindowIds.add(windowId); this.reloadingWindowIds.delete(windowId); this.onDidReloadingChange.fire(); - return TPromise.as(this.options); + return this.options; } - reloadWindowDriver(windowId: number): TPromise { + async reloadWindowDriver(windowId: number): Promise { this.reloadingWindowIds.add(windowId); - return TPromise.as(void 0); } - getWindowIds(): TPromise { - return TPromise.as(this.windowsService.getWindows() + async getWindowIds(): Promise { + return this.windowsService.getWindows() .map(w => w.id) - .filter(id => this.registeredWindowIds.has(id) && !this.reloadingWindowIds.has(id))); + .filter(id => this.registeredWindowIds.has(id) && !this.reloadingWindowIds.has(id)); } - capturePage(windowId: number): TPromise { - return this.whenUnfrozen(windowId).then(() => { - const window = this.windowsService.getWindowById(windowId); - const webContents = window.win.webContents; - return new TPromise(c => webContents.capturePage(image => c(image.toPNG().toString('base64')))); - }); + async capturePage(windowId: number): Promise { + await this.whenUnfrozen(windowId); + + const window = this.windowsService.getWindowById(windowId); + const webContents = window.win.webContents; + const image = await new Promise(c => webContents.capturePage(c)); + + return image.toPNG().toString('base64'); } - reloadWindow(windowId: number): TPromise { - return this.whenUnfrozen(windowId).then(() => { - const window = this.windowsService.getWindowById(windowId); - this.reloadingWindowIds.add(windowId); - this.windowsService.reload(window); - }); + async reloadWindow(windowId: number): Promise { + await this.whenUnfrozen(windowId); + + const window = this.windowsService.getWindowById(windowId); + this.reloadingWindowIds.add(windowId); + this.windowsService.reload(window); } - dispatchKeybinding(windowId: number, keybinding: string): TPromise { - return this.whenUnfrozen(windowId).then(() => { - const [first, second] = KeybindingParser.parseUserBinding(keybinding); - if (!first) { - return undefined; - } - return this._dispatchKeybinding(windowId, first).then(() => { - if (second) { - return this._dispatchKeybinding(windowId, second); - } else { - return TPromise.as(void 0); - } - }); - }); + async dispatchKeybinding(windowId: number, keybinding: string): Promise { + await this.whenUnfrozen(windowId); + + const [first, second] = KeybindingParser.parseUserBinding(keybinding); + + if (!first) { + return; + } + + await this._dispatchKeybinding(windowId, first); + + if (second) { + await this._dispatchKeybinding(windowId, second); + } } - private _dispatchKeybinding(windowId: number, keybinding: SimpleKeybinding | ScanCodeBinding): TPromise { + private async _dispatchKeybinding(windowId: number, keybinding: SimpleKeybinding | ScanCodeBinding): Promise { if (keybinding instanceof ScanCodeBinding) { - return TPromise.wrapError(new Error('ScanCodeBindings not supported')); + throw new Error('ScanCodeBindings not supported'); } const window = this.windowsService.getWindowById(windowId); @@ -124,77 +124,64 @@ export class Driver implements IDriver, IWindowDriverRegistry { webContents.sendInputEvent({ type: 'keyUp', keyCode, modifiers } as any); - return TPromise.wrap(timeout(100)); + await timeout(100); } - click(windowId: number, selector: string, xoffset?: number, yoffset?: number): TPromise { - return this.getWindowDriver(windowId).then(windowDriver => { - return windowDriver.click(selector, xoffset, yoffset); - }); + async click(windowId: number, selector: string, xoffset?: number, yoffset?: number): Promise { + const windowDriver = await this.getWindowDriver(windowId); + await windowDriver.click(selector, xoffset, yoffset); } - doubleClick(windowId: number, selector: string): TPromise { - return this.getWindowDriver(windowId).then(windowDriver => { - return windowDriver.doubleClick(selector); - }); + async doubleClick(windowId: number, selector: string): Promise { + const windowDriver = await this.getWindowDriver(windowId); + await windowDriver.doubleClick(selector); } - setValue(windowId: number, selector: string, text: string): TPromise { - return this.getWindowDriver(windowId).then(windowDriver => { - return windowDriver.setValue(selector, text); - }); + async setValue(windowId: number, selector: string, text: string): Promise { + const windowDriver = await this.getWindowDriver(windowId); + await windowDriver.setValue(selector, text); } - getTitle(windowId: number): TPromise { - return this.getWindowDriver(windowId).then(windowDriver => { - return windowDriver.getTitle(); - }); + async getTitle(windowId: number): Promise { + const windowDriver = await this.getWindowDriver(windowId); + return await windowDriver.getTitle(); } - isActiveElement(windowId: number, selector: string): TPromise { - return this.getWindowDriver(windowId).then(windowDriver => { - return windowDriver.isActiveElement(selector); - }); + async isActiveElement(windowId: number, selector: string): Promise { + const windowDriver = await this.getWindowDriver(windowId); + return await windowDriver.isActiveElement(selector); } - getElements(windowId: number, selector: string, recursive: boolean): TPromise { - return this.getWindowDriver(windowId).then(windowDriver => { - return windowDriver.getElements(selector, recursive); - }); + async getElements(windowId: number, selector: string, recursive: boolean): Promise { + const windowDriver = await this.getWindowDriver(windowId); + return await windowDriver.getElements(selector, recursive); } - typeInEditor(windowId: number, selector: string, text: string): TPromise { - return this.getWindowDriver(windowId).then(windowDriver => { - return windowDriver.typeInEditor(selector, text); - }); + async typeInEditor(windowId: number, selector: string, text: string): Promise { + const windowDriver = await this.getWindowDriver(windowId); + await windowDriver.typeInEditor(selector, text); } - getTerminalBuffer(windowId: number, selector: string): TPromise { - return this.getWindowDriver(windowId).then(windowDriver => { - return windowDriver.getTerminalBuffer(selector); - }); + async getTerminalBuffer(windowId: number, selector: string): Promise { + const windowDriver = await this.getWindowDriver(windowId); + return await windowDriver.getTerminalBuffer(selector); } - writeInTerminal(windowId: number, selector: string, text: string): TPromise { - return this.getWindowDriver(windowId).then(windowDriver => { - return windowDriver.writeInTerminal(selector, text); - }); + async writeInTerminal(windowId: number, selector: string, text: string): Promise { + const windowDriver = await this.getWindowDriver(windowId); + await windowDriver.writeInTerminal(selector, text); } - private getWindowDriver(windowId: number): TPromise { - return this.whenUnfrozen(windowId).then(() => { - const id = `window:${windowId}`; - const router = new StaticRouter(ctx => ctx === id); - const windowDriverChannel = this.windowServer.getChannel('windowDriver', router); - return new WindowDriverChannelClient(windowDriverChannel); - }); + private async getWindowDriver(windowId: number): Promise { + await this.whenUnfrozen(windowId); + + const id = `window:${windowId}`; + const router = new StaticRouter(ctx => ctx === id); + const windowDriverChannel = this.windowServer.getChannel('windowDriver', router); + return new WindowDriverChannelClient(windowDriverChannel); } - private whenUnfrozen(windowId: number): TPromise { - return TPromise.wrap(this._whenUnfrozen(windowId)); - } - - private async _whenUnfrozen(windowId: number): Promise { + private async whenUnfrozen(windowId: number): Promise { while (this.reloadingWindowIds.has(windowId)) { await toPromise(this.onDidReloadingChange.event); }