Index: LayoutTests/imported/web-platform-tests/html/semantics/forms/the-input-element/password.html |
diff --git a/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-input-element/password.html b/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-input-element/password.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..79d9f1910038ecba9a8c6bf7daf99cae010074c6 |
--- /dev/null |
+++ b/LayoutTests/imported/web-platform-tests/html/semantics/forms/the-input-element/password.html |
@@ -0,0 +1,79 @@ |
+<!DOCTYPE html> |
+<meta charset=utf-8> |
+<title>Password input element</title> |
+<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org"> |
+<link rel="help" href="https://html.spec.whatwg.org/multipage/#password-state-%28type=password%29"> |
+<script src="../../../../../../resources/testharness.js"></script> |
+<script src="../../../../../../resources/testharnessreport.js"></script> |
+<div id="log"></div> |
+<div style="display: none"> |
+<input id="password" type="password" /> |
+<input id=password2 type=password value="password"> |
+<input id="password_with_value" type="password" value="foobar" /> |
+</div> |
+<script type="text/javascript"> |
+ setup(function() { |
+ window.password = document.getElementById("password"); |
+ }); |
+ |
+ test(function() { |
+ assert_equals(password.value, ""); |
+ assert_equals(document.getElementById("password_with_value").value, "foobar"); |
+ }, "Value returns the current value for password"); |
+ |
+ test(function() { |
+ password.value = "A"; |
+ assert_equals(password.value, "A"); |
+ assert_equals(password.getAttribute("value"), null); |
+ password.value = "B"; |
+ assert_equals(password.value, "B"); |
+ assert_equals(password.getAttribute("value"), null); |
+ }, "Setting value changes the current value for password, but not the value content attribute"); |
+ |
+ test(function() { |
+ // Any LF (\n) must be stripped. |
+ password.value = "\nAB"; |
+ assert_equals(password.value, "AB"); |
+ password.value = "A\nB"; |
+ assert_equals(password.value, "AB"); |
+ password.value = "AB\n"; |
+ assert_equals(password.value, "AB"); |
+ |
+ // Any CR (\r) must be stripped. |
+ password.value = "\rAB"; |
+ assert_equals(password.value, "AB"); |
+ password.value = "A\rB"; |
+ assert_equals(password.value, "AB"); |
+ password.value = "AB\r"; |
+ assert_equals(password.value, "AB"); |
+ |
+ // Any combinations of LF CR must be stripped. |
+ password.value = "\r\nAB"; |
+ assert_equals(password.value, "AB"); |
+ password.value = "A\r\nB"; |
+ assert_equals(password.value, "AB"); |
+ password.value = "AB\r\n"; |
+ assert_equals(password.value, "AB"); |
+ password.value = "\r\nA\n\rB\r\n"; |
+ assert_equals(password.value, "AB"); |
+ }, "Value sanitization algorithm should strip line breaks for password"); |
+ |
+ var pass = document.getElementById('password2'); |
+ |
+ test(function(){ |
+ assert_equals(pass.value, "password"); |
+ pass.value = " pass word "; |
+ assert_equals(pass.value, " pass word "); |
+ }, "sanitization algorithm doesn't strip leading and trailing whitespaces"); |
+ |
+ test(function(){ |
+ pass.value = "pass\u000Aword"; |
+ assert_equals(pass.value, "password"); |
+ pass.value = "\u000Apassword\u000A"; |
+ assert_equals(pass.value, "password"); |
+ pass.value = "pass\u000Dword"; |
+ assert_equals(pass.value, "password"); |
+ pass.value = "\u000Dpassword\u000D"; |
+ assert_equals(pass.value, "password"); |
+ }, "sanitization algorithm strips line breaks"); |
+</script> |