提交 46a1c8bb 编写于 作者: B Benjamin Pasero

grid - more tests adoption

上级 57583403
......@@ -13,7 +13,7 @@ import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/edi
import { IEditor, Position, POSITIONS, IEditorInput } from 'vs/platform/editor/common/editor';
import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
import { TextDiffEditor } from 'vs/workbench/browser/parts/editor/textDiffEditor';
import { EditorStacksModel, EditorGroup } from 'vs/workbench/common/editor/editorGroup';
import { EditorGroup } from 'vs/workbench/common/editor/editorGroup';
import { KeyMod, KeyCode, KeyChord } from 'vs/base/common/keyCodes';
import { TPromise } from 'vs/base/common/winjs.base';
import URI from 'vs/base/common/uri';
......@@ -527,16 +527,6 @@ function registerEditorCommands() {
when: void 0,
primary: void 0
});
KeybindingsRegistry.registerCommandAndKeybindingRule({
id: '_workbench.validateStacksModel',
weight: KeybindingsRegistry.WEIGHT.workbenchContrib(0),
handler(accessor: ServicesAccessor) {
(<EditorStacksModel>accessor.get(IEditorGroupService).getStacksModel()).validate();
},
when: void 0,
primary: void 0
});
}
function positionAndInput(editorGroupService: IEditorGroupService, editorService: IWorkbenchEditorService, context?: IEditorCommandsContext): { position: Position, input: IEditorInput } {
......
......@@ -33,7 +33,7 @@ import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiati
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IProgressService } from 'vs/platform/progress/common/progress';
import { EditorStacksModel, EditorGroup, EditorIdentifier, EditorCloseEvent } from 'vs/workbench/common/editor/editorGroup';
import { EditorGroup, EditorIdentifier, EditorCloseEvent } from 'vs/workbench/common/editor/editorGroup';
import { Event, Emitter, once } from 'vs/base/common/event';
import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { IThemeService } from 'vs/platform/theme/common/themeService';
......@@ -70,7 +70,7 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService
private dimension: Dimension;
private editorGroupsControl: IEditorGroupsControl;
private memento: object;
private stacks: EditorStacksModel;
private stacks: any;
private tabOptions: IEditorTabOptions;
private forceHideTabs: boolean;
private revealIfOpen: boolean;
......@@ -132,7 +132,7 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService
this.pendingEditorInputsToClose = [];
this.pendingEditorInputCloseTimeout = null;
this.stacks = this.instantiationService.createInstance(EditorStacksModel, restoreFromStorage);
this.stacks = Object.create(null);
this.textCompareEditorVisible = TextCompareEditorVisibleContext.bindTo(contextKeyService);
......@@ -1403,7 +1403,7 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService
return this.visibleEditors ? this.visibleEditors.filter(editor => !!editor) : [];
}
public getStacksModel(): EditorStacksModel {
public getStacksModel() {
return this.stacks;
}
......
......@@ -9,7 +9,7 @@ import URI from 'vs/base/common/uri';
import { join } from 'vs/base/common/paths';
import { FileEditorInput } from 'vs/workbench/parts/files/common/editors/fileEditorInput';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
import { workbenchInstantiationService, TestTextFileService, TestEditorGroupService, createFileInput } from 'vs/workbench/test/workbenchTestServices';
import { workbenchInstantiationService, TestTextFileService, TestEditorGroupService } from 'vs/workbench/test/workbenchTestServices';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { EncodingMode } from 'vs/workbench/common/editor';
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
......@@ -185,27 +185,4 @@ suite('Files - FileEditorInput', () => {
resolved.dispose();
});
});
test('disposes model when not open anymore', function () {
const resource = toResource(this, '/path/index.txt');
const input = createFileInput(instantiationService, resource);
return input.resolve().then((model: TextFileEditorModel) => {
const stacks = accessor.editorGroupService.getStacksModel();
const group = stacks.openGroup('group', true);
group.openEditor(input);
accessor.editorGroupService.fireChange();
assert.ok(!model.isDisposed());
group.closeEditor(input);
accessor.editorGroupService.fireChange();
assert.ok(model.isDisposed());
model.dispose();
assert.ok(!accessor.modelService.getModel(model.getResource()));
});
});
});
\ No newline at end of file
......@@ -9,23 +9,22 @@ import * as assert from 'assert';
import { FileEditorTracker } from 'vs/workbench/parts/files/browser/editors/fileEditorTracker';
import URI from 'vs/base/common/uri';
import { join } from 'vs/base/common/paths';
import { FileEditorInput } from 'vs/workbench/parts/files/common/editors/fileEditorInput';
// import { FileEditorInput } from 'vs/workbench/parts/files/common/editors/fileEditorInput';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
import { workbenchInstantiationService, TestTextFileService, TestFileService } from 'vs/workbench/test/workbenchTestServices';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService';
import { EditorStacksModel } from 'vs/workbench/common/editor/editorGroup';
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
import { FileOperation, FileOperationEvent, FileChangesEvent, FileChangeType, IFileService, snapshotToString } from 'vs/platform/files/common/files';
import { /*FileOperation, FileOperationEvent,*/ FileChangesEvent, FileChangeType, IFileService, snapshotToString } from 'vs/platform/files/common/files';
import { TextFileEditorModel } from 'vs/workbench/services/textfile/common/textFileEditorModel';
import { once } from 'vs/base/common/event';
// import { once } from 'vs/base/common/event';
class TestFileEditorTracker extends FileEditorTracker {
// class TestFileEditorTracker extends FileEditorTracker {
setCloseOnFileDelete(value: boolean): void {
this.closeOnFileDelete = value;
}
}
// setCloseOnFileDelete(value: boolean): void {
// this.closeOnFileDelete = value;
// }
// }
function toResource(self: any, path: string) {
return URI.file(join('C:\\', Buffer.from(self.test.fullTitle()).toString('base64'), path));
......@@ -51,138 +50,140 @@ suite('Files - FileEditorTracker', () => {
accessor = instantiationService.createInstance(ServiceAccessor);
});
test('disposes input when resource gets deleted - local file changes', function () {
const stacks = accessor.editorGroupService.getStacksModel() as EditorStacksModel;
const group = stacks.openGroup('first', true);
// TODO@grid revisit these tests once the file tracker adopted grid servies
const tracker = instantiationService.createInstance(FileEditorTracker);
assert.ok(tracker);
// test('disposes input when resource gets deleted - local file changes', function () {
// const stacks = accessor.editorGroupService.getStacksModel() as NoOpEditorStacksModel;
// const group = stacks.openGroup('first', true);
const parent = toResource(this, '/foo/bar');
const resource = toResource(this, '/foo/bar/updatefile.js');
let input = instantiationService.createInstance(FileEditorInput, resource, void 0);
group.openEditor(input);
// const tracker = instantiationService.createInstance(FileEditorTracker);
// assert.ok(tracker);
assert.ok(!input.isDisposed());
// const parent = toResource(this, '/foo/bar');
// const resource = toResource(this, '/foo/bar/updatefile.js');
// let input = instantiationService.createInstance(FileEditorInput, resource, void 0);
// group.openEditor(input);
accessor.fileService.fireAfterOperation(new FileOperationEvent(resource, FileOperation.DELETE));
assert.ok(input.isDisposed());
group.closeEditor(input);
// assert.ok(!input.isDisposed());
input = instantiationService.createInstance(FileEditorInput, resource, void 0);
group.openEditor(input);
// accessor.fileService.fireAfterOperation(new FileOperationEvent(resource, FileOperation.DELETE));
// assert.ok(input.isDisposed());
// group.closeEditor(input);
const other = toResource(this, '/foo/barfoo');
// input = instantiationService.createInstance(FileEditorInput, resource, void 0);
// group.openEditor(input);
accessor.fileService.fireAfterOperation(new FileOperationEvent(other, FileOperation.DELETE));
assert.ok(!input.isDisposed());
// const other = toResource(this, '/foo/barfoo');
accessor.fileService.fireAfterOperation(new FileOperationEvent(parent, FileOperation.DELETE));
assert.ok(input.isDisposed());
// accessor.fileService.fireAfterOperation(new FileOperationEvent(other, FileOperation.DELETE));
// assert.ok(!input.isDisposed());
// Move
const to: any = toResource(this, '/foo/barfoo/change.js');
accessor.fileService.fireAfterOperation(new FileOperationEvent(resource, FileOperation.MOVE, to));
assert.ok(input.isDisposed());
// accessor.fileService.fireAfterOperation(new FileOperationEvent(parent, FileOperation.DELETE));
// assert.ok(input.isDisposed());
tracker.dispose();
});
// // Move
// const to: any = toResource(this, '/foo/barfoo/change.js');
// accessor.fileService.fireAfterOperation(new FileOperationEvent(resource, FileOperation.MOVE, to));
// assert.ok(input.isDisposed());
test('disposes input when resource gets deleted - local file changes - even when closeOnFileDelete = false', function () {
const stacks = accessor.editorGroupService.getStacksModel() as EditorStacksModel;
const group = stacks.openGroup('first', true);
// tracker.dispose();
// });
const tracker = instantiationService.createInstance(TestFileEditorTracker);
tracker.setCloseOnFileDelete(false);
assert.ok(tracker);
// test('disposes input when resource gets deleted - local file changes - even when closeOnFileDelete = false', function () {
// const stacks = accessor.editorGroupService.getStacksModel() as EditorStacksModel;
// const group = stacks.openGroup('first', true);
const parent = toResource(this, '/foo/bar');
const resource = toResource(this, '/foo/bar/updatefile.js');
let input = instantiationService.createInstance(FileEditorInput, resource, void 0);
group.openEditor(input);
// const tracker = instantiationService.createInstance(TestFileEditorTracker);
// tracker.setCloseOnFileDelete(false);
// assert.ok(tracker);
assert.ok(!input.isDisposed());
// const parent = toResource(this, '/foo/bar');
// const resource = toResource(this, '/foo/bar/updatefile.js');
// let input = instantiationService.createInstance(FileEditorInput, resource, void 0);
// group.openEditor(input);
accessor.fileService.fireAfterOperation(new FileOperationEvent(resource, FileOperation.DELETE));
assert.ok(input.isDisposed());
group.closeEditor(input);
// assert.ok(!input.isDisposed());
input = instantiationService.createInstance(FileEditorInput, resource, void 0);
group.openEditor(input);
// accessor.fileService.fireAfterOperation(new FileOperationEvent(resource, FileOperation.DELETE));
// assert.ok(input.isDisposed());
// group.closeEditor(input);
const other = toResource(this, '/foo/barfoo');
// input = instantiationService.createInstance(FileEditorInput, resource, void 0);
// group.openEditor(input);
accessor.fileService.fireAfterOperation(new FileOperationEvent(other, FileOperation.DELETE));
assert.ok(!input.isDisposed());
// const other = toResource(this, '/foo/barfoo');
accessor.fileService.fireAfterOperation(new FileOperationEvent(parent, FileOperation.DELETE));
assert.ok(input.isDisposed());
// accessor.fileService.fireAfterOperation(new FileOperationEvent(other, FileOperation.DELETE));
// assert.ok(!input.isDisposed());
// Move
const to: any = toResource(this, '/foo/barfoo/change.js');
accessor.fileService.fireAfterOperation(new FileOperationEvent(resource, FileOperation.MOVE, to));
assert.ok(input.isDisposed());
// accessor.fileService.fireAfterOperation(new FileOperationEvent(parent, FileOperation.DELETE));
// assert.ok(input.isDisposed());
tracker.dispose();
});
// // Move
// const to: any = toResource(this, '/foo/barfoo/change.js');
// accessor.fileService.fireAfterOperation(new FileOperationEvent(resource, FileOperation.MOVE, to));
// assert.ok(input.isDisposed());
test('disposes when resource gets deleted - remote file changes', function (done) {
const stacks = accessor.editorGroupService.getStacksModel() as EditorStacksModel;
const group = stacks.openGroup('first', true);
// tracker.dispose();
// });
const tracker = instantiationService.createInstance(FileEditorTracker);
assert.ok(tracker);
// test('disposes when resource gets deleted - remote file changes', function (done) {
// const stacks = accessor.editorGroupService.getStacksModel() as EditorStacksModel;
// const group = stacks.openGroup('first', true);
const parent = toResource(this, '/foo/bar');
const resource = toResource(this, '/foo/bar/updatefile.js');
let input = instantiationService.createInstance(FileEditorInput, resource, void 0);
group.openEditor(input);
// const tracker = instantiationService.createInstance(FileEditorTracker);
// assert.ok(tracker);
assert.ok(!input.isDisposed());
// const parent = toResource(this, '/foo/bar');
// const resource = toResource(this, '/foo/bar/updatefile.js');
// let input = instantiationService.createInstance(FileEditorInput, resource, void 0);
// group.openEditor(input);
accessor.fileService.fireFileChanges(new FileChangesEvent([{ resource, type: FileChangeType.DELETED }]));
// assert.ok(!input.isDisposed());
once(input.onDispose)(() => {
assert.ok(input.isDisposed());
group.closeEditor(input);
// accessor.fileService.fireFileChanges(new FileChangesEvent([{ resource, type: FileChangeType.DELETED }]));
input = instantiationService.createInstance(FileEditorInput, resource, void 0);
group.openEditor(input);
// once(input.onDispose)(() => {
// assert.ok(input.isDisposed());
// group.closeEditor(input);
const other = toResource(this, '/foo/barfoo');
// input = instantiationService.createInstance(FileEditorInput, resource, void 0);
// group.openEditor(input);
accessor.fileService.fireFileChanges(new FileChangesEvent([{ resource: other, type: FileChangeType.DELETED }]));
assert.ok(!input.isDisposed());
// const other = toResource(this, '/foo/barfoo');
accessor.fileService.fireFileChanges(new FileChangesEvent([{ resource: parent, type: FileChangeType.DELETED }]));
// accessor.fileService.fireFileChanges(new FileChangesEvent([{ resource: other, type: FileChangeType.DELETED }]));
// assert.ok(!input.isDisposed());
once(input.onDispose)(() => {
assert.ok(input.isDisposed());
// accessor.fileService.fireFileChanges(new FileChangesEvent([{ resource: parent, type: FileChangeType.DELETED }]));
tracker.dispose();
done();
});
});
});
// once(input.onDispose)(() => {
// assert.ok(input.isDisposed());
test('keeps open when resource gets deleted - remote file changes - closeOnFileDelete = false', function () {
const stacks = accessor.editorGroupService.getStacksModel() as EditorStacksModel;
const group = stacks.openGroup('first', true);
// tracker.dispose();
// done();
// });
// });
// });
const tracker = instantiationService.createInstance(TestFileEditorTracker);
tracker.setCloseOnFileDelete(false);
assert.ok(tracker);
// test('keeps open when resource gets deleted - remote file changes - closeOnFileDelete = false', function () {
// const stacks = accessor.editorGroupService.getStacksModel() as EditorStacksModel;
// const group = stacks.openGroup('first', true);
const resource = toResource(this, '/foo/bar/updatefile.js');
let input = instantiationService.createInstance(FileEditorInput, resource, void 0);
group.openEditor(input);
// const tracker = instantiationService.createInstance(TestFileEditorTracker);
// tracker.setCloseOnFileDelete(false);
// assert.ok(tracker);
accessor.fileService.fireFileChanges(new FileChangesEvent([{ resource, type: FileChangeType.DELETED }]));
// const resource = toResource(this, '/foo/bar/updatefile.js');
// let input = instantiationService.createInstance(FileEditorInput, resource, void 0);
// group.openEditor(input);
assert.ok(!input.isDisposed());
// accessor.fileService.fireFileChanges(new FileChangesEvent([{ resource, type: FileChangeType.DELETED }]));
tracker.dispose();
});
// assert.ok(!input.isDisposed());
// tracker.dispose();
// });
test('file change event updates model', function () {
const tracker = instantiationService.createInstance(FileEditorTracker);
......
......@@ -230,7 +230,7 @@ export class NoOpEditorPart implements IEditorPart, IEditorGroupService {
}
}
class NoOpEditorStacksModel implements IEditorStacksModel {
export class NoOpEditorStacksModel implements IEditorStacksModel {
onModelChanged: Event<IStacksModelChangeEvent> = new Emitter<IStacksModelChangeEvent>().event;
onWillCloseEditor: Event<IEditorCloseEvent> = new Emitter<IEditorCloseEvent>().event;
......
......@@ -37,7 +37,7 @@ export class TestEditorControl extends BaseEditor {
}
export class TestEditorInput extends EditorInput implements IFileEditorInput {
public gotDisposed: boolean;
constructor(private resource: URI) { super(); }
getTypeId() { return 'testEditorInputForNextEditorService'; }
......@@ -48,6 +48,10 @@ export class TestEditorInput extends EditorInput implements IFileEditorInput {
setPreferredEncoding(encoding: string) { }
getResource(): URI { return this.resource; }
setForceOpenAsBinary(): void { }
dispose(): void {
super.dispose();
this.gotDisposed = true;
}
}
suite('NextEditorService editor2', () => {
......@@ -97,7 +101,7 @@ suite('NextEditorService editor2', () => {
willCloseEditorListenerCounter++;
});
// Open EditorInput
// Open input
return service.openEditor(input, { pinned: true }).then(editor => {
assert.ok(editor instanceof TestEditorControl);
assert.equal(editor, service.activeControl);
......@@ -111,12 +115,15 @@ suite('NextEditorService editor2', () => {
assert.equal(visibleEditorChangeEventCounter, 1);
assert.equal(willOpenEditorEventCounter, 1);
// Close input
service.closeEditor(input, editor.group);
assert.equal(willCloseEditorListenerCounter, 1);
assert.equal(didCloseEditorListenerCounter, 1);
assert.equal(activeEditorChangeEventCounter, 2);
assert.equal(visibleEditorChangeEventCounter, 2);
assert.ok(input.gotDisposed);
// Open again 2 inputs
return service.openEditor(input, { pinned: true }).then(editor => {
return service.openEditor(otherInput, { pinned: true }).then(editor => {
assert.equal(service.visibleControls.length, 1);
......
......@@ -22,6 +22,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils';
import { TPromise } from 'vs/base/common/winjs.base';
import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput';
function inst(): IInstantiationService {
let inst = new TestInstantiationService();
......@@ -136,7 +137,7 @@ class NonSerializableTestEditorInput extends EditorInput {
getTypeId() { return 'testEditorInputForGroups-nonSerializable'; }
resolve(): TPromise<IEditorModel> { return null; }
matches(other: TestEditorInput): boolean {
matches(other: NonSerializableTestEditorInput): boolean {
return other && this.id === other.id && other instanceof NonSerializableTestEditorInput;
}
}
......@@ -149,7 +150,7 @@ class TestFileEditorInput extends EditorInput implements IFileEditorInput {
getTypeId() { return 'testFileEditorInputForGroups'; }
resolve(): TPromise<IEditorModel> { return null; }
matches(other: TestEditorInput): boolean {
matches(other: TestFileEditorInput): boolean {
return other && this.id === other.id && other instanceof TestFileEditorInput;
}
......@@ -206,7 +207,7 @@ class TestEditorInputFactory implements IEditorInputFactory {
suite('Editor Groups editor2', () => {
function registerEditorInputFactory() {
Registry.as<IEditorInputFactoryRegistry>(EditorExtensions.EditorInputFactories).registerEditorInputFactory('testEditorInputForEditorGroups', TestEditorInputFactory);
Registry.as<IEditorInputFactoryRegistry>(EditorExtensions.EditorInputFactories).registerEditorInputFactory('testEditorInputForGroups', TestEditorInputFactory);
}
registerEditorInputFactory();
......@@ -236,44 +237,42 @@ suite('Editor Groups editor2', () => {
assert.equal(clone.isActive(input3), true);
});
// test('Stack - contains() with diff editor support', function () {
// const model = create();
// const group1 = model.openGroup('group1');
test('Stack - contains() with diff editor support', function () {
const group = createGroup();
// const input1 = input();
// const input2 = input();
const input1 = input();
const input2 = input();
// const diffInput = new DiffEditorInput('name', 'description', input1, input2);
const diffInput = new DiffEditorInput('name', 'description', input1, input2);
// group1.openEditor(input2, { pinned: true, active: true });
group.openEditor(input2, { pinned: true, active: true });
// assert.equal(group1.contains(input2), true);
// assert.equal(group1.contains(diffInput), false);
// assert.equal(group1.contains(diffInput, true), true);
// });
assert.equal(group.contains(input2), true);
assert.equal(group.contains(diffInput), false);
assert.equal(group.contains(diffInput, true), true);
});
// test('Stack - group serialization', function () {
// const model = create();
// const group = model.openGroup('group');
test('Stack - group serialization', function () {
Registry.as<IEditorInputFactoryRegistry>(EditorExtensions.EditorInputFactories).setInstantiationService(inst());
const group = createGroup();
// const input1 = input();
// const input2 = input();
// const input3 = input();
const input1 = input();
const input2 = input();
const input3 = input();
// // Pinned and Active
// group.openEditor(input1, { pinned: true, active: true });
// group.openEditor(input2, { pinned: true, active: true });
// group.openEditor(input3, { pinned: false, active: true });
// Pinned and Active
group.openEditor(input1, { pinned: true, active: true });
group.openEditor(input2, { pinned: true, active: true });
group.openEditor(input3, { pinned: false, active: true });
// const deserialized = createGroup(group.serialize());
// assert.equal(group.id, deserialized.id);
// assert.equal(deserialized.count, 3);
// assert.equal(deserialized.isPinned(input1), true);
// assert.equal(deserialized.isPinned(input2), true);
// assert.equal(deserialized.isPinned(input3), false);
// assert.equal(deserialized.isActive(input3), true);
// });
const deserialized = createGroup(group.serialize());
assert.equal(group.id, deserialized.id);
assert.equal(deserialized.count, 3);
assert.equal(deserialized.isPinned(input1), true);
assert.equal(deserialized.isPinned(input2), true);
assert.equal(deserialized.isPinned(input3), false);
assert.equal(deserialized.isActive(input3), true);
});
// test('Groups - Basic', function () {
// const model = create();
......
......@@ -27,9 +27,7 @@ import { IEditorInput, IEditorOptions, Position, IEditor, IResourceInput, IUntit
import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService';
import { IWorkspaceContextService, IWorkspace as IWorkbenchWorkspace, WorkbenchState, IWorkspaceFolder, IWorkspaceFoldersChangeEvent } from 'vs/platform/workspace/common/workspace';
import { ILifecycleService, ShutdownEvent, ShutdownReason, StartupKind, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle';
import { EditorStacksModel } from 'vs/workbench/common/editor/editorGroup';
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService';
import { IEditorGroupService, GroupArrangement, GroupOrientation, IEditorTabOptions, IMoveOptions } from 'vs/workbench/services/group/common/groupService';
import { TextFileService } from 'vs/workbench/services/textfile/common/textFileService';
import { FileOperationEvent, IFileService, IResolveContentOptions, FileOperationError, IFileStat, IResolveFileResult, FileChangesEvent, IResolveFileOptions, IContent, IUpdateContentOptions, IStreamContent, ICreateFileOptions, ITextSnapshot, IResourceEncodings } from 'vs/platform/files/common/files';
......@@ -40,7 +38,7 @@ import { IRawTextContent, ITextFileService } from 'vs/workbench/services/textfil
import { parseArgs } from 'vs/platform/environment/node/argv';
import { EnvironmentService } from 'vs/platform/environment/node/environmentService';
import { IModeService } from 'vs/editor/common/services/modeService';
import { IWorkbenchEditorService, ICloseEditorsFilter } from 'vs/workbench/services/editor/common/editorService';
import { IWorkbenchEditorService, ICloseEditorsFilter, NoOpEditorStacksModel } from 'vs/workbench/services/editor/common/editorService';
import { IHistoryService } from 'vs/workbench/services/history/common/history';
import { IInstantiationService, ServicesAccessor, ServiceIdentifier } from 'vs/platform/instantiation/common/instantiation';
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
......@@ -497,7 +495,7 @@ export class TestStorageService implements IStorageService {
export class TestEditorGroupService implements IEditorGroupService {
public _serviceBrand: any;
private stacksModel: EditorStacksModel;
private stacksModel;
private readonly _onEditorsChanged: Emitter<void>;
private readonly _onEditorOpening: Emitter<IEditorOpeningEvent>;
......@@ -523,9 +521,7 @@ export class TestEditorGroupService implements IEditorGroupService {
services.set(ILifecycleService, lifecycle);
services.set(ITelemetryService, NullTelemetryService);
let inst = new InstantiationService(services);
this.stacksModel = inst.createInstance(EditorStacksModel, true);
this.stacksModel = new NoOpEditorStacksModel();
}
public fireChange(): void {
......@@ -600,7 +596,7 @@ export class TestEditorGroupService implements IEditorGroupService {
public moveEditor(input: IEditorInput, from: any, to: any, moveOptions?: IMoveOptions): void {
}
public getStacksModel(): EditorStacksModel {
public getStacksModel() {
return this.stacksModel;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册