mirror of
https://github.com/Microsoft/vscode
synced 2024-08-28 21:39:43 +00:00
update to electron 6.0.x (#81644)
* update to electron 6.0.x * chore: bump electron@6.0.12
This commit is contained in:
parent
41db44ff34
commit
23956cc5e2
2
.yarnrc
2
.yarnrc
|
@ -1,3 +1,3 @@
|
||||||
disturl "https://atom.io/download/electron"
|
disturl "https://atom.io/download/electron"
|
||||||
target "4.2.10"
|
target "6.0.12"
|
||||||
runtime "electron"
|
runtime "electron"
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"git": {
|
"git": {
|
||||||
"name": "chromium",
|
"name": "chromium",
|
||||||
"repositoryUrl": "https://chromium.googlesource.com/chromium/src",
|
"repositoryUrl": "https://chromium.googlesource.com/chromium/src",
|
||||||
"commitHash": "c6a08e5368de4352903e702cde750b33239a50ab"
|
"commitHash": "91f08db83c2ce8c722ddf0911ead8f7c473bedfa"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"licenseDetail": [
|
"licenseDetail": [
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||||
],
|
],
|
||||||
"isOnlyProductionDependency": true,
|
"isOnlyProductionDependency": true,
|
||||||
"version": "69.0.3497.128"
|
"version": "76.0.3809.146"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"component": {
|
"component": {
|
||||||
|
@ -48,11 +48,11 @@
|
||||||
"git": {
|
"git": {
|
||||||
"name": "nodejs",
|
"name": "nodejs",
|
||||||
"repositoryUrl": "https://github.com/nodejs/node",
|
"repositoryUrl": "https://github.com/nodejs/node",
|
||||||
"commitHash": "8c70b2084ce5f76ea1e3b3c4ccdeee4483fe338b"
|
"commitHash": "64219741218aa87e259cf8257596073b8e747f0a"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"isOnlyProductionDependency": true,
|
"isOnlyProductionDependency": true,
|
||||||
"version": "10.11.0"
|
"version": "12.4.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"component": {
|
"component": {
|
||||||
|
@ -60,12 +60,12 @@
|
||||||
"git": {
|
"git": {
|
||||||
"name": "electron",
|
"name": "electron",
|
||||||
"repositoryUrl": "https://github.com/electron/electron",
|
"repositoryUrl": "https://github.com/electron/electron",
|
||||||
"commitHash": "4e4c7527c63fcf27dffaeb58bde996b8d859c0ed"
|
"commitHash": "1e50380fab37f407c4d357e1e30ecbc3d5a703b8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"isOnlyProductionDependency": true,
|
"isOnlyProductionDependency": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"version": "4.2.10"
|
"version": "6.0.12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"component": {
|
"component": {
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
disturl "http://nodejs.org/dist"
|
disturl "http://nodejs.org/dist"
|
||||||
target "10.11.0"
|
target "12.4.0"
|
||||||
runtime "node"
|
runtime "node"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
Name=@@NAME_LONG@@ - URL Handler
|
Name=@@NAME_LONG@@ - URL Handler
|
||||||
Comment=Code Editing. Redefined.
|
Comment=Code Editing. Redefined.
|
||||||
GenericName=Text Editor
|
GenericName=Text Editor
|
||||||
Exec=@@EXEC@@ --open-url %U
|
Exec=@@EXEC@@ --no-sandbox --open-url %U
|
||||||
Icon=@@ICON@@
|
Icon=@@ICON@@
|
||||||
Type=Application
|
Type=Application
|
||||||
NoDisplay=true
|
NoDisplay=true
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
Name=@@NAME_LONG@@
|
Name=@@NAME_LONG@@
|
||||||
Comment=Code Editing. Redefined.
|
Comment=Code Editing. Redefined.
|
||||||
GenericName=Text Editor
|
GenericName=Text Editor
|
||||||
Exec=@@EXEC@@ --unity-launch %F
|
Exec=@@EXEC@@ --no-sandbox --unity-launch %F
|
||||||
Icon=@@ICON@@
|
Icon=@@ICON@@
|
||||||
Type=Application
|
Type=Application
|
||||||
StartupNotify=false
|
StartupNotify=false
|
||||||
|
@ -14,5 +14,5 @@ Keywords=vscode;
|
||||||
|
|
||||||
[Desktop Action new-empty-window]
|
[Desktop Action new-empty-window]
|
||||||
Name=New Empty Window
|
Name=New Empty Window
|
||||||
Exec=@@EXEC@@ --new-window %F
|
Exec=@@EXEC@@ --no-sandbox --new-window %F
|
||||||
Icon=@@ICON@@
|
Icon=@@ICON@@
|
||||||
|
|
|
@ -8,7 +8,7 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
else
|
else
|
||||||
ROOT=$(dirname $(dirname $(readlink -f $0)))
|
ROOT=$(dirname $(dirname $(readlink -f $0)))
|
||||||
VSCODEUSERDATADIR=`mktemp -d 2>/dev/null`
|
VSCODEUSERDATADIR=`mktemp -d 2>/dev/null`
|
||||||
LINUX_NO_SANDBOX=""
|
LINUX_NO_SANDBOX="--no-sandbox" # Electron 6 introduces a chrome-sandbox that requires root to run. This can fail. Disable sandbox via --no-sandbox.
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $ROOT
|
cd $ROOT
|
||||||
|
|
|
@ -34,5 +34,5 @@ else
|
||||||
cd $ROOT ; \
|
cd $ROOT ; \
|
||||||
ELECTRON_ENABLE_LOGGING=1 \
|
ELECTRON_ENABLE_LOGGING=1 \
|
||||||
"$CODE" \
|
"$CODE" \
|
||||||
test/electron/index.js "$@"
|
test/electron/index.js --no-sandbox "$@" # Electron 6 introduces a chrome-sandbox that requires root to run. This can fail. Disable sandbox via --no-sandbox.
|
||||||
fi
|
fi
|
||||||
|
|
18
src/bootstrap.js
vendored
18
src/bootstrap.js
vendored
|
@ -21,6 +21,7 @@ process.on('SIGPIPE', () => {
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region Add support for redirecting the loading of node modules
|
//#region Add support for redirecting the loading of node modules
|
||||||
|
|
||||||
exports.injectNodeModuleLookupPath = function (injectPath) {
|
exports.injectNodeModuleLookupPath = function (injectPath) {
|
||||||
if (!injectPath) {
|
if (!injectPath) {
|
||||||
throw new Error('Missing injectPath');
|
throw new Error('Missing injectPath');
|
||||||
|
@ -36,10 +37,8 @@ exports.injectNodeModuleLookupPath = function (injectPath) {
|
||||||
const originalResolveLookupPaths = Module._resolveLookupPaths;
|
const originalResolveLookupPaths = Module._resolveLookupPaths;
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
Module._resolveLookupPaths = function (moduleName, parent, newReturn) {
|
Module._resolveLookupPaths = function (moduleName, parent) {
|
||||||
const result = originalResolveLookupPaths(moduleName, parent, newReturn);
|
const paths = originalResolveLookupPaths(moduleName, parent);
|
||||||
|
|
||||||
const paths = newReturn ? result : result[1];
|
|
||||||
for (let i = 0, len = paths.length; i < len; i++) {
|
for (let i = 0, len = paths.length; i < len; i++) {
|
||||||
if (paths[i] === nodeModulesPath) {
|
if (paths[i] === nodeModulesPath) {
|
||||||
paths.splice(i, 0, injectPath);
|
paths.splice(i, 0, injectPath);
|
||||||
|
@ -47,7 +46,7 @@ exports.injectNodeModuleLookupPath = function (injectPath) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return paths;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
//#endregion
|
//#endregion
|
||||||
|
@ -71,11 +70,10 @@ exports.enableASARSupport = function (nodeModulesPath) {
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const originalResolveLookupPaths = Module._resolveLookupPaths;
|
const originalResolveLookupPaths = Module._resolveLookupPaths;
|
||||||
// @ts-ignore
|
|
||||||
Module._resolveLookupPaths = function (request, parent, newReturn) {
|
|
||||||
const result = originalResolveLookupPaths(request, parent, newReturn);
|
|
||||||
|
|
||||||
const paths = newReturn ? result : result[1];
|
// @ts-ignore
|
||||||
|
Module._resolveLookupPaths = function (request, parent) {
|
||||||
|
const paths = originalResolveLookupPaths(request, parent);
|
||||||
for (let i = 0, len = paths.length; i < len; i++) {
|
for (let i = 0, len = paths.length; i < len; i++) {
|
||||||
if (paths[i] === NODE_MODULES_PATH) {
|
if (paths[i] === NODE_MODULES_PATH) {
|
||||||
paths.splice(i, 0, NODE_MODULES_ASAR_PATH);
|
paths.splice(i, 0, NODE_MODULES_ASAR_PATH);
|
||||||
|
@ -83,7 +81,7 @@ exports.enableASARSupport = function (nodeModulesPath) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return paths;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
|
@ -19,7 +19,7 @@ const paths = require('./paths');
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const product = require('../product.json');
|
const product = require('../product.json');
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const app = require('electron').app;
|
const { app, protocol } = require('electron');
|
||||||
|
|
||||||
// Enable portable support
|
// Enable portable support
|
||||||
const portable = bootstrap.configurePortable();
|
const portable = bootstrap.configurePortable();
|
||||||
|
@ -35,6 +35,11 @@ app.setPath('userData', userDataPath);
|
||||||
// Update cwd based on environment and platform
|
// Update cwd based on environment and platform
|
||||||
setCurrentWorkingDirectory();
|
setCurrentWorkingDirectory();
|
||||||
|
|
||||||
|
// Register custom schemes with privileges
|
||||||
|
protocol.registerSchemesAsPrivileged([
|
||||||
|
{ scheme: 'vscode-resource', privileges: { secure: true, supportFetchAPI: true, corsEnabled: true } }
|
||||||
|
]);
|
||||||
|
|
||||||
// Global app listeners
|
// Global app listeners
|
||||||
registerListeners();
|
registerListeners();
|
||||||
|
|
||||||
|
|
1761
src/typings/electron.d.ts
vendored
1761
src/typings/electron.d.ts
vendored
File diff suppressed because it is too large
Load diff
|
@ -3,7 +3,7 @@
|
||||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { Menu, MenuItem, BrowserWindow, ipcMain, Event as IpcMainEvent } from 'electron';
|
import { Menu, MenuItem, BrowserWindow, ipcMain, IpcMainEvent } from 'electron';
|
||||||
import { ISerializableContextMenuItem, CONTEXT_MENU_CLOSE_CHANNEL, CONTEXT_MENU_CHANNEL, IPopupOptions } from 'vs/base/parts/contextmenu/common/contextmenu';
|
import { ISerializableContextMenuItem, CONTEXT_MENU_CLOSE_CHANNEL, CONTEXT_MENU_CHANNEL, IPopupOptions } from 'vs/base/parts/contextmenu/common/contextmenu';
|
||||||
|
|
||||||
export function registerContextMenuListener(): void {
|
export function registerContextMenuListener(): void {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { app, ipcMain as ipc, systemPreferences, shell, Event, contentTracing, protocol, powerMonitor, Event as IpcMainEvent, BrowserWindow } from 'electron';
|
import { app, ipcMain as ipc, systemPreferences, shell, Event, contentTracing, protocol, powerMonitor, IpcMainEvent, BrowserWindow } from 'electron';
|
||||||
import { IProcessEnvironment, isWindows, isMacintosh } from 'vs/base/common/platform';
|
import { IProcessEnvironment, isWindows, isMacintosh } from 'vs/base/common/platform';
|
||||||
import { WindowsMainService } from 'vs/platform/windows/electron-main/windowsMainService';
|
import { WindowsMainService } from 'vs/platform/windows/electron-main/windowsMainService';
|
||||||
import { OpenContext, IWindowOpenable } from 'vs/platform/windows/common/windows';
|
import { OpenContext, IWindowOpenable } from 'vs/platform/windows/common/windows';
|
||||||
|
|
|
@ -653,7 +653,7 @@ export class CodeWindow extends Disposable implements ICodeWindow {
|
||||||
autoDetectHighContrast = false;
|
autoDetectHighContrast = false;
|
||||||
}
|
}
|
||||||
windowConfiguration.highContrast = isWindows && autoDetectHighContrast && systemPreferences.isInvertedColorScheme();
|
windowConfiguration.highContrast = isWindows && autoDetectHighContrast && systemPreferences.isInvertedColorScheme();
|
||||||
windowConfiguration.accessibilitySupport = app.isAccessibilitySupportEnabled();
|
windowConfiguration.accessibilitySupport = app.accessibilitySupportEnabled;
|
||||||
|
|
||||||
// Title style related
|
// Title style related
|
||||||
windowConfiguration.maximized = this._win.isMaximized();
|
windowConfiguration.maximized = this._win.isMaximized();
|
||||||
|
|
|
@ -14,7 +14,7 @@ import * as paths from 'vs/base/common/path';
|
||||||
import { whenDeleted, writeFileSync } from 'vs/base/node/pfs';
|
import { whenDeleted, writeFileSync } from 'vs/base/node/pfs';
|
||||||
import { findFreePort, randomPort } from 'vs/base/node/ports';
|
import { findFreePort, randomPort } from 'vs/base/node/ports';
|
||||||
import { resolveTerminalEncoding } from 'vs/base/node/encoding';
|
import { resolveTerminalEncoding } from 'vs/base/node/encoding';
|
||||||
import { isWindows } from 'vs/base/common/platform';
|
import { isWindows, isLinux } from 'vs/base/common/platform';
|
||||||
import { ProfilingSession, Target } from 'v8-inspect-profiler';
|
import { ProfilingSession, Target } from 'v8-inspect-profiler';
|
||||||
import { isString } from 'vs/base/common/types';
|
import { isString } from 'vs/base/common/types';
|
||||||
|
|
||||||
|
@ -360,6 +360,10 @@ export async function main(argv: string[]): Promise<any> {
|
||||||
options['stdio'] = 'ignore';
|
options['stdio'] = 'ignore';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isLinux) {
|
||||||
|
addArg(argv, '--no-sandbox'); // Electron 6 introduces a chrome-sandbox that requires root to run. This can fail. Disable sandbox via --no-sandbox
|
||||||
|
}
|
||||||
|
|
||||||
const child = spawn(process.execPath, argv.slice(2), options);
|
const child = spawn(process.execPath, argv.slice(2), options);
|
||||||
|
|
||||||
if (args.wait && waitMarkerFilePath) {
|
if (args.wait && waitMarkerFilePath) {
|
||||||
|
|
|
@ -4,14 +4,14 @@
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { MessageBoxOptions, SaveDialogOptions, OpenDialogOptions, dialog, FileFilter, BrowserWindow } from 'electron';
|
import { MessageBoxOptions, MessageBoxReturnValue, SaveDialogOptions, SaveDialogReturnValue, OpenDialogOptions, OpenDialogReturnValue, dialog, FileFilter, BrowserWindow } from 'electron';
|
||||||
import { Queue } from 'vs/base/common/async';
|
import { Queue } from 'vs/base/common/async';
|
||||||
import { IStateService } from 'vs/platform/state/node/state';
|
import { IStateService } from 'vs/platform/state/node/state';
|
||||||
import { isMacintosh } from 'vs/base/common/platform';
|
import { isMacintosh } from 'vs/base/common/platform';
|
||||||
import { dirname } from 'vs/base/common/path';
|
import { dirname } from 'vs/base/common/path';
|
||||||
import { normalizeNFC } from 'vs/base/common/normalization';
|
import { normalizeNFC } from 'vs/base/common/normalization';
|
||||||
import { exists } from 'vs/base/node/pfs';
|
import { exists } from 'vs/base/node/pfs';
|
||||||
import { INativeOpenDialogOptions, MessageBoxReturnValue, SaveDialogReturnValue, OpenDialogReturnValue } from 'vs/platform/dialogs/node/dialogs';
|
import { INativeOpenDialogOptions } from 'vs/platform/dialogs/node/dialogs';
|
||||||
import { withNullAsUndefined } from 'vs/base/common/types';
|
import { withNullAsUndefined } from 'vs/base/common/types';
|
||||||
import { localize } from 'vs/nls';
|
import { localize } from 'vs/nls';
|
||||||
import { WORKSPACE_FILTER } from 'vs/platform/workspaces/common/workspaces';
|
import { WORKSPACE_FILTER } from 'vs/platform/workspaces/common/workspaces';
|
||||||
|
@ -139,13 +139,11 @@ export class DialogMainService implements IDialogMainService {
|
||||||
|
|
||||||
showMessageBox(options: MessageBoxOptions, window?: BrowserWindow): Promise<MessageBoxReturnValue> {
|
showMessageBox(options: MessageBoxOptions, window?: BrowserWindow): Promise<MessageBoxReturnValue> {
|
||||||
return this.getDialogQueue(window).queue(async () => {
|
return this.getDialogQueue(window).queue(async () => {
|
||||||
return new Promise(resolve => {
|
if (window) {
|
||||||
if (window) {
|
return dialog.showMessageBox(window, options);
|
||||||
return dialog.showMessageBox(window, options, (response, checkboxChecked) => resolve({ response, checkboxChecked }));
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return dialog.showMessageBox(options);
|
return dialog.showMessageBox(options);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,17 +158,16 @@ export class DialogMainService implements IDialogMainService {
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.getDialogQueue(window).queue(async () => {
|
return this.getDialogQueue(window).queue(async () => {
|
||||||
return new Promise<SaveDialogReturnValue>(resolve => {
|
let result: SaveDialogReturnValue;
|
||||||
if (window) {
|
if (window) {
|
||||||
dialog.showSaveDialog(window, options, filePath => resolve({ filePath }));
|
result = await dialog.showSaveDialog(window, options);
|
||||||
} else {
|
} else {
|
||||||
dialog.showSaveDialog(options, filePath => resolve({ filePath }));
|
result = await dialog.showSaveDialog(options);
|
||||||
}
|
}
|
||||||
}).then(result => {
|
|
||||||
result.filePath = normalizePath(result.filePath);
|
|
||||||
|
|
||||||
return result;
|
result.filePath = normalizePath(result.filePath);
|
||||||
});
|
|
||||||
|
return result;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,17 +192,16 @@ export class DialogMainService implements IDialogMainService {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show dialog
|
// Show dialog
|
||||||
return new Promise<OpenDialogReturnValue>(resolve => {
|
let result: OpenDialogReturnValue;
|
||||||
if (window) {
|
if (window) {
|
||||||
dialog.showOpenDialog(window, options, filePaths => resolve({ filePaths }));
|
result = await dialog.showOpenDialog(window, options);
|
||||||
} else {
|
} else {
|
||||||
dialog.showOpenDialog(options, filePaths => resolve({ filePaths }));
|
result = await dialog.showOpenDialog(options);
|
||||||
}
|
}
|
||||||
}).then(result => {
|
|
||||||
result.filePaths = normalizePaths(result.filePaths);
|
|
||||||
|
|
||||||
return result;
|
result.filePaths = normalizePaths(result.filePaths);
|
||||||
});
|
|
||||||
|
return result;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,16 +13,3 @@ export interface INativeOpenDialogOptions {
|
||||||
telemetryEventName?: string;
|
telemetryEventName?: string;
|
||||||
telemetryExtraData?: ITelemetryData;
|
telemetryExtraData?: ITelemetryData;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MessageBoxReturnValue {
|
|
||||||
response: number;
|
|
||||||
checkboxChecked: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface SaveDialogReturnValue {
|
|
||||||
filePath?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface OpenDialogReturnValue {
|
|
||||||
filePaths?: string[];
|
|
||||||
}
|
|
||||||
|
|
|
@ -5,11 +5,11 @@
|
||||||
|
|
||||||
import { Event } from 'vs/base/common/event';
|
import { Event } from 'vs/base/common/event';
|
||||||
import { IWindowsMainService, ICodeWindow } from 'vs/platform/windows/electron-main/windows';
|
import { IWindowsMainService, ICodeWindow } from 'vs/platform/windows/electron-main/windows';
|
||||||
import { MessageBoxOptions, shell, OpenDevToolsOptions, SaveDialogOptions, OpenDialogOptions, CrashReporterStartOptions, crashReporter, Menu, BrowserWindow, app } from 'electron';
|
import { MessageBoxOptions, MessageBoxReturnValue, shell, OpenDevToolsOptions, SaveDialogOptions, SaveDialogReturnValue, OpenDialogOptions, OpenDialogReturnValue, CrashReporterStartOptions, crashReporter, Menu, BrowserWindow, app } from 'electron';
|
||||||
import { INativeOpenWindowOptions } from 'vs/platform/windows/node/window';
|
import { INativeOpenWindowOptions } from 'vs/platform/windows/node/window';
|
||||||
import { ILifecycleMainService } from 'vs/platform/lifecycle/electron-main/lifecycleMainService';
|
import { ILifecycleMainService } from 'vs/platform/lifecycle/electron-main/lifecycleMainService';
|
||||||
import { IOpenedWindow, OpenContext, IWindowOpenable, IOpenEmptyWindowOptions } from 'vs/platform/windows/common/windows';
|
import { IOpenedWindow, OpenContext, IWindowOpenable, IOpenEmptyWindowOptions } from 'vs/platform/windows/common/windows';
|
||||||
import { INativeOpenDialogOptions, MessageBoxReturnValue, SaveDialogReturnValue, OpenDialogReturnValue } from 'vs/platform/dialogs/node/dialogs';
|
import { INativeOpenDialogOptions } from 'vs/platform/dialogs/node/dialogs';
|
||||||
import { isMacintosh, IProcessEnvironment } from 'vs/base/common/platform';
|
import { isMacintosh, IProcessEnvironment } from 'vs/base/common/platform';
|
||||||
import { IElectronService } from 'vs/platform/electron/node/electron';
|
import { IElectronService } from 'vs/platform/electron/node/electron';
|
||||||
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
|
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { Event } from 'vs/base/common/event';
|
import { Event } from 'vs/base/common/event';
|
||||||
import { MessageBoxOptions, OpenDevToolsOptions, SaveDialogOptions, OpenDialogOptions, CrashReporterStartOptions } from 'electron';
|
import { MessageBoxOptions, MessageBoxReturnValue, OpenDevToolsOptions, SaveDialogOptions, OpenDialogOptions, OpenDialogReturnValue, SaveDialogReturnValue, CrashReporterStartOptions } from 'electron';
|
||||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { IWindowOpenable, IOpenEmptyWindowOptions, IOpenedWindow } from 'vs/platform/windows/common/windows';
|
import { IWindowOpenable, IOpenEmptyWindowOptions, IOpenedWindow } from 'vs/platform/windows/common/windows';
|
||||||
import { INativeOpenDialogOptions, MessageBoxReturnValue, SaveDialogReturnValue, OpenDialogReturnValue } from 'vs/platform/dialogs/node/dialogs';
|
import { INativeOpenDialogOptions } from 'vs/platform/dialogs/node/dialogs';
|
||||||
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
|
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
|
||||||
import { ParsedArgs } from 'vscode-minimist';
|
import { ParsedArgs } from 'vscode-minimist';
|
||||||
import { IProcessEnvironment } from 'vs/base/common/platform';
|
import { IProcessEnvironment } from 'vs/base/common/platform';
|
||||||
|
|
|
@ -7,7 +7,7 @@ import { localize } from 'vs/nls';
|
||||||
import * as objects from 'vs/base/common/objects';
|
import * as objects from 'vs/base/common/objects';
|
||||||
import { parseArgs, OPTIONS } from 'vs/platform/environment/node/argv';
|
import { parseArgs, OPTIONS } from 'vs/platform/environment/node/argv';
|
||||||
import { IIssueService, IssueReporterData, IssueReporterFeatures, ProcessExplorerData } from 'vs/platform/issue/node/issue';
|
import { IIssueService, IssueReporterData, IssueReporterFeatures, ProcessExplorerData } from 'vs/platform/issue/node/issue';
|
||||||
import { BrowserWindow, ipcMain, screen, Event as IpcMainEvent, Display, shell } from 'electron';
|
import { BrowserWindow, ipcMain, screen, IpcMainEvent, Display, shell } from 'electron';
|
||||||
import { ILaunchMainService } from 'vs/platform/launch/electron-main/launchMainService';
|
import { ILaunchMainService } from 'vs/platform/launch/electron-main/launchMainService';
|
||||||
import { PerformanceInfo, isRemoteDiagnosticError } from 'vs/platform/diagnostics/common/diagnostics';
|
import { PerformanceInfo, isRemoteDiagnosticError } from 'vs/platform/diagnostics/common/diagnostics';
|
||||||
import { IDiagnosticsService } from 'vs/platform/diagnostics/node/diagnosticsService';
|
import { IDiagnosticsService } from 'vs/platform/diagnostics/node/diagnosticsService';
|
||||||
|
|
|
@ -219,7 +219,7 @@ export class LaunchMainService implements ILaunchMainService {
|
||||||
mainPID: process.pid,
|
mainPID: process.pid,
|
||||||
mainArguments: process.argv.slice(1),
|
mainArguments: process.argv.slice(1),
|
||||||
windows,
|
windows,
|
||||||
screenReader: !!app.isAccessibilitySupportEnabled(),
|
screenReader: !!app.accessibilitySupportEnabled,
|
||||||
gpuFeatureStatus: app.getGPUFeatureStatus()
|
gpuFeatureStatus: app.getGPUFeatureStatus()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
import * as nls from 'vs/nls';
|
import * as nls from 'vs/nls';
|
||||||
import { isMacintosh, language } from 'vs/base/common/platform';
|
import { isMacintosh, language } from 'vs/base/common/platform';
|
||||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||||
import { app, shell, Menu, MenuItem, BrowserWindow, MenuItemConstructorOptions, WebContents, Event, Event as KeyboardEvent } from 'electron';
|
import { app, shell, Menu, MenuItem, BrowserWindow, MenuItemConstructorOptions, WebContents, Event, KeyboardEvent } from 'electron';
|
||||||
import { OpenContext, IRunActionInWindowRequest, getTitleBarStyle, IRunKeybindingInWindowRequest, IWindowOpenable } from 'vs/platform/windows/common/windows';
|
import { OpenContext, IRunActionInWindowRequest, getTitleBarStyle, IRunKeybindingInWindowRequest, IWindowOpenable } from 'vs/platform/windows/common/windows';
|
||||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||||
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
||||||
|
@ -361,7 +361,7 @@ export class Menubar {
|
||||||
const servicesMenu = new Menu();
|
const servicesMenu = new Menu();
|
||||||
const services = new MenuItem({ label: nls.localize('mServices', "Services"), role: 'services', submenu: servicesMenu });
|
const services = new MenuItem({ label: nls.localize('mServices', "Services"), role: 'services', submenu: servicesMenu });
|
||||||
const hide = new MenuItem({ label: nls.localize('mHide', "Hide {0}", product.nameLong), role: 'hide', accelerator: 'Command+H' });
|
const hide = new MenuItem({ label: nls.localize('mHide', "Hide {0}", product.nameLong), role: 'hide', accelerator: 'Command+H' });
|
||||||
const hideOthers = new MenuItem({ label: nls.localize('mHideOthers', "Hide Others"), role: 'hideothers', accelerator: 'Command+Alt+H' });
|
const hideOthers = new MenuItem({ label: nls.localize('mHideOthers', "Hide Others"), role: 'hideOthers', accelerator: 'Command+Alt+H' });
|
||||||
const showAll = new MenuItem({ label: nls.localize('mShowAll', "Show All"), role: 'unhide' });
|
const showAll = new MenuItem({ label: nls.localize('mShowAll', "Show All"), role: 'unhide' });
|
||||||
const quit = new MenuItem(this.likeAction('workbench.action.quit', {
|
const quit = new MenuItem(this.likeAction('workbench.action.quit', {
|
||||||
label: nls.localize('miQuit', "Quit {0}", product.nameLong), click: () => {
|
label: nls.localize('miQuit', "Quit {0}", product.nameLong), click: () => {
|
||||||
|
|
|
@ -636,7 +636,7 @@ export class SaveExtensionHostProfileAction extends Action {
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!picked || !picked.filePath) {
|
if (!picked || !picked.filePath || picked.canceled) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,15 +13,6 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
hasRegistered = true;
|
hasRegistered = true;
|
||||||
|
|
||||||
// @ts-ignore
|
|
||||||
require('electron').webFrame.registerURLSchemeAsPrivileged('vscode-resource', {
|
|
||||||
secure: true,
|
|
||||||
bypassCSP: false,
|
|
||||||
allowServiceWorkers: false,
|
|
||||||
supportFetchAPI: true,
|
|
||||||
corsEnabled: true
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
}());
|
}());
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,7 @@ export class FileDialogService extends AbstractFileDialogService implements IFil
|
||||||
return this.pickFileToSaveSimplified(schema, options);
|
return this.pickFileToSaveSimplified(schema, options);
|
||||||
} else {
|
} else {
|
||||||
const result = await this.electronService.showSaveDialog(this.toNativeSaveDialogOptions(options));
|
const result = await this.electronService.showSaveDialog(this.toNativeSaveDialogOptions(options));
|
||||||
if (result && result.filePath) {
|
if (result && !result.canceled && result.filePath) {
|
||||||
return URI.file(result.filePath);
|
return URI.file(result.filePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -134,7 +134,7 @@ export class FileDialogService extends AbstractFileDialogService implements IFil
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = await this.electronService.showSaveDialog(this.toNativeSaveDialogOptions(options));
|
const result = await this.electronService.showSaveDialog(this.toNativeSaveDialogOptions(options));
|
||||||
if (result && result.filePath) {
|
if (result && !result.canceled && result.filePath) {
|
||||||
return URI.file(result.filePath);
|
return URI.file(result.filePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ import { IProductService } from 'vs/platform/product/common/productService';
|
||||||
import product from 'vs/platform/product/common/product';
|
import product from 'vs/platform/product/common/product';
|
||||||
import { IHostService } from 'vs/workbench/services/host/browser/host';
|
import { IHostService } from 'vs/workbench/services/host/browser/host';
|
||||||
import { IElectronService } from 'vs/platform/electron/node/electron';
|
import { IElectronService } from 'vs/platform/electron/node/electron';
|
||||||
import { INativeOpenDialogOptions, MessageBoxReturnValue, SaveDialogReturnValue, OpenDialogReturnValue } from 'vs/platform/dialogs/node/dialogs';
|
import { INativeOpenDialogOptions } from 'vs/platform/dialogs/node/dialogs';
|
||||||
import { IBackupMainService, IWorkspaceBackupInfo } from 'vs/platform/backup/electron-main/backup';
|
import { IBackupMainService, IWorkspaceBackupInfo } from 'vs/platform/backup/electron-main/backup';
|
||||||
import { IEmptyWindowBackupInfo } from 'vs/platform/backup/node/backup';
|
import { IEmptyWindowBackupInfo } from 'vs/platform/backup/node/backup';
|
||||||
import { IDialogMainService } from 'vs/platform/dialogs/electron-main/dialogs';
|
import { IDialogMainService } from 'vs/platform/dialogs/electron-main/dialogs';
|
||||||
|
@ -1347,9 +1347,9 @@ export class TestElectronService implements IElectronService {
|
||||||
async minimizeWindow(): Promise<void> { }
|
async minimizeWindow(): Promise<void> { }
|
||||||
async isWindowFocused(): Promise<boolean> { return true; }
|
async isWindowFocused(): Promise<boolean> { return true; }
|
||||||
async focusWindow(options?: { windowId?: number | undefined; } | undefined): Promise<void> { }
|
async focusWindow(options?: { windowId?: number | undefined; } | undefined): Promise<void> { }
|
||||||
async showMessageBox(options: Electron.MessageBoxOptions): Promise<MessageBoxReturnValue> { throw new Error('Method not implemented.'); }
|
async showMessageBox(options: Electron.MessageBoxOptions): Promise<Electron.MessageBoxReturnValue> { throw new Error('Method not implemented.'); }
|
||||||
async showSaveDialog(options: Electron.SaveDialogOptions): Promise<SaveDialogReturnValue> { throw new Error('Method not implemented.'); }
|
async showSaveDialog(options: Electron.SaveDialogOptions): Promise<Electron.SaveDialogReturnValue> { throw new Error('Method not implemented.'); }
|
||||||
async showOpenDialog(options: Electron.OpenDialogOptions): Promise<OpenDialogReturnValue> { throw new Error('Method not implemented.'); }
|
async showOpenDialog(options: Electron.OpenDialogOptions): Promise<Electron.OpenDialogReturnValue> { throw new Error('Method not implemented.'); }
|
||||||
async pickFileFolderAndOpen(options: INativeOpenDialogOptions): Promise<void> { }
|
async pickFileFolderAndOpen(options: INativeOpenDialogOptions): Promise<void> { }
|
||||||
async pickFileAndOpen(options: INativeOpenDialogOptions): Promise<void> { }
|
async pickFileAndOpen(options: INativeOpenDialogOptions): Promise<void> { }
|
||||||
async pickFolderAndOpen(options: INativeOpenDialogOptions): Promise<void> { }
|
async pickFolderAndOpen(options: INativeOpenDialogOptions): Promise<void> { }
|
||||||
|
@ -1439,15 +1439,15 @@ export class TestDialogMainService implements IDialogMainService {
|
||||||
throw new Error('Method not implemented.');
|
throw new Error('Method not implemented.');
|
||||||
}
|
}
|
||||||
|
|
||||||
showMessageBox(options: Electron.MessageBoxOptions, window?: Electron.BrowserWindow | undefined): Promise<MessageBoxReturnValue> {
|
showMessageBox(options: Electron.MessageBoxOptions, window?: Electron.BrowserWindow | undefined): Promise<Electron.MessageBoxReturnValue> {
|
||||||
throw new Error('Method not implemented.');
|
throw new Error('Method not implemented.');
|
||||||
}
|
}
|
||||||
|
|
||||||
showSaveDialog(options: Electron.SaveDialogOptions, window?: Electron.BrowserWindow | undefined): Promise<SaveDialogReturnValue> {
|
showSaveDialog(options: Electron.SaveDialogOptions, window?: Electron.BrowserWindow | undefined): Promise<Electron.SaveDialogReturnValue> {
|
||||||
throw new Error('Method not implemented.');
|
throw new Error('Method not implemented.');
|
||||||
}
|
}
|
||||||
|
|
||||||
showOpenDialog(options: Electron.OpenDialogOptions, window?: Electron.BrowserWindow | undefined): Promise<OpenDialogReturnValue> {
|
showOpenDialog(options: Electron.OpenDialogOptions, window?: Electron.BrowserWindow | undefined): Promise<Electron.OpenDialogReturnValue> {
|
||||||
throw new Error('Method not implemented.');
|
throw new Error('Method not implemented.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ const { join } = require('path');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const mocha = require('mocha');
|
const mocha = require('mocha');
|
||||||
const events = require('events');
|
const events = require('events');
|
||||||
const MochaJUnitReporter = require('mocha-junit-reporter');
|
// const MochaJUnitReporter = require('mocha-junit-reporter');
|
||||||
const url = require('url');
|
const url = require('url');
|
||||||
|
|
||||||
const defaultReporterName = process.platform === 'win32' ? 'list' : 'spec';
|
const defaultReporterName = process.platform === 'win32' ? 'list' : 'spec';
|
||||||
|
@ -133,12 +133,13 @@ app.on('ready', () => {
|
||||||
|
|
||||||
if (argv.tfs) {
|
if (argv.tfs) {
|
||||||
new mocha.reporters.Spec(runner);
|
new mocha.reporters.Spec(runner);
|
||||||
new MochaJUnitReporter(runner, {
|
// TODO@deepak the mocha Junit reporter seems to cause a hang when running with Electron 6 inside docker container
|
||||||
reporterOptions: {
|
// new MochaJUnitReporter(runner, {
|
||||||
testsuitesTitle: `${argv.tfs} ${process.platform}`,
|
// reporterOptions: {
|
||||||
mochaFile: process.env.BUILD_ARTIFACTSTAGINGDIRECTORY ? path.join(process.env.BUILD_ARTIFACTSTAGINGDIRECTORY, `test-results/${process.platform}-${argv.tfs.toLowerCase().replace(/[^\w]/g, '-')}-results.xml`) : undefined
|
// testsuitesTitle: `${argv.tfs} ${process.platform}`,
|
||||||
}
|
// mochaFile: process.env.BUILD_ARTIFACTSTAGINGDIRECTORY ? path.join(process.env.BUILD_ARTIFACTSTAGINGDIRECTORY, `test-results/${process.platform}-${argv.tfs.toLowerCase().replace(/[^\w]/g, '-')}-results.xml`) : undefined
|
||||||
});
|
// }
|
||||||
|
// });
|
||||||
} else {
|
} else {
|
||||||
const reporterPath = path.join(path.dirname(require.resolve('mocha')), 'lib', 'reporters', argv.reporter);
|
const reporterPath = path.join(path.dirname(require.resolve('mocha')), 'lib', 'reporters', argv.reporter);
|
||||||
let Reporter;
|
let Reporter;
|
||||||
|
|
Loading…
Reference in a new issue