From d367f2f2ae044d377e369e6c67feb245d88b8eb5 Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Wed, 21 Feb 2018 15:37:53 -0800 Subject: [PATCH] Pass disable extensions as part of CLI configuration --- src/vs/code/electron-main/window.ts | 19 ++++++++----------- src/vs/code/electron-main/windows.ts | 4 ++-- src/vs/platform/windows/common/windows.ts | 6 ++---- src/vs/platform/windows/common/windowsIpc.ts | 15 +++++---------- .../windows/electron-browser/windowService.ts | 9 +++------ .../windows/electron-main/windowsService.ts | 16 +++------------- src/vs/workbench/electron-browser/actions.ts | 2 +- .../workbench/test/workbenchTestServices.ts | 4 ---- 8 files changed, 24 insertions(+), 51 deletions(-) diff --git a/src/vs/code/electron-main/window.ts b/src/vs/code/electron-main/window.ts index 5c01d3f1f8a..6e1dbe926b8 100644 --- a/src/vs/code/electron-main/window.ts +++ b/src/vs/code/electron-main/window.ts @@ -482,7 +482,7 @@ export class CodeWindow implements ICodeWindow { }); } - public load(config: IWindowConfiguration, isReload?: boolean, disableExtensions?: boolean): void { + public load(config: IWindowConfiguration, isReload?: boolean): void { // If this is the first time the window is loaded, we associate the paths // directly with the window because we assume the loading will just work @@ -499,13 +499,6 @@ export class CodeWindow implements ICodeWindow { this._readyState = ReadyState.NAVIGATING; } - // Copy the config so that the change to disable-extensions is not preserved - // on another reload. - const configuration = objects.mixin({}, config); - if (disableExtensions) { - configuration['disable-extensions'] = true; - } - // Clear Document Edited if needed if (isMacintosh && this._win.isDocumentEdited()) { if (!isReload || !this.backupMainService.isHotExitEnabled()) { @@ -524,7 +517,7 @@ export class CodeWindow implements ICodeWindow { // Load URL mark('main:loadWindow'); - this._win.loadURL(this.getUrl(configuration)); + this._win.loadURL(this.getUrl(config)); // Make window visible if it did not open in N seconds because this indicates an error // Only do this when running out of sources and not when running tests @@ -539,7 +532,7 @@ export class CodeWindow implements ICodeWindow { } } - public reload(configuration?: IWindowConfiguration, cli?: ParsedArgs, disableExtensions?: boolean): void { + public reload(configuration?: IWindowConfiguration, cli?: ParsedArgs): void { // If config is not provided, copy our current one if (!configuration) { @@ -562,10 +555,14 @@ export class CodeWindow implements ICodeWindow { configuration['extensions-dir'] = cli['extensions-dir']; } + if (cli) { + configuration['disable-extensions'] = cli['disable-extensions']; + } + configuration.isInitialStartup = false; // since this is a reload // Load config - this.load(configuration, true, disableExtensions); + this.load(configuration, true); } private getUrl(windowConfiguration: IWindowConfiguration): string { diff --git a/src/vs/code/electron-main/windows.ts b/src/vs/code/electron-main/windows.ts index 4eb0ab9c85c..ce7112ed726 100644 --- a/src/vs/code/electron-main/windows.ts +++ b/src/vs/code/electron-main/windows.ts @@ -1266,12 +1266,12 @@ export class WindowsManager implements IWindowsMainService { return state; } - public reload(win: CodeWindow, cli?: ParsedArgs, disableExtensions?: boolean): void { + public reload(win: CodeWindow, cli?: ParsedArgs): void { // Only reload when the window has not vetoed this this.lifecycleService.unload(win, UnloadReason.RELOAD).done(veto => { if (!veto) { - win.reload(void 0, cli, disableExtensions); + win.reload(void 0, cli); // Emit this._onWindowReload.fire(win.id); diff --git a/src/vs/platform/windows/common/windows.ts b/src/vs/platform/windows/common/windows.ts index fe1b297c5fa..03c83a946b4 100644 --- a/src/vs/platform/windows/common/windows.ts +++ b/src/vs/platform/windows/common/windows.ts @@ -108,8 +108,7 @@ export interface IWindowsService { showSaveDialog(windowId: number, options: SaveDialogOptions): TPromise; showOpenDialog(windowId: number, options: OpenDialogOptions): TPromise; - reloadWindow(windowId: number): TPromise; - reloadWindowExtensionsDisabled(windowId: number): TPromise; + reloadWindow(windowId: number, args?: ParsedArgs): TPromise; openDevTools(windowId: number): TPromise; toggleDevTools(windowId: number): TPromise; closeWorkspace(windowId: number): TPromise; @@ -184,8 +183,7 @@ export interface IWindowService { pickFileAndOpen(options: INativeOpenDialogOptions): TPromise; pickFolderAndOpen(options: INativeOpenDialogOptions): TPromise; pickWorkspaceAndOpen(options: INativeOpenDialogOptions): TPromise; - reloadWindow(): TPromise; - reloadWindowExtensionsDisabled(): TPromise; + reloadWindow(args?: ParsedArgs): TPromise; openDevTools(): TPromise; toggleDevTools(): TPromise; closeWorkspace(): TPromise; diff --git a/src/vs/platform/windows/common/windowsIpc.ts b/src/vs/platform/windows/common/windowsIpc.ts index 7f4c21287b2..aae46542f41 100644 --- a/src/vs/platform/windows/common/windowsIpc.ts +++ b/src/vs/platform/windows/common/windowsIpc.ts @@ -13,6 +13,7 @@ import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, IWorkspaceFolde import { IRecentlyOpened } from 'vs/platform/history/common/history'; import { ICommandAction } from 'vs/platform/actions/common/actions'; import URI from 'vs/base/common/uri'; +import { ParsedArgs } from 'vs/platform/environment/common/environment'; export interface IWindowsChannel extends IChannel { call(command: 'event:onWindowOpen'): TPromise; @@ -25,8 +26,7 @@ export interface IWindowsChannel extends IChannel { call(command: 'showMessageBox', arg: [number, MessageBoxOptions]): TPromise; call(command: 'showSaveDialog', arg: [number, SaveDialogOptions]): TPromise; call(command: 'showOpenDialog', arg: [number, OpenDialogOptions]): TPromise; - call(command: 'reloadWindow', arg: number): TPromise; - call(command: 'reloadWindowExtensionsDisabled', arg: number): TPromise; + call(command: 'reloadWindow', arg: [number, ParsedArgs]): TPromise; call(command: 'toggleDevTools', arg: number): TPromise; call(command: 'closeWorkspace', arg: number): TPromise; call(command: 'createAndEnterWorkspace', arg: [number, IWorkspaceFolderCreationData[], string]): TPromise; @@ -92,8 +92,7 @@ export class WindowsChannel implements IWindowsChannel { case 'showMessageBox': return this.service.showMessageBox(arg[0], arg[1]); case 'showSaveDialog': return this.service.showSaveDialog(arg[0], arg[1]); case 'showOpenDialog': return this.service.showOpenDialog(arg[0], arg[1]); - case 'reloadWindowExtensionsDisabled': return this.service.reloadWindowExtensionsDisabled(arg); - case 'reloadWindow': return this.service.reloadWindow(arg); + case 'reloadWindow': return this.service.reloadWindow(arg[0], arg[1]); case 'openDevTools': return this.service.openDevTools(arg); case 'toggleDevTools': return this.service.toggleDevTools(arg); case 'closeWorkspace': return this.service.closeWorkspace(arg); @@ -194,12 +193,8 @@ export class WindowsChannelClient implements IWindowsService { return this.channel.call('showOpenDialog', [windowId, options]); } - reloadWindow(windowId: number): TPromise { - return this.channel.call('reloadWindow', windowId); - } - - reloadWindowExtensionsDisabled(windowId: number): TPromise { - return this.channel.call('reloadWindowExtensionsDisabled', windowId); + reloadWindow(windowId: number, args?: ParsedArgs): TPromise { + return this.channel.call('reloadWindow', [windowId, args]); } openDevTools(windowId: number): TPromise { diff --git a/src/vs/platform/windows/electron-browser/windowService.ts b/src/vs/platform/windows/electron-browser/windowService.ts index 56f566d1e9f..7e442728b50 100644 --- a/src/vs/platform/windows/electron-browser/windowService.ts +++ b/src/vs/platform/windows/electron-browser/windowService.ts @@ -11,6 +11,7 @@ import { IWindowService, IWindowsService, INativeOpenDialogOptions, IEnterWorksp import { IRecentlyOpened } from 'vs/platform/history/common/history'; import { ICommandAction } from 'vs/platform/actions/common/actions'; import { IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; +import { ParsedArgs } from 'vs/platform/environment/common/environment'; export class WindowService implements IWindowService { @@ -60,12 +61,8 @@ export class WindowService implements IWindowService { return this.windowsService.pickWorkspaceAndOpen(options); } - reloadWindow(): TPromise { - return this.windowsService.reloadWindow(this.windowId); - } - - reloadWindowExtensionsDisabled(): TPromise { - return this.windowsService.reloadWindowExtensionsDisabled(this.windowId); + reloadWindow(args?: ParsedArgs): TPromise { + return this.windowsService.reloadWindow(this.windowId, args); } openDevTools(): TPromise { diff --git a/src/vs/platform/windows/electron-main/windowsService.ts b/src/vs/platform/windows/electron-main/windowsService.ts index f38a94025ea..4afa98698bf 100644 --- a/src/vs/platform/windows/electron-main/windowsService.ts +++ b/src/vs/platform/windows/electron-main/windowsService.ts @@ -12,7 +12,7 @@ import { assign } from 'vs/base/common/objects'; import URI from 'vs/base/common/uri'; import product from 'vs/platform/node/product'; import { IWindowsService, OpenContext, INativeOpenDialogOptions, IEnterWorkspaceResult, IMessageBoxResult } from 'vs/platform/windows/common/windows'; -import { IEnvironmentService } from 'vs/platform/environment/common/environment'; +import { IEnvironmentService, ParsedArgs } from 'vs/platform/environment/common/environment'; import { shell, crashReporter, app, Menu, clipboard } from 'electron'; import Event, { chain, fromNodeEventEmitter } from 'vs/base/common/event'; import { IURLService } from 'vs/platform/url/common/url'; @@ -107,22 +107,12 @@ export class WindowsService implements IWindowsService, IDisposable { return this.windowsMainService.showOpenDialog(options, codeWindow); } - reloadWindowExtensionsDisabled(windowId: number): TPromise { - const codeWindow = this.windowsMainService.getWindowById(windowId); - - if (codeWindow) { - this.windowsMainService.reload(codeWindow, undefined, true); - } - - return TPromise.as(null); - } - - reloadWindow(windowId: number): TPromise { + reloadWindow(windowId: number, args: ParsedArgs): TPromise { this.logService.trace('windowsService#reloadWindow', windowId); const codeWindow = this.windowsMainService.getWindowById(windowId); if (codeWindow) { - this.windowsMainService.reload(codeWindow); + this.windowsMainService.reload(codeWindow, args); } return TPromise.as(null); diff --git a/src/vs/workbench/electron-browser/actions.ts b/src/vs/workbench/electron-browser/actions.ts index 4708802a2d3..38ba0708cfc 100644 --- a/src/vs/workbench/electron-browser/actions.ts +++ b/src/vs/workbench/electron-browser/actions.ts @@ -569,7 +569,7 @@ export class ReloadWindowWithExtensionsDisabledAction extends Action { } run(): TPromise { - return this.windowService.reloadWindowExtensionsDisabled().then(() => true); + return this.windowService.reloadWindow({ _: [], 'disable-extensions': true }).then(() => true); } } diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index 57194cc7b7d..30d8c9b3760 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -927,10 +927,6 @@ export class TestWindowService implements IWindowService { return TPromise.as(void 0); } - reloadWindowExtensionsDisabled(): TPromise { - return TPromise.as(void 0); - } - openDevTools(): TPromise { return TPromise.as(void 0); } -- GitLab