blob: 97511e8d04f497d53e202293d14871643ecf234b [file] [log] [blame]
<!DOCTYPE html>
<script src="../resources/js-test.js"></script>
<html>
<body>
<div id="host">
<div id="slotted" slot="s1"></div>
</div>
<script src="resources/alignment-parsing-utils.js"></script>
<script>
description('Test to verify auto value resolution works as expected in root elements (eg. document root / shadow roots / slotted elements / elements inside&lt;slot&gt;)');
var block = document.getElementById("host");
debug("");
debug("*** Test 'auto' value resolution for the document root node. ***");
debug("");
debug("Check out how the DOM's root element resolves the align-self 'auto' values.");
document.documentElement.style.webkitAlignSelf = "center";
checkValues(document.documentElement, "webkitAlignSelf", "-webkit-align-self", "center", "center");
document.documentElement.style.webkitAlignSelf = "auto";
checkValues(document.documentElement, "webkitAlignSelf", "-webkit-align-self", "auto", "normal");
debug("");
debug("Check out how the DOM's root element align-items's value is used to resolve its children's align-self 'auto' values.");
document.documentElement.style.webkitAlignItems = "center";
checkValues(document.documentElement, "webkitAlignItems", "-webkit-align-items", "center", "center");
document.body.style.webkitAlignItems = "auto"; // The 'auto' value is not valid for align-items.
document.body.style.webkitAlignSelf = "auto";
checkValues(document.body, "webkitAlignItems", "-webkit-align-items", "", "normal");
checkValues(document.body, "webkitAlignSelf", "-webkit-align-self", "auto", "center");
block.style.webkitAlignItems = ""; // Default value is 'normal' for align-items.
block.style.webkitAlignSelf = "auto";
checkValues(block, "webkitAlignItems", "-webkit-align-items", "", "normal");
checkValues(block, "webkitAlignSelf", "-webkit-align-self", "auto", "normal");
debug("");
debug("Check out how the DOM's root element deals with 'auto' value in align-items.");
document.documentElement.style.webkitAlignItems = "auto"; // The 'auto' value is not valid for align-items.
checkValues(document.documentElement, "webkitAlignItems", "-webkit-align-items", "center", "center");
document.documentElement.style.webkitAlignItems = ""; // Default value is 'normal' for align-items.
checkValues(document.documentElement, "webkitAlignItems", "-webkit-align-items", "", "normal");
debug("");
debug("Check out how the DOM's root element resolves the justify-self 'auto' values.");
document.documentElement.style.justifySelf = "left";
checkValues(document.documentElement, "justifySelf", "justify-self", "left", "left");
document.documentElement.style.justifySelf = "auto";
checkValues(document.documentElement, "justifySelf", "justify-self", "auto", "normal");
debug("");
debug("Check out how the DOM's root element align-items's value is used to resolve its children's align-self 'auto' values.");
document.documentElement.style.justifyItems = "center";
checkValues(document.documentElement, "justifyItems", "justify-items", "center", "center");
document.body.style.justifyItems = "auto";
document.body.style.justifySelf = "auto";
checkValues(document.body, "justifyItems", "justify-items", "auto", "normal");
checkValues(document.body, "justifySelf", "justify-self", "auto", "center");
block.style.justifyItems = "auto";
block.style.justifySelf = "auto";
checkValues(block, "justifyItems", "justify-items", "auto", "normal");
checkValues(block, "justifySelf", "justify-self", "auto", "normal");
debug("");
debug("Check out how the DOM's root element deals with 'auto' value in justify-items.");
document.documentElement.style.justifyItems = "auto";
checkValues(document.documentElement, "justifyItems", "justify-items", "auto", "normal");
checkValues(document.body, "justifySelf", "justify-self", "auto", "normal");
checkValues(block, "justifySelf", "justify-self", "auto", "normal");
debug("");
debug("Check out how the DOM's root element justify-items's value with 'legacy' keyword is used to resolve any descendant's justify-items 'auto' values.");
document.documentElement.style.justifyItems = "legacy center";
checkValues(document.documentElement, "justifyItems", "justify-items", "legacy center", "legacy center");
document.body.style.justifyItems = "auto";
document.body.style.justifySelf = "auto";
checkValues(document.body, "justifyItems", "justify-items", "auto", "legacy center");
checkValues(document.body, "justifySelf", "justify-self", "auto", "center");
block.style.justifyItems = "auto";
block.style.justifySelf = "auto";
checkValues(block, "justifyItems", "justify-items", "auto", "legacy center");
checkValues(block, "justifySelf", "justify-self", "auto", "center");
debug("");
debug("Check out how the DOM's root element recomputes its descendant's style when 'legacy' keyword is removed from its justify-items value.");
document.documentElement.style.justifyItems = "auto";
checkValues(document.body, "justifyItems", "justify-items", "auto", "normal");
checkValues(document.body, "justifySelf", "justify-self", "auto", "normal");
checkValues(block, "justifyItems", "justify-items", "auto", "normal");
checkValues(block, "justifySelf", "justify-self", "auto", "normal");
</script>
</body>
</html>