blob: b003e51c220466a2438b80c0c50c224420e2bbd1 [file] [log] [blame]
<html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<style>
input,
textarea {
font: 20px Arial;
padding: 5px;
margin: 5px;
}
input.emulated-input-suggested::placeholder,
textarea.emulated-input-suggested::placeholder {
/* Emulate a built-in style change in a normal browser. */
font: -webkit-small-control;
}
body {
/* Add an expander margin to get scrolling. */
margin-bottom: 2000px;
}
</style>
<body>
<div><input id="previewInput" placeholder="Name"></div>
<div><textarea id="previewTextArea" rows="1" placeholder="Address"></textarea></div>
<script>
function scrollToPartiallyHide(preview) {
const previewRect = preview.getBoundingClientRect();
preview.offsetParent.scrollTop += previewRect.top + previewRect.height / 2;
}
function setSuggestedValue(preview, text) {
if (window.internals) {
internals.setSuggestedValue(preview, text);
} else {
preview.classList.add('emulated-input-suggested');
preview.placeholder = text;
}
}
for (const id of ['previewInput', 'previewTextArea']) {
test(() => {
const preview = document.getElementById(id);
scrollToPartiallyHide(preview);
const expectedTop = preview.offsetParent.scrollTop;
setSuggestedValue(preview, 'Foooooooooooooooooooooooooooooooooooo');
const actualTop = preview.offsetParent.scrollTop;
assert_equals(actualTop, expectedTop,
'Element should have the same scrolling position');
}, 'Testing that a partially hidden #' + id + ' field does not cause' +
' a scrolling adjustment when a value is previewed.\n');
}
</script>
</body>
</html>