提交 188c29a4 编写于 作者: R Rob Lourens

Change forceExtensionHostSearch strategy for easier testing

上级 3673539e
......@@ -6,6 +6,7 @@
import { CancellationToken } from 'vs/base/common/cancellation';
import { dispose, IDisposable, DisposableStore } from 'vs/base/common/lifecycle';
import { URI, UriComponents } from 'vs/base/common/uri';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
import { IFileMatch, IFileQuery, IRawFileMatch2, ISearchComplete, ISearchCompleteStats, ISearchProgressItem, ISearchResultProvider, ISearchService, ITextQuery, QueryType, SearchProviderType } from 'vs/workbench/services/search/common/search';
......@@ -20,9 +21,15 @@ export class MainThreadSearch implements MainThreadSearchShape {
constructor(
extHostContext: IExtHostContext,
@ISearchService private readonly _searchService: ISearchService,
@ITelemetryService private readonly _telemetryService: ITelemetryService
@ITelemetryService private readonly _telemetryService: ITelemetryService,
@IConfigurationService _configurationService: IConfigurationService,
) {
this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostSearch);
const forceEHSearch = _configurationService.getValue('search.experimental.forceExtensionHostSearch');
if (forceEHSearch) {
this._proxy.$enableExtensionHostSearch();
}
}
dispose(): void {
......
......@@ -1314,6 +1314,7 @@ export interface ExtHostSecretStateShape {
}
export interface ExtHostSearchShape {
$enableExtensionHostSearch(): void;
$provideFileSearchResults(handle: number, session: number, query: search.IRawQuery, token: CancellationToken): Promise<search.ISearchCompleteStats>;
$provideTextSearchResults(handle: number, session: number, query: search.IRawTextQuery, token: CancellationToken): Promise<search.ISearchCompleteStats>;
$clearCache(cacheKey: string): Promise<void>;
......
......@@ -105,6 +105,8 @@ export class ExtHostSearch implements ExtHostSearchShape {
return engine.search(progress => this._proxy.$handleTextMatch(handle, session, progress), token);
}
$enableExtensionHostSearch(): void { }
protected createTextSearchManager(query: ITextQuery, provider: vscode.TextSearchProvider): TextSearchManager {
return new TextSearchManager(query, provider, {
readdir: resource => Promise.resolve([]), // TODO@rob implement
......
......@@ -8,7 +8,6 @@ import { Schemas } from 'vs/base/common/network';
import { URI } from 'vs/base/common/uri';
import * as pfs from 'vs/base/node/pfs';
import { ILogService } from 'vs/platform/log/common/log';
import { IExtHostInitDataService } from 'vs/workbench/api/common/extHostInitDataService';
import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService';
import { ExtHostSearch, reviveQuery } from 'vs/workbench/api/common/extHostSearch';
import { IURITransformerService } from 'vs/workbench/api/common/extHostUriTransformerService';
......@@ -29,7 +28,6 @@ export class NativeExtHostSearch extends ExtHostSearch {
constructor(
@IExtHostRpcService extHostRpc: IExtHostRpcService,
@IExtHostInitDataService initData: IExtHostInitDataService,
@IURITransformerService _uriTransformer: IURITransformerService,
@ILogService _logService: ILogService,
) {
......@@ -37,11 +35,9 @@ export class NativeExtHostSearch extends ExtHostSearch {
const outputChannel = new OutputChannel('RipgrepSearchUD', this._logService);
this.registerTextSearchProvider(Schemas.userData, new RipgrepSearchProvider(outputChannel));
this._registerEHSearchProviders();
}
private _registerEHSearchProviders(): void {
override $enableExtensionHostSearch(): void {
const outputChannel = new OutputChannel('RipgrepSearchEH', this._logService);
this.registerTextSearchProvider(Schemas.file, new RipgrepSearchProvider(outputChannel));
this.registerInternalFileSearchProvider(Schemas.file, new SearchService());
......
......@@ -209,7 +209,7 @@ export class SearchService extends Disposable implements ISearchService {
this.fileSearchProviders.get(scheme) :
this.textSearchProviders.get(scheme);
if (scheme === Schemas.file && (!provider || this.diskSearch)) {
if (!provider && scheme === Schemas.file) {
diskSearchQueries.push(...schemeFQs);
} else {
if (!provider) {
......
......@@ -44,10 +44,7 @@ export class LocalSearchService extends SearchService {
) {
super(modelService, editorService, telemetryService, logService, extensionService, fileService, uriIdentityService);
const forceEHSearch = configurationService.getValue('search.experimental.forceExtensionHostSearch');
if (!forceEHSearch) {
this.diskSearch = instantiationService.createInstance(DiskSearch, !environmentService.isBuilt || environmentService.verbose, parseSearchPort(environmentService.args, environmentService.isBuilt));
}
this.diskSearch = instantiationService.createInstance(DiskSearch, !environmentService.isBuilt || environmentService.verbose, parseSearchPort(environmentService.args, environmentService.isBuilt));
}
}
......
......@@ -5,25 +5,23 @@
import * as assert from 'assert';
import { mapArrayOrNot } from 'vs/base/common/arrays';
import { timeout } from 'vs/base/common/async';
import { CancellationTokenSource } from 'vs/base/common/cancellation';
import { isPromiseCanceledError } from 'vs/base/common/errors';
import { DisposableStore } from 'vs/base/common/lifecycle';
import { joinPath } from 'vs/base/common/resources';
import { URI, UriComponents } from 'vs/base/common/uri';
import * as pfs from 'vs/base/node/pfs';
import { NullLogService } from 'vs/platform/log/common/log';
import { MainContext, MainThreadSearchShape } from 'vs/workbench/api/common/extHost.protocol';
import { NativeExtHostSearch } from 'vs/workbench/api/node/extHostSearch';
import { Range } from 'vs/workbench/api/common/extHostTypes';
import { IFileMatch, IFileQuery, IPatternInfo, IRawFileMatch2, ISearchCompleteStats, ISearchQuery, ITextQuery, QueryType, resultIsMatch } from 'vs/workbench/services/search/common/search';
import { TestRPCProtocol } from 'vs/workbench/test/browser/api/testRPCProtocol';
import type * as vscode from 'vscode';
import { NullLogService } from 'vs/platform/log/common/log';
import { URITransformerService } from 'vs/workbench/api/common/extHostUriTransformerService';
import { mock } from 'vs/base/test/common/mock';
import { IExtHostInitDataService } from 'vs/workbench/api/common/extHostInitDataService';
import { NativeExtHostSearch } from 'vs/workbench/api/node/extHostSearch';
import { IFileMatch, IFileQuery, IPatternInfo, IRawFileMatch2, ISearchCompleteStats, ISearchQuery, ITextQuery, QueryType, resultIsMatch } from 'vs/workbench/services/search/common/search';
import { TextSearchManager } from 'vs/workbench/services/search/common/textSearchManager';
import { NativeTextSearchManager } from 'vs/workbench/services/search/node/textSearchManager';
import { timeout } from 'vs/base/common/async';
import { TestRPCProtocol } from 'vs/workbench/test/browser/api/testRPCProtocol';
import type * as vscode from 'vscode';
let rpcProtocol: TestRPCProtocol;
let extHostSearch: NativeExtHostSearch;
......@@ -141,7 +139,6 @@ suite('ExtHostSearch', () => {
constructor() {
super(
rpcProtocol,
new class extends mock<IExtHostInitDataService>() { override remote = { isRemote: false, authority: undefined, connectionData: null }; },
new URITransformerService(null),
logService
);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册