Index: third_party/WebKit/LayoutTests/inspector/sass/sass-test.js |
diff --git a/third_party/WebKit/LayoutTests/inspector/sass/sass-test.js b/third_party/WebKit/LayoutTests/inspector/sass/sass-test.js |
index 0ed17d0a5a471eca64e699088d45d8e204df1795..0470676b2f43ad1465c51d447d3135c12ffd1ef2 100644 |
--- a/third_party/WebKit/LayoutTests/inspector/sass/sass-test.js |
+++ b/third_party/WebKit/LayoutTests/inspector/sass/sass-test.js |
@@ -44,9 +44,68 @@ InspectorTest.dumpAST = function(ast) |
return [String.sprintf("range: %s", textNode.range.toString())]; |
} |
- function indent(lines) |
+} |
+ |
+function indent(lines) |
+{ |
+ return lines.map(line => " " + line); |
+} |
+ |
+InspectorTest.dumpASTDiff = function(diff) |
+{ |
+ InspectorTest.addResult("=== Diff ==="); |
+ var changesPerRule = new Map(); |
+ for (var change of diff.changes) { |
+ var oldRule = change.oldRule; |
+ var ruleChanges = changesPerRule.get(oldRule); |
+ if (!ruleChanges) { |
+ ruleChanges = []; |
+ changesPerRule.set(oldRule, ruleChanges); |
+ } |
+ ruleChanges.push(change); |
+ } |
+ var T = WebInspector.SASSSupport.PropertyChangeType; |
+ for (var rule of changesPerRule.keys()) { |
+ var changes = changesPerRule.get(rule); |
+ var names = []; |
+ var values = []; |
+ for (var property of rule.properties) { |
+ names.push(str(property.name, " ")); |
+ values.push(str(property.value)); |
+ } |
+ for (var i = changes.length - 1; i >= 0; --i) { |
+ var change = changes[i]; |
+ var newProperty = change.newRule.properties[change.newPropertyIndex]; |
+ var oldProperty = change.oldRule.properties[change.oldPropertyIndex]; |
+ switch (change.type) { |
+ case T.PropertyAdded: |
+ names.splice(change.oldPropertyIndex, 0, str(newProperty.name, "[+] ")); |
+ values.splice(change.oldPropertyIndex, 0, str(newProperty.value)); |
+ break; |
+ case T.PropertyRemoved: |
+ names[change.oldPropertyIndex] = str(oldProperty.name, "[-] "); |
+ break; |
+ case T.PropertyToggled: |
+ names[change.oldPropertyIndex] = str(oldProperty.name, "[T] "); |
+ break; |
+ case T.NameChanged: |
+ names[change.oldPropertyIndex] = str(oldProperty.name, "[M] "); |
+ break; |
+ case T.ValueChanged: |
+ values[change.oldPropertyIndex] = str(oldProperty.value, "[M] "); |
+ break; |
+ } |
+ } |
+ InspectorTest.addResult("Changes for rule: " + rule.selector); |
+ names = indent(names); |
+ for (var i = 0; i < names.length; ++i) |
+ InspectorTest.addResult(names[i] + ": " + values[i]); |
+ } |
+ |
+ function str(node, prefix) |
{ |
- return lines.map(line => " " + line); |
+ prefix = prefix || ""; |
+ return prefix + node.text.trim(); |
} |
} |