Skip to content

Commit 9f479b1

Browse files
author
Benjamin Pasero
committed
debt - extract a reusable NullExtensionService
1 parent 2dcae22 commit 9f479b1

4 files changed

Lines changed: 32 additions & 81 deletions

File tree

src/vs/workbench/electron-browser/shell.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,6 @@ export class Shell extends Disposable {
369369

370370
serviceCollection.set(IMarkerService, new SyncDescriptor(MarkerService, undefined, true));
371371

372-
373372
serviceCollection.set(IModeService, new SyncDescriptor(WorkbenchModeServiceImpl));
374373

375374
serviceCollection.set(ITextResourceConfigurationService, new SyncDescriptor(TextResourceConfigurationService));

src/vs/workbench/services/commands/test/common/commandService.test.ts

Lines changed: 6 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -6,59 +6,10 @@ import * as assert from 'assert';
66
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
77
import { CommandsRegistry } from 'vs/platform/commands/common/commands';
88
import { CommandService } from 'vs/workbench/services/commands/common/commandService';
9-
import { IExtensionService, ExtensionPointContribution, IExtensionDescription, ProfileSession } from 'vs/workbench/services/extensions/common/extensions';
9+
import { NullExtensionService } from 'vs/workbench/services/extensions/common/extensions';
1010
import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService';
11-
import { IExtensionPoint } from 'vs/workbench/services/extensions/common/extensionsRegistry';
12-
import { Event, Emitter } from 'vs/base/common/event';
1311
import { NullLogService } from 'vs/platform/log/common/log';
1412

15-
class SimpleExtensionService implements IExtensionService {
16-
_serviceBrand: any;
17-
private _onDidRegisterExtensions = new Emitter<void>();
18-
get onDidRegisterExtensions(): Event<void> {
19-
return this._onDidRegisterExtensions.event;
20-
}
21-
onDidChangeExtensionsStatus = null!;
22-
onDidChangeExtensions = null!;
23-
onWillActivateByEvent = null!;
24-
onDidChangeResponsiveChange = null!;
25-
activateByEvent(activationEvent: string): Promise<void> {
26-
return this.whenInstalledExtensionsRegistered().then(() => { });
27-
}
28-
whenInstalledExtensionsRegistered(): Promise<boolean> {
29-
return Promise.resolve(true);
30-
}
31-
readExtensionPointContributions<T>(extPoint: IExtensionPoint<T>): Promise<ExtensionPointContribution<T>[]> {
32-
return Promise.resolve([]);
33-
}
34-
getExtensionsStatus() {
35-
return undefined!;
36-
}
37-
getExtensions(): Promise<IExtensionDescription[]> {
38-
return Promise.resolve([]);
39-
}
40-
getExtension() {
41-
return Promise.resolve(undefined);
42-
}
43-
canProfileExtensionHost() {
44-
return false;
45-
}
46-
startExtensionHostProfile(): Promise<ProfileSession> {
47-
throw new Error('Not implemented');
48-
}
49-
getInspectPort(): number {
50-
return 0;
51-
}
52-
restartExtensionHost(): void {
53-
}
54-
startExtensionHost(): void {
55-
}
56-
stopExtensionHost(): void {
57-
}
58-
canAddExtension(): boolean { return false; }
59-
canRemoveExtension(): boolean { return false; }
60-
}
61-
6213
suite('CommandService', function () {
6314

6415
let commandRegistration: IDisposable;
@@ -75,7 +26,7 @@ suite('CommandService', function () {
7526

7627
let lastEvent: string;
7728

78-
let service = new CommandService(new InstantiationService(), new class extends SimpleExtensionService {
29+
let service = new CommandService(new InstantiationService(), new class extends NullExtensionService {
7930
activateByEvent(activationEvent: string): Promise<void> {
8031
lastEvent = activationEvent;
8132
return super.activateByEvent(activationEvent);
@@ -94,7 +45,7 @@ suite('CommandService', function () {
9445

9546
test('fwd activation error', async function () {
9647

97-
const extensionService = new class extends SimpleExtensionService {
48+
const extensionService = new class extends NullExtensionService {
9849
activateByEvent(activationEvent: string): Promise<void> {
9950
return Promise.reject(new Error('bad_activate'));
10051
}
@@ -114,7 +65,7 @@ suite('CommandService', function () {
11465
let callCounter = 0;
11566
let reg = CommandsRegistry.registerCommand('bar', () => callCounter += 1);
11667

117-
let service = new CommandService(new InstantiationService(), new class extends SimpleExtensionService {
68+
let service = new CommandService(new InstantiationService(), new class extends NullExtensionService {
11869
whenInstalledExtensionsRegistered() {
11970
return new Promise<boolean>(_resolve => { /*ignore*/ });
12071
}
@@ -131,7 +82,7 @@ suite('CommandService', function () {
13182
let resolveFunc: Function;
13283
const whenInstalledExtensionsRegistered = new Promise<boolean>(_resolve => { resolveFunc = _resolve; });
13384

134-
let service = new CommandService(new InstantiationService(), new class extends SimpleExtensionService {
85+
let service = new CommandService(new InstantiationService(), new class extends NullExtensionService {
13586
whenInstalledExtensionsRegistered() {
13687
return whenInstalledExtensionsRegistered;
13788
}
@@ -154,7 +105,7 @@ suite('CommandService', function () {
154105
let callCounter = 0;
155106
let dispoables: IDisposable[] = [];
156107
let events: string[] = [];
157-
let service = new CommandService(new InstantiationService(), new class extends SimpleExtensionService {
108+
let service = new CommandService(new InstantiationService(), new class extends NullExtensionService {
158109

159110
activateByEvent(event: string): Promise<void> {
160111
events.push(event);

src/vs/workbench/services/extensions/common/extensions.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,3 +259,27 @@ export function toExtension(extensionDescription: IExtensionDescription): IExten
259259
location: extensionDescription.extensionLocation,
260260
};
261261
}
262+
263+
264+
export class NullExtensionService implements IExtensionService {
265+
_serviceBrand: any;
266+
onDidRegisterExtensions: Event<void> = Event.None;
267+
onDidChangeExtensionsStatus: Event<ExtensionIdentifier[]> = Event.None;
268+
onDidChangeExtensions: Event<void> = Event.None;
269+
onWillActivateByEvent: Event<IWillActivateEvent> = Event.None;
270+
onDidChangeResponsiveChange: Event<IResponsiveStateChangeEvent> = Event.None;
271+
activateByEvent(_activationEvent: string): Promise<void> { return Promise.resolve(undefined); }
272+
whenInstalledExtensionsRegistered(): Promise<boolean> { return Promise.resolve(true); }
273+
getExtensions(): Promise<IExtensionDescription[]> { return Promise.resolve([]); }
274+
getExtension() { return Promise.resolve(undefined); }
275+
readExtensionPointContributions<T>(_extPoint: IExtensionPoint<T>): Promise<ExtensionPointContribution<T>[]> { return Promise.resolve(Object.create(null)); }
276+
getExtensionsStatus(): { [id: string]: IExtensionsStatus; } { return Object.create(null); }
277+
canProfileExtensionHost(): boolean { return false; }
278+
getInspectPort(): number { return 0; }
279+
startExtensionHostProfile(): Promise<ProfileSession> { return Promise.resolve(Object.create(null)); }
280+
restartExtensionHost(): void { }
281+
startExtensionHost(): void { }
282+
stopExtensionHost(): void { }
283+
canAddExtension(): boolean { return false; }
284+
canRemoveExtension(): boolean { return false; }
285+
}

src/vs/workbench/test/workbenchTestServices.ts

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ import { Range } from 'vs/editor/common/core/range';
5757
import { IConfirmation, IConfirmationResult, IDialogService, IDialogOptions, IPickAndOpenOptions, ISaveDialogOptions, IOpenDialogOptions, IFileDialogService } from 'vs/platform/dialogs/common/dialogs';
5858
import { INotificationService } from 'vs/platform/notification/common/notification';
5959
import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService';
60-
import { IExtensionService, ProfileSession, IExtensionsStatus, ExtensionPointContribution, IExtensionDescription, IWillActivateEvent, IResponsiveStateChangeEvent } from '../services/extensions/common/extensions';
61-
import { IExtensionPoint } from 'vs/workbench/services/extensions/common/extensionsRegistry';
60+
import { IExtensionService, NullExtensionService } from 'vs/workbench/services/extensions/common/extensions';
6261
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
6362
import { IDecorationsService, IResourceDecorationChangeEvent, IDecoration, IDecorationData, IDecorationsProvider } from 'vs/workbench/services/decorations/browser/decorations';
6463
import { IDisposable, toDisposable, Disposable } from 'vs/base/common/lifecycle';
@@ -78,7 +77,6 @@ import { IViewlet } from 'vs/workbench/common/viewlet';
7877
import { IProgressService } from 'vs/platform/progress/common/progress';
7978
import { IStorageService, InMemoryStorageService } from 'vs/platform/storage/common/storage';
8079
import { isLinux, isMacintosh } from 'vs/base/common/platform';
81-
import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions';
8280
import { LabelService } from 'vs/workbench/services/label/common/labelService';
8381

8482
export function createFileInput(instantiationService: IInstantiationService, resource: URI): FileEditorInput {
@@ -310,28 +308,7 @@ export class TestDecorationsService implements IDecorationsService {
310308
getDecoration(_uri: URI, _includeChildren: boolean, _overwrite?: IDecorationData): IDecoration { return undefined; }
311309
}
312310

313-
export class TestExtensionService implements IExtensionService {
314-
_serviceBrand: any;
315-
onDidRegisterExtensions: Event<void> = Event.None;
316-
onDidChangeExtensionsStatus: Event<ExtensionIdentifier[]> = Event.None;
317-
onDidChangeExtensions: Event<void> = Event.None;
318-
onWillActivateByEvent: Event<IWillActivateEvent> = Event.None;
319-
onDidChangeResponsiveChange: Event<IResponsiveStateChangeEvent> = Event.None;
320-
activateByEvent(_activationEvent: string): Promise<void> { return Promise.resolve(undefined); }
321-
whenInstalledExtensionsRegistered(): Promise<boolean> { return Promise.resolve(true); }
322-
getExtensions(): Promise<IExtensionDescription[]> { return Promise.resolve([]); }
323-
getExtension() { return Promise.resolve(undefined); }
324-
readExtensionPointContributions<T>(_extPoint: IExtensionPoint<T>): Promise<ExtensionPointContribution<T>[]> { return Promise.resolve(Object.create(null)); }
325-
getExtensionsStatus(): { [id: string]: IExtensionsStatus; } { return Object.create(null); }
326-
canProfileExtensionHost(): boolean { return false; }
327-
getInspectPort(): number { return 0; }
328-
startExtensionHostProfile(): Promise<ProfileSession> { return Promise.resolve(Object.create(null)); }
329-
restartExtensionHost(): void { }
330-
startExtensionHost(): void { }
331-
stopExtensionHost(): void { }
332-
canAddExtension(): boolean { return false; }
333-
canRemoveExtension(): boolean { return false; }
334-
}
311+
export class TestExtensionService extends NullExtensionService { }
335312

336313
export class TestMenuService implements IMenuService {
337314

0 commit comments

Comments
 (0)