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