<!DOCTYPE HTML>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>

<div class="container">
    <input id="button1" type="button">
</div>

<script>
test(function(t) {
    var axButtonInput1 = accessibilityController.accessibleElementById("button1");
    assert_equals(axButtonInput1.name, "");
    assert_equals(axButtonInput1.nameFrom, "");
    assert_equals(axButtonInput1.description, "");
    assert_equals(axButtonInput1.descriptionFrom, "");
}, "Input button with no value");
</script>

<div class="container">
    <input id="button2" type="button" value="button-value2">
</div>

<script>
test(function(t) {
    var axButtonInput2 = accessibilityController.accessibleElementById("button2");
    assert_equals(axButtonInput2.name, "button-value2");
    assert_equals(axButtonInput2.nameFrom, "value");
    assert_equals(axButtonInput2.description, "");
    assert_equals(axButtonInput2.descriptionFrom, "");
}, "Input button with value");
</script>

<div class="container">
    <input id="button3" type="button" value="button-value3" title="button-title3">
</div>

<script>
test(function(t) {
    var axButtonInput3 = accessibilityController.accessibleElementById("button3");
    assert_equals(axButtonInput3.name, "button-value3");
    assert_equals(axButtonInput3.nameFrom, "value");
    assert_equals(axButtonInput3.description, "button-title3");
    assert_equals(axButtonInput3.descriptionFrom, "attribute");
}, "Input button with value and title");
</script>

<div class="container">
    <input id="submit1" type="submit">
</div>

<script>
test(function(t) {
    var axSubmitButton1 = accessibilityController.accessibleElementById("submit1");
    assert_equals(axSubmitButton1.name, "Submit");
    assert_equals(axSubmitButton1.nameFrom, "contents");
    assert_equals(axSubmitButton1.description, "");
    assert_equals(axSubmitButton1.descriptionFrom, "");
}, "Submit button without value");
</script>

<div class="container">
    <input id="submit2" type="submit" value="submit-value2">
</div>

<script>
test(function(t) {
    var axSubmitButton2 = accessibilityController.accessibleElementById("submit2");
    assert_equals(axSubmitButton2.name, "submit-value2");
    assert_equals(axSubmitButton2.nameFrom, "value");
    assert_equals(axSubmitButton2.description, "");
    assert_equals(axSubmitButton2.descriptionFrom, "");
}, "Submit button with value");
</script>

<div class="container">
    <input id="submit3" type="submit" title="submit-title">
</div>

<script>
test(function(t) {
    var axSubmitButton3 = accessibilityController.accessibleElementById("submit3");
    assert_equals(axSubmitButton3.name, "Submit");
    assert_equals(axSubmitButton3.nameFrom, "contents");
    assert_equals(axSubmitButton3.description, "submit-title");
    assert_equals(axSubmitButton3.descriptionFrom, "attribute");
}, "Submit button with title only");
</script>

<div class="container">
    <input id="submit4" type="submit" aria-label="Label">
</div>

<script>
test(function(t) {
    var axSubmitButton4 = accessibilityController.accessibleElementById("submit4");
    assert_equals(axSubmitButton4.name, "Label");
    assert_equals(axSubmitButton4.nameFrom, "attribute");
    assert_equals(axSubmitButton4.description, "");
    assert_equals(axSubmitButton4.descriptionFrom, "");
}, "Submit button with aria-label");
</script>

<div class="container">
    <input id="submit5" type="submit" aria-label="Label" value="Value">
</div>

<script>
test(function(t) {
    var axSubmitButton5 = accessibilityController.accessibleElementById("submit5");
    assert_equals(axSubmitButton5.name, "Label");
    assert_equals(axSubmitButton5.nameFrom, "attribute");
    assert_equals(axSubmitButton5.description, "Value");
    assert_equals(axSubmitButton5.descriptionFrom, "attribute");
}, "Submit button with aria-label and value");
</script>
