Bug 126664

Summary: Subpixel layout: LayoutUnit::fromFloatFloor needs flooring the CSS pixel value.
Product: WebKit Reporter: zalan <zalan>
Component: Layout and RenderingAssignee: zalan <zalan>
Status: RESOLVED INVALID    
Severity: Normal CC: jonlee, simon.fraser, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 126283    

Description zalan 2014-01-08 14:01:04 PST
HitTestLocation operates on flooredLayoutPoint which calls fromFloatFloor() to floor the LayoutUnit values. This produces different values when subpixel is on and may result in hitting different part of the document .

failed case: (hittesting on a transformed render layer's content) 
fast/html/regions/overflow-region-transform.html
Comment 1 Simon Fraser (smfr) 2014-01-08 15:32:05 PST
fast/regions/overflow-region-transform.html
Comment 2 Simon Fraser (smfr) 2014-01-08 15:46:21 PST
Needs some debugging to see what the issues are.
Comment 3 Radar WebKit Bug Importer 2014-01-14 10:26:00 PST
<rdar://problem/15815563>
Comment 4 zalan 2014-01-14 15:52:45 PST
the current behavior is correct as snapping any user generated input (even after a transform) would generate false results.
1. user clicks at position x,y
2. after applying the render transform, it gets the value of 11.6px float.
3. the pixelsnaped value is -> 12(*64)=768, while normal rounding value is -> round(11.6*64)=742.
4. This pixelsnapped value would make the hittest code find the layer painted at 768/64=12px, while the user clicked at 11.6px (after transform)