<!DOCTYPE HTML>
<html>
<head>
<style>
div { width:100px; height:100px;}
div#outsideDiv:before { content:"> "; }
div#outsideDiv:hover:before { display: block; content:"< "; }
</style>
<p>
Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=56401">https://bugs.webkit.org/show_bug.cgi?id=56401</a>
Hover the mouse over the "Block" text. The test passes if the "Block" text is not moved above ">". This test ensures
that the "before" element after hover is inserted in the same position.
</p>
</head>
<body>
<div id="console"></div>
<div id="outsideDiv" onmouseover="checkTestResult()"><span id="span">Inline</span><div id="insideDiv">Block</p></div>
<script>
function getElementTop(elementId)
{
var elem = document.getElementById(elementId);
return elem.getBoundingClientRect().top;
}
function simulateMouseMove()
{
var outsideDivTop = getElementTop("outsideDiv");
if (window.eventSender)
eventSender.mouseMoveTo(50, outsideDivTop);
}
function checkTestResult()
{
var outsideDivTop = getElementTop("outsideDiv");
var insideDivTop = getElementTop("insideDiv");
document.getElementById("console").innerText = (insideDivOriginalTop != insideDivTop) ? "FAIL" : "PASS";
if (window.testRunner)
document.getElementById("outsideDiv").style.visibility = 'hidden';
}
if (window.testRunner)
testRunner.dumpAsText();
document.body.offsetTop;
// Capture the initial values for inside div top
var insideDivOriginalTop = getElementTop("insideDiv");
// Remove the span so that the "before" element is the only remaining child of the anonymous block
// that initially contained "before" and span.
var span = document.getElementById("span");
var outsideDiv = document.getElementById("outsideDiv");
outsideDiv.removeChild(span);
if (window.testRunner) {
simulateMouseMove();
checkTestResult();
}
</script>
</body>
</html>