Skip to content

Commit

Permalink
Merge pull request #43707 from Microsoft/rmacfarlane/disable-extensions
Browse files Browse the repository at this point in the history
Add action to reload the window with disableExtensions set, #43156
  • Loading branch information
bpasero authored Feb 22, 2018
2 parents eb3d867 + 257e865 commit eb5e41c
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 15 deletions.
3 changes: 1 addition & 2 deletions src/vs/code/electron-browser/issue/issueReporterMain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -356,8 +356,7 @@ export class IssueReporter extends Disposable {

const disableExtensions = document.getElementById('disableExtensions');
disableExtensions.addEventListener('click', () => {
ipcRenderer.send('workbenchCommand', 'workbench.extensions.action.disableAll');
ipcRenderer.send('workbenchCommand', 'workbench.action.reloadWindow');
ipcRenderer.send('workbenchCommand', 'workbench.action.reloadWindowWithExtensionsDisabled');
});

disableExtensions.addEventListener('keydown', (e) => {
Expand Down
1 change: 1 addition & 0 deletions src/vs/code/electron-browser/issue/media/issueReporter.css
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@ input:disabled {
.workbenchCommand {
cursor: pointer;
}

.workbenchCommand:disabled {
color: #868e96;
cursor: default
Expand Down
4 changes: 4 additions & 0 deletions src/vs/code/electron-main/window.ts
Original file line number Diff line number Diff line change
Expand Up @@ -555,6 +555,10 @@ 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
Expand Down
4 changes: 2 additions & 2 deletions src/vs/platform/windows/common/windows.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ export interface IWindowsService {
showSaveDialog(windowId: number, options: SaveDialogOptions): TPromise<string>;
showOpenDialog(windowId: number, options: OpenDialogOptions): TPromise<string[]>;

reloadWindow(windowId: number): TPromise<void>;
reloadWindow(windowId: number, args?: ParsedArgs): TPromise<void>;
openDevTools(windowId: number): TPromise<void>;
toggleDevTools(windowId: number): TPromise<void>;
closeWorkspace(windowId: number): TPromise<void>;
Expand Down Expand Up @@ -183,7 +183,7 @@ export interface IWindowService {
pickFileAndOpen(options: INativeOpenDialogOptions): TPromise<void>;
pickFolderAndOpen(options: INativeOpenDialogOptions): TPromise<void>;
pickWorkspaceAndOpen(options: INativeOpenDialogOptions): TPromise<void>;
reloadWindow(): TPromise<void>;
reloadWindow(args?: ParsedArgs): TPromise<void>;
openDevTools(): TPromise<void>;
toggleDevTools(): TPromise<void>;
closeWorkspace(): TPromise<void>;
Expand Down
9 changes: 5 additions & 4 deletions src/vs/platform/windows/common/windowsIpc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<number>;
Expand All @@ -25,7 +26,7 @@ export interface IWindowsChannel extends IChannel {
call(command: 'showMessageBox', arg: [number, MessageBoxOptions]): TPromise<IMessageBoxResult>;
call(command: 'showSaveDialog', arg: [number, SaveDialogOptions]): TPromise<string>;
call(command: 'showOpenDialog', arg: [number, OpenDialogOptions]): TPromise<string[]>;
call(command: 'reloadWindow', arg: number): TPromise<void>;
call(command: 'reloadWindow', arg: [number, ParsedArgs]): TPromise<void>;
call(command: 'toggleDevTools', arg: number): TPromise<void>;
call(command: 'closeWorkspace', arg: number): TPromise<void>;
call(command: 'createAndEnterWorkspace', arg: [number, IWorkspaceFolderCreationData[], string]): TPromise<IEnterWorkspaceResult>;
Expand Down Expand Up @@ -91,7 +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 '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);
Expand Down Expand Up @@ -192,8 +193,8 @@ export class WindowsChannelClient implements IWindowsService {
return this.channel.call('showOpenDialog', [windowId, options]);
}

reloadWindow(windowId: number): TPromise<void> {
return this.channel.call('reloadWindow', windowId);
reloadWindow(windowId: number, args?: ParsedArgs): TPromise<void> {
return this.channel.call('reloadWindow', [windowId, args]);
}

openDevTools(windowId: number): TPromise<void> {
Expand Down
5 changes: 3 additions & 2 deletions src/vs/platform/windows/electron-browser/windowService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down Expand Up @@ -60,8 +61,8 @@ export class WindowService implements IWindowService {
return this.windowsService.pickWorkspaceAndOpen(options);
}

reloadWindow(): TPromise<void> {
return this.windowsService.reloadWindow(this.windowId);
reloadWindow(args?: ParsedArgs): TPromise<void> {
return this.windowsService.reloadWindow(this.windowId, args);
}

openDevTools(): TPromise<void> {
Expand Down
6 changes: 3 additions & 3 deletions src/vs/platform/windows/electron-main/windowsService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -107,12 +107,12 @@ export class WindowsService implements IWindowsService, IDisposable {
return this.windowsMainService.showOpenDialog(options, codeWindow);
}

reloadWindow(windowId: number): TPromise<void> {
reloadWindow(windowId: number, args: ParsedArgs): TPromise<void> {
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);
Expand Down
18 changes: 18 additions & 0 deletions src/vs/workbench/electron-browser/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -555,6 +555,24 @@ export class ReloadWindowAction extends Action {
}
}

export class ReloadWindowWithExtensionsDisabledAction extends Action {

static readonly ID = 'workbench.action.reloadWindowWithExtensionsDisabled';
static LABEL = nls.localize('reloadWindowWithExntesionsDisabled', "Reload Window With Extensions Disabled");

constructor(
id: string,
label: string,
@IWindowService private windowService: IWindowService
) {
super(id, label);
}

run(): TPromise<boolean> {
return this.windowService.reloadWindow({ _: [], 'disable-extensions': true }).then(() => true);
}
}

export abstract class BaseSwitchWindow extends Action {
private closeWindowAction: CloseWindowAction;

Expand Down
4 changes: 2 additions & 2 deletions src/vs/workbench/electron-browser/workbench.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ import { MenuService } from 'vs/platform/actions/common/menuService';
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { IWorkbenchActionRegistry, Extensions } from 'vs/workbench/common/actions';
import { OpenRecentAction, ToggleDevToolsAction, ReloadWindowAction, ShowPreviousWindowTab, MoveWindowTabToNewWindow, MergeAllWindowTabs, ShowNextWindowTab, ToggleWindowTabsBar } from 'vs/workbench/electron-browser/actions';
import { OpenRecentAction, ToggleDevToolsAction, ReloadWindowAction, ShowPreviousWindowTab, MoveWindowTabToNewWindow, MergeAllWindowTabs, ShowNextWindowTab, ToggleWindowTabsBar, ReloadWindowWithExtensionsDisabledAction } from 'vs/workbench/electron-browser/actions';
import { KeyMod, KeyCode } from 'vs/base/common/keyCodes';
import { IWorkspaceEditingService } from 'vs/workbench/services/workspace/common/workspaceEditing';
import { WorkspaceEditingService } from 'vs/workbench/services/workspace/node/workspaceEditingService';
Expand Down Expand Up @@ -418,7 +418,7 @@ export class Workbench implements IPartService {
workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(ReloadWindowAction, ReloadWindowAction.ID, ReloadWindowAction.LABEL, isDeveloping ? { primary: KeyMod.CtrlCmd | KeyCode.KEY_R } : void 0), 'Reload Window');
workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(ToggleDevToolsAction, ToggleDevToolsAction.ID, ToggleDevToolsAction.LABEL, isDeveloping ? { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_I, mac: { primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KEY_I } } : void 0), 'Developer: Toggle Developer Tools', localize('developer', "Developer"));
workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(OpenRecentAction, OpenRecentAction.ID, OpenRecentAction.LABEL, { primary: isDeveloping ? null : KeyMod.CtrlCmd | KeyCode.KEY_R, mac: { primary: KeyMod.WinCtrl | KeyCode.KEY_R } }), 'File: Open Recent...', localize('file', "File"));

workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(ReloadWindowWithExtensionsDisabledAction, ReloadWindowWithExtensionsDisabledAction.ID, ReloadWindowWithExtensionsDisabledAction.LABEL), 'Reload Window Without Extensions');
// Actions for macOS native tabs management (only when enabled)
const windowConfig = this.configurationService.getValue<IWindowConfiguration>();
if (windowConfig && windowConfig.window && windowConfig.window.nativeTabs) {
Expand Down

0 comments on commit eb5e41c

Please sign in to comment.