Chromium Code Reviews| Index: Source/devtools/front_end/search/SourcesSearchScope.js |
| diff --git a/Source/devtools/front_end/search/SourcesSearchScope.js b/Source/devtools/front_end/search/SourcesSearchScope.js |
| index a8f01f1ef211e8e587cf16373aaad03bdf8d7980..716ea6ec19da3245a1d51590b1df0d7ffbb4d70e 100644 |
| --- a/Source/devtools/front_end/search/SourcesSearchScope.js |
| +++ b/Source/devtools/front_end/search/SourcesSearchScope.js |
| @@ -112,27 +112,52 @@ WebInspector.SourcesSearchScope.prototype = { |
| var findMatchingFilesProgress = projectProgress.createSubProgress(); |
| var searchContentProgress = projectProgress.createSubProgress(); |
| var barrierCallback = barrier.createCallback(); |
| - var callback = this._processMatchingFilesForProject.bind(this, this._searchId, project, searchContentProgress, barrierCallback); |
| - project.findFilesMatchingSearchRequest(searchConfig, findMatchingFilesProgress, callback); |
| + var filesMathingFileQuery = this._projectFilesMatchingFileQuery(project, searchConfig); |
| + var callback = this._processMatchingFilesForProject.bind(this, this._searchId, project, filesMathingFileQuery, searchContentProgress, barrierCallback); |
| + project.findFilesMatchingSearchRequest(searchConfig, filesMathingFileQuery, findMatchingFilesProgress, callback); |
| } |
| barrier.callWhenDone(this._searchFinishedCallback.bind(this, true)); |
| }, |
| /** |
| + * @param {!WebInspector.Project} project |
| + * @param {!WebInspector.ProjectSearchConfig} searchConfig |
| + * @param {boolean=} dirtyOnly |
| + * @return {!Array.<string>} |
| + */ |
| + _projectFilesMatchingFileQuery: function(project, searchConfig, dirtyOnly) |
| + { |
| + var result = []; |
| + var uiSourceCodes = project.uiSourceCodes(); |
| + for (var i = 0; i < uiSourceCodes.length; ++i) { |
| + var uiSourceCode = uiSourceCodes[i]; |
| + if (dirtyOnly && !uiSourceCode.isDirty()) |
| + continue; |
| + if (this._searchConfig.filePathMatchesFileQuery(uiSourceCode.fullDisplayName())) |
| + result.push(uiSourceCode.path()); |
| + } |
| + result = result.sort(String.naturalOrderComparator); |
| + return result; |
| + }, |
| + |
| + /** |
| * @param {number} searchId |
| * @param {!WebInspector.Project} project |
| + * @param {!Array.<string>} filesMathingFileQuery |
| * @param {!WebInspector.Progress} progress |
| * @param {function()} callback |
| * @param {!Array.<string>} files |
| */ |
| - _processMatchingFilesForProject: function(searchId, project, progress, callback, files) |
| + _processMatchingFilesForProject: function(searchId, project, filesMathingFileQuery, progress, callback, files) |
| { |
| if (searchId !== this._searchId) { |
| this._searchFinishedCallback(false); |
| return; |
| } |
| - addDirtyFiles.call(this); |
| + files = files.sort(String.naturalOrderComparator); |
| + files = files.intersectOrdered(filesMathingFileQuery, String.naturalOrderComparator); |
| + files = files.concat(this._projectFilesMatchingFileQuery(project, this._searchConfig, true)); |
|
apavlov
2014/07/09 14:00:20
This could be sorted as well
|
| if (!files.length) { |
| progress.done(); |
| @@ -150,22 +175,6 @@ WebInspector.SourcesSearchScope.prototype = { |
| scheduleSearchInNextFileOrFinish.call(this); |
| /** |
| - * @this {WebInspector.SourcesSearchScope} |
| - */ |
| - function addDirtyFiles() |
| - { |
| - var matchingFiles = StringSet.fromArray(files); |
| - var uiSourceCodes = project.uiSourceCodes(); |
| - for (var i = 0; i < uiSourceCodes.length; ++i) { |
| - if (!uiSourceCodes[i].isDirty()) |
| - continue; |
| - var path = uiSourceCodes[i].path(); |
| - if (!matchingFiles.contains(path) && this._searchConfig.filePathMatchesFileQuery(path)) |
| - files.push(path); |
| - } |
| - } |
| - |
| - /** |
| * @param {string} path |
| * @this {WebInspector.SourcesSearchScope} |
| */ |