提交 9f479b17 编写于 作者: B Benjamin Pasero

debt - extract a reusable NullExtensionService

上级 2dcae22d
......@@ -369,7 +369,6 @@ export class Shell extends Disposable {
serviceCollection.set(IMarkerService, new SyncDescriptor(MarkerService, undefined, true));
serviceCollection.set(IModeService, new SyncDescriptor(WorkbenchModeServiceImpl));
serviceCollection.set(ITextResourceConfigurationService, new SyncDescriptor(TextResourceConfigurationService));
......
......@@ -6,59 +6,10 @@ import * as assert from 'assert';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { CommandsRegistry } from 'vs/platform/commands/common/commands';
import { CommandService } from 'vs/workbench/services/commands/common/commandService';
import { IExtensionService, ExtensionPointContribution, IExtensionDescription, ProfileSession } from 'vs/workbench/services/extensions/common/extensions';
import { NullExtensionService } from 'vs/workbench/services/extensions/common/extensions';
import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService';
import { IExtensionPoint } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { Event, Emitter } from 'vs/base/common/event';
import { NullLogService } from 'vs/platform/log/common/log';
class SimpleExtensionService implements IExtensionService {
_serviceBrand: any;
private _onDidRegisterExtensions = new Emitter<void>();
get onDidRegisterExtensions(): Event<void> {
return this._onDidRegisterExtensions.event;
}
onDidChangeExtensionsStatus = null!;
onDidChangeExtensions = null!;
onWillActivateByEvent = null!;
onDidChangeResponsiveChange = null!;
activateByEvent(activationEvent: string): Promise<void> {
return this.whenInstalledExtensionsRegistered().then(() => { });
}
whenInstalledExtensionsRegistered(): Promise<boolean> {
return Promise.resolve(true);
}
readExtensionPointContributions<T>(extPoint: IExtensionPoint<T>): Promise<ExtensionPointContribution<T>[]> {
return Promise.resolve([]);
}
getExtensionsStatus() {
return undefined!;
}
getExtensions(): Promise<IExtensionDescription[]> {
return Promise.resolve([]);
}
getExtension() {
return Promise.resolve(undefined);
}
canProfileExtensionHost() {
return false;
}
startExtensionHostProfile(): Promise<ProfileSession> {
throw new Error('Not implemented');
}
getInspectPort(): number {
return 0;
}
restartExtensionHost(): void {
}
startExtensionHost(): void {
}
stopExtensionHost(): void {
}
canAddExtension(): boolean { return false; }
canRemoveExtension(): boolean { return false; }
}
suite('CommandService', function () {
let commandRegistration: IDisposable;
......@@ -75,7 +26,7 @@ suite('CommandService', function () {
let lastEvent: string;
let service = new CommandService(new InstantiationService(), new class extends SimpleExtensionService {
let service = new CommandService(new InstantiationService(), new class extends NullExtensionService {
activateByEvent(activationEvent: string): Promise<void> {
lastEvent = activationEvent;
return super.activateByEvent(activationEvent);
......@@ -94,7 +45,7 @@ suite('CommandService', function () {
test('fwd activation error', async function () {
const extensionService = new class extends SimpleExtensionService {
const extensionService = new class extends NullExtensionService {
activateByEvent(activationEvent: string): Promise<void> {
return Promise.reject(new Error('bad_activate'));
}
......@@ -114,7 +65,7 @@ suite('CommandService', function () {
let callCounter = 0;
let reg = CommandsRegistry.registerCommand('bar', () => callCounter += 1);
let service = new CommandService(new InstantiationService(), new class extends SimpleExtensionService {
let service = new CommandService(new InstantiationService(), new class extends NullExtensionService {
whenInstalledExtensionsRegistered() {
return new Promise<boolean>(_resolve => { /*ignore*/ });
}
......@@ -131,7 +82,7 @@ suite('CommandService', function () {
let resolveFunc: Function;
const whenInstalledExtensionsRegistered = new Promise<boolean>(_resolve => { resolveFunc = _resolve; });
let service = new CommandService(new InstantiationService(), new class extends SimpleExtensionService {
let service = new CommandService(new InstantiationService(), new class extends NullExtensionService {
whenInstalledExtensionsRegistered() {
return whenInstalledExtensionsRegistered;
}
......@@ -154,7 +105,7 @@ suite('CommandService', function () {
let callCounter = 0;
let dispoables: IDisposable[] = [];
let events: string[] = [];
let service = new CommandService(new InstantiationService(), new class extends SimpleExtensionService {
let service = new CommandService(new InstantiationService(), new class extends NullExtensionService {
activateByEvent(event: string): Promise<void> {
events.push(event);
......
......@@ -259,3 +259,27 @@ export function toExtension(extensionDescription: IExtensionDescription): IExten
location: extensionDescription.extensionLocation,
};
}
export class NullExtensionService implements IExtensionService {
_serviceBrand: any;
onDidRegisterExtensions: Event<void> = Event.None;
onDidChangeExtensionsStatus: Event<ExtensionIdentifier[]> = Event.None;
onDidChangeExtensions: Event<void> = Event.None;
onWillActivateByEvent: Event<IWillActivateEvent> = Event.None;
onDidChangeResponsiveChange: Event<IResponsiveStateChangeEvent> = Event.None;
activateByEvent(_activationEvent: string): Promise<void> { return Promise.resolve(undefined); }
whenInstalledExtensionsRegistered(): Promise<boolean> { return Promise.resolve(true); }
getExtensions(): Promise<IExtensionDescription[]> { return Promise.resolve([]); }
getExtension() { return Promise.resolve(undefined); }
readExtensionPointContributions<T>(_extPoint: IExtensionPoint<T>): Promise<ExtensionPointContribution<T>[]> { return Promise.resolve(Object.create(null)); }
getExtensionsStatus(): { [id: string]: IExtensionsStatus; } { return Object.create(null); }
canProfileExtensionHost(): boolean { return false; }
getInspectPort(): number { return 0; }
startExtensionHostProfile(): Promise<ProfileSession> { return Promise.resolve(Object.create(null)); }
restartExtensionHost(): void { }
startExtensionHost(): void { }
stopExtensionHost(): void { }
canAddExtension(): boolean { return false; }
canRemoveExtension(): boolean { return false; }
}
\ No newline at end of file
......@@ -57,8 +57,7 @@ import { Range } from 'vs/editor/common/core/range';
import { IConfirmation, IConfirmationResult, IDialogService, IDialogOptions, IPickAndOpenOptions, ISaveDialogOptions, IOpenDialogOptions, IFileDialogService } from 'vs/platform/dialogs/common/dialogs';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService';
import { IExtensionService, ProfileSession, IExtensionsStatus, ExtensionPointContribution, IExtensionDescription, IWillActivateEvent, IResponsiveStateChangeEvent } from '../services/extensions/common/extensions';
import { IExtensionPoint } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { IExtensionService, NullExtensionService } from 'vs/workbench/services/extensions/common/extensions';
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
import { IDecorationsService, IResourceDecorationChangeEvent, IDecoration, IDecorationData, IDecorationsProvider } from 'vs/workbench/services/decorations/browser/decorations';
import { IDisposable, toDisposable, Disposable } from 'vs/base/common/lifecycle';
......@@ -78,7 +77,6 @@ import { IViewlet } from 'vs/workbench/common/viewlet';
import { IProgressService } from 'vs/platform/progress/common/progress';
import { IStorageService, InMemoryStorageService } from 'vs/platform/storage/common/storage';
import { isLinux, isMacintosh } from 'vs/base/common/platform';
import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions';
import { LabelService } from 'vs/workbench/services/label/common/labelService';
export function createFileInput(instantiationService: IInstantiationService, resource: URI): FileEditorInput {
......@@ -310,28 +308,7 @@ export class TestDecorationsService implements IDecorationsService {
getDecoration(_uri: URI, _includeChildren: boolean, _overwrite?: IDecorationData): IDecoration { return undefined; }
}
export class TestExtensionService implements IExtensionService {
_serviceBrand: any;
onDidRegisterExtensions: Event<void> = Event.None;
onDidChangeExtensionsStatus: Event<ExtensionIdentifier[]> = Event.None;
onDidChangeExtensions: Event<void> = Event.None;
onWillActivateByEvent: Event<IWillActivateEvent> = Event.None;
onDidChangeResponsiveChange: Event<IResponsiveStateChangeEvent> = Event.None;
activateByEvent(_activationEvent: string): Promise<void> { return Promise.resolve(undefined); }
whenInstalledExtensionsRegistered(): Promise<boolean> { return Promise.resolve(true); }
getExtensions(): Promise<IExtensionDescription[]> { return Promise.resolve([]); }
getExtension() { return Promise.resolve(undefined); }
readExtensionPointContributions<T>(_extPoint: IExtensionPoint<T>): Promise<ExtensionPointContribution<T>[]> { return Promise.resolve(Object.create(null)); }
getExtensionsStatus(): { [id: string]: IExtensionsStatus; } { return Object.create(null); }
canProfileExtensionHost(): boolean { return false; }
getInspectPort(): number { return 0; }
startExtensionHostProfile(): Promise<ProfileSession> { return Promise.resolve(Object.create(null)); }
restartExtensionHost(): void { }
startExtensionHost(): void { }
stopExtensionHost(): void { }
canAddExtension(): boolean { return false; }
canRemoveExtension(): boolean { return false; }
}
export class TestExtensionService extends NullExtensionService { }
export class TestMenuService implements IMenuService {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册