Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / http / tests / inspector / search / sources-search-scope-in-files.html
1 <html>
2 <head>
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>
8 <script>
9 function test()
10 {
11     var fileSystemPath = "/var/www";
12     var names = ["search.html", "search.js", "search.css"];
13     var files = {};
14     for (var i = 0; i < names.length; ++i) {
15         var name = names[i];
16         files["/" + name] = loadResource(name);
17     }
18
19     function loadResource(name)
20     {
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);
25         xhr.send(null);
26         return xhr.responseText;
27     }
28
29     InspectorFrontendHost.searchInPath = function(requestId, path, query)
30     {
31         setTimeout(reply);
32         
33         function reply()
34         {
35             var paths = [];
36             for (var i = 0; i < names.length; ++i)
37                 paths.push("/var/www/" + names[i]);
38             manager.fileSystemWorkspaceBinding._onSearchCompleted({data: {requestId: requestId, fileSystemPath: path, files: paths}});
39         }
40     }
41
42     WebInspector.inspectorView.showPanel("sources");
43     WebInspector.inspectorView.showViewInDrawer("search");
44
45     InspectorTest.createWorkspace();
46     manager = InspectorTest.createIsolatedFileSystemManager(InspectorTest.testWorkspace, InspectorTest.testFileSystemMapping);
47     manager.addMockFileSystem(fileSystemPath);
48     InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(function(){}, 3);
49     manager.addFiles(fileSystemPath, files);
50
51     var scope = new WebInspector.SourcesSearchScope();
52     WebInspector.workspace = InspectorTest.testWorkspace;
53
54     function runSearchAndDumpResults(searchConfig, callback)
55     {
56         var searchResults = [];
57         var progress = new WebInspector.Progress();
58         scope.performSearch(searchConfig, progress, searchResultCallback, searchFinishedCallback);
59
60         function searchResultCallback(searchResult)
61         {
62             searchResults.push(searchResult);
63         }
64
65         function searchFinishedCallback()
66         {
67             function filterOutEmptySearchResults(searchResult)
68             {
69                 return searchResult.searchMatches.length;
70             }
71             searchResults = searchResults.filter(filterOutEmptySearchResults);
72
73             function comparator(searchResultA, searchResultB)
74             {
75                 return searchResultA.uiSourceCode.uri().compareTo(searchResultB.uiSourceCode.uri());
76             }
77             searchResults.sort(comparator);
78
79             for (var i = 0; i < searchResults.length; ++i) {
80                 var searchResult = searchResults[i];
81                 var uiSourceCode = searchResult.uiSourceCode;
82                 var searchMatches = searchResult.searchMatches;
83
84                 if (!searchMatches.length)
85                     continue;
86                 InspectorTest.addResult("Search result #" + (i + 1) + ": uiSourceCode.uri = " + uiSourceCode.uri());
87                 for (var j = 0; j < searchMatches.length; ++j) {
88                     var lineNumber = searchMatches[j].lineNumber;
89                     var lineContent = searchMatches[j].lineContent;
90                     InspectorTest.addResult("  search match #" + (j + 1) + ": lineNumber = " + lineNumber + ", lineContent = '" + lineContent + "'");
91                 }
92             }
93             callback();
94         }
95     }
96
97     InspectorTest.runTestSuite([
98         function testIgnoreCase(next)
99         {
100             var query = "searchTest" + "UniqueString";
101             var searchConfig = new WebInspector.SearchConfig(query, true, false);
102             runSearchAndDumpResults(searchConfig, next);
103         },
104
105         function testCaseSensitive(next)
106         {
107             var query = "searchTest" + "UniqueString";
108             var searchConfig = new WebInspector.SearchConfig(query, false, false);
109             runSearchAndDumpResults(searchConfig, next);
110         },
111
112         function testFileHTML(next)
113         {
114             var query = "searchTest" + "UniqueString" + " file:html";
115             var searchConfig = new WebInspector.SearchConfig(query, true, false);
116             runSearchAndDumpResults(searchConfig, next);
117         },
118
119         function testFileJS(next)
120         {
121             var query = "file:js " + "searchTest" + "UniqueString";
122             var searchConfig = new WebInspector.SearchConfig(query, true, false);
123             runSearchAndDumpResults(searchConfig, next);
124         },
125
126         function testFileHTMLJS(next)
127         {
128             var query = "file:js " + "searchTest" + "UniqueString" + " file:html";
129             var searchConfig = new WebInspector.SearchConfig(query, true, false);
130             runSearchAndDumpResults(searchConfig, next);
131         },
132
133         function testSpaceQueries(next)
134         {
135             var query = "searchTest" + "Unique" + " space" + " String";
136             var searchConfig = new WebInspector.SearchConfig(query, true, false);
137             runSearchAndDumpResults(searchConfig, next);
138         },
139
140         function testSpaceQueriesFileHTML(next)
141         {
142             var query = "file:html " + "searchTest" + "Unique" + " space" + " String";
143             var searchConfig = new WebInspector.SearchConfig(query, true, false);
144             runSearchAndDumpResults(searchConfig, next);
145         },
146
147         function testSpaceQueriesFileHTML_SEARCH(next)
148         {
149             var query = "file:html " + "searchTest" + "Unique" + " space" + " String" + " file:search";
150             var searchConfig = new WebInspector.SearchConfig(query, true, false);
151             runSearchAndDumpResults(searchConfig, next);
152         },
153
154         function testSpaceQueriesFileJS_SEARCH_HTML(next)
155         {
156             var query = "file:js " + "searchTest" + "Unique" + " space" + " String" + " file:search file:html";
157             var searchConfig = new WebInspector.SearchConfig(query, true, false);
158             runSearchAndDumpResults(searchConfig, next);
159         },
160
161         function testSeveralQueriesFileHTML(next)
162         {
163             var query = "searchTest" + "Unique" + " file:html " + " space" + " String";
164             var searchConfig = new WebInspector.SearchConfig(query, true, false);
165             runSearchAndDumpResults(searchConfig, next);
166         },
167
168         function testSeveralQueriesFileHTML_SEARCH(next)
169         {
170             var query = "searchTest" + "Unique" + " file:html " + " space" + " String" + " file:search";
171             var searchConfig = new WebInspector.SearchConfig(query, true, false);
172             runSearchAndDumpResults(searchConfig, next);
173         },
174
175         function testSeveralQueriesFileJS_SEARCH_HTML(next)
176         {
177             var query = "file:js " + "searchTest" + "Unique" + " file:html " + " space" + " String" + " file:search";
178             var searchConfig = new WebInspector.SearchConfig(query, true, false);
179             runSearchAndDumpResults(searchConfig, next);
180         },
181
182         function testFileSEARCH_NOT_JS_NOT_CSS(next)
183         {
184             var query = "searchTest" + "UniqueString" + " file:search -file:js -file:css";
185             var searchConfig = new WebInspector.SearchConfig(query, true, false);
186             runSearchAndDumpResults(searchConfig, next);
187         },
188
189         function testSeveralQueriesFileNotCSS(next)
190         {
191             var query = "searchTest" + "Unique" + " -file:css " + " space" + " String";
192             var searchConfig = new WebInspector.SearchConfig(query, true, false);
193             runSearchAndDumpResults(searchConfig, next);
194         },
195
196         function testFileQueryWithProjectName(next)
197         {
198             InspectorTest.addResult("Running a file query with existing project name first:");
199             var query = "searchTest" + "Unique" + " file:www";
200             var searchConfig = new WebInspector.SearchConfig(query, true, false);
201             runSearchAndDumpResults(searchConfig, step2);
202             
203             function step2()
204             {
205                 InspectorTest.addResult("Running a file query with non-existing project name now:");
206                 query = "searchTest" + "Unique" + " file:zzz";
207                 searchConfig = new WebInspector.SearchConfig(query, true, false);
208                 runSearchAndDumpResults(searchConfig, next);
209             }
210         },
211
212         function testDirtyFiles(next)
213         {
214             var uiSourceCode;
215             var uiSourceCodes = InspectorTest.testWorkspace.uiSourceCodes();
216             for (var i = 0; i < uiSourceCodes.length; ++i) {
217                 if (uiSourceCodes[i].name() === "search.js") {
218                     uiSourceCode = uiSourceCodes[i];
219                     break;
220                 }
221             }
222
223             uiSourceCode.setWorkingCopy("FOO " + "searchTest" + "UniqueString" + " BAR");
224             var query = "searchTest" + "UniqueString";
225             var searchConfig = new WebInspector.SearchConfig(query, true, false);
226             runSearchAndDumpResults(searchConfig, next);
227         }
228     ]);
229 }
230
231 </script>
232 </head>
233 <body onload="runTest()">
234 <iframe src="resources/search.html">
235 <p>Tests that ScriptSearchScope performs search across all sources correctly.</p>
236 See <a href="https://bugs.webkit.org/show_bug.cgi?id=41350">bug 41350</a>.
237 </body>
238 </html>