提交 a2a48e3b 编写于 作者: A Alex Dima

Simplify IExtensionService

上级 3d311aee
......@@ -274,10 +274,6 @@ export class SimplePluginService extends AbstractPluginService<ActivatedPlugin>
}
}
public deactivate(pluginId:string): void {
// nothing to do
}
protected _createFailedPlugin(): ActivatedPlugin {
throw new Error('unexpected');
}
......
......@@ -67,10 +67,6 @@ class WorkerPluginService extends AbstractPluginService<ActivatedPlugin> {
}
}
public deactivate(pluginId:string): void {
// nothing to do
}
protected _createFailedPlugin(): ActivatedPlugin {
throw new Error('unexpected');
}
......
......@@ -120,11 +120,6 @@ class MockPluginService extends AbstractPluginService<ActivatedPlugin> {
}
}
public deactivate(pluginId: string): void {
// nothing to do
}
protected _createFailedPlugin(): any {
throw new Error('not implemented');
}
......
......@@ -8,7 +8,7 @@ import * as nls from 'vs/nls';
import {IDisposable} from 'vs/base/common/lifecycle';
import Severity from 'vs/base/common/severity';
import {TPromise} from 'vs/base/common/winjs.base';
import {IActivationEventListener, IMessage, IPluginDescription, IExtensionService, IPluginStatus} from 'vs/platform/extensions/common/plugins';
import {IMessage, IPluginDescription, IExtensionService, IPluginStatus} from 'vs/platform/extensions/common/plugins';
import {PluginsRegistry} from 'vs/platform/extensions/common/pluginsRegistry';
const hasOwnProperty = Object.hasOwnProperty;
......@@ -65,7 +65,6 @@ export abstract class AbstractPluginService<T extends ActivatedPlugin> implement
this.activatedPlugins = {};
}
public abstract deactivate(pluginId: string): void;
protected abstract _showMessage(severity: Severity, message: string): void;
protected showMessage(severity: Severity, source: string, message: string): void {
......@@ -79,10 +78,6 @@ export abstract class AbstractPluginService<T extends ActivatedPlugin> implement
this._onReadyC(true);
}
public registerOneTimeActivationEventListener(activationEvent: string, listener: IActivationEventListener): void {
PluginsRegistry.registerOneTimeActivationEventListener(activationEvent, listener);
}
public onReady(): TPromise<boolean> {
return this._onReady;
}
......@@ -104,7 +99,7 @@ export abstract class AbstractPluginService<T extends ActivatedPlugin> implement
});
}
public activateAndGet(pluginId: string): TPromise<void> {
public activateById(pluginId: string): TPromise<void> {
return this._onReady.then(() => {
let desc = PluginsRegistry.getPluginDescription(pluginId);
if (!desc) {
......
......@@ -200,10 +200,6 @@ export class MainProcessPluginService extends AbstractPluginService<ActivatedPlu
return this._pluginsStatus;
}
public deactivate(pluginId: string): void {
this._proxy.deactivate(pluginId);
}
// -- overwriting AbstractPluginService
protected _actualActivatePlugin(pluginDescription: IPluginDescription): TPromise<ActivatedPlugin> {
......
......@@ -47,27 +47,19 @@ export interface IPluginStatus {
export interface IExtensionService {
serviceId: ServiceIdentifier<any>;
activateByEvent(activationEvent: string): TPromise<void>;
activateAndGet(pluginId: string): TPromise<void>;
isActivated(pluginId: string): boolean;
/**
* This method should be called only on shutdown!
* More work is needed for this to be called any time!
* Send an activation event and activate interested extensions.
*/
deactivate(pluginId: string): void;
activateByEvent(activationEvent: string): TPromise<void>;
/**
* To be used only by the platform once on startup.
* Block on this signal any interactions with extensions.
*/
registrationDone(errors?: IMessage[]): void;
registerOneTimeActivationEventListener(activationEvent: string, listener: IActivationEventListener): void;
onReady(): TPromise<boolean>;
/**
* Block on this signal any interactions with extensions.
* Get information about extensions status.
*/
onReady(): TPromise<boolean>;
getPluginsStatus(): { [id: string]: IPluginStatus };
}
......
......@@ -435,7 +435,7 @@ class Extension<T> implements vscode.Extension<T> {
}
activate(): Thenable<T> {
return this._extensionService.activateAndGet(this.id).then(() => this.exports);
return this._extensionService.activateById(this.id).then(() => this.exports);
}
}
......
......@@ -93,13 +93,16 @@ interface ITestRunner {
export class PluginHostMain {
private _isTerminating: boolean;
private _contextService: IWorkspaceContextService;
private _extensionService: PluginHostPluginService;
constructor(
@IWorkspaceContextService private contextService: IWorkspaceContextService,
@IExtensionService private extensionService: IExtensionService,
@IInstantiationService instantiationService: IInstantiationService
@IWorkspaceContextService contextService: IWorkspaceContextService,
@IExtensionService extensionService: IExtensionService
) {
this._isTerminating = false;
this._contextService = contextService;
this._extensionService = <PluginHostPluginService>extensionService;
}
public start(): TPromise<void> {
......@@ -116,10 +119,10 @@ export class PluginHostMain {
try {
let allExtensions = PluginsRegistry.getAllPluginDescriptions();
let allExtensionsIds = allExtensions.map(ext => ext.id);
let activatedExtensions = allExtensionsIds.filter(id => this.extensionService.isActivated(id));
let activatedExtensions = allExtensionsIds.filter(id => this._extensionService.isActivated(id));
activatedExtensions.forEach((extensionId) => {
this.extensionService.deactivate(extensionId);
this._extensionService.deactivate(extensionId);
});
} catch (err) {
// TODO: write to log once we have one
......@@ -133,7 +136,7 @@ export class PluginHostMain {
private readPlugins(): TPromise<void> {
let collector = new PluginsMessageCollector();
let env = this.contextService.getConfiguration().env;
let env = this._contextService.getConfiguration().env;
return PluginHostMain.scanPlugins(collector, BUILTIN_PLUGINS_PATH, !env.disablePlugins ? env.userPluginsHome : void 0, !env.disablePlugins ? env.pluginDevelopmentPath : void 0, env.version)
.then(null, err => {
......@@ -143,7 +146,7 @@ export class PluginHostMain {
.then(extensions => {
// Register & Signal done
PluginsRegistry.registerPlugins(extensions);
this.extensionService.registrationDone(collector.getMessages());
this._extensionService.registrationDone(collector.getMessages());
})
.then(() => this.handleEagerPlugins())
.then(() => this.handlePluginTests());
......@@ -183,14 +186,14 @@ export class PluginHostMain {
// Handle "eager" activation plugins
private handleEagerPlugins(): TPromise<void> {
this.extensionService.activateByEvent('*').then(null, (err) => {
this._extensionService.activateByEvent('*').then(null, (err) => {
console.error(err);
});
return this.handleWorkspaceContainsEagerPlugins();
}
private handleWorkspaceContainsEagerPlugins(): TPromise<void> {
let workspace = this.contextService.getWorkspace();
let workspace = this._contextService.getWorkspace();
if (!workspace || !workspace.resource) {
return TPromise.as(null);
}
......@@ -226,7 +229,7 @@ export class PluginHostMain {
}
let activationEvent = 'workspaceContains:' + existingFileName;
this.extensionService.activateByEvent(activationEvent).then(null, (err) => {
this._extensionService.activateByEvent(activationEvent).then(null, (err) => {
console.error(err);
});
});
......@@ -234,7 +237,7 @@ export class PluginHostMain {
}
private handlePluginTests(): TPromise<void> {
let env = this.contextService.getConfiguration().env;
let env = this._contextService.getConfiguration().env;
if (!env.pluginTestsPath || !env.pluginDevelopmentPath) {
return TPromise.as(null);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册