<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1330228
-->
<head>
  <title>Test input.hasBeenTypePassword</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=1330228">Mozilla Bug 1330228</a>
<script type="application/javascript">

/** Test input.hasBeenTypePassword **/

var gInputTestData = [
/* type        result */
  ["tel",      false],
  ["text",     false],
  ["button",   false],
  ["checkbox", false],
  ["file",     false],
  ["hidden",   false],
  ["reset",    false],
  ["image",    false],
  ["radio",    false],
  ["submit",   false],
  ["search",   false],
  ["email",    false],
  ["url",      false],
  ["number",   false],
  ["range",    false],
  ["date",     false],
  ["time",     false],
  ["color",    false],
  ["month",    false],
  ["week",     false],
  ["datetime-local", false],
  ["", false],
  // "password" must be last since we re-use the same <input>.
  ["password", true],
];

function checkHasBeenTypePasswordValue(aInput, aResult) {
  is(aInput.hasBeenTypePassword, aResult,
     "hasBeenTypePassword should return " + aResult + " for " +
     aInput.getAttribute("type"));
}

// Use SpecialPowers since the API is ChromeOnly.
var input = SpecialPowers.wrap(document.createElement("input"));
// Check if the method returns the correct value on the first pass.
for (let [type, expected] of gInputTestData) {
  input.type = type;
  checkHasBeenTypePasswordValue(input, expected);
}

// Now do a second pass but expect `hasBeenTypePassword` to always be true now
// that the type was 'password'.
for (let [type] of gInputTestData) {
  input.type = type;
  checkHasBeenTypePasswordValue(input, true);
}
</script>
</body>
</html>
