| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 /* |  | 
| 2  * Copyright (C) 2011 Google Inc. All rights reserved. |  | 
| 3  * |  | 
| 4  * Redistribution and use in source and binary forms, with or without |  | 
| 5  * modification, are permitted provided that the following conditions are |  | 
| 6  * met: |  | 
| 7  * |  | 
| 8  * 1. Redistributions of source code must retain the above copyright |  | 
| 9  * notice, this list of conditions and the following disclaimer. |  | 
| 10  * |  | 
| 11  * 2. Redistributions in binary form must reproduce the above |  | 
| 12  * copyright notice, this list of conditions and the following disclaimer |  | 
| 13  * in the documentation and/or other materials provided with the |  | 
| 14  * distribution. |  | 
| 15  * |  | 
| 16  * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS |  | 
| 17  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |  | 
| 18  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |  | 
| 19  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC. |  | 
| 20  * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |  | 
| 21  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |  | 
| 22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |  | 
| 23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |  | 
| 24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |  | 
| 25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |  | 
| 26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |  | 
| 27  */ |  | 
| 28 |  | 
| 29 /** |  | 
| 30  * @constructor |  | 
| 31  * @implements {WebInspector.SearchScope} |  | 
| 32  * @param {WebInspector.Workspace} workspace |  | 
| 33  */ |  | 
| 34 WebInspector.ScriptsSearchScope = function(workspace) |  | 
| 35 { |  | 
| 36     // FIXME: Add title once it is used by search controller. |  | 
| 37     WebInspector.SearchScope.call(this) |  | 
| 38     this._searchId = 0; |  | 
| 39     this._workspace = workspace; |  | 
| 40 } |  | 
| 41 |  | 
| 42 WebInspector.ScriptsSearchScope.prototype = { |  | 
| 43     /** |  | 
| 44      * @param {WebInspector.Progress} progress |  | 
| 45      * @param {function(boolean)} indexingFinishedCallback |  | 
| 46      */ |  | 
| 47     performIndexing: function(progress, indexingFinishedCallback) |  | 
| 48     { |  | 
| 49         this.stopSearch(); |  | 
| 50 |  | 
| 51         function filterOutServiceProjects(project) |  | 
| 52         { |  | 
| 53             return !project.isServiceProject(); |  | 
| 54         } |  | 
| 55 |  | 
| 56         var projects = this._workspace.projects().filter(filterOutServiceProject
     s); |  | 
| 57         var barrier = new CallbackBarrier(); |  | 
| 58         var compositeProgress = new WebInspector.CompositeProgress(progress); |  | 
| 59         progress.addEventListener(WebInspector.Progress.Events.Canceled, indexin
     gCanceled.bind(this)); |  | 
| 60         for (var i = 0; i < projects.length; ++i) { |  | 
| 61             var project = projects[i]; |  | 
| 62             var projectProgress = compositeProgress.createSubProgress(project.ui
     SourceCodes().length); |  | 
| 63             project.indexContent(projectProgress, barrier.createCallback()); |  | 
| 64         } |  | 
| 65         barrier.callWhenDone(indexingFinishedCallback.bind(this, true)); |  | 
| 66 |  | 
| 67         function indexingCanceled() |  | 
| 68         { |  | 
| 69             indexingFinishedCallback(false); |  | 
| 70             progress.done(); |  | 
| 71         } |  | 
| 72     }, |  | 
| 73 |  | 
| 74     /** |  | 
| 75      * @param {WebInspector.SearchConfig} searchConfig |  | 
| 76      * @param {WebInspector.Progress} progress |  | 
| 77      * @param {function(WebInspector.FileBasedSearchResultsPane.SearchResult)} s
     earchResultCallback |  | 
| 78      * @param {function(boolean)} searchFinishedCallback |  | 
| 79      */ |  | 
| 80     performSearch: function(searchConfig, progress, searchResultCallback, search
     FinishedCallback) |  | 
| 81     { |  | 
| 82         this.stopSearch(); |  | 
| 83 |  | 
| 84         /** |  | 
| 85          * @param {WebInspector.Project} project |  | 
| 86          */ |  | 
| 87         function filterOutServiceProjects(project) |  | 
| 88         { |  | 
| 89             return !project.isServiceProject(); |  | 
| 90         } |  | 
| 91 |  | 
| 92         var projects = this._workspace.projects().filter(filterOutServiceProject
     s); |  | 
| 93         var barrier = new CallbackBarrier(); |  | 
| 94         var compositeProgress = new WebInspector.CompositeProgress(progress); |  | 
| 95         for (var i = 0; i < projects.length; ++i) { |  | 
| 96             var project = projects[i]; |  | 
| 97             var projectProgress = compositeProgress.createSubProgress(project.ui
     SourceCodes().length); |  | 
| 98             var callback = barrier.createCallback(searchCallbackWrapper.bind(thi
     s, this._searchId, project)); |  | 
| 99             project.searchInContent(searchConfig.query, !searchConfig.ignoreCase
     , searchConfig.isRegex, projectProgress, callback); |  | 
| 100         } |  | 
| 101         barrier.callWhenDone(searchFinishedCallback.bind(this, true)); |  | 
| 102 |  | 
| 103         /** |  | 
| 104          * @param {number} searchId |  | 
| 105          * @param {WebInspector.Project} project |  | 
| 106          * @param {StringMap} searchMatches |  | 
| 107          */ |  | 
| 108         function searchCallbackWrapper(searchId, project, searchMatches) |  | 
| 109         { |  | 
| 110             if (searchId !== this._searchId) { |  | 
| 111                 searchFinishedCallback(false); |  | 
| 112                 return; |  | 
| 113             } |  | 
| 114             var paths = searchMatches.keys(); |  | 
| 115             for (var i = 0; i < paths.length; ++i) { |  | 
| 116                 var uiSourceCode = project.uiSourceCode(paths[i]); |  | 
| 117                 var searchResult = new WebInspector.FileBasedSearchResultsPane.S
     earchResult(uiSourceCode, searchMatches.get(paths[i])); |  | 
| 118                 searchResultCallback(searchResult); |  | 
| 119             } |  | 
| 120         } |  | 
| 121     }, |  | 
| 122 |  | 
| 123     stopSearch: function() |  | 
| 124     { |  | 
| 125         ++this._searchId; |  | 
| 126     }, |  | 
| 127 |  | 
| 128     /** |  | 
| 129      * @param {WebInspector.SearchConfig} searchConfig |  | 
| 130      */ |  | 
| 131     createSearchResultsPane: function(searchConfig) |  | 
| 132     { |  | 
| 133         return new WebInspector.FileBasedSearchResultsPane(searchConfig); |  | 
| 134     }, |  | 
| 135 |  | 
| 136     __proto__: WebInspector.SearchScope.prototype |  | 
| 137 } |  | 
| OLD | NEW | 
|---|