Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(574)

Side by Side Diff: third_party/WebKit/LayoutTests/inspector/sass/test-workspace-adapter.html

Issue 1641893002: DevTools: [SASS] introduce workspace/cssModel adapter for SASS processor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove settimeout from test Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698