Fix #57046 - workspaceContains should search using search providers, not its own DiskSearch instance

This commit is contained in:
Rob Lourens
2018-08-23 22:04:31 -07:00
parent 346018a80d
commit 803542327f
7 changed files with 86 additions and 46 deletions

View File

@@ -4,13 +4,14 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
import { relative, join } from 'path';
import { join, relative } from 'path';
import { delta as arrayDelta } from 'vs/base/common/arrays';
import { Emitter, Event } from 'vs/base/common/event';
import { TernarySearchTree } from 'vs/base/common/map';
import { Counter } from 'vs/base/common/numbers';
import { normalize } from 'vs/base/common/paths';
import { isLinux } from 'vs/base/common/platform';
import { basenameOrAuthority, isEqual, dirname } from 'vs/base/common/resources';
import { basenameOrAuthority, dirname, isEqual } from 'vs/base/common/resources';
import { compare } from 'vs/base/common/strings';
import URI from 'vs/base/common/uri';
import { TPromise } from 'vs/base/common/winjs.base';
@@ -140,8 +141,6 @@ class ExtHostWorkspaceImpl extends Workspace {
export class ExtHostWorkspace implements ExtHostWorkspaceShape {
private static _requestIdPool = 0;
private readonly _onDidChangeWorkspace = new Emitter<vscode.WorkspaceFoldersChangeEvent>();
private readonly _proxy: MainThreadWorkspaceShape;
@@ -157,7 +156,8 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape {
constructor(
mainContext: IMainContext,
data: IWorkspaceData,
private _logService: ILogService
private _logService: ILogService,
private _requestIdProvider: Counter
) {
this._proxy = mainContext.getProxy(MainContext.MainThreadWorkspace);
this._messageService = mainContext.getProxy(MainContext.MainThreadMessageService);
@@ -348,7 +348,7 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape {
findFiles(include: vscode.GlobPattern, exclude: vscode.GlobPattern, maxResults: number, extensionId: string, token?: vscode.CancellationToken): Thenable<vscode.Uri[]> {
this._logService.trace(`extHostWorkspace#findFiles: fileSearch, extension: ${extensionId}, entryPoint: findFiles`);
const requestId = ExtHostWorkspace._requestIdPool++;
const requestId = this._requestIdProvider.getNext();
let includePattern: string;
let includeFolder: string;
@@ -382,7 +382,7 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape {
findTextInFiles(query: vscode.TextSearchQuery, options: vscode.FindTextInFilesOptions, callback: (result: vscode.TextSearchResult) => void, extensionId: string, token?: vscode.CancellationToken) {
this._logService.trace(`extHostWorkspace#findTextInFiles: textSearch, extension: ${extensionId}, entryPoint: findTextInFiles`);
const requestId = ExtHostWorkspace._requestIdPool++;
const requestId = this._requestIdProvider.getNext();
const globPatternToString = (pattern: vscode.GlobPattern | string) => {
if (typeof pattern === 'string') {