Path: blob/main/src/vs/editor/test/browser/diff/testDiffProviderFactoryService.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { CancellationToken } from '../../../../base/common/cancellation.js';6import { toDisposable } from '../../../../base/common/lifecycle.js';7import { IDocumentDiff, IDocumentDiffProvider, IDocumentDiffProviderOptions } from '../../../common/diff/documentDiffProvider.js';8import { linesDiffComputers } from '../../../common/diff/linesDiffComputers.js';9import { ITextModel } from '../../../common/model.js';10import { Event } from '../../../../base/common/event.js';11import { IDiffProviderFactoryService } from '../../../browser/widget/diffEditor/diffProviderFactoryService.js';1213export class TestDiffProviderFactoryService implements IDiffProviderFactoryService {14declare readonly _serviceBrand: undefined;15createDiffProvider(): IDocumentDiffProvider {16return new SyncDocumentDiffProvider();17}18}1920class SyncDocumentDiffProvider implements IDocumentDiffProvider {21computeDiff(original: ITextModel, modified: ITextModel, options: IDocumentDiffProviderOptions, cancellationToken: CancellationToken): Promise<IDocumentDiff> {22const result = linesDiffComputers.getDefault().computeDiff(original.getLinesContent(), modified.getLinesContent(), options);23return Promise.resolve({24changes: result.changes,25quitEarly: result.hitTimeout,26identical: original.getValue() === modified.getValue(),27moves: result.moves,28});29}3031onDidChange: Event<void> = () => toDisposable(() => { });32}333435