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