Index: LayoutTests/inspector/styles/style-formatter.html |
diff --git a/LayoutTests/inspector/styles/style-formatter.html b/LayoutTests/inspector/styles/style-formatter.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..63d60a674c1f89e56111b192f4e062004e7a01cd |
--- /dev/null |
+++ b/LayoutTests/inspector/styles/style-formatter.html |
@@ -0,0 +1,104 @@ |
+<html> |
+<head> |
+<script src="../../http/tests/inspector/inspector-test.js"></script> |
+<script src="../../http/tests/inspector/debugger-test.js"></script> |
+<link rel="stylesheet" href="resources/style-formatter-obfuscated.css"> |
+ |
+<script> |
+ |
+var test = function() |
+{ |
+ var panel = WebInspector.panels.scripts; |
+ var worker = new Worker("ScriptFormatterWorker.js"); |
+ |
+ InspectorTest.runTestSuite([ |
+ function testScriptFormatterWorker(next) |
+ { |
+ worker.onmessage = InspectorTest.safeWrap(function(event) |
+ { |
+ InspectorTest.assertEquals("a {\\n /* pre-comment */\\n color /* after name */ : /* before value */ red /* post-comment */\\n}\\n".replace(/\n/g, "\\n"), event.data.content.replace(/\n/g, "\\n")); |
+ next(); |
+ }); |
+ |
+ worker.onerror = function(event) |
+ { |
+ InspectorTest.addResult("Error in worker: " + event.data); |
+ next(); |
+ }; |
+ |
+ worker.postMessage({ method: "format", params: { mimeType: "text/css", content: "a { /* pre-comment */ color /* after name */ : /* before value */ red /* post-comment */ }" } }); |
+ }, |
+ |
+ function testSourceMapping(next) |
+ { |
+ var formatter = new WebInspector.ScriptFormatter(); |
+ |
+ InspectorTest.showScriptSource("style-formatter-obfuscated.css", didShowScriptSource); |
+ function didShowScriptSource(sourceFrame) |
+ { |
+ formatter.formatContent("text/css", sourceFrame._textEditor.text(), didFormatContent); |
+ } |
+ |
+ function didFormatContent(content, mapping) |
+ { |
+ var source = WebInspector.panel("sources").visibleView._textEditor.text(); |
+ var formattedSource = content; |
+ |
+ function testMapping(string) |
+ { |
+ var originalPosition = source.indexOf(string); |
+ InspectorTest.assertTrue(originalPosition !== -1, "Not found '" + string + "'"); |
+ var originalLocation = WebInspector.Formatter.positionToLocation(source.lineEndings(), originalPosition); |
+ var formattedLocation = mapping.originalToFormatted(originalLocation[0], originalLocation[1]); |
+ var formattedPosition = WebInspector.Formatter.locationToPosition(formattedSource.lineEndings(), formattedLocation[0], formattedLocation[1]); |
+ var expectedFormattedPosition = formattedSource.indexOf(string); |
+ InspectorTest.assertEquals(expectedFormattedPosition, formattedPosition, "wrong mapping for <" + string + ">"); |
+ } |
+ |
+ testMapping("@media"); |
+ testMapping("screen"); |
+ |
+ testMapping("html"); |
+ testMapping("color"); |
+ testMapping("green"); |
+ testMapping("foo-property"); |
+ testMapping("bar-value"); |
+ |
+ testMapping("body"); |
+ testMapping("background"); |
+ testMapping("black"); |
+ |
+ next(); |
+ } |
+ }, |
+ |
+ function testFormatInlinedStyles(next) |
+ { |
+ worker.onmessage = InspectorTest.safeWrap(function(event) |
+ { |
+ InspectorTest.addResult(event.data.content); |
+ next(); |
+ }); |
+ |
+ worker.onerror = function(event) |
+ { |
+ InspectorTest.addResult("Error in worker: " + event.data); |
+ next(); |
+ }; |
+ |
+ var content = "<html><body><style>@-webkit-keyframes{from{left: 0} to{left:100px;}}</style><style>badbraces { }} @media screen{a{color:red;text-decoration: none}}</style></body></html>"; |
+ worker.postMessage({ method: "format", params: { mimeType: "text/html", content: content, indentString: "**" } }); |
+ } |
+ ]); |
+} |
+ |
+</script> |
+ |
+</head> |
+ |
+<body onload="runTest()"> |
+<p>Tests the script formatting functionality. |
+</p> |
+ |
+</body> |
+</html> |