Skip to content

Commit 9c36a57

Browse files
author
Benjamin Pasero
committed
sandbox - move contextMenuService
1 parent 88ae7a4 commit 9c36a57

11 files changed

Lines changed: 50 additions & 9 deletions

File tree

build/gulpfile.vscode.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
157157
'vs/workbench/workbench.desktop.main.js',
158158
'vs/workbench/workbench.desktop.main.css',
159159
'vs/workbench/services/extensions/node/extensionHostProcess.js',
160-
'vs/code/electron-browser/workbench/preload.js',
160+
'vs/code/electron-browser/preload.js',
161161
'vs/code/electron-browser/workbench/workbench.html',
162162
'vs/code/electron-browser/workbench/workbench.js'
163163
]);

src/vs/base/electron-sandbox/globals.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ export const ipcRenderer = (window as any).vscode.ipcRenderer as {
1111
*/
1212
on(channel: string, listener: Function): void;
1313

14+
/**
15+
* Adds a one time `listener` function for the event. This `listener` is invoked
16+
* only the next time a message is sent to `channel`, after which it is removed.
17+
*/
18+
once(channel: string, listener: Function): void;
19+
1420
/**
1521
* Removes the specified `listener` from the listener array for the specified
1622
* `channel`.
@@ -32,3 +38,11 @@ export const ipcRenderer = (window as any).vscode.ipcRenderer as {
3238
*/
3339
send(channel: string, ...args: any[]): void;
3440
};
41+
42+
export const webFrame = (window as any).vscode.webFrame as {
43+
44+
/**
45+
* The current zoom factor.
46+
*/
47+
getZoomFactor(): number;
48+
};

src/vs/base/parts/contextmenu/electron-browser/contextmenu.ts renamed to src/vs/base/parts/contextmenu/electron-sandbox/contextmenu.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { ipcRenderer, Event } from 'electron';
6+
import { ipcRenderer } from 'vs/base/electron-sandbox/globals';
77
import { IContextMenuItem, ISerializableContextMenuItem, CONTEXT_MENU_CLOSE_CHANNEL, CONTEXT_MENU_CHANNEL, IPopupOptions, IContextMenuEvent } from 'vs/base/parts/contextmenu/common/contextmenu';
88

99
let contextMenuIdPool = 0;

src/vs/code/electron-browser/issue/issueReporterMain.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { EnvironmentService, INativeEnvironmentService } from 'vs/platform/envir
2727
import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService';
2828
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
2929
import { IMainProcessService } from 'vs/platform/ipc/common/mainProcessService';
30-
import { MainProcessService } from 'vs/platform/ipc/electron-browser/mainProcessService';
30+
import { MainProcessService } from 'vs/platform/ipc/electron-sandbox/mainProcessService';
3131
import { ISharedProcessService } from 'vs/platform/ipc/electron-browser/sharedProcessService';
3232
import { ISettingsSearchIssueReporterData, IssueReporterData, IssueReporterExtensionData, IssueReporterFeatures, IssueReporterStyles, IssueType } from 'vs/platform/issue/common/issue';
3333
import { getLogLevel, ILogService } from 'vs/platform/log/common/log';

src/vs/code/electron-browser/workbench/preload.js renamed to src/vs/code/electron-browser/preload.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@
77
(function () {
88
'use strict';
99

10-
const { ipcRenderer } = require('electron');
10+
const { ipcRenderer, webFrame } = require('electron');
1111

1212
// @ts-ignore
1313
window.vscode = {
1414

1515
/**
1616
* A minimal set of methods exposed from ipcRenderer
1717
* to support communication to electron-main
18+
*
19+
* @type {typeof import('../../base/electron-sandbox/globals').ipcRenderer}
1820
*/
1921
ipcRenderer: {
2022

@@ -38,6 +40,16 @@
3840
ipcRenderer.on(channel, listener);
3941
},
4042

43+
/**
44+
* @param {string} channel
45+
* @param {(event: import('electron').IpcRendererEvent, ...args: any[]) => void} listener
46+
*/
47+
once(channel, listener) {
48+
validateIPC(channel);
49+
50+
ipcRenderer.once(channel, listener);
51+
},
52+
4153
/**
4254
* @param {string} channel
4355
* @param {(event: import('electron').IpcRendererEvent, ...args: any[]) => void} listener
@@ -47,6 +59,18 @@
4759

4860
ipcRenderer.removeListener(channel, listener);
4961
}
62+
},
63+
64+
/**
65+
* Support for methods of webFrame type.
66+
*
67+
* @type {typeof import('../../base/electron-sandbox/globals').webFrame}
68+
*/
69+
webFrame: {
70+
71+
getZoomFactor() {
72+
return webFrame.getZoomFactor();
73+
}
5074
}
5175
};
5276

src/vs/code/electron-browser/processExplorer/processExplorerMain.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { ProcessExplorerStyles, ProcessExplorerData } from 'vs/platform/issue/co
1313
import * as browser from 'vs/base/browser/browser';
1414
import * as platform from 'vs/base/common/platform';
1515
import { IContextMenuItem } from 'vs/base/parts/contextmenu/common/contextmenu';
16-
import { popup } from 'vs/base/parts/contextmenu/electron-browser/contextmenu';
16+
import { popup } from 'vs/base/parts/contextmenu/electron-sandbox/contextmenu';
1717
import { ProcessItem } from 'vs/base/common/processes';
1818
import { addDisposableListener } from 'vs/base/browser/dom';
1919
import { DisposableStore } from 'vs/base/common/lifecycle';

src/vs/code/electron-main/window.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,7 @@ export class CodeWindow extends Disposable implements ICodeWindow {
779779
}
780780

781781
private doGetPreloadUrl(): string {
782-
return `${require.toUrl('vs/code/electron-browser/workbench/preload.js')}`;
782+
return require.toUrl('vs/code/electron-browser/preload.js');
783783
}
784784

785785
serializeWindowState(): IWindowState {

src/vs/platform/issue/electron-main/issueMainService.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { ILogService } from 'vs/platform/log/common/log';
1818
import { IWindowState } from 'vs/platform/windows/electron-main/windows';
1919
import { listProcesses } from 'vs/base/node/ps';
2020
import { IDialogMainService } from 'vs/platform/dialogs/electron-main/dialogs';
21+
import { URI } from 'vs/base/common/uri';
2122

2223
const DEFAULT_BACKGROUND_COLOR = '#1E1E1E';
2324

@@ -189,6 +190,7 @@ export class IssueMainService implements IIssueService {
189190
title: localize('issueReporter', "Issue Reporter"),
190191
backgroundColor: data.styles.backgroundColor || DEFAULT_BACKGROUND_COLOR,
191192
webPreferences: {
193+
preload: URI.parse(require.toUrl('vs/code/electron-browser/preload.js')).fsPath,
192194
nodeIntegration: true,
193195
enableWebSQL: false
194196
}
@@ -239,6 +241,7 @@ export class IssueMainService implements IIssueService {
239241
backgroundColor: data.styles.backgroundColor,
240242
title: localize('processExplorer', "Process Explorer"),
241243
webPreferences: {
244+
preload: URI.parse(require.toUrl('vs/code/electron-browser/preload.js')).fsPath,
242245
nodeIntegration: true,
243246
enableWebSQL: false
244247
}

src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts renamed to src/vs/workbench/services/contextmenu/electron-sandbox/contextmenuService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ import * as dom from 'vs/base/browser/dom';
99
import { IContextMenuService, IContextViewService } from 'vs/platform/contextview/browser/contextView';
1010
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
1111
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
12-
import { webFrame } from 'electron';
12+
import { webFrame } from 'vs/base/electron-sandbox/globals';
1313
import { unmnemonicLabel } from 'vs/base/common/labels';
1414
import { Event, Emitter } from 'vs/base/common/event';
1515
import { INotificationService } from 'vs/platform/notification/common/notification';
1616
import { IContextMenuDelegate, ContextSubMenu, IContextMenuEvent } from 'vs/base/browser/contextmenu';
1717
import { once } from 'vs/base/common/functional';
1818
import { Disposable } from 'vs/base/common/lifecycle';
1919
import { IContextMenuItem } from 'vs/base/parts/contextmenu/common/contextmenu';
20-
import { popup } from 'vs/base/parts/contextmenu/electron-browser/contextmenu';
20+
import { popup } from 'vs/base/parts/contextmenu/electron-sandbox/contextmenu';
2121
import { getTitleBarStyle } from 'vs/platform/windows/common/windows';
2222
import { isMacintosh } from 'vs/base/common/platform';
2323
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';

src/vs/workbench/workbench.desktop.main.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import 'vs/workbench/services/dialogs/electron-browser/dialogService';
3939
import 'vs/workbench/services/keybinding/electron-browser/nativeKeymapService';
4040
import 'vs/workbench/services/keybinding/electron-browser/keybinding.contribution';
4141
import 'vs/workbench/services/extensions/electron-browser/extensionService';
42-
import 'vs/workbench/services/contextmenu/electron-browser/contextmenuService';
4342
import 'vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService';
4443
import 'vs/workbench/services/extensionManagement/electron-browser/extensionTipsService';
4544
import 'vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl';

0 commit comments

Comments
 (0)