From 1f199ff7784b0fe5f23dfdf2a4e7671dff92f00d Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 4 Nov 2016 11:00:10 +0100 Subject: [PATCH] ipc: remove vscode:openExternal #10587 --- src/vs/code/electron-main/windows.ts | 8 +------ src/vs/platform/windows/common/windows.ts | 4 ++++ src/vs/platform/windows/common/windowsIpc.ts | 22 ++++++++++++------- .../windows/electron-main/windowsService.ts | 5 +++++ src/vs/workbench/electron-browser/window.ts | 7 +----- 5 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/vs/code/electron-main/windows.ts b/src/vs/code/electron-main/windows.ts index 2fe45b20603..b4a29061607 100644 --- a/src/vs/code/electron-main/windows.ts +++ b/src/vs/code/electron-main/windows.ts @@ -18,7 +18,7 @@ import { EventEmitter } from 'events'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { IStorageService } from 'vs/code/electron-main/storage'; import { IPath, VSCodeWindow, ReadyState, IWindowConfiguration, IWindowState as ISingleWindowState, defaultWindowState, IWindowSettings } from 'vs/code/electron-main/window'; -import { ipcMain as ipc, app, screen, crashReporter, BrowserWindow, dialog, shell } from 'electron'; +import { ipcMain as ipc, app, screen, crashReporter, BrowserWindow, dialog } from 'electron'; import { IPathWithLineAndColumn, parseLineAndColumnAware } from 'vs/code/electron-main/paths'; import { ILifecycleService } from 'vs/code/electron-main/lifecycle'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -255,12 +255,6 @@ export class WindowsManager implements IWindowsMainService, IWindowEventService } }); - ipc.on('vscode:openExternal', (event, url: string) => { - this.logService.log('IPC#vscode-openExternal'); - - shell.openExternal(url); - }); - this.updateService.on('update-downloaded', (update: IUpdate) => { this.sendToFocused('vscode:telemetry', { eventName: 'update:downloaded', data: { version: update.version } }); diff --git a/src/vs/platform/windows/common/windows.ts b/src/vs/platform/windows/common/windows.ts index 200f7303251..4a246486d04 100644 --- a/src/vs/platform/windows/common/windows.ts +++ b/src/vs/platform/windows/common/windows.ts @@ -39,6 +39,10 @@ export interface IWindowsService { // TODO@joao: what? closeExtensionHostWindow(extensionDevelopmentPath: string): TPromise; showItemInFolder(path: string): TPromise; + + // TODO: this needs to be handled from browser process to prevent + // foreground ordering issues on Windows + openExternal(url: string): TPromise; } export const IWindowService = createDecorator('windowService'); diff --git a/src/vs/platform/windows/common/windowsIpc.ts b/src/vs/platform/windows/common/windowsIpc.ts index 3f73ca7f9f2..41c4ed548d7 100644 --- a/src/vs/platform/windows/common/windowsIpc.ts +++ b/src/vs/platform/windows/common/windowsIpc.ts @@ -10,9 +10,9 @@ import { IChannel } from 'vs/base/parts/ipc/common/ipc'; import { IWindowsService } from './windows'; export interface IWindowsChannel extends IChannel { - call(command: 'openFileFolderPicker', args: [number, boolean]): TPromise; - call(command: 'openFilePicker', args: [number, boolean, string]): TPromise; - call(command: 'openFolderPicker', args: [number, boolean]): TPromise; + call(command: 'openFileFolderPicker', arg: [number, boolean]): TPromise; + call(command: 'openFilePicker', arg: [number, boolean, string]): TPromise; + call(command: 'openFolderPicker', arg: [number, boolean]): TPromise; call(command: 'reloadWindow', arg: number): TPromise; call(command: 'toggleDevTools', arg: number): TPromise; call(command: 'closeFolder', arg: number): TPromise; @@ -20,15 +20,16 @@ export interface IWindowsChannel extends IChannel { call(command: 'setRepresentedFilename', arg: [number, string]): TPromise; call(command: 'getRecentlyOpen', arg: number): TPromise<{ files: string[]; folders: string[]; }>; call(command: 'focusWindow', arg: number): TPromise; - call(command: 'setDocumentEdited', args: [number, boolean]): TPromise; - call(command: 'toggleMenuBar', args: number): TPromise; + call(command: 'setDocumentEdited', arg: [number, boolean]): TPromise; + call(command: 'toggleMenuBar', arg: number): TPromise; call(command: 'windowOpen', arg: [string[], boolean]): TPromise; call(command: 'openNewWindow'): TPromise; call(command: 'showWindow', arg: number): TPromise; call(command: 'getWindows'): TPromise<{ id: number; path: string; title: string; }[]>; - call(command: 'log', args: [string, string[]]): TPromise; - call(command: 'closeExtensionHostWindow', args: string): TPromise; - call(command: 'showItemInFolder', args: string): TPromise; + call(command: 'log', arg: [string, string[]]): TPromise; + call(command: 'closeExtensionHostWindow', arg: string): TPromise; + call(command: 'showItemInFolder', arg: string): TPromise; + call(command: 'openExternal', arg: string): TPromise; call(command: string, arg?: any): TPromise; } @@ -58,6 +59,7 @@ export class WindowsChannel implements IWindowsChannel { case 'log': return this.service.log(arg[0], arg[1]); case 'closeExtensionHostWindow': return this.service.closeExtensionHostWindow(arg); case 'showItemInFolder': return this.service.showItemInFolder(arg); + case 'openExternal': return this.service.openExternal(arg); } } } @@ -147,4 +149,8 @@ export class WindowsChannelClient implements IWindowsService { showItemInFolder(path: string): TPromise { return this.channel.call('showItemInFolder', path); } + + openExternal(url: string): TPromise { + return this.channel.call('openExternal', url); + } } \ No newline at end of file diff --git a/src/vs/platform/windows/electron-main/windowsService.ts b/src/vs/platform/windows/electron-main/windowsService.ts index 4094cef4839..8baa1ece7a2 100644 --- a/src/vs/platform/windows/electron-main/windowsService.ts +++ b/src/vs/platform/windows/electron-main/windowsService.ts @@ -182,4 +182,9 @@ export class WindowsService implements IWindowsService { shell.showItemInFolder(path); return TPromise.as(null); } + + openExternal(url: string): TPromise { + shell.openExternal(url); + return TPromise.as(null); + } } \ No newline at end of file diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts index 65bf61daf8c..e1f0d0bc282 100644 --- a/src/vs/workbench/electron-browser/window.ts +++ b/src/vs/workbench/electron-browser/window.ts @@ -121,8 +121,7 @@ export class ElectronWindow { // Handle window.open() calls const $this = this; (window).open = function (url: string, target: string, features: string, replace: boolean) { - $this.openExternal(url); - + $this.windowsService.openExternal(url); return null; }; } @@ -157,8 +156,4 @@ export class ElectronWindow { focus(): TPromise { return this.windowService.focusWindow(); } - - public openExternal(url: string): void { - ipc.send('vscode:openExternal', url); // handled from browser process to prevent foreground ordering issues on Windows - } } \ No newline at end of file -- GitLab