mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-26 03:29:00 +01:00
ExtensionsRegistry only tracks extension points
This commit is contained in:
@@ -11,34 +11,15 @@ import nls = require('vs/nls');
|
||||
import pfs = require('vs/base/node/pfs');
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import paths = require('vs/base/common/paths');
|
||||
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||
import { ExtensionsRegistry } from 'vs/platform/extensions/common/extensionsRegistry';
|
||||
import { createApiFactory, defineAPI } from 'vs/workbench/api/node/extHost.api.impl';
|
||||
import { IMainProcessExtHostIPC } from 'vs/platform/extensions/common/ipcRemoteCom';
|
||||
import { ExtHostExtensionService } from 'vs/workbench/api/node/extHostExtensionService';
|
||||
import { ExtHostThreadService } from 'vs/workbench/services/thread/common/extHostThreadService';
|
||||
import { RemoteTelemetryService } from 'vs/workbench/api/node/extHostTelemetry';
|
||||
import { IWorkspaceContextService, WorkspaceContextService } from 'vs/platform/workspace/common/workspace';
|
||||
import { IInitData, IEnvironment } from 'vs/workbench/api/node/extHost.protocol';
|
||||
import * as errors from 'vs/base/common/errors';
|
||||
|
||||
export interface IEnvironment {
|
||||
appSettingsHome: string;
|
||||
disableExtensions: boolean;
|
||||
userExtensionsHome: string;
|
||||
extensionDevelopmentPath: string;
|
||||
extensionTestsPath: string;
|
||||
}
|
||||
|
||||
export interface IInitData {
|
||||
environment: IEnvironment;
|
||||
threadService: any;
|
||||
contextService: {
|
||||
workspace: any;
|
||||
options: any;
|
||||
};
|
||||
extensions: IExtensionDescription[];
|
||||
}
|
||||
|
||||
const nativeExit = process.exit.bind(process);
|
||||
process.exit = function () {
|
||||
const err = new Error('An extension called process.exit() and this was prevented.');
|
||||
@@ -58,13 +39,11 @@ export class ExtensionHostMain {
|
||||
private _contextService: IWorkspaceContextService;
|
||||
private _environment: IEnvironment;
|
||||
private _extensionService: ExtHostExtensionService;
|
||||
private _extensions: IExtensionDescription[];
|
||||
|
||||
constructor(remoteCom: IMainProcessExtHostIPC, initData: IInitData) {
|
||||
this._isTerminating = false;
|
||||
|
||||
this._environment = initData.environment;
|
||||
this._extensions = initData.extensions;
|
||||
|
||||
this._contextService = new WorkspaceContextService(initData.contextService.workspace);
|
||||
const workspaceStoragePath = this._getOrCreateWorkspaceStoragePath();
|
||||
@@ -73,11 +52,11 @@ export class ExtensionHostMain {
|
||||
|
||||
const telemetryService = new RemoteTelemetryService('pluginHostTelemetry', threadService);
|
||||
|
||||
this._extensionService = new ExtHostExtensionService(threadService, telemetryService, { _serviceBrand: 'optionalArgs', workspaceStoragePath });
|
||||
this._extensionService = new ExtHostExtensionService(initData.extensions, threadService, telemetryService, { _serviceBrand: 'optionalArgs', workspaceStoragePath });
|
||||
|
||||
// Create the ext host API
|
||||
const factory = createApiFactory(threadService, this._extensionService, this._contextService, telemetryService);
|
||||
defineAPI(factory, this._extensions);
|
||||
defineAPI(factory, this._extensionService);
|
||||
}
|
||||
|
||||
private _getOrCreateWorkspaceStoragePath(): string {
|
||||
@@ -144,7 +123,7 @@ export class ExtensionHostMain {
|
||||
|
||||
let allPromises: TPromise<void>[] = [];
|
||||
try {
|
||||
let allExtensions = ExtensionsRegistry.getAllExtensionDescriptions();
|
||||
let allExtensions = this._extensionService.getAllExtensionDescriptions();
|
||||
let allExtensionsIds = allExtensions.map(ext => ext.id);
|
||||
let activatedExtensions = allExtensionsIds.filter(id => this._extensionService.isActivated(id));
|
||||
|
||||
@@ -164,7 +143,6 @@ export class ExtensionHostMain {
|
||||
}
|
||||
|
||||
private registerExtensions(): TPromise<void> {
|
||||
ExtensionsRegistry.registerExtensions(this._extensions);
|
||||
this._extensionService.registrationDone();
|
||||
return this.handleEagerExtensions().then(() => this.handleExtensionTests());
|
||||
}
|
||||
@@ -189,7 +167,7 @@ export class ExtensionHostMain {
|
||||
[filename: string]: boolean;
|
||||
} = {};
|
||||
|
||||
ExtensionsRegistry.getAllExtensionDescriptions().forEach((desc) => {
|
||||
this._extensionService.getAllExtensionDescriptions().forEach((desc) => {
|
||||
let activationEvents = desc.activationEvents;
|
||||
if (!activationEvents) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user