blob: 514bbba8babd99696e96b63a6a3895dc26dbdb9b [file] [log] [blame] [edit]
<!DOCTYPE html><!-- webkit-test-runner [ ModelElementEnabled=true ] -->
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<body>
<script>
test(() => {
const model = document.createElement("model");
assert_idl_attribute(model, "width", "width is defined");
assert_idl_attribute(model, "height", "width is defined");
}, "HTMLModelElement has width and height properties");
test(() => {
const model = document.createElement("model");
model.setAttribute("width", "100");
model.setAttribute("height", "200");
assert_equals(model.width, 100, "width attribute value is reflected by HTMLModelElement width property");
assert_equals(model.height, 200, "height attribute value is reflected by HTMLModelElement height property");
}, "HTMLModelElement width and height properties reflect width and height attribute values");
test(() => {
const model = document.createElement("model");
model.width = 100;
model.height = 200;
assert_equals(model.getAttribute("width"), "100", "HTMLModelElement width property value is reflected by width attribute");
assert_equals(model.getAttribute("height"), "200", "HTMLModelElement height property value is reflected by height attribute");
}, "<model> width and height attributes reflect HTMLModelElement width and height properties");
test(() => {
const model = document.createElement("model");
document.body.append(model);
assert_equals(getComputedStyle(model).width, "300px", "default width is 300");
assert_equals(getComputedStyle(model).height, "150px", "default height is 150");
model.remove();
}, "<model> has default CSS size when no width or height attribute is used");
test(() => {
const model = document.createElement("model");
model.width = "400";
model.height = "100";
document.body.append(model);
assert_equals(getComputedStyle(model).width, "400px", "automatic size is influenced by width attribute");
assert_equals(getComputedStyle(model).height, "100px", "automatic size is influenced by height attribute");
model.remove();
}, "<model> width and height attributes influence automatic size");
test(() => {
const model = document.createElement("model");
model.style.width = "200px";
model.style.height = "50px";
model.width = "400";
model.height = "100";
document.body.append(model);
assert_equals(getComputedStyle(model).width, "200px", "non-auto width value wins over width attribute");
assert_equals(getComputedStyle(model).height, "50px", "non-auto height value wins over height attribute");
model.remove();
}, "<model> width and height attributes do not win over non-auto width and height property values");
test(() => {
const model = document.createElement("model");
model.width = 200;
model.style.aspectRatio = "1 / 2";
document.body.append(model);
assert_equals(getComputedStyle(model).height, "400px", "aspect-ratio influences size");
model.remove();
}, "<model> size computation takes aspect-ratio property into account");
</script>