3 <title>Test search in sources.</title>
4 <script src="../inspector-test.js"></script>
5 <script src="../isolated-filesystem-test.js"></script>
6 <script src="../workspace-test.js"></script>
7 <script src="../debugger-test.js"></script>
11 var fileSystemPath = "/var/www";
12 var names = ["search.html", "search.js", "search.css"];
14 for (var i = 0; i < names.length; ++i) {
16 files["/" + name] = loadResource(name);
19 function loadResource(name)
21 var urlPrefix = WebInspector.resourceTreeModel.inspectedPageURL().substr(0, WebInspector.resourceTreeModel.inspectedPageURL().lastIndexOf("/") + 1);
22 var url = urlPrefix + "resources/" + name;
23 var xhr = new XMLHttpRequest();
24 xhr.open("GET", url, false);
26 return xhr.responseText;
29 function addNetworkUISourceCode(url, content)
31 var contentProvider = new WebInspector.StaticContentProvider(WebInspector.resourceTypes.Script, content);
32 var uiSourceCode = InspectorTest.testNetworkWorkspaceBinding.addFileForURL(url, contentProvider, false);
36 InspectorFrontendHost.searchInPath = function(requestId, path, query)
43 for (var i = 0; i < names.length; ++i)
44 paths.push("/var/www/" + names[i]);
45 manager.fileSystemWorkspaceBinding._onSearchCompleted({data: {requestId: requestId, fileSystemPath: path, files: paths}});
48 WebInspector.inspectorView.showViewInDrawer("search");
50 InspectorTest.createWorkspace();
51 manager = InspectorTest.createIsolatedFileSystemManager(InspectorTest.testWorkspace, InspectorTest.testFileSystemMapping);
52 manager.addMockFileSystem(fileSystemPath);
53 InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(function(){}, 3);
54 manager.addFiles(fileSystemPath, files);
56 var jsFileSystemUISourceCode;
57 var uiSourceCodes = InspectorTest.testWorkspace.uiSourceCodes();
58 for (var i = 0; i < uiSourceCodes.length; ++i) {
59 if (uiSourceCodes[i].name() === "search.js") {
60 jsFileSystemUISourceCode = uiSourceCodes[i];
65 InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(function(){}, 2);
66 addNetworkUISourceCode("http://localhost/search.html", loadResource("search.html"));
67 var jsNetworkUISourceCode = addNetworkUISourceCode("http://localhost/search.js", loadResource("search.js"));
69 var scope = new WebInspector.SourcesSearchScope();
70 WebInspector.workspace = InspectorTest.testWorkspace;
72 function runSearchAndDumpResults(searchConfig, callback)
74 var searchResults = [];
75 var progress = new WebInspector.Progress();
76 scope.performSearch(searchConfig, progress, searchResultCallback, searchFinishedCallback);
78 function searchResultCallback(searchResult)
80 searchResults.push(searchResult);
83 function searchFinishedCallback()
85 function filterOutEmptySearchResults(searchResult)
87 return searchResult.searchMatches.length;
89 searchResults = searchResults.filter(filterOutEmptySearchResults);
91 for (var i = 0; i < searchResults.length; ++i) {
92 var searchResult = searchResults[i];
93 var uiSourceCode = searchResult.uiSourceCode;
94 var searchMatches = searchResult.searchMatches;
96 if (!searchMatches.length)
98 InspectorTest.addResult("Search result #" + (i + 1) + ": uiSourceCode.uri = " + uiSourceCode.uri());
99 for (var j = 0; j < searchMatches.length; ++j) {
100 var lineNumber = searchMatches[j].lineNumber;
101 var lineContent = searchMatches[j].lineContent;
102 InspectorTest.addResult(" search match #" + (j + 1) + ": lineNumber = " + lineNumber + ", lineContent = '" + lineContent + "'");
109 InspectorTest.runTestSuite([
110 function testSearch(next)
112 var query = "searchTest" + "UniqueString";
113 var searchConfig = new WebInspector.SearchConfig(query, true, false);
114 runSearchAndDumpResults(searchConfig, next);
117 function testDirtyFiles(next)
119 jsFileSystemUISourceCode.setWorkingCopy("FOO " + "searchTest" + "UniqueString" + " BAR");
120 jsNetworkUISourceCode.setWorkingCopy("FOO " + "searchTest" + "UniqueString" + " BAR");
122 var query = "searchTest" + "UniqueString";
123 var searchConfig = new WebInspector.SearchConfig(query, true, false);
124 runSearchAndDumpResults(searchConfig, next);
131 <body onload="runTest()">
132 <p>Tests that ScriptSearchScope sorts network and dirty results correctly.</p>