diff options
Diffstat (limited to '')
-rw-r--r-- | dom/html/test/test_bug607145.html | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/dom/html/test/test_bug607145.html b/dom/html/test/test_bug607145.html new file mode 100644 index 0000000000..28ab3fe8ba --- /dev/null +++ b/dom/html/test/test_bug607145.html @@ -0,0 +1,86 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=607145 +--> +<head> + <title>Test for Bug 607145</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=607145">Mozilla Bug 607145</a> +<p id="display"></p> +<pre id="test"> +<script type="application/javascript"> + +var xoriginParams; +/** Test for Bug 607145 **/ + +/** + * This is not really reflecting an URL as the HTML5 specs want to. + * It's how .action is reflected in Gecko (might change later). + * + * If this changes, add reflectURL for "formAction" in + * dom/html/test/forms/test_input_attributes_reflection.html and + * "action" in + * dom/html/test/forms/test_form_attributes_reflection.html + */ +function reflectURL(aElement, aAttr) +{ + var idl = aAttr; + var attr = aAttr.toLowerCase(); + var elmtName = aElement.tagName.toLowerCase(); + + var url = location.href.replace(/\?.*/, ""); + var dir = url.replace(/test_bug607145.html[^\/]*$/, ""); + var parentDir = dir.replace(/test\/$/, ""); + ok(idl in aElement, idl + " should be available in " + elmtName); + + // Default values. + is(aElement[idl].split("?")[0], url, "." + idl + " default value should be the document's URL"); + is(aElement.getAttribute(attr), null, + "@" + attr + " default value should be null"); + + var values = [ + /* value to set, resolved value */ + [ "foo.html", dir + "foo.html" ], + [ "data:text/html,<html></html>", "data:text/html,<html></html>" ], + [ "http://example.org/", "http://example.org/" ], + [ "//example.org/", "http://example.org/" ], + [ "?foo=bar", url + "?foo=bar" ], + [ "#foo", url + "#foo" ], + [ "", url ], + [ " ", url ], + [ "../", parentDir ], + [ "...", dir + "..." ], + // invalid URL + [ "http://a b/", "http://a b/" ], // TODO: doesn't follow the specs, should be "". + ]; + + for (var value of values) { + aElement[idl] = value[0]; + is(aElement[idl].replace(xoriginParams, ""), value[1], "." + idl + " value should be " + value[1]); + is(aElement.getAttribute(attr), value[0], + "@" + attr + " value should be " + value[0]); + } + + for (var value of values) { + aElement.setAttribute(attr, value[0]); + is(aElement[idl].replace(xoriginParams, ""), value[1], "." + idl + " value should be " + value[1]); + is(aElement.getAttribute(attr), value[0], + "@" + attr + " value should be " + value[0]); + } +} + + +xoriginParams = window.location.search; + +reflectURL(document.createElement("form"), "action"); +reflectURL(document.createElement("input"), "formAction"); +reflectURL(document.createElement("button"), "formAction"); + +</script> +</pre> +</body> +</html> |