<!DOCTYPE html>
<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-1000">
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../../resources/testdriver.js"></script>
<script src="../../../resources/testdriver-vendor.js"></script>
<script src="../resources/common.js"></script>
<script src="../resources/picker-common.js"></script>
<script>
if (window.internals)
internals.runtimeFlags.langAttributeAwareFormControlUIEnabled = true;
else
debug('Require testRunner.');
</script>
<input type="time" id="time" value="11:34:00" />
<input type="time" step="1" id="timeWithSeconds" value="11:34:34" />
<input type="time" lang="ko" id="timeAmFirst" value="11:34:00" />
<script>
function runTimeTest(input, includesSeconds)
{
let seconds = includesSeconds ? 34 : 0;
let secondsStr = includesSeconds ? (":" + seconds) : "";
// Update hours
assert_equals(internals.pagePopupWindow, null);
return openPicker(input)
.then(() => {
assert_not_equals(internals.pagePopupWindow, null);
eventSender.keyDown('ArrowUp');
assert_equals(input.value, "10:34" + secondsStr);
eventSender.keyDown('ArrowDown');
assert_equals(input.value, "11:34" + secondsStr);
eventSender.keyDown("Tab");
eventSender.keyDown('ArrowUp');
assert_equals(input.value, "11:33" + secondsStr);
eventSender.keyDown('ArrowDown');
assert_equals(input.value, "11:34" + secondsStr);
if (includesSeconds) {
// Update seconds
eventSender.keyDown("Tab"); // To seconds
eventSender.keyDown('ArrowUp');
seconds--;
assert_equals(input.value, "11:34:" + seconds);
eventSender.keyDown('ArrowDown');
seconds++;
assert_equals(input.value, "11:34:" + seconds);
}
// Update am/pm
eventSender.keyDown("Tab");
eventSender.keyDown('ArrowUp');
assert_equals(input.value, "23:34" + secondsStr);
eventSender.keyDown('ArrowDown');
assert_equals(input.value, "11:34" + secondsStr);
eventSender.keyDown('ArrowDown');
assert_equals(input.value, "23:34" + secondsStr);
return attemptToClosePicker(input);
});
}
promise_test(() => {
var input = document.getElementById("time");
return runTimeTest(input, false);
}, "Test opening time picker to focused field.");
promise_test(() => {
var input = document.getElementById("timeWithSeconds");
return runTimeTest(input, true);
}, "Test opening time picker to focused field with seconds.");
promise_test(() => {
var input = document.getElementById("timeAmFirst");
// Update am/pm
assert_equals(internals.pagePopupWindow, null);
return openPicker(input)
.then(() => {
assert_not_equals(internals.pagePopupWindow, null);
eventSender.keyDown('ArrowUp');
assert_equals(input.value, "23:34");
eventSender.keyDown('ArrowDown');
assert_equals(input.value, "11:34");
eventSender.keyDown('ArrowDown');
assert_equals(input.value, "23:34");
eventSender.keyDown('ArrowDown');
assert_equals(input.value, "11:34");
// Update hours
eventSender.keyDown("Tab");
eventSender.keyDown('ArrowUp');
assert_equals(input.value, "10:34");
eventSender.keyDown('ArrowDown');
assert_equals(input.value, "11:34");
// Update minutes
eventSender.keyDown("Tab");
eventSender.keyDown('ArrowUp');
assert_equals(input.value, "11:33");
eventSender.keyDown('ArrowDown');
assert_equals(input.value, "11:34");
return attemptToClosePicker(input);
});
}, "Test opening time picker to focused field for AM/PM first.");
</script>