The attached testcase shows a hit testing issue when an element has a large scale() transform. This is probably a rounding issue.
<rdar://problem/6478048>
Created attachment 26500 [details] Testcase
To fix this we need to use FloatPoints for hit testing in RenderLayer, and down through RenderObject::hitTest() and RenderObject::nodeAtPoint().
(In reply to comment #3) > To fix this we need to use FloatPoints for hit testing in RenderLayer, and down through RenderObject::hitTest() and RenderObject::nodeAtPoint(). Since I added support for transforms to rect-based hit-testing we actually have a floatpoint copy of the point, which is used whenever new transforms are applied.
Actually this bug does and did not depend on subpixel layout at all. This is all caused by bad rounding. Once the bad rounding is scaled up x60, the last 30px in width and height becomes unhittable.
Created attachment 156054 [details] Patch
Comment on attachment 156054 [details] Patch Attachment 156054 [details] did not pass chromium-ews (chromium-xvfb): Output: http://queues.webkit.org/results/13430027 New failing tests: css1/box_properties/margin_right.html css2.1/t0803-c5502-mrgn-r-01-c-a.html css2.1/20110323/absolute-non-replaced-width-007.htm css1/box_properties/float_elements_in_series.html css2.1/t0804-c5507-padn-r-01-c-a.html css1/box_properties/clear_float.html compositing/reflections/deeply-nested-reflections.html compositing/reflections/nested-reflection.html compositing/reflections/nested-reflection-anchor-point.html css2.1/t0804-c5507-padn-r-00-c-ag.html compositing/reflections/nested-reflection-transformed2.html compositing/rtl/rtl-fixed.html css2.1/20110323/absolute-non-replaced-width-009.htm compositing/reflections/reflection-ordering.html css2.1/20110323/absolute-non-replaced-width-012.htm compositing/reflections/nested-reflection-size-change.html css2.1/20110323/absolute-non-replaced-width-021.htm compositing/shadows/shadow-drawing.html compositing/reflections/nested-reflection-mask-change.html css2.1/20110323/absolute-non-replaced-width-005.htm compositing/reflections/nested-reflection-transformed.html compositing/rtl/rtl-absolute.html css1/box_properties/float_on_text_elements.html css1/text_properties/text_align.html css2.1/20110323/absolute-non-replaced-width-002.htm compositing/reflections/nested-reflection-opacity.html css2.1/t0803-c5502-mrgn-r-00-c-ag.html compositing/reflections/nested-reflection-animated.html
Created attachment 156100 [details] Archive of layout-test-results from gce-cr-linux-03 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: gce-cr-linux-03 Port: <class 'webkitpy.common.config.ports.ChromiumXVFBPort'> Platform: Linux-2.6.39-gcg-201203291735-x86_64-with-Ubuntu-10.04-lucid
Comment on attachment 156054 [details] Patch Needs move investigation, and I will probably leave some of the bugs unfixed to minimize the number of affected test-cases.
Created attachment 156306 [details] Patch Corrected mistake in FractionalLayoutUnit::floor, that resulted in many 1px differences.
Comment on attachment 156306 [details] Patch Attachment 156306 [details] did not pass chromium-ews (chromium-xvfb): Output: http://queues.webkit.org/results/13431312 New failing tests: fast/block/float/overhanging-tall-block.html transforms/3d/hit-testing/perspective-clipped.html fast/html/details-writing-mode.html
Created attachment 156337 [details] Archive of layout-test-results from gce-cr-linux-06 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: gce-cr-linux-06 Port: <class 'webkitpy.common.config.ports.ChromiumXVFBPort'> Platform: Linux-2.6.39-gcg-201203291735-x86_64-with-Ubuntu-10.04-lucid
Comment on attachment 156306 [details] Patch Attachment 156306 [details] did not pass chromium-ews (chromium-xvfb): Output: http://queues.webkit.org/results/13431336 New failing tests: fast/block/float/overhanging-tall-block.html transforms/3d/hit-testing/perspective-clipped.html fast/html/details-writing-mode.html
Created attachment 156357 [details] Archive of layout-test-results from gce-cr-linux-03 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: gce-cr-linux-03 Port: <class 'webkitpy.common.config.ports.ChromiumXVFBPort'> Platform: Linux-2.6.39-gcg-201203291735-x86_64-with-Ubuntu-10.04-lucid
Created attachment 156362 [details] Patch Skip two bening changes in Chromium, and modified one test that was incorrect under higher accuracy
Comment on attachment 156362 [details] Patch Attachment 156362 [details] did not pass mac-ews (mac): Output: http://queues.webkit.org/results/13423895 New failing tests: fast/block/float/overhanging-tall-block.html
Created attachment 156430 [details] Archive of layout-test-results from apple-mac-5 The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: apple-mac-5 Port: <class 'webkitpy.common.config.ports.MacPort'> Platform: Mac OS X 10.7.4
(In reply to comment #16) > (From update of attachment 156362 [details]) > Attachment 156362 [details] did not pass mac-ews (mac): > Output: http://queues.webkit.org/results/13423895 > > New failing tests: > fast/block/float/overhanging-tall-block.html I will update the mac baseline before landing, but will leave the current patch for review. The logic behind it is unchanged.
I have split the part of the patch out that corrects floored rounding into bug #93475 and uploaded a patch there. The patch here will need to be rebased once that lands. The only remaining part of the patch will be the changes in HitTestResult.cpp.
Created attachment 157684 [details] Patch
Comment on attachment 157684 [details] Patch Clearing flags on attachment: 157684 Committed r125306: <http://trac.webkit.org/changeset/125306>
All reviewed patches have been landed. Closing bug.