ScriptsSearchScope.js [plain text]
WebInspector.ScriptsSearchScope = function()
{
WebInspector.SearchScope.call(this)
this._searchId = 0;
}
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);
continueSearch.call(this);
}
continueSearch.call(this);
return uiSourceCodes.length;
},
stopSearch: function()
{
++this._searchId;
},
createSearchResultsPane: function(searchConfig)
{
return new WebInspector.ScriptsSearchResultsPane(searchConfig);
},
_sortedUISourceCodes: function()
{
function filterOutAnonymous(uiSourceCode)
{
return !!uiSourceCode.url;
}
function comparator(a, b)
{
return a.url.localeCompare(b.url);
}
var uiSourceCodes = WebInspector.debuggerPresentationModel.uiSourceCodes();
uiSourceCodes = uiSourceCodes.filter(filterOutAnonymous);
uiSourceCodes.sort(comparator);
return uiSourceCodes;
}
}
WebInspector.ScriptsSearchScope.prototype.__proto__ = WebInspector.SearchScope.prototype;
WebInspector.ScriptsSearchResultsPane = function(searchConfig)
{
WebInspector.FileBasedSearchResultsPane.call(this, searchConfig)
this._linkifier = new WebInspector.Linkifier(new WebInspector.ScriptsSearchResultsPane.LinkifierFormatter());
}
WebInspector.ScriptsSearchResultsPane.prototype = {
createAnchor: function(file, lineNumber, columnNumber)
{
var uiSourceCode = file;
var rawLocation = WebInspector.debuggerPresentationModel.uiLocationToRawLocation(uiSourceCode, lineNumber, columnNumber);
var anchor = this._linkifier.linkifyRawLocation(rawLocation);
anchor.removeChildren();
return anchor;
},
fileName: function(file)
{
var uiSourceCode = file;
return uiSourceCode.url;
},
}
WebInspector.ScriptsSearchResultsPane.prototype.__proto__ = WebInspector.FileBasedSearchResultsPane.prototype;
WebInspector.ScriptsSearchResultsPane.LinkifierFormatter = function()
{
}
WebInspector.ScriptsSearchResultsPane.LinkifierFormatter.prototype = {
formatLiveAnchor: function(anchor, uiLocation)
{
}
}
WebInspector.ScriptsSearchResultsPane.LinkifierFormatter.prototype.__proto__ = WebInspector.LinkifierFormatter.prototype;
WebInspector.settings.searchInContentScripts = WebInspector.settings.createSetting("searchInContentScripts", false);