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

Unified Diff: third_party/WebKit/Source/devtools/front_end/sass/SASSLiveSourceMap.js

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, 11 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/sass/SASSLiveSourceMap.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sass/SASSLiveSourceMap.js b/third_party/WebKit/Source/devtools/front_end/sass/SASSLiveSourceMap.js
index 9cf0c453fd1e3c2316a658e0ece7fb78565d50fc..6c49db3c5ee621bd4664e584013ce8c95ca871c0 100644
--- a/third_party/WebKit/Source/devtools/front_end/sass/SASSLiveSourceMap.js
+++ b/third_party/WebKit/Source/devtools/front_end/sass/SASSLiveSourceMap.js
@@ -5,10 +5,41 @@
WebInspector.SASSLiveSourceMap = {}
/**
+ * @param {!WebInspector.SourceMapTracker} tracker
+ * @param {!WebInspector.CSSParser} cssParser
+ * @param {!WebInspector.TokenizerFactory} tokenizer
+ * @return {!Promise<?WebInspector.SASSLiveSourceMap.CSSToSASSMapping>}
+ */
+WebInspector.SASSLiveSourceMap._loadMapping = function(tracker, cssParser, tokenizer)
+{
+ var sassModels = new Map();
+ var cssAST = null;
+ var promises = [];
+ for (var url of tracker.sassURLs()) {
+ var sassPromise = tracker.content(url)
+ .then(text => WebInspector.SASSSupport.parseSCSS(url, text, tokenizer))
+ .then(ast => sassModels.set(url, ast));
+ promises.push(sassPromise);
+ }
+ var cssPromise = tracker.content(tracker.cssURL())
+ .then(text => WebInspector.SASSSupport.parseCSS(cssParser, tracker.cssURL(), text))
+ .then(ast => cssAST = ast);
+ promises.push(cssPromise);
+
+ return Promise.all(promises)
+ .then(() => WebInspector.SASSLiveSourceMap.CSSToSASSMapping.fromSourceMap(tracker.sourceMap(), cssAST, sassModels))
+ .catchException(/** @type {?WebInspector.SASSLiveSourceMap.CSSToSASSMapping} */(null));
+}
+
+/**
* @constructor
+ * @param {!WebInspector.SASSSupport.AST} cssAST
+ * @param {!Map<string, !WebInspector.SASSSupport.AST>} sassModels
*/
-WebInspector.SASSLiveSourceMap.CSSToSASSMapping = function()
+WebInspector.SASSLiveSourceMap.CSSToSASSMapping = function(cssAST, sassModels)
{
+ this._cssAST = cssAST;
+ this._sassModels = sassModels;
/** @type {!Map<!WebInspector.SASSSupport.TextNode, !WebInspector.SASSSupport.TextNode>} */
this._cssToSass = new Map();
/** @type {!Multimap<!WebInspector.SASSSupport.TextNode, !WebInspector.SASSSupport.TextNode>} */
@@ -23,7 +54,7 @@ WebInspector.SASSLiveSourceMap.CSSToSASSMapping = function()
*/
WebInspector.SASSLiveSourceMap.CSSToSASSMapping.fromSourceMap = function(sourceMap, cssAST, sassModels)
{
- var mapping = new WebInspector.SASSLiveSourceMap.CSSToSASSMapping();
+ var mapping = new WebInspector.SASSLiveSourceMap.CSSToSASSMapping(cssAST, sassModels);
//FIXME: this works O(N^2).
cssAST.visit(map);
return mapping;
@@ -49,6 +80,22 @@ WebInspector.SASSLiveSourceMap.CSSToSASSMapping.fromSourceMap = function(sourceM
WebInspector.SASSLiveSourceMap.CSSToSASSMapping.prototype = {
/**
+ * @return {!WebInspector.SASSSupport.AST}
+ */
+ cssAST: function()
+ {
+ return this._cssAST;
+ },
+
+ /**
+ * @return {!Map<string, !WebInspector.SASSSupport.AST>}
+ */
+ sassModels: function()
+ {
+ return this._sassModels;
+ },
+
+ /**
* @param {!WebInspector.SASSSupport.TextNode} css
* @param {!WebInspector.SASSSupport.TextNode} sass
*/
@@ -112,7 +159,7 @@ WebInspector.SASSLiveSourceMap.CSSToSASSMapping.prototype = {
*/
rebaseForCSSDiff: function(cssDiff)
{
- var newMapping = new WebInspector.SASSLiveSourceMap.CSSToSASSMapping();
+ var newMapping = new WebInspector.SASSLiveSourceMap.CSSToSASSMapping(cssDiff.newAST, this._sassModels);
var cssNodes = this._cssToSass.keysArray();
for (var i = 0; i < cssNodes.length; ++i) {
var cssNode = cssNodes[i];
@@ -130,7 +177,9 @@ WebInspector.SASSLiveSourceMap.CSSToSASSMapping.prototype = {
*/
rebaseForSASSDiff: function(sassDiff)
{
- var newMapping = new WebInspector.SASSLiveSourceMap.CSSToSASSMapping();
+ var sassModels = new Map(this._sassModels);
+ sassModels.set(sassDiff.url, sassDiff.newAST);
+ var newMapping = new WebInspector.SASSLiveSourceMap.CSSToSASSMapping(this._cssAST, sassModels);
var cssNodes = this._cssToSass.keysArray();
for (var i = 0; i < cssNodes.length; ++i) {
var cssNode = cssNodes[i];
« no previous file with comments | « third_party/WebKit/Source/devtools/devtools.gypi ('k') | third_party/WebKit/Source/devtools/front_end/sass/SASSSupport.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698