Index: third_party/WebKit/Source/devtools/front_end/script_formatter_worker/CSSFormatter.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/script_formatter_worker/CSSFormatter.js b/third_party/WebKit/Source/devtools/front_end/script_formatter_worker/CSSFormatter.js |
index 865d91fd55f2c9d544e7a0b1652ce3bb55b0c63e..0709f518de48228fa3f4de4d8a6c348b8c27b3ee 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/script_formatter_worker/CSSFormatter.js |
+++ b/third_party/WebKit/Source/devtools/front_end/script_formatter_worker/CSSFormatter.js |
@@ -36,6 +36,7 @@ |
FormatterWorker.CSSFormatter = function(content, builder) |
{ |
this._content = content; |
+ this._lineEndings = this._content.lineEndings(); |
this._builder = builder; |
this._lastLine = -1; |
this._state = {}; |
@@ -45,22 +46,19 @@ FormatterWorker.CSSFormatter.prototype = { |
format: function() |
{ |
var tokenize = FormatterWorker.createTokenizer("text/css"); |
- var lines = this._content.split("\n"); |
- |
- for (var i = 0; i < lines.length; ++i) { |
- var line = lines[i]; |
- tokenize(line, this._tokenCallback.bind(this, i)); |
- } |
+ tokenize(this._content, this._tokenCallback.bind(this)); |
}, |
/** |
- * @param {number} startLine |
* @param {string} token |
* @param {?string} type |
- * @param {number} startColumn |
+ * @param {number} startPosition |
+ * @param {number} endPosition |
*/ |
- _tokenCallback: function(startLine, token, type, startColumn) |
+ _tokenCallback: function(token, type, startPosition, endPosition) |
{ |
+ var startLine = this._lineEndings.lowerBound(startPosition); |
+ var endLine = this._lineEndings.lowerBound(endPosition); |
if (startLine !== this._lastLine) |
this._state.eatWhitespace = true; |
if (/^property/.test(type) && !this._state.inPropertyValue) |
@@ -81,8 +79,6 @@ FormatterWorker.CSSFormatter.prototype = { |
this._builder.addNewLine(true); |
this._state.afterClosingBrace = false; |
} |
- var startPosition = this._content.offsetFromPosition(startLine, startColumn); |
- var endLine = startLine + token.lineCount() - 1; |
if (token === "}") { |
if (this._state.inPropertyValue) |
this._builder.addNewLine(); |