Bug 78739

Summary: [chromium] Wire up ScrollingCoordinator to chromium compositor
Product: WebKit Reporter: James Robinson <jamesr>
Component: New BugsAssignee: James Robinson <jamesr>
Status: RESOLVED INVALID    
Severity: Normal CC: dglazkov, enne, fishd, nduca, piman, skyostil, webkit.review.bot
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 78862, 78864    
Attachments:
Description Flags
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch webkit.review.bot: commit-queue-

James Robinson
Reported 2012-02-15 13:55:39 PST
[chromium] Wire up ScrollingCoordinator to chromium compositor
Attachments
Patch (16.14 KB, patch)
2012-02-15 13:56 PST, James Robinson
no flags
Patch (34.65 KB, patch)
2012-02-15 17:05 PST, James Robinson
no flags
Patch (22.66 KB, patch)
2012-02-16 20:34 PST, James Robinson
no flags
Patch (22.77 KB, patch)
2012-02-17 13:23 PST, James Robinson
no flags
Patch (33.27 KB, patch)
2012-02-20 17:59 PST, James Robinson
no flags
Patch (33.28 KB, patch)
2012-02-20 18:12 PST, James Robinson
no flags
Patch (33.30 KB, patch)
2012-02-20 18:25 PST, James Robinson
webkit.review.bot: commit-queue-
James Robinson
Comment 1 2012-02-15 13:56:55 PST
James Robinson
Comment 2 2012-02-15 13:58:43 PST
Adrienne Walker
Comment 3 2012-02-15 14:39:08 PST
Comment on attachment 127229 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=127229&action=review > Source/WebKit/chromium/src/WebViewImpl.cpp:3050 > + page()->settings()->setScrollingCoordinatorEnabled(true); > + page()->scrollingCoordinator()->setClient(scrollingCoordinatorClientImpl()); This is just a nit, but this function is getting to be a mess, and it's sad that you have to repeat these two sets of calls in two places. Can you refactor it any to unify what needs to happen when compositing is successfully turned on or off?
James Robinson
Comment 4 2012-02-15 15:21:09 PST
(In reply to comment #3) > (From update of attachment 127229 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=127229&action=review > > > Source/WebKit/chromium/src/WebViewImpl.cpp:3050 > > + page()->settings()->setScrollingCoordinatorEnabled(true); > > + page()->scrollingCoordinator()->setClient(scrollingCoordinatorClientImpl()); > > This is just a nit, but this function is getting to be a mess, and it's sad that you have to repeat these two sets of calls in two places. Can you refactor it any to unify what needs to happen when compositing is successfully turned on or off? Yes it's ugly. I'm not completely in love with having to reach down to the ScrollingCoordinator from up here in WebKit, but don't see a better way to interface with what's there today. If we go this route I'll add some helper functions to tighten this up.
James Robinson
Comment 5 2012-02-15 17:05:21 PST
James Robinson
Comment 6 2012-02-15 17:06:16 PST
This moves wheel tracking down to be per layer and cleans up a few other things (including setting/clear the client). I think this is looking fairly plausible to land, once 78401 or something like it lands.
Adrienne Walker
Comment 7 2012-02-16 15:42:11 PST
Comment on attachment 127278 [details] Patch This looks good to me. I dig the wheel handlers on layers change. Thanks also for cleaning up WebViewImpl a little.
James Robinson
Comment 8 2012-02-16 16:55:47 PST
I think I'll do a bit more chopping - ScrollingTreeState isn't really a useful intermediate for us since we buffer the tree via the commit flow, so I think I'll just route the setters on ScrollingCoordinator straight through to the LayerChromium tree. That should get rid of a bit of gobble-dee-gook.
James Robinson
Comment 9 2012-02-16 20:34:42 PST
James Robinson
Comment 10 2012-02-16 20:35:26 PST
Even svelter. This pretty much completely ignored the ScrollingTreeState buffering, since we buffer changes through commit. Doesn't fully work yet (esp. transitioning out of compositing mode mode) but getting closer.
James Robinson
Comment 11 2012-02-17 13:23:34 PST
James Robinson
Comment 12 2012-02-17 13:24:46 PST
I'm pretty sure everything works here except that when we transition out of compositing mode we need to convince WebCore that the ScrollingCoordinator isn't in charge of that view any more.
James Robinson
Comment 13 2012-02-20 17:59:45 PST
James Robinson
Comment 14 2012-02-20 18:04:11 PST
There are some bugs when switching pages but I think this is in pretty good shape. I'll break it up into a few pieces to land (at the very least separating the cross-platform code from the Chromium-specific bits, and possibly separating the properties into their own patches).
James Robinson
Comment 15 2012-02-20 18:12:56 PST
James Robinson
Comment 16 2012-02-20 18:25:09 PST
WebKit Review Bot
Comment 17 2012-02-20 23:32:28 PST
Comment on attachment 127888 [details] Patch Attachment 127888 [details] did not pass chromium-ews (chromium-xvfb): Output: http://queues.webkit.org/results/11556051 New failing tests: compositing/checkerboard.html compositing/geometry/limit-layer-bounds-clipping-ancestor.html compositing/geometry/foreground-layer.html compositing/layer-creation/overlap-transformed-layer.html compositing/images/clip-on-directly-composited-image.html compositing/geometry/clip.html compositing/iframes/connect-compositing-iframe2.html compositing/geometry/fixed-position-transform-composited-page-scale.html compositing/layer-creation/scroll-partial-update.html accessibility/aria-describedby-on-input.html compositing/geometry/fixed-position-composited-switch.html compositing/iframes/become-overlapped-iframe.html compositing/geometry/layer-due-to-layer-children-switch.html compositing/geometry/fixed-position-iframe-composited-page-scale.html compositing/iframes/connect-compositing-iframe3.html compositing/iframes/enter-compositing-iframe.html compositing/geometry/limit-layer-bounds-fixed-positioned.html compositing/geometry/layer-due-to-layer-children-deep-switch.html compositing/geometry/ancestor-overflow-change.html compositing/layer-creation/overlap-clipping.html compositing/geometry/fixed-position-composited-page-scale.html compositing/iframes/connect-compositing-iframe.html compositing/iframes/become-composited-nested-iframes.html compositing/layer-creation/overflow-scroll-overlap.html compositing/iframes/connect-compositing-iframe-delayed.html compositing/layer-creation/rotate3d-overlap.html compositing/layer-creation/overlap-child-layer.html compositing/geometry/fixed-position-iframe-composited-page-scale-down.html compositing/iframes/composited-parent-iframe.html compositing/geometry/fixed-position-transform-composited-page-scale-down.html
James Robinson
Comment 18 2012-02-21 11:32:04 PST
Cross-platform changes here: https://bugs.webkit.org/show_bug.cgi?id=79126 Wheel event handler here: https://bugs.webkit.org/show_bug.cgi?id=79133 I'll do the remaining properties as separate patches, so closing this bug.
Note You need to log in before you can comment on or make changes to this bug.