| Index: LayoutTests/fast/css/getComputedStyle/getComputedStyle-offsets.html
 | 
| diff --git a/LayoutTests/fast/css/getComputedStyle/getComputedStyle-offsets.html b/LayoutTests/fast/css/getComputedStyle/getComputedStyle-offsets.html
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..dd8803e0d63b815b9c0eb8beff25ea1bce522b5a
 | 
| --- /dev/null
 | 
| +++ b/LayoutTests/fast/css/getComputedStyle/getComputedStyle-offsets.html
 | 
| @@ -0,0 +1,419 @@
 | 
| +<!DOCTYPE html>
 | 
| +<html>
 | 
| +<head>
 | 
| +<meta charset="utf-8">
 | 
| +<script src="../../js/resources/js-test-pre.js"></script>
 | 
| +</head>
 | 
| +<body>
 | 
| +<style>
 | 
| +
 | 
| +.relative200x400 {
 | 
| +    position: relative;
 | 
| +    width: 200px;
 | 
| +    height: 400px;
 | 
| +    font-size: 10px;
 | 
| +}
 | 
| +
 | 
| +#test {
 | 
| +    position: absolute;
 | 
| +}
 | 
| +
 | 
| +</style>
 | 
| +<div id="tests">
 | 
| +<div class="relative200x400"><div id="test"></div></div>
 | 
| +</div>
 | 
| +<script>
 | 
| +
 | 
| +description("Test to make sure top/bottom/left/right properly returns pixel values for any input.")
 | 
| +
 | 
| +var test = document.getElementById('test');
 | 
| +
 | 
| +
 | 
| +//-----------------------------------------------------------------------------
 | 
| +debug('');
 | 
| +debug('No offsets (zero width/height)');
 | 
| +debug('');
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'200px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'400px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'0px'");
 | 
| +
 | 
| +// On padding/border/margin on actual node
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', 'padding: 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'190px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'390px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'0px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', 'border: solid 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'190px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'390px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'0px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', 'margin: 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'190px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'390px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'0px'");
 | 
| +
 | 
| +evalAndLog("test.setAttribute('style', '')");
 | 
| +
 | 
| +// On padding/border/margin on parent node
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'padding: 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'5px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'5px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'205px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'405px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'0px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'border: solid 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'200px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'400px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'0px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'margin: 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'200px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'400px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'0px'");
 | 
| +
 | 
| +//-----------------------------------------------------------------------------
 | 
| +debug('');
 | 
| +debug('No offsets (50px width/height)');
 | 
| +debug('');
 | 
| +var commonStyle = "width: 50px; height: 50px;";
 | 
| +evalAndLog("test.setAttribute('style', '"+commonStyle+"')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'150px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'350px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'50px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'50px'");
 | 
| +
 | 
| +// On padding/border/margin on actual node
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', '"+commonStyle+" padding: 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'140px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'340px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'50px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'50px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', '"+commonStyle+" border: solid 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'140px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'340px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'50px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'50px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', '"+commonStyle+" margin: 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'140px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'340px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'50px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'50px'");
 | 
| +evalAndLog("test.removeAttribute('style', 'margin')");
 | 
| +
 | 
| +// On padding/border/margin on parent node
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', '"+commonStyle+"')");
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'padding: 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'5px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'5px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'155px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'355px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'50px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'50px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'border: solid 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'150px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'350px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'50px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'50px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'margin: 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'150px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'350px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'50px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'50px'");
 | 
| +
 | 
| +
 | 
| +//-----------------------------------------------------------------------------
 | 
| +debug('');
 | 
| +debug('No offsets (100% width/height)');
 | 
| +debug('');
 | 
| +var commonStyle = "width: 100%; height: 100%;";
 | 
| +evalAndLog("test.setAttribute('style', '"+commonStyle+"')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'200px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'400px'");
 | 
| +
 | 
| +// On padding/border/margin on actual node
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', '"+commonStyle+" padding: 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'-10px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'-10px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'200px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'400px'");
 | 
| +evalAndLog("test.removeAttribute('style', 'padding')");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', '"+commonStyle+" border: solid 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'-10px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'-10px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'200px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'400px'");
 | 
| +evalAndLog("test.removeAttribute('style', 'border')");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', '"+commonStyle+" margin: 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'-10px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'-10px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'200px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'400px'");
 | 
| +evalAndLog("test.removeAttribute('style', 'margin')");
 | 
| +
 | 
| +// On padding/border/margin on parent node
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', '"+commonStyle+"')");
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'padding: 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'5px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'5px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'-5px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'-5px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'210px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'410px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'border: solid 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'200px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'400px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'margin: 5px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'200px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'400px'");
 | 
| +
 | 
| +//-----------------------------------------------------------------------------
 | 
| +debug('');
 | 
| +debug('% offsets (top/left)');
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', 'top: 10%; left: 10%; width: 50%; height: 60%;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'40px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'20px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'80px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'120px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'100px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'240px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'padding: 25px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'45px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'25px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'100px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'135px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'125px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'270px'");
 | 
| +evalAndLog("test.parentNode.removeAttribute('style', 'padding')");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'border: solid 25px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'40px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'20px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'80px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'120px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'100px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'240px'");
 | 
| +evalAndLog("test.parentNode.removeAttribute('style', 'border')");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'margin: 25px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'40px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'20px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'80px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'120px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'100px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'240px'");
 | 
| +evalAndLog("test.parentNode.removeAttribute('style', 'margin')");
 | 
| +
 | 
| +
 | 
| +//-----------------------------------------------------------------------------
 | 
| +debug('');
 | 
| +debug('% offsets (right/bottom)');
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', 'right: 10%; bottom: 10%; width: 90%; height: 80%;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'40px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'20px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'40px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'180px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'320px'");
 | 
| +
 | 
| +
 | 
| +// On padding/border/margin on parent node
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'padding: 25px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'45px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'25px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'45px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'225px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'360px'");
 | 
| +evalAndLog("test.parentNode.removeAttribute('style', 'padding')");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'border: solid 25px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'40px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'20px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'40px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'180px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'320px'");
 | 
| +evalAndLog("test.parentNode.removeAttribute('style', 'border')");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'margin: 25px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'40px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'20px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'40px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'180px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'320px'");
 | 
| +evalAndLog("test.parentNode.removeAttribute('style', 'margin')");
 | 
| +
 | 
| +
 | 
| +
 | 
| +//-----------------------------------------------------------------------------
 | 
| +debug('');
 | 
| +debug('em offsets');
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', 'top: 1em; left: 2em; width: 3em; height: 4em;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'10px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'20px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'150px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'350px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'30px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'40px'");
 | 
| +
 | 
| +// On padding/border/margin on parent node
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'padding: 25px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'10px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'20px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'200px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'400px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'30px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'40px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'border: solid 25px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'10px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'20px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'150px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'350px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'30px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'40px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'margin: 25px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'10px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'20px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'150px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'350px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'30px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'40px'");
 | 
| +
 | 
| +//-----------------------------------------------------------------------------
 | 
| +debug('');
 | 
| +debug('Absolute Offsets');
 | 
| +debug('');
 | 
| +evalAndLog("test.setAttribute('style', 'position: absolute; top: 30px; height: 300px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'30px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'200px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'70px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'300px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'padding: 25px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'30px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'25px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'225px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'120px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'300px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'border: solid 25px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'30px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'200px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'70px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'300px'");
 | 
| +
 | 
| +debug('');
 | 
| +evalAndLog("test.parentNode.setAttribute('style', 'margin: 25px;')");
 | 
| +shouldBe("getComputedStyle(test).top", "'30px'");
 | 
| +shouldBe("getComputedStyle(test).left", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).right", "'200px'");
 | 
| +shouldBe("getComputedStyle(test).bottom", "'70px'");
 | 
| +shouldBe("getComputedStyle(test).width", "'0px'");
 | 
| +shouldBe("getComputedStyle(test).height", "'300px'");
 | 
| +
 | 
| +</script>
 | 
| +<script src="../../js/resources/js-test-post.js"></script>
 | 
| +</body>
 | 
| +</html>
 | 
| 
 |