blob: fa484c6eae2197d8e831916e891922c410ed60c2 [file] [edit]
<html>
<head>
<script src="../../resources/js-test.js"></script>
<script src="../../resources/ui-helper.js"></script>
</head>
<style>
.container {
background-color: blue;
width: 200px;
height: 600px;
position: absolute;
}
.inert {
background-color: yellow;
width: 100px;
height: 100px;
position: relative;
}
.target {
background-color: red;
width: 100px;
height: 100px;
position: relative;
}
.inert:hover ~ .target {
background-color: green;
}
.inert:hover ~ .inert > .target {
background-color: green;
}
.child {
width: 50px;
height: 50px;
}
</style>
<div class=container>
<div class=inert>
</div>
<div class=target>
</div>
<div class=inert>
</div>
<div class=target>
<div class="inert child">
</div>
</div>
<div class=inert>
<div class="target child">
</div>
</div>
</div>
<script>
function testStyleChangeType(selector, expectedType)
{
let pass = true;
const elements = document.querySelectorAll(selector);
for (var i = 0; i < elements.length; ++i) {
const type = window.internals.styleChangeType(elements[i]);
if (type != expectedType) {
testFailed(`${selector} styleChangeType was ${type} expected ${expectedType}`);
pass = false;
}
}
if (pass)
testPassed(`${selector} styleChangeType was ${expectedType}`);
}
jsTestIsAsync = true;
window.onload = async () => {
if (!window.testRunner)
return;
addEventListener("mousemove", () => {
testStyleChangeType(".target", "InlineStyleChange");
testStyleChangeType(".container", "NoStyleChange");
testStyleChangeType(".inert", "NoStyleChange");
}, { "once" : true });
eventSender.mouseMoveTo(50, 50);
await UIHelper.ensurePresentationUpdate();
addEventListener("mousemove", () => {
testStyleChangeType(".target", "InlineStyleChange");
testStyleChangeType(".container", "NoStyleChange");
testStyleChangeType(".inert", "NoStyleChange");
}, { "once" : true });
eventSender.mouseMoveTo(300, 50);
finishJSTest();
};
</script>