<!DOCTYPE html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div class="foo">foo</div>
<div class="foo">foo</div>
<div class="foo">foo</div>
<div class="bar">bar</div>
<div class="bar">bar</div>
<div class="bar">bar</div>
<div class="baz">baz</div>
<div class="baz">baz</div>
<div class="baz">baz</div>
<script>
function createSheet(selector)
{
var sheet = document.createElement('style');
sheet.textContent = selector + ' { color: red }';
return sheet;
}
function addSheet(selector)
{
var sheet = createSheet(selector);
document.head.appendChild(sheet);
return sheet;
}
if (window.internals) {
document.documentElement.offsetTop;
var nonexistantSheet = addSheet('.nonexistant');
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "0");
document.documentElement.offsetTop;
nonexistantSheet.remove();
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "0");
document.documentElement.offsetTop;
var barSheet = addSheet('.bar');
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "3");
document.documentElement.offsetTop;
barSheet.remove();
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "3");
document.documentElement.offsetTop;
var barSheet = addSheet('.bar');
var bazSheet = addSheet('.baz');
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "6");
document.documentElement.offsetTop;
barSheet.remove();
bazSheet.remove();
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "6");
document.documentElement.offsetTop;
var barSheet = addSheet('.bar');
var bazSheet = createSheet('.baz');
document.head.insertBefore(bazSheet, document.head.firstChild);
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "6");
document.documentElement.offsetTop;
barSheet.remove();
bazSheet.remove();
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "6");
document.documentElement.offsetTop;
var fooSheet = addSheet('.foo');
var barSheet = addSheet('.bar');
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "6");
document.documentElement.offsetTop;
var bazSheet = addSheet('.baz');
barSheet.remove();
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "6");
}
</script>