Last Comment Bug 725426 - Incorrect getBoundingClientRect() for transform-style: flat
: Incorrect getBoundingClientRect() for transform-style: flat
Product: Core
Classification: Components
Component: DOM: CSS Object Model (show other bugs)
: Trunk
: x86 Linux
: -- minor (vote)
: mozilla13
Assigned To: Aryeh Gregor (:ayg) (next working March 28-April 26)
: Andrew Overholt [:overholt]
Depends on:
Blocks: 505115 591718
  Show dependency treegraph
Reported: 2012-02-08 11:34 PST by Aryeh Gregor (:ayg) (next working March 28-April 26)
Modified: 2012-02-10 19:42 PST (History)
3 users (show)
dao+bmo: in‑testsuite+
See Also:
Crash Signature:
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---

Patch v1 (2.65 KB, patch)
2012-02-08 11:37 PST, Aryeh Gregor (:ayg) (next working March 28-April 26)
roc: review+
Details | Diff | Splinter Review

Description Aryeh Gregor (:ayg) (next working March 28-April 26) 2012-02-08 11:34:40 PST

data:text/html,<!doctype html>
<div style="-moz-transform: perspective(200px)">
<div style="-moz-transform: translatez(-100px);
var rect = document.querySelector("div>div").getBoundingClientRect();

This should alert "8,108,108,8", because in transform-style: flat mode, transforms don't accumulate.  Chrome 18 dev and IE10 Developer Preview both alert this (or something slightly off in IE's case).  Nightlies alert something way off, the same as transform-style: preserve-3d.

Bug 724025 and bug 718809 are related.  The patch for those does not fix this.  I'll attach a patch in a moment.
Comment 1 Aryeh Gregor (:ayg) (next working March 28-April 26) 2012-02-08 11:37:33 PST
Created attachment 595470 [details] [diff] [review]
Patch v1

I'll request review when tests have passed.
Comment 2 Mozilla RelEng Bot 2012-02-08 11:42:24 PST
Autoland Patchset:
	Patches: 595470
	Branch: mozilla-central => try
Try run started, revision 8f473a21d905. To cancel or monitor the job, see:
Comment 3 Robert O'Callahan (:roc) (email my personal email if necessary) 2012-02-08 14:01:08 PST
Comment on attachment 595470 [details] [diff] [review]
Patch v1

Review of attachment 595470 [details] [diff] [review]:

Preemptive r+ from me
Comment 4 Matt Woodrow (:mattwoodrow) 2012-02-08 15:55:43 PST
You need to check Preserves3D() on the child instead here.

Preserves3DChildren() means that the parent intends to preserve-3d on it's children (has the transform-style: preserve-3d attribute), but this isn't necessarily applied. overflow:hidden clipping on the child can prevent this from happening, see the implementation of nsIFrame::Preserves3D().
Comment 5 Matt Woodrow (:mattwoodrow) 2012-02-08 15:59:40 PST
Actually, ignore me, only clipping on the parent affects this. This should be fine.
Comment 6 Mozilla RelEng Bot 2012-02-08 21:00:20 PST
Try run for 8f473a21d905 is complete.
Detailed breakdown of the results available here:
Results (out of 212 total builds):
    success: 176
    warnings: 22
    failure: 14
Builds (or logs if builds failed) available at:
Comment 8 Ed Morley [:emorley] 2012-02-10 19:42:28 PST

Note You need to log in before you can comment on or make changes to this bug.