blob: 26a733205caa9dc3ecabb558de7c3187a1c23419 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../../../resources/js-test.js"></script>
<script src="../../../../resources/ui-helper.js"></script>
</head>
<body>
<div id="test-container"></div>
<script>
window.jsTestIsAsync = true;
let textAreaCaretRect;
let textFieldCaretRect;
function createTextControlWithPlaceholder(tagName)
{
let element = document.createElement(tagName);
element.placeholder = "placeholder";
return element;
}
function computeCaretRectForElement(element)
{
return new Promise((resolved) => {
async function handleFocus() {
let caretRect = await UIHelper.getUICaretRect();
await UIHelper.deactivateFormControl(element);
resolved(caretRect);
}
element.addEventListener("focus", handleFocus, { once: true });
UIHelper.activateFormControl(element);
});
}
async function runTest()
{
if (!window.testRunner) {
testFailed("Must be run in WebKitTestRunner.");
finishJSTest();
return;
}
let testContainer = document.getElementById("test-container");
// 1. Compute caret rect in empty textarea.
let textArea = createTextControlWithPlaceholder("textarea");
testContainer.appendChild(textArea);
textAreaCaretRect = await computeCaretRectForElement(textArea);
testContainer.removeChild(textArea);
// 2. Compute caret rect in empty text field.
let textField = createTextControlWithPlaceholder("input");
testContainer.appendChild(textField);
textFieldCaretRect = await computeCaretRectForElement(textField);
testContainer.removeChild(textField);
// 3. Compare
shouldBe("textAreaCaretRect.left", "textFieldCaretRect.left");
// 4. Clean up and finish test.
document.body.removeChild(testContainer);
finishJSTest();
}
description("Tests that the x-coordinate of the caret in an empty textarea is identical to the x-coordinate of the caret in an empty text field.");
runTest();
</script>
</body>
</html>