48 lines
1.5 KiB
HTML
48 lines
1.5 KiB
HTML
<!doctype html>
|
|
<meta charset="utf-8">
|
|
<title>Test for bug 1658302: We don't reframe for placeholder attribute value changes.</title>
|
|
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<input id="input">
|
|
<textarea id="textarea"></textarea>
|
|
<script>
|
|
SimpleTest.waitForExplicitFinish();
|
|
const utils = SpecialPowers.DOMWindowUtils;
|
|
|
|
function expectReframe(shouldHaveReframed, callback) {
|
|
document.documentElement.offsetTop;
|
|
const previousConstructCount = utils.framesConstructed;
|
|
const previousReflowCount = utils.framesReflowed;
|
|
|
|
callback();
|
|
|
|
document.documentElement.offsetTop;
|
|
isnot(previousReflowCount, utils.framesReflowed, "We should have reflowed");
|
|
(shouldHaveReframed ? isnot : is)(previousConstructCount,
|
|
utils.framesConstructed,
|
|
`We should ${shouldHaveReframed ? "" : "not"} have reframed`);
|
|
}
|
|
|
|
for (const control of document.querySelectorAll("input, textarea")) {
|
|
// Creating the placeholder attribute reframes right now.
|
|
//
|
|
// TODO: Could be avoided with some more work.
|
|
expectReframe(true, () => {
|
|
control.placeholder = "foo";
|
|
});
|
|
|
|
// Incrementally changing it should not reframe, just reflow.
|
|
expectReframe(false, () => {
|
|
control.placeholder = "bar";
|
|
});
|
|
|
|
// Removing the placeholder attribute reframes right now.
|
|
//
|
|
// TODO: Could maybe be avoided with some more work.
|
|
expectReframe(true, () => {
|
|
control.removeAttribute("placeholder");
|
|
});
|
|
}
|
|
|
|
SimpleTest.finish();
|
|
</script>
|