Bug 725426 - Incorrect getBoundingClientRect() for transform-style: flat. r=roc

This commit is contained in:
Aryeh Gregor 2012-02-08 14:36:16 -05:00
parent f139676407
commit d3dc9940e5
3 changed files with 27 additions and 0 deletions

View File

@ -1218,6 +1218,9 @@ nsLayoutUtils::GetTransformToAncestor(nsIFrame *aFrame, nsIFrame *aAncestor)
nsIFrame* parent;
gfx3DMatrix ctm = aFrame->GetTransformMatrix(aAncestor, &parent);
while (parent && parent != aAncestor) {
if (!parent->Preserves3DChildren()) {
ctm.ProjectTo2D();
}
ctm = ctm * parent->GetTransformMatrix(aAncestor, &parent);
}
return ctm;

View File

@ -183,6 +183,7 @@ _TEST_FILES = \
test_bug646757.html \
test_bug718809.html \
test_font_inflation_reftests.html \
test_bug725426.html \
$(NULL)
# Tests for bugs 441782, 467672 and 570378 don't pass reliably on Windows, because of bug 469208

View File

@ -0,0 +1,23 @@
<!doctype html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=725426
-->
<title>Test for bug 725426</title>
<script src=/tests/SimpleTest/SimpleTest.js></script>
<link rel=stylesheet href=/tests/SimpleTest/test.css>
<body style=margin:0>
<div style="-moz-transform: perspective(200px)">
<div style="-moz-transform: translatez(-100px);
width:100px;height:100px;background:blue">
</div></div>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=725426">
Mozilla Bug 725426</a>
<pre id=test>
<script class=testbody>
var rect = document.querySelector("div>div").getBoundingClientRect();
is(rect.top, 0, "Incorrect bounding rect top");
is(rect.right, 100, "Incorrect bounding rect top");
is(rect.bottom, 100, "Incorrect bounding rect top");
is(rect.left, 0, "Incorrect bounding rect top");
</script>
</pre>