Merge branch 'master' into roblou/extHostLogger2

This commit is contained in:
Rob Lourens
2017-12-13 14:21:08 -08:00
467 changed files with 2434 additions and 1341 deletions

View File

@@ -9,9 +9,7 @@ import nls = require('vs/nls');
import pfs = require('vs/base/node/pfs');
import { TPromise } from 'vs/base/common/winjs.base';
import { join } from 'path';
import { RPCProtocol } from 'vs/workbench/services/extensions/node/rpcProtocol';
import { ExtHostExtensionService } from 'vs/workbench/api/node/extHostExtensionService';
import { ExtHostThreadService } from 'vs/workbench/services/thread/node/extHostThreadService';
import { ExtHostConfiguration } from 'vs/workbench/api/node/extHostConfiguration';
import { ExtHostWorkspace } from 'vs/workbench/api/node/extHostWorkspace';
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
@@ -26,6 +24,8 @@ import { EnvironmentService } from 'vs/platform/environment/node/environmentServ
import { createLogService } from 'vs/platform/log/node/spdlogService';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { ILogService } from 'vs/platform/log/common/log';
import { IMessagePassingProtocol } from 'vs/base/parts/ipc/common/ipc';
import { RPCProtocol } from 'vs/workbench/services/extensions/node/rpcProtocol';
// const nativeExit = process.exit.bind(process);
function patchProcess(allowExit: boolean) {
@@ -80,7 +80,7 @@ export class ExtensionHostMain {
private _logService: ILogService;
private disposables: IDisposable[] = [];
constructor(rpcProtocol: RPCProtocol, initData: IInitData) {
constructor(protocol: IMessagePassingProtocol, initData: IInitData) {
this._environment = initData.environment;
this._workspace = initData.workspace;
@@ -88,8 +88,8 @@ export class ExtensionHostMain {
patchProcess(allowExit);
// services
const threadService = new ExtHostThreadService(rpcProtocol);
const extHostWorkspace = new ExtHostWorkspace(threadService, initData.workspace);
const rpcProtocol = new RPCProtocol(protocol);
const extHostWorkspace = new ExtHostWorkspace(rpcProtocol, initData.workspace);
const environmentService = new EnvironmentService(initData.args, initData.execPath);
this._logService = createLogService(`exthost${initData.windowId}`, environmentService);
this.disposables.push(this._logService);
@@ -97,8 +97,8 @@ export class ExtensionHostMain {
this._logService.info('extension host started');
this._logService.trace('initData', initData);
this._extHostConfiguration = new ExtHostConfiguration(threadService.get(MainContext.MainThreadConfiguration), extHostWorkspace, initData.configuration);
this._extensionService = new ExtHostExtensionService(initData, threadService, extHostWorkspace, this._extHostConfiguration, this._logService, environmentService);
this._extHostConfiguration = new ExtHostConfiguration(rpcProtocol.getProxy(MainContext.MainThreadConfiguration), extHostWorkspace, initData.configuration);
this._extensionService = new ExtHostExtensionService(initData, rpcProtocol, extHostWorkspace, this._extHostConfiguration, this._logService, environmentService);
// error forwarding and stack trace scanning
const extensionErrors = new WeakMap<Error, IExtensionDescription>();
@@ -119,8 +119,8 @@ export class ExtensionHostMain {
return `${error.name || 'Error'}: ${error.message || ''}${stackTraceMessage}`;
};
});
const mainThreadExtensions = threadService.get(MainContext.MainThreadExtensionService);
const mainThreadErrors = threadService.get(MainContext.MainThreadErrors);
const mainThreadExtensions = rpcProtocol.getProxy(MainContext.MainThreadExtensionService);
const mainThreadErrors = rpcProtocol.getProxy(MainContext.MainThreadErrors);
errors.setUnexpectedErrorHandler(err => {
const data = errors.transformErrorForSerialization(err);
const extension = extensionErrors.get(err);

View File

@@ -7,7 +7,6 @@
import { onUnexpectedError } from 'vs/base/common/errors';
import { ExtensionHostMain, exit } from 'vs/workbench/node/extensionHostMain';
import { RPCProtocol } from 'vs/workbench/services/extensions/node/rpcProtocol';
import { parse } from 'vs/base/common/marshalling';
import { IInitData } from 'vs/workbench/api/node/extHost.protocol';
import { IMessagePassingProtocol } from 'vs/base/parts/ipc/common/ipc';
@@ -16,7 +15,7 @@ import { createConnection } from 'net';
import Event, { filterEvent } from 'vs/base/common/event';
interface IRendererConnection {
rpcProtocol: RPCProtocol;
protocol: IMessagePassingProtocol;
initData: IInitData;
}
@@ -70,7 +69,6 @@ function connectToRenderer(protocol: IMessagePassingProtocol): Promise<IRenderer
first.dispose();
const initData = parse(raw);
const rpcProtocol = new RPCProtocol(protocol);
// Print a console message when rejection isn't handled within N seconds. For details:
// see https://nodejs.org/api/process.html#process_event_unhandledrejection
@@ -111,7 +109,7 @@ function connectToRenderer(protocol: IMessagePassingProtocol): Promise<IRenderer
// Tell the outside that we are initialized
protocol.send('initialized');
c({ rpcProtocol, initData });
c({ protocol, initData });
});
// Tell the outside that we are ready to receive messages
@@ -126,7 +124,7 @@ createExtHostProtocol().then(protocol => {
return connectToRenderer(protocol);
}).then(renderer => {
// setup things
const extensionHostMain = new ExtensionHostMain(renderer.rpcProtocol, renderer.initData);
const extensionHostMain = new ExtensionHostMain(renderer.protocol, renderer.initData);
onTerminate = () => extensionHostMain.terminate();
return extensionHostMain.start();
}).catch(err => console.error(err));