Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / http / tests / inspector / search / sources-search-scope-many-projects.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     function addNetworkUISourceCode(url, content)
30     {
31         var contentProvider = new WebInspector.StaticContentProvider(WebInspector.resourceTypes.Script, content);
32         var uiSourceCode = InspectorTest.testNetworkWorkspaceBinding.addFileForURL(url, contentProvider, false);
33         return uiSourceCode;
34     }
35
36     InspectorFrontendHost.searchInPath = function(requestId, path, query)
37     {
38         setTimeout(reply);
39         
40         function reply()
41         {
42             var paths = [];
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}});
46         }
47     }
48     WebInspector.inspectorView.showViewInDrawer("search");
49
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);
55
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];
61             break;
62         }
63     }
64
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"));
68
69     var scope = new WebInspector.SourcesSearchScope();
70     WebInspector.workspace = InspectorTest.testWorkspace;
71
72     function runSearchAndDumpResults(searchConfig, callback)
73     {
74         var searchResults = [];
75         var progress = new WebInspector.Progress();
76         scope.performSearch(searchConfig, progress, searchResultCallback, searchFinishedCallback);
77
78         function searchResultCallback(searchResult)
79         {
80             searchResults.push(searchResult);
81         }
82
83         function searchFinishedCallback()
84         {
85             function filterOutEmptySearchResults(searchResult)
86             {
87                 return searchResult.searchMatches.length;
88             }
89             searchResults = searchResults.filter(filterOutEmptySearchResults);
90
91             for (var i = 0; i < searchResults.length; ++i) {
92                 var searchResult = searchResults[i];
93                 var uiSourceCode = searchResult.uiSourceCode;
94                 var searchMatches = searchResult.searchMatches;
95
96                 if (!searchMatches.length)
97                     continue;
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 + "'");
103                 }
104             }
105             callback();
106         }
107     }
108
109     InspectorTest.runTestSuite([
110         function testSearch(next)
111         {
112             var query = "searchTest" + "UniqueString";
113             var searchConfig = new WebInspector.SearchConfig(query, true, false);
114             runSearchAndDumpResults(searchConfig, next);
115         },
116
117         function testDirtyFiles(next)
118         {
119             jsFileSystemUISourceCode.setWorkingCopy("FOO " + "searchTest" + "UniqueString" + " BAR");
120             jsNetworkUISourceCode.setWorkingCopy("FOO " + "searchTest" + "UniqueString" + " BAR");
121
122             var query = "searchTest" + "UniqueString";
123             var searchConfig = new WebInspector.SearchConfig(query, true, false);
124             runSearchAndDumpResults(searchConfig, next);
125         }
126     ]);
127 }
128
129 </script>
130 </head>
131 <body onload="runTest()">
132 <p>Tests that ScriptSearchScope sorts network and dirty results correctly.</p>
133 </body>
134 </html>