Bug 84203

Summary: Layout Test svg/transforms/transform-origin-css-property.xhtml is failing
Product: WebKit Reporter: Vincent Scheib <scheib>
Component: SVGAssignee: Stephen Chenney <schenney>
Status: RESOLVED FIXED    
Severity: Normal CC: fmalita, giles_joplin, krit, schenney, zimmermann
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch none

Description Vincent Scheib 2012-04-17 15:34:49 PDT
The following layout ref test is failing on Chromium all platforms.

svg/transforms/transform-origin-css-property.xhtml
See:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=svg%2Ftransforms%2Ftransform-origin-css-property.xhtml

Looks like an anti-aliasing or a small horizontal offset issue.

Test was introduced in https://bugs.webkit.org/show_bug.cgi?id=79068 and not modified since. 

Note, Chromium has pixel test variations checked in --- not intended for a ref test. 
http://trac.webkit.org/changeset/114416

Should be all ref-test or all pixel baselines, right?
Comment 1 Stephen Chenney 2012-04-18 07:55:56 PDT
Committed r114503: <http://trac.webkit.org/changeset/114503>
Comment 2 Stephen Chenney 2012-04-18 07:57:27 PDT
Indeed, this test has a ref test and there should be no image baselines.

I have removed the image baselines but left the expectation for failure. It may be a problem with the ref test result that requires further investigation.
Comment 3 Stephen Chenney 2012-04-18 10:56:33 PDT
Definitely a problem with the ref-test not matching. The test renders multiple svg rectangles rotated by 90 degrees with different transform-origin points, specified using different forms. e.g.

["50% 50%", "center 50%", "50% center", "center", "center center", [15, 15]]

All of the rects in a set should appear right on top of each other.

The ref-test just uses a single div with the % spec. 

My suspicion is that (15,15) is not the same as (50%,50%) when all is said and done.

As this test is testing that SVG supports the property, I propose fixing it by changing the ref to print multiple divs using the same values as the test.

I'll get a patch up.
Comment 4 Dirk Schulze 2012-04-18 11:11:20 PDT
(In reply to comment #3)
> Definitely a problem with the ref-test not matching. The test renders multiple svg rectangles rotated by 90 degrees with different transform-origin points, specified using different forms. e.g.
> 
> ["50% 50%", "center 50%", "50% center", "center", "center center", [15, 15]]
> 
> All of the rects in a set should appear right on top of each other.
> 
> The ref-test just uses a single div with the % spec. 
> 
> My suspicion is that (15,15) is not the same as (50%,50%) when all is said and done.
> 
> As this test is testing that SVG supports the property, I propose fixing it by changing the ref to print multiple divs using the same values as the test.
> 
> I'll get a patch up.

The idea of ref tests is that they are platform independent. If the test is failing on chromium, it should get onto the skip list and needs investigation. If it turns out that the test is wrong, the test should be changed. Don't create platform dependent ref files.
Comment 5 Stephen Chenney 2012-04-18 11:35:54 PDT
Created attachment 137730 [details]
Patch
Comment 6 Stephen Chenney 2012-04-18 11:37:39 PDT
I have modified the ref-test to draw more divs, hopefully reproducing the behavior of the SVG rects. Review at will, but let's wait until the EWS bots get through it before we commit anything. I'm not sure it will behave on the build machines the same way it behaves locally.
Comment 7 Dirk Schulze 2012-04-18 11:41:28 PDT
(In reply to comment #6)
> I have modified the ref-test to draw more divs, hopefully reproducing the behavior of the SVG rects. Review at will, but let's wait until the EWS bots get through it before we commit anything. I'm not sure it will behave on the build machines the same way it behaves locally.

Maybe I misunderstand what th problem is. Why do you draw more rects? It seems like you change the ref file to be a test itself. Which is not preferred either.
Comment 8 Stephen Chenney 2012-04-18 11:48:50 PDT
The issue is that apparently

["50% 50%", "center 50%", "50% center", "center", "center center", [15, 15]]

are not all pixel equivalent when applied as transform-origin for rotate(90deg). That seems to be an issue in the code for parsing and applying "center" and "50% center".

My reasoning applied to this patch is that we are testing whether or not SVG respects the transform-origin property. We are not testing that the various origin specifications (e.g. 50% vs. center) produce identical results. So I think it's OK to modify the test in this way.

If we do care that all these transform-origin specs are identical, I suggest a different ref-test that uses fixed SVG rectangles in exactly the place we expect the transformed rect to be. But my guess is that it would be even harder to get platform agnostic results.

Interestingly, apparently the CSS div does not respect [15,15] as an origin. Is that spec or a bug?
Comment 9 Stephen Chenney 2012-04-20 09:16:04 PDT
Comment on attachment 137730 [details]
Patch

Clearing flags on attachment: 137730

Committed r114752: <http://trac.webkit.org/changeset/114752>
Comment 10 Stephen Chenney 2012-04-20 09:16:09 PDT
All reviewed patches have been landed.  Closing bug.
Comment 11 Florin Malita 2012-05-22 14:16:23 PDT
*** Bug 83059 has been marked as a duplicate of this bug. ***