| Index: LayoutTests/fast/dom/HTMLDialogElement/non-anchored-dialog-positioning.html | 
| diff --git a/LayoutTests/fast/dom/HTMLDialogElement/non-anchored-dialog-positioning.html b/LayoutTests/fast/dom/HTMLDialogElement/non-anchored-dialog-positioning.html | 
| index 6c8914f2f02e2fd548a45704c315f6875e9d6efb..e6f565244d656d71590873b0bbae17d0bed067d4 100644 | 
| --- a/LayoutTests/fast/dom/HTMLDialogElement/non-anchored-dialog-positioning.html | 
| +++ b/LayoutTests/fast/dom/HTMLDialogElement/non-anchored-dialog-positioning.html | 
| @@ -2,15 +2,20 @@ | 
| <html> | 
| <head> | 
| <style> | 
| -.filler { | 
| -    height: 20000px; | 
| +/* Remove margin, border, and padding to allow comparing dialog's position with that of plain span elements. */ | 
| +body { | 
| +    margin: 0; | 
| } | 
|  | 
| dialog { | 
| -    /* Remove border and padding to allow comparing dialog's position with that of plain span elements. */ | 
| border: 0; | 
| padding: 0; | 
| } | 
| + | 
| +.filler { | 
| +    height: 20000px; | 
| +} | 
| + | 
| </style> | 
| <script src="../../js/resources/js-test-pre.js"></script> | 
| <script> | 
| @@ -43,7 +48,7 @@ function showAndTestDialog(dialog, checker) { | 
| <div class="filler" id="fillerDiv"></div> | 
| </body> | 
| <script> | 
| -description("Tests default positioning of non-anchored dialogs."); | 
| +description("Tests positioning of non-anchored dialogs."); | 
|  | 
| dialog = document.getElementById('mydialog'); | 
|  | 
| @@ -137,56 +142,60 @@ dialog.close(); | 
| window.scroll(0, 500); | 
|  | 
| debug("<br>Dialog should not be centered if show() was called when an ancestor had display 'none'."); | 
| -var plainSpan = document.createElement('span'); | 
| -plainSpan.style.position = 'absolute'; | 
| -relativeContainer.appendChild(plainSpan); | 
| -expectedTop = plainSpan.getBoundingClientRect().top; | 
| absoluteContainer.style.display = 'none'; | 
| dialog.show(); | 
| absoluteContainer.style.display = 'block'; | 
| +// Since dialog's containing block is the ICB, it's statically positioned after <body>. | 
| +expectedTop = document.body.getBoundingClientRect().bottom; | 
| shouldBe('dialog.getBoundingClientRect().top', 'expectedTop'); | 
| dialog.close(); | 
|  | 
| debug("<br>Test that setting 'top' on dialog results in the same position as for a plain, absolutely positioned span."); | 
| +var plainSpan = document.createElement('span'); | 
| +plainSpan.style.position = 'absolute'; | 
| +document.body.appendChild(plainSpan); | 
| plainSpan.style.top = '50px'; | 
| dialog.style.top = '50px'; | 
| -showAndTestDialog(dialog, function() { shouldBe('dialog.offsetTop', 'plainSpan.offsetTop'); }); | 
| +expectedTop = plainSpan.getBoundingClientRect().top; | 
| +showAndTestDialog(dialog, function() { shouldBe('dialog.getBoundingClientRect().top', 'expectedTop'); }); | 
|  | 
| debug("<br>Test that setting 'bottom' on dialog results in the same position as for a plain, absolutely positioned span."); | 
| dialog.style.top = 'auto'; | 
| plainSpan.style.top = 'auto'; | 
| dialog.style.bottom = '50px'; | 
| plainSpan.style.bottom = '50px'; | 
| -showAndTestDialog(dialog, function() { shouldBe('dialog.offsetBottom', 'plainSpan.offsetBottom'); }); | 
| +showAndTestDialog(dialog, function() { shouldBe('dialog.getBoundingClientRect().bottom', 'plainSpan.getBoundingClientRect().bottom'); }); | 
|  | 
| debug('<br>Test that fixed positioning for dialog has same behavior as for a plain span.'); | 
| plainSpan.style.position = 'fixed'; | 
| plainSpan.style.top = '50px'; | 
| dialog.style.position = 'fixed'; | 
| dialog.style.top = '50px'; | 
| -showAndTestDialog(dialog, function() { shouldBe('dialog.offsetTop', 'plainSpan.offsetTop'); }); | 
| +showAndTestDialog(dialog, function() { shouldBe('dialog.getBoundingClientRect().top', 'plainSpan.getBoundingClientRect().top'); }); | 
|  | 
| debug('<br>Test that static position for a non-modal dialog has the same behavior as for a plain span.'); | 
| -// Just test non-modal since modal is covered by other tests (for modal, static computes to absolute) | 
| +plainSpan.parentNode.removeChild(plainSpan); | 
| +relativeContainer.appendChild(plainSpan); | 
| plainSpan.style.position = 'static'; | 
| -var expectedTop = plainSpan.offsetTop; | 
| +expectedTop = plainSpan.getBoundingClientRect().top; | 
| plainSpan.parentNode.removeChild(plainSpan); | 
| dialog.style.position = 'static'; | 
| +// Just test non-modal since modal is covered by other tests (for modal, static computes to absolute) | 
| dialog.show(); | 
| -shouldBe('dialog.offsetTop', 'expectedTop'); | 
| +shouldBe('dialog.getBoundingClientRect().top', 'expectedTop'); | 
| dialog.close(); | 
|  | 
| debug('<br>Test that relative position for a non-modal dialog has the same behavior as for a plain span.'); | 
| -// Just test non-modal since modal is covered by other tests (for modal, relative computes to absolute) | 
| relativeContainer.appendChild(plainSpan); | 
| plainSpan.style.position = 'relative'; | 
| plainSpan.style.top = '50px'; | 
| -expectedTop = plainSpan.offsetTop; | 
| +expectedTop = plainSpan.getBoundingClientRect().top; | 
| plainSpan.parentNode.removeChild(plainSpan); | 
| dialog.style.position = 'relative'; | 
| dialog.style.top = '50px'; | 
| +// Just test non-modal since modal is covered by other tests (for modal, relative computes to absolute) | 
| dialog.show(); | 
| -shouldBe('dialog.offsetTop', 'expectedTop'); | 
| +shouldBe('dialog.getBoundingClientRect().top', 'expectedTop'); | 
| dialog.close(); | 
| </script> | 
| <script src="../../js/resources/js-test-post.js"></script> | 
|  |