blob: 58ef14ec87c2d345e022cb8399a0a6aed665de6f [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../resources/common.js"></script>
<script src="../resources/picker-common.js"></script>
</head>
<body>
<script>
if (window.internals)
internals.settings.setLangAttributeAwareFormControlUIEnabled(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
input.focus();
assert_equals(internals.pagePopupWindow, null);
return openPickerWithPromise(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);
}).then(() => {
// Update minutes
input.blur();
input.focus();
eventSender.keyDown("Tab");
assert_equals(internals.pagePopupWindow, null);
return openPickerWithPromise(input).then(() => {
assert_not_equals(internals.pagePopupWindow, null);
eventSender.keyDown('ArrowUp');
assert_equals(input.value, "11:33" + secondsStr);
eventSender.keyDown('ArrowDown');
assert_equals(input.value, "11:34" + secondsStr);
});
}).then(() => {
if (!includesSeconds)
return;
// Update seconds
input.blur();
input.focus();
eventSender.keyDown("Tab"); // To minutes
eventSender.keyDown("Tab"); // To seconds
assert_equals(internals.pagePopupWindow, null);
return openPickerWithPromise(input).then(() => {
assert_not_equals(internals.pagePopupWindow, null);
eventSender.keyDown('ArrowUp');
seconds--;
assert_equals(input.value, "11:34:" + seconds);
eventSender.keyDown('ArrowDown');
seconds++;
assert_equals(input.value, "11:34:" + seconds);
});
}).then(() => {
// Update am/pm
input.blur();
input.focus();
eventSender.keyDown("Tab");
if (includesSeconds)
eventSender.keyDown("Tab"); // To seconds
eventSender.keyDown("Tab");
assert_equals(internals.pagePopupWindow, null);
return openPickerWithPromise(input).then(() => {
assert_not_equals(internals.pagePopupWindow, null);
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);
input.blur();
});
});
}
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
input.focus();
assert_equals(internals.pagePopupWindow, null);
return openPickerWithPromise(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");
}).then(() => {
// Update hours
input.blur();
input.focus();
eventSender.keyDown("Tab");
return openPickerWithPromise(input).then(() => {
assert_not_equals(internals.pagePopupWindow, null);
eventSender.keyDown('ArrowUp');
assert_equals(input.value, "10:34");
eventSender.keyDown('ArrowDown');
assert_equals(input.value, "11:34");
});
}).then(() => {
// Update minutes
input.blur();
input.focus();
eventSender.keyDown("Tab");
eventSender.keyDown("Tab");
assert_equals(internals.pagePopupWindow, null);
return openPickerWithPromise(input).then(() => {
assert_not_equals(internals.pagePopupWindow, null);
eventSender.keyDown('ArrowUp');
assert_equals(input.value, "11:33");
eventSender.keyDown('ArrowDown');
assert_equals(input.value, "11:34");
input.blur();
});
});
}, "Test opening time picker to focused field for AM/PM first.");
</script>
</body>
</html>