OLD | NEW |
---|---|
(Empty) | |
1 <html> | |
2 <head> | |
3 | |
4 <script src="../../http/tests/inspector/inspector-test.js"></script> | |
5 <script src="../../http/tests/inspector/debugger-test.js"></script> | |
6 <script src="../../http/tests/inspector/isolated-filesystem-test.js"></script> | |
7 <script src="./sass-test.js"></script> | |
8 <script> | |
9 | |
10 var styles = []; | |
11 function addStyleSheets() | |
12 { | |
13 for (var i = 0; i < 2; ++i) { | |
14 var style = document.createElement("style"); | |
15 style.textContent = "<all.css content>\n/*# sourceURL=all.css */"; | |
16 document.head.appendChild(style); | |
17 styles.push(style); | |
18 } | |
19 | |
20 var style = document.createElement("style"); | |
21 style.textContent = "<print.css content>\n/*# sourceURL=print.css */"; | |
22 document.head.appendChild(style); | |
23 styles.push(style); | |
24 } | |
25 | |
26 function removeStyles() | |
27 { | |
28 for (var style of styles) | |
29 style.remove(); | |
30 } | |
31 | |
32 function test() | |
33 { | |
34 setTimeout(InspectorTest.completeTest, 2000); | |
dgozman
2016/01/28 01:11:52
remove
| |
35 function createTracker(trackerName, cssURL, sassURLs) | |
36 { | |
37 var sources = sassURLs; | |
38 var fakeSourceMap = { | |
39 sources: () => sources, | |
40 compiledURL: () => cssURL | |
41 }; | |
42 var tracker = InspectorTest.sassWorkspaceAdapter().trackSources(fakeSour ceMap); | |
43 tracker.__NAME = trackerName; | |
44 tracker.addEventListener(WebInspector.SourceMapTracker.Events.SourceChan ged, onSourceChanged); | |
45 tracker.addEventListener(WebInspector.SourceMapTracker.Events.TrackingSt opped, onTrackingStopped); | |
46 return tracker; | |
47 | |
48 function onSourceChanged(event) | |
49 { | |
50 InspectorTest.addResult(" -- " + event.target.__NAME + " -- SourceCh anged event: " + event.data); | |
51 } | |
52 | |
53 function onTrackingStopped(event) | |
54 { | |
55 InspectorTest.addResult(" -- " + event.target.__NAME + " -- Tracking Stopped"); | |
56 } | |
57 } | |
58 | |
59 var fileSystemPrefix = "file:///var/www"; | |
60 var css1 = "all.css"; | |
61 var css2 = "print.css"; | |
62 var sass1 = fileSystemPrefix + "/a.scss"; | |
63 var sass2 = fileSystemPrefix + "/b.scss"; | |
64 var sassCommon = fileSystemPrefix + "/common.scss"; | |
65 var tracker1 = createTracker("TRACKER 1", css1, [sass1, sassCommon]); | |
66 var tracker2 = createTracker("TRACKER 2", css2, [sass2, sassCommon]); | |
67 | |
68 InspectorTest.runTestSuite([ | |
69 function loadFileSystemResources(next) | |
70 { | |
71 var fs = new InspectorTest.TestFileSystem(fileSystemPrefix); | |
72 fs.addFileMapping(fileSystemPrefix, "/"); | |
73 fs.root.addFile("common.scss", "<common.scss content>"); | |
74 fs.root.addFile("a.scss", "<a.scss content>"); | |
75 fs.root.addFile("b.scss", "<b.scss content>"); | |
76 fs.reportCreated(next); | |
77 }, | |
78 | |
79 function loadCSSResources(next) | |
80 { | |
81 InspectorTest.evaluateInPage("addStyleSheets()", next); | |
82 }, | |
83 | |
84 function mutateCSS(next) | |
85 { | |
86 InspectorTest.updateCSSText(css1, "<all.css update 1>") | |
87 .then(checkOutdated) | |
88 .then(() => InspectorTest.updateCSSText(css2, "<print.css update 1>")) | |
89 .then(checkOutdated) | |
90 .then(() => requestContent([css1], [css2])) | |
91 .then(checkOutdated) | |
92 .then(next); | |
93 }, | |
94 | |
95 function mutateSASS(next) | |
96 { | |
97 InspectorTest.updateSASSText(sass1, "<a.scss update 1>"); | |
98 checkOutdated(); | |
99 InspectorTest.updateSASSText(sass2, "<b.scss update 1>"); | |
100 checkOutdated(); | |
101 requestContent([sass1], [sass2]) | |
102 .then(checkOutdated) | |
103 .then(next); | |
104 }, | |
105 | |
106 function mutateSASSCommon(next) | |
107 { | |
108 InspectorTest.updateSASSText(sassCommon, "<common.scss update 1>"); | |
109 checkOutdated(); | |
110 requestContent([sassCommon], [sassCommon]) | |
111 .then(checkOutdated) | |
112 .then(next); | |
113 }, | |
114 | |
115 function clientSetCSS(next) | |
116 { | |
117 var result = tracker1.setCSSText("<all.css TRACKER 1>", []); | |
118 InspectorTest.addResult("tracker1.setCSSText result: " + result); | |
119 var result = tracker2.setCSSText("<print.css TRACKER 2>", []); | |
120 InspectorTest.addResult("tracker2.setCSSText result: " + result); | |
121 requestContent([css1], [css2]) | |
122 .then(next); | |
123 }, | |
124 | |
125 function trackerSetSASSCommon(next) | |
126 { | |
127 var result = tracker1.setSASSText(sassCommon, "<common.scss TRACKER 1>"); | |
128 InspectorTest.addResult("tracker1.setSASSText result: " + result); | |
129 awaitSourceChanges(tracker2, sassCommon) | |
130 .then(checkOutdated) | |
131 .then(next); | |
132 }, | |
133 | |
134 function removeStyleSheets(next) | |
135 { | |
136 InspectorTest.evaluateInPage("removeStyles()", next); | |
137 }, | |
138 ]); | |
139 | |
140 function awaitSourceChanges(tracker, url) | |
141 { | |
142 var callback; | |
143 var promise = new Promise(fulfill => callback = fulfill); | |
144 tracker.addEventListener(WebInspector.SourceMapTracker.Events.SourceChan ged, onSourceChanged); | |
145 return promise; | |
146 | |
147 function onSourceChanged(event) | |
148 { | |
149 if (event.data !== url) | |
150 return; | |
151 tracker.removeEventListener(WebInspector.SourceMapTracker.Events.Sou rceChanged, onSourceChanged); | |
152 callback(); | |
153 } | |
154 } | |
155 | |
156 function checkOutdated() | |
157 { | |
158 InspectorTest.addResult("== Outdated =="); | |
159 InspectorTest.addResult(tracker1.__NAME + ": " + tracker1.isOutdated()); | |
160 InspectorTest.addResult(tracker2.__NAME + ": " + tracker2.isOutdated()); | |
161 } | |
162 | |
163 function requestContent(urls1, urls2) | |
164 { | |
165 InspectorTest.addResult("== Contents =="); | |
166 urls1 = urls1 || []; | |
167 urls2 = urls2 || []; | |
168 var onContent = (url, content) => InspectorTest.addResult("content of " + url + ": " + content); | |
169 var promises = []; | |
170 for (var url of urls1) | |
171 promises.push(tracker1.content(url).then(text => onContent(url, text ))); | |
172 for (var url of urls2) | |
173 promises.push(tracker2.content(url).then(text => onContent(url, text ))); | |
174 return Promise.all(promises); | |
175 } | |
176 } | |
177 | |
178 </script> | |
179 | |
180 </head> | |
181 | |
182 <body onload="runTest()"> | |
183 <p>Verify SourceMapTracker functionality.</p> | |
184 </body> | |
185 </html> | |
OLD | NEW |