<!DOCTYPE html>
<html>
<head>
  <script src="../../../resources/testharness.js"></script>
  <script src="../../../resources/testharnessreport.js"></script>
  <script src="../resources/multiple-fields-ax-value-changed-notification-helper.js"></script>
</head>
<body>
<input id="test" type="datetime-local" value="2012-10-09T12:34:56">
<script>
async_test((t) => {
    var testInput = document.getElementById('test');

    var listener = new TestAccessibilityControllerNotificationListener(t);
    listener.queueExpectedNotification("Focus", "Month", "10", "\t");
    listener.queueExpectedNotification("Focus", "Day", "09", "4");
    listener.queueExpectedNotification("Focus", "Year", "2012", "ArrowUp");
    listener.queueExpectedNotification("Focus", "Hours", "12", "2");
    listener.queueExpectedNotification("Focus", "Minutes", "34", "ArrowDown");
    listener.queueExpectedNotification("ValueChanged", "Day", "04");
    listener.queueExpectedNotification("ValueChanged", "Day", "04");
    listener.queueExpectedNotification("ValueChanged", "Year", "2013");
    listener.queueExpectedNotification("ValueChanged", "Year", "2013", "\t");
    listener.queueExpectedNotification("ValueChanged", "Hours", "02");
    listener.queueExpectedNotification("ValueChanged", "Hours", "02");
    listener.queueExpectedNotification("ValueChanged", "Minutes", "33");
    listener.queueExpectedNotification("ValueChanged", "Minutes", "33");

    testInput.focus();

    window.setTimeout(function() {
        assert_unreached("Did not receive all accessibility notifications");
        t.done();
    }, 1000);
}, 'This test checks value changed accessibility notifications.');

</script>
</body>
</html>
