| Index: third_party/WebKit/Source/devtools/front_end/sass/SASSSourceMapFactory.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/sass/SASSSourceMapFactory.js b/third_party/WebKit/Source/devtools/front_end/sass/SASSSourceMapFactory.js
|
| index dd59e5c7e04cf63aeaa022114fb5cfff45af5ba6..fffaa53f1fca832f6683631f3bb30f584b679002 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/sass/SASSSourceMapFactory.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/sass/SASSSourceMapFactory.js
|
| @@ -1,104 +1,104 @@
|
| // Copyright 2016 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
| -
|
| /**
|
| - * @constructor
|
| * @implements {WebInspector.SourceMapFactory}
|
| + * @unrestricted
|
| */
|
| -WebInspector.SASSSourceMapFactory = function()
|
| -{
|
| +WebInspector.SASSSourceMapFactory = class {
|
| + constructor() {
|
| this._astService = new WebInspector.ASTService();
|
| -};
|
| + }
|
|
|
| -WebInspector.SASSSourceMapFactory.prototype = {
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.Target} target
|
| - * @param {!WebInspector.SourceMap} sourceMap
|
| - * @return {!Promise<?WebInspector.SourceMap>}
|
| - */
|
| - editableSourceMap: function(target, sourceMap)
|
| - {
|
| - var cssModel = WebInspector.CSSModel.fromTarget(target);
|
| - if (!cssModel)
|
| - return Promise.resolve(/** @type {?WebInspector.SourceMap} */(null));
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.Target} target
|
| + * @param {!WebInspector.SourceMap} sourceMap
|
| + * @return {!Promise<?WebInspector.SourceMap>}
|
| + */
|
| + editableSourceMap(target, sourceMap) {
|
| + var cssModel = WebInspector.CSSModel.fromTarget(target);
|
| + if (!cssModel)
|
| + return Promise.resolve(/** @type {?WebInspector.SourceMap} */ (null));
|
|
|
| - var header = cssModel.styleSheetHeaders().find(styleSheetHeader => styleSheetHeader.sourceMapURL === sourceMap.url());
|
| - if (!header)
|
| - return Promise.resolve(/** @type {?WebInspector.SourceMap} */(null));
|
| + var header =
|
| + cssModel.styleSheetHeaders().find(styleSheetHeader => styleSheetHeader.sourceMapURL === sourceMap.url());
|
| + if (!header)
|
| + return Promise.resolve(/** @type {?WebInspector.SourceMap} */ (null));
|
|
|
| - /** @type {!Map<string, !WebInspector.SASSSupport.AST>} */
|
| - var models = new Map();
|
| - var promises = [];
|
| - for (let url of sourceMap.sourceURLs()) {
|
| - var contentProvider = sourceMap.sourceContentProvider(url, WebInspector.resourceTypes.SourceMapStyleSheet);
|
| - var sassPromise = contentProvider.requestContent()
|
| - .then(text => this._astService.parseSCSS(url, text || ""))
|
| - .then(ast => models.set(ast.document.url, ast));
|
| - promises.push(sassPromise);
|
| - }
|
| - var cssURL = sourceMap.compiledURL();
|
| - var cssPromise = header.originalContentProvider().requestContent()
|
| - .then(text => this._astService.parseCSS(cssURL, text || ""))
|
| - .then(ast => models.set(ast.document.url, ast));
|
| - promises.push(cssPromise);
|
| + /** @type {!Map<string, !WebInspector.SASSSupport.AST>} */
|
| + var models = new Map();
|
| + var promises = [];
|
| + for (let url of sourceMap.sourceURLs()) {
|
| + var contentProvider = sourceMap.sourceContentProvider(url, WebInspector.resourceTypes.SourceMapStyleSheet);
|
| + var sassPromise = contentProvider.requestContent()
|
| + .then(text => this._astService.parseSCSS(url, text || ''))
|
| + .then(ast => models.set(ast.document.url, ast));
|
| + promises.push(sassPromise);
|
| + }
|
| + var cssURL = sourceMap.compiledURL();
|
| + var cssPromise = header.originalContentProvider()
|
| + .requestContent()
|
| + .then(text => this._astService.parseCSS(cssURL, text || ''))
|
| + .then(ast => models.set(ast.document.url, ast));
|
| + promises.push(cssPromise);
|
|
|
| - return Promise.all(promises)
|
| - .then(this._onSourcesParsed.bind(this, sourceMap, models))
|
| - .catchException(/** @type {?WebInspector.SourceMap} */(null));
|
| - },
|
| + return Promise.all(promises)
|
| + .then(this._onSourcesParsed.bind(this, sourceMap, models))
|
| + .catchException(/** @type {?WebInspector.SourceMap} */ (null));
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.SourceMap} sourceMap
|
| + * @param {!Map<string, !WebInspector.SASSSupport.AST>} models
|
| + * @return {?WebInspector.SourceMap}
|
| + */
|
| + _onSourcesParsed(sourceMap, models) {
|
| + var editCallback = WebInspector.SASSProcessor.processCSSEdits.bind(WebInspector.SASSProcessor, this._astService);
|
| + var map = new WebInspector.ASTSourceMap(sourceMap.compiledURL(), sourceMap.url(), models, editCallback);
|
| + var valid = true;
|
| + map.compiledModel().visit(onNode);
|
| + return valid ? map : null;
|
|
|
| /**
|
| - * @param {!WebInspector.SourceMap} sourceMap
|
| - * @param {!Map<string, !WebInspector.SASSSupport.AST>} models
|
| - * @return {?WebInspector.SourceMap}
|
| + * @param {!WebInspector.SASSSupport.Node} cssNode
|
| */
|
| - _onSourcesParsed: function(sourceMap, models)
|
| - {
|
| - var editCallback = WebInspector.SASSProcessor.processCSSEdits.bind(WebInspector.SASSProcessor, this._astService);
|
| - var map = new WebInspector.ASTSourceMap(sourceMap.compiledURL(), sourceMap.url(), models, editCallback);
|
| - var valid = true;
|
| - map.compiledModel().visit(onNode);
|
| - return valid ? map : null;
|
| -
|
| - /**
|
| - * @param {!WebInspector.SASSSupport.Node} cssNode
|
| - */
|
| - function onNode(cssNode)
|
| - {
|
| - if (!valid)
|
| - return;
|
| - if (!(cssNode instanceof WebInspector.SASSSupport.TextNode))
|
| - return;
|
| - var entry = sourceMap.findEntry(cssNode.range.startLine, cssNode.range.startColumn);
|
| - if (!entry || !entry.sourceURL || typeof entry.sourceLineNumber === "undefined" || typeof entry.sourceColumnNumber === "undefined")
|
| - return;
|
| - var sassAST = models.get(entry.sourceURL);
|
| - if (!sassAST)
|
| - return;
|
| - var sassNode = sassAST.findNodeForPosition(entry.sourceLineNumber, entry.sourceColumnNumber);
|
| - if (!sassNode)
|
| - return;
|
| - if (cssNode.parent && (cssNode.parent instanceof WebInspector.SASSSupport.Property) && cssNode === cssNode.parent.name && cssNode.text.trim() !== sassNode.text.trim()) {
|
| - valid = false;
|
| - reportError(cssNode, sassNode);
|
| - return;
|
| - }
|
| - map.addMapping(cssNode, sassNode);
|
| - }
|
| + function onNode(cssNode) {
|
| + if (!valid)
|
| + return;
|
| + if (!(cssNode instanceof WebInspector.SASSSupport.TextNode))
|
| + return;
|
| + var entry = sourceMap.findEntry(cssNode.range.startLine, cssNode.range.startColumn);
|
| + if (!entry || !entry.sourceURL || typeof entry.sourceLineNumber === 'undefined' ||
|
| + typeof entry.sourceColumnNumber === 'undefined')
|
| + return;
|
| + var sassAST = models.get(entry.sourceURL);
|
| + if (!sassAST)
|
| + return;
|
| + var sassNode = sassAST.findNodeForPosition(entry.sourceLineNumber, entry.sourceColumnNumber);
|
| + if (!sassNode)
|
| + return;
|
| + if (cssNode.parent && (cssNode.parent instanceof WebInspector.SASSSupport.Property) &&
|
| + cssNode === cssNode.parent.name && cssNode.text.trim() !== sassNode.text.trim()) {
|
| + valid = false;
|
| + reportError(cssNode, sassNode);
|
| + return;
|
| + }
|
| + map.addMapping(cssNode, sassNode);
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.SASSSupport.TextNode} cssNode
|
| - * @param {!WebInspector.SASSSupport.TextNode} sassNode
|
| - */
|
| - function reportError(cssNode, sassNode)
|
| - {
|
| - var text = WebInspector.UIString("LiveSASS failed to start: %s", sourceMap.url());
|
| - text += WebInspector.UIString("\nSourceMap is misaligned: %s != %s", cssNode.text.trim(), sassNode.text.trim());
|
| - text += "\ncompiled: " + cssNode.document.url + ":" + (cssNode.range.startLine + 1) + ":" + (cssNode.range.startColumn + 1);
|
| - text += "\nsource: " + sassNode.document.url + ":" + (sassNode.range.startLine + 1) + ":" + (sassNode.range.startColumn + 1);
|
| - WebInspector.console.error(text);
|
| - }
|
| - },
|
| + /**
|
| + * @param {!WebInspector.SASSSupport.TextNode} cssNode
|
| + * @param {!WebInspector.SASSSupport.TextNode} sassNode
|
| + */
|
| + function reportError(cssNode, sassNode) {
|
| + var text = WebInspector.UIString('LiveSASS failed to start: %s', sourceMap.url());
|
| + text += WebInspector.UIString('\nSourceMap is misaligned: %s != %s', cssNode.text.trim(), sassNode.text.trim());
|
| + text += '\ncompiled: ' + cssNode.document.url + ':' + (cssNode.range.startLine + 1) + ':' +
|
| + (cssNode.range.startColumn + 1);
|
| + text += '\nsource: ' + sassNode.document.url + ':' + (sassNode.range.startLine + 1) + ':' +
|
| + (sassNode.range.startColumn + 1);
|
| + WebInspector.console.error(text);
|
| + }
|
| + }
|
| };
|
|
|