Index: LayoutTests/fast/dom/XMLSerializer-attribute-entities.html |
diff --git a/LayoutTests/fast/dom/XMLSerializer-attribute-entities.html b/LayoutTests/fast/dom/XMLSerializer-attribute-entities.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e5a89cde3e02765f1131c3d305c789bd3a0acfdf |
--- /dev/null |
+++ b/LayoutTests/fast/dom/XMLSerializer-attribute-entities.html |
@@ -0,0 +1,23 @@ |
+<!DOCTYPE html> |
+<script src="../../resources/js-test.js"></script> |
+ |
+<script> |
+description('Test that XMLSerializer quotes the attribute characters specified in <a href="https://dvcs.w3.org/hg/innerhtml/raw-file/tip/index.html#dfn-concept-serialize-xml-attributes">the W3C spec</a>.'); |
+ |
+var attrValue = '< > & " \' \xA0'; |
+ |
+// HTML case. |
+// DOM parsing and serialization defers to the HTML specification: http://www.w3.org/html/wg/drafts/html/master/syntax.html#attribute's-serialized-name |
+// Steps 1-3 under the "Escaping a string" heading are relevant to attributes. |
+window.htmlElement = document.createElement('div'); |
+htmlElement.setAttribute('quoteme', attrValue); |
+shouldBe('htmlElement.outerHTML', '"<div quoteme=\\"< > & " \' \\"><' + '/div>"'); |
+ |
+// XML case. |
+// DOM parsing and serialization: https://dvcs.w3.org/hg/innerhtml/raw-file/tip/index.html#dfn-concept-serialize-xml-attributes |
+// Step 2 substep 4 is relevant to attributes. |
+var xmlDocument = document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', null); |
+window.xmlElement = xmlDocument.createElement('div'); |
+xmlElement.setAttribute('quoteme', attrValue); |
+shouldBe('(new XMLSerializer()).serializeToString(xmlElement)', '"<div xmlns=\\"http://www.w3.org/1999/xhtml\\" quoteme=\\"< > & " \' \\xA0\\"><' + '/div>"'); |
+</script> |