ScriptsSearchScope.js [plain text]
WebInspector.ScriptsSearchScope = function(workspace)
{
WebInspector.SearchScope.call(this)
this._searchId = 0;
this._workspace = workspace;
}
WebInspector.ScriptsSearchScope.prototype = {
performSearch: function(searchConfig, searchResultCallback, searchFinishedCallback)
{
this.stopSearch();
var uiSourceCodes = this._sortedUISourceCodes();
var uiSourceCodeIndex = 0;
function filterOutContentScripts(uiSourceCode)
{
return !uiSourceCode.isContentScript;
}
if (!WebInspector.settings.searchInContentScripts.get())
uiSourceCodes = uiSourceCodes.filter(filterOutContentScripts);
function continueSearch()
{
if (uiSourceCodeIndex < uiSourceCodes.length) {
var uiSourceCode = uiSourceCodes[uiSourceCodeIndex++];
uiSourceCode.searchInContent(searchConfig.query, !searchConfig.ignoreCase, searchConfig.isRegex, searchCallbackWrapper.bind(this, this._searchId, uiSourceCode));
} else
searchFinishedCallback(true);
}
function searchCallbackWrapper(searchId, uiSourceCode, searchMatches)
{
if (searchId !== this._searchId) {
searchFinishedCallback(false);
return;
}
var searchResult = new WebInspector.FileBasedSearchResultsPane.SearchResult(uiSourceCode, searchMatches);
searchResultCallback(searchResult);
if (searchId !== this._searchId) {
searchFinishedCallback(false);
return;
}
continueSearch.call(this);
}
continueSearch.call(this);
return uiSourceCodes.length;
},
stopSearch: function()
{
++this._searchId;
},
createSearchResultsPane: function(searchConfig)
{
return new WebInspector.FileBasedSearchResultsPane(searchConfig);
},
_sortedUISourceCodes: function()
{
function filterOutAnonymous(uiSourceCode)
{
return !!uiSourceCode.originURL();
}
function comparator(a, b)
{
return a.originURL().compareTo(b.originURL());
}
var projects = this._workspace.projects();
var uiSourceCodes = [];
for (var i = 0; i < projects.length; ++i) {
if (projects[i].isServiceProject())
continue;
uiSourceCodes = uiSourceCodes.concat(projects[i].uiSourceCodes());
}
uiSourceCodes = uiSourceCodes.filter(filterOutAnonymous);
uiSourceCodes.sort(comparator);
return uiSourceCodes;
},
__proto__: WebInspector.SearchScope.prototype
}