RESOLVED FIXED 133522
[New Multicolumn] Hit testing of composited content is broken
https://bugs.webkit.org/show_bug.cgi?id=133522
Summary [New Multicolumn] Hit testing of composited content is broken
Dave Hyatt
Reported 2014-06-04 11:54:35 PDT
This is because the pagination layers need to be temporarily set up just while hit testing.
Attachments
Patch (5.28 KB, patch)
2014-06-04 12:01 PDT, Dave Hyatt
hyatt: review-
Patch (25.82 KB, patch)
2014-06-05 07:45 PDT, Dave Hyatt
no flags
Patch (25.87 KB, patch)
2014-06-05 07:53 PDT, Dave Hyatt
simon.fraser: review+
buildbot: commit-queue-
Archive of layout-test-results from webkit-ews-07 for mac-mountainlion (503.80 KB, application/zip)
2014-06-05 10:30 PDT, Build Bot
no flags
Archive of layout-test-results from webkit-ews-05 for mac-mountainlion (529.49 KB, application/zip)
2014-06-05 11:22 PDT, Build Bot
no flags
Archive of layout-test-results from webkit-ews-15 for mac-mountainlion-wk2 (1.09 MB, application/zip)
2014-06-05 13:12 PDT, Build Bot
no flags
Patch (27.23 KB, patch)
2014-06-06 10:39 PDT, Dave Hyatt
simon.fraser: review+
Dave Hyatt
Comment 1 2014-06-04 12:01:55 PDT
WebKit Commit Bot
Comment 2 2014-06-04 12:04:22 PDT
Attachment 232490 [details] did not pass style-queue: ERROR: Source/WebCore/rendering/RenderLayer.cpp:132: This { should be at the end of the previous line [whitespace/braces] [4] ERROR: Source/WebCore/rendering/RenderLayer.cpp:963: Multi line control clauses should use braces. [whitespace/braces] [4] Total errors found: 2 in 3 files If any of these errors are false positives, please file a bug against check-webkit-style.
Dave Hyatt
Comment 3 2014-06-04 12:07:25 PDT
Comment on attachment 232490 [details] Patch Never mind. This isn't quite right.
Dave Hyatt
Comment 4 2014-06-05 07:45:54 PDT
Dave Hyatt
Comment 5 2014-06-05 07:53:18 PDT
Simon Fraser (smfr)
Comment 6 2014-06-05 09:07:56 PDT
Comment on attachment 232550 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=232550&action=review > Source/WebCore/rendering/RenderLayer.cpp:955 > m_enclosingPaginationLayer = this; > + m_enclosingLayerIsPaginatedAndComposited = isComposited(); Do you actually need to cache m_enclosingLayerIsPaginatedAndComposited? Is m_enclosingLayerIsPaginatedAndComposited ever different from m_enclosingPaginationLayer->isComposited()?
Dave Hyatt
Comment 7 2014-06-05 09:44:43 PDT
(In reply to comment #6) > (From update of attachment 232550 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=232550&action=review > > > Source/WebCore/rendering/RenderLayer.cpp:955 > > m_enclosingPaginationLayer = this; > > + m_enclosingLayerIsPaginatedAndComposited = isComposited(); > > Do you actually need to cache m_enclosingLayerIsPaginatedAndComposited? Is m_enclosingLayerIsPaginatedAndComposited ever different from m_enclosingPaginationLayer->isComposited()? Yes. An intermediate layer can be composited that sits in between the enclosing pagination layer and this layer.
Dave Hyatt
Comment 8 2014-06-05 09:45:33 PDT
I'll get a test case going if this passes, but I actually suspect it was covered by existing test cases. We'll see what the bots say. :)
Simon Fraser (smfr)
Comment 9 2014-06-05 10:24:11 PDT
Comment on attachment 232550 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=232550&action=review >>> Source/WebCore/rendering/RenderLayer.cpp:955 >>> + m_enclosingLayerIsPaginatedAndComposited = isComposited(); >> >> Do you actually need to cache m_enclosingLayerIsPaginatedAndComposited? Is m_enclosingLayerIsPaginatedAndComposited ever different from m_enclosingPaginationLayer->isComposited()? > > Yes. An intermediate layer can be composited that sits in between the enclosing pagination layer and this layer. The name of m_enclosingLayerIsPaginatedAndComposited is a bit confusing then. Is it worth caching this or could you just detect it on the fly by walking up the layer tree? > Source/WebCore/rendering/RenderLayer.cpp:966 > + m_enclosingPaginationLayer = parent()->enclosingPaginationLayer(IncludeCompositedPaginatedLayers); > + m_enclosingLayerIsPaginatedAndComposited = isComposited() ? true : parent()->enclosingLayerIsPaginatedAndComposited(); > + if (parent()->hasTransform()) { > m_enclosingPaginationLayer = 0; Why bother computing enclosingPaginationLayer() if you're just going to null it out? Also nullptr. > Source/WebCore/rendering/RenderLayer.cpp:984 > + m_enclosingPaginationLayer = containingBlock->layer()->enclosingPaginationLayer(IncludeCompositedPaginatedLayers); > + m_enclosingLayerIsPaginatedAndComposited = isComposited() ? true : containingBlock->layer()->enclosingLayerIsPaginatedAndComposited(); > + if (containingBlock->layer()->hasTransform()) { > m_enclosingPaginationLayer = 0; Ditto. > Source/WebCore/rendering/RenderLayer.cpp:5587 > + const RenderLayer* paginationLayer = 0; nullptr. > Source/WebCore/rendering/RenderLayer.h:522 > + return 0; nullptr.
Build Bot
Comment 10 2014-06-05 10:30:08 PDT
Comment on attachment 232550 [details] Patch Attachment 232550 [details] did not pass mac-ews (mac): Output: http://webkit-queues.appspot.com/results/6040815583363072 New failing tests: compositing/columns/hittest-composited-in-paginated.html
Build Bot
Comment 11 2014-06-05 10:30:12 PDT
Created attachment 232563 [details] Archive of layout-test-results from webkit-ews-07 for mac-mountainlion The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: webkit-ews-07 Port: mac-mountainlion Platform: Mac OS X 10.8.5
Build Bot
Comment 12 2014-06-05 11:22:20 PDT
Comment on attachment 232550 [details] Patch Attachment 232550 [details] did not pass mac-ews (mac): Output: http://webkit-queues.appspot.com/results/4926321163501568 New failing tests: compositing/columns/hittest-composited-in-paginated.html
Build Bot
Comment 13 2014-06-05 11:22:25 PDT
Created attachment 232567 [details] Archive of layout-test-results from webkit-ews-05 for mac-mountainlion The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: webkit-ews-05 Port: mac-mountainlion Platform: Mac OS X 10.8.5
Build Bot
Comment 14 2014-06-05 13:12:26 PDT
Comment on attachment 232550 [details] Patch Attachment 232550 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.appspot.com/results/6202437551521792 New failing tests: compositing/columns/hittest-composited-in-paginated.html
Build Bot
Comment 15 2014-06-05 13:12:32 PDT
Created attachment 232576 [details] Archive of layout-test-results from webkit-ews-15 for mac-mountainlion-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: webkit-ews-15 Port: mac-mountainlion-wk2 Platform: Mac OS X 10.8.5
Dave Hyatt
Comment 16 2014-06-06 10:39:08 PDT
Simon Fraser (smfr)
Comment 17 2014-06-06 10:41:27 PDT
Comment on attachment 232621 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=232621&action=review > Source/WebCore/rendering/RenderLayer.h:522 > + return 0; nullptr
Dave Hyatt
Comment 18 2014-06-06 10:58:27 PDT
Fixed landed in r169651.
Note You need to log in before you can comment on or make changes to this bug.