|
|
Chromium Code Reviews|
Created:
4 years, 4 months ago by chrishtr Modified:
4 years, 4 months ago Reviewers:
Xianzhu CC:
blink-reviews, blink-reviews-layout_chromium.org, chromium-reviews, eae+blinkwatch, jchaffraix+rendering, leviw+renderwatch, pdr+renderingwatchlist_chromium.org, szager+layoutwatch_chromium.org, zoltan1 Base URL:
https://chromium.googlesource.com/chromium/src.git@master Target Ref:
refs/pending/heads/master Project:
chromium Visibility:
Public. |
DescriptionDon't adjust for scrolling of the ancestor, rather than un-adjusting for it later.
This simplifies the paint invalidation code and avoids code to depend on compositing state. It also brings non-LayoutView scrolling in line with LayoutView in terms
of whether it accounts for scroll, and makes clipping and scrolling apply together.
Note that there are seven use cases of mapToVisualRectInAncestorState:
1. Paint invalidation
2. IntersectionObserver
3. Layout*::absoluteClippedOverflowRect
4. WebPluginContainerImpl::computeClipRectsForPlugin
5. CompositedLayerMapping::recomputeInterestRect
6. LayoutObject::selectionRectInViewCoordinates
7. FrameView::windowClipRect
Use-case 1 doesn't want scrolling. Use case 2 does, so added code to handle that.
Use-cases 3-6 always pass a LayoutView as the ancestor parameter, which already
doesn't include scrolling.
Use-case 7 wants scrolling, so added code to do that.
Committed: https://crrev.com/28df6fb66bdd41a7d695141560933f701497fc2e
Cr-Commit-Position: refs/heads/master@{#410079}
Patch Set 1 #Patch Set 2 : none #Patch Set 3 : none #Patch Set 4 : none #
Total comments: 2
Patch Set 5 : none #
Total comments: 2
Patch Set 6 : none #Patch Set 7 : none #Patch Set 8 : none #Patch Set 9 : none #Patch Set 10 : none #Patch Set 11 : none #Patch Set 12 : none #Patch Set 13 : none #Patch Set 14 : none #
Messages
Total messages: 75 (49 generated)
The CQ bit was checked by chrishtr@chromium.org to run a CQ dry run
Description was changed from ========== none BUG= ========== to ========== Don't adjust for scrolling of the ancestor, rather than un-adjusting for it later. ==========
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: mac_chromium_rel_ng on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_...)
The CQ bit was checked by chrishtr@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: linux_chromium_rel_ng on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_...)
The CQ bit was checked by chrishtr@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: linux_chromium_chromeos_ozone_rel_ng on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_...)
Description was changed from ========== Don't adjust for scrolling of the ancestor, rather than un-adjusting for it later. ========== to ========== Don't adjust for scrolling of the ancestor, rather than un-adjusting for it later. This simplifies the paint invalidation code and avoids code to depend on compositing state. It also brings non-LayoutView scrolling in line with LayoutView in terms of whether it accounts for scroll, and makes clipping and scrolling apply together. Note that there are four use cases of mapToVisualRectInAncestorState: 1. Paint invalidation 2. IntersectionObserver 3. Layout*::absoluteClippedOverflowRect 4. WebPluginContainerImpl::computeClipRectsForPlugin 5. CompositedLayerMapping::recomputeInterestRect 6. LayoutObject::selectionRectInViewCoordinates 7. FrameView::windowClipRect Use-case 1 doesn't want scrolling. Use case 2 does, so added code to handle that. Use-cases 3-6 always pass a LayoutView as the ancestor parameter, which already doesn't include scrolling. Use-case 7 wants scrolling, so added code to do that. ==========
chrishtr@chromium.org changed reviewers: + wangxianzhu@chromium.org
The CQ bit was checked by chrishtr@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Nit: s/four use cases/7 use cases/ in description. What will use-case 3-6 behave for root-layer-scrolls? How about a flag to control whether to apply clip and scroll?
Description was changed from ========== Don't adjust for scrolling of the ancestor, rather than un-adjusting for it later. This simplifies the paint invalidation code and avoids code to depend on compositing state. It also brings non-LayoutView scrolling in line with LayoutView in terms of whether it accounts for scroll, and makes clipping and scrolling apply together. Note that there are four use cases of mapToVisualRectInAncestorState: 1. Paint invalidation 2. IntersectionObserver 3. Layout*::absoluteClippedOverflowRect 4. WebPluginContainerImpl::computeClipRectsForPlugin 5. CompositedLayerMapping::recomputeInterestRect 6. LayoutObject::selectionRectInViewCoordinates 7. FrameView::windowClipRect Use-case 1 doesn't want scrolling. Use case 2 does, so added code to handle that. Use-cases 3-6 always pass a LayoutView as the ancestor parameter, which already doesn't include scrolling. Use-case 7 wants scrolling, so added code to do that. ========== to ========== Don't adjust for scrolling of the ancestor, rather than un-adjusting for it later. This simplifies the paint invalidation code and avoids code to depend on compositing state. It also brings non-LayoutView scrolling in line with LayoutView in terms of whether it accounts for scroll, and makes clipping and scrolling apply together. Note that there are seven use cases of mapToVisualRectInAncestorState: 1. Paint invalidation 2. IntersectionObserver 3. Layout*::absoluteClippedOverflowRect 4. WebPluginContainerImpl::computeClipRectsForPlugin 5. CompositedLayerMapping::recomputeInterestRect 6. LayoutObject::selectionRectInViewCoordinates 7. FrameView::windowClipRect Use-case 1 doesn't want scrolling. Use case 2 does, so added code to handle that. Use-cases 3-6 always pass a LayoutView as the ancestor parameter, which already doesn't include scrolling. Use-case 7 wants scrolling, so added code to do that. ==========
On 2016/08/03 at 16:32:36, wangxianzhu wrote: > Nit: s/four use cases/7 use cases/ in description. Fixed. > > What will use-case 3-6 behave for root-layer-scrolls? I think it should just work, because the ancestor element doesn't get its scroll applied, even if it has overflow clip. > How about a flag to control whether to apply clip and scroll? I thought about that, but currently all use cases avoid clip of the ancestor, and 5 of 7 avoid scroll. I felt it seemed cleaner to not have a setting and not apply clip/scroll together for symmetry, and instead adjust for scroll in the two use cases.
On 2016/08/03 at 16:38:34, chrishtr wrote: > On 2016/08/03 at 16:32:36, wangxianzhu wrote: > > Nit: s/four use cases/7 use cases/ in description. > > Fixed. > > > > > What will use-case 3-6 behave for root-layer-scrolls? > > I think it should just work, because the ancestor element doesn't get its scroll applied, even if it has overflow clip. So I guess my point is that those use cases don't expect scrolling, which is what mapToVisualRectInAncestorSpace provides under this CL. > > > How about a flag to control whether to apply clip and scroll? > > I thought about that, but currently all use cases avoid clip of the ancestor, and 5 of 7 avoid scroll. I felt it seemed cleaner > to not have a setting and not apply clip/scroll together for symmetry, and instead adjust for scroll in the two use cases.
https://codereview.chromium.org/2203123004/diff/60001/third_party/WebKit/Layo... File third_party/WebKit/LayoutTests/paint/invalidation/invalidate-after-composited-scroll.html (right): https://codereview.chromium.org/2203123004/diff/60001/third_party/WebKit/Layo... third_party/WebKit/LayoutTests/paint/invalidation/invalidate-after-composited-scroll.html:18: }, 3000); Is the timeout intended?
https://codereview.chromium.org/2203123004/diff/60001/third_party/WebKit/Layo... File third_party/WebKit/LayoutTests/paint/invalidation/invalidate-after-composited-scroll.html (right): https://codereview.chromium.org/2203123004/diff/60001/third_party/WebKit/Layo... third_party/WebKit/LayoutTests/paint/invalidation/invalidate-after-composited-scroll.html:18: }, 3000); On 2016/08/03 at 16:55:55, Xianzhu wrote: > Is the timeout intended? Sorry that was sloppy, fixed.
lgtm https://codereview.chromium.org/2203123004/diff/80001/third_party/WebKit/Layo... File third_party/WebKit/LayoutTests/paint/invalidation/invalidate-after-composited-scroll.html (right): https://codereview.chromium.org/2203123004/diff/80001/third_party/WebKit/Layo... third_party/WebKit/LayoutTests/paint/invalidation/invalidate-after-composited-scroll.html:20: </script> Nit: Reset this file to origin/master.
https://codereview.chromium.org/2203123004/diff/80001/third_party/WebKit/Layo... File third_party/WebKit/LayoutTests/paint/invalidation/invalidate-after-composited-scroll.html (right): https://codereview.chromium.org/2203123004/diff/80001/third_party/WebKit/Layo... third_party/WebKit/LayoutTests/paint/invalidation/invalidate-after-composited-scroll.html:20: </script> On 2016/08/03 at 17:03:51, Xianzhu wrote: > Nit: Reset this file to origin/master. Done.
The CQ bit was checked by chrishtr@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from wangxianzhu@chromium.org Link to the patchset: https://codereview.chromium.org/2203123004/#ps100001 (title: "none")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_android_rel_ng on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_androi...)
The CQ bit was checked by chrishtr@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from wangxianzhu@chromium.org Link to the patchset: https://codereview.chromium.org/2203123004/#ps120001 (title: "none")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_chromium_rel_ng on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_...)
The CQ bit was checked by chrishtr@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from wangxianzhu@chromium.org Link to the patchset: https://codereview.chromium.org/2203123004/#ps140001 (title: "none")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_android_rel_ng on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_androi...)
The CQ bit was checked by chrishtr@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from wangxianzhu@chromium.org Link to the patchset: https://codereview.chromium.org/2203123004/#ps160001 (title: "none")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: mac_chromium_rel_ng on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_...)
The CQ bit was checked by chrishtr@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from wangxianzhu@chromium.org Link to the patchset: https://codereview.chromium.org/2203123004/#ps180001 (title: "none")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by chrishtr@chromium.org
The CQ bit was checked by chrishtr@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from wangxianzhu@chromium.org Link to the patchset: https://codereview.chromium.org/2203123004/#ps200001 (title: "none")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: ios-device on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios-device/builds...) ios-simulator on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios-simulator/bui...) mac_chromium_rel_ng on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_...)
The CQ bit was checked by chrishtr@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from wangxianzhu@chromium.org Link to the patchset: https://codereview.chromium.org/2203123004/#ps220001 (title: "none")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_android_rel_ng on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_androi...)
The CQ bit was checked by chrishtr@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from wangxianzhu@chromium.org Link to the patchset: https://codereview.chromium.org/2203123004/#ps240001 (title: "none")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: mac_chromium_rel_ng on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_...)
The CQ bit was checked by chrishtr@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: linux_chromium_chromeos_rel_ng on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_...)
The CQ bit was checked by chrishtr@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from wangxianzhu@chromium.org Link to the patchset: https://codereview.chromium.org/2203123004/#ps260001 (title: "none")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Message was sent while issue was closed.
Committed patchset #14 (id:260001)
Message was sent while issue was closed.
Description was changed from ========== Don't adjust for scrolling of the ancestor, rather than un-adjusting for it later. This simplifies the paint invalidation code and avoids code to depend on compositing state. It also brings non-LayoutView scrolling in line with LayoutView in terms of whether it accounts for scroll, and makes clipping and scrolling apply together. Note that there are seven use cases of mapToVisualRectInAncestorState: 1. Paint invalidation 2. IntersectionObserver 3. Layout*::absoluteClippedOverflowRect 4. WebPluginContainerImpl::computeClipRectsForPlugin 5. CompositedLayerMapping::recomputeInterestRect 6. LayoutObject::selectionRectInViewCoordinates 7. FrameView::windowClipRect Use-case 1 doesn't want scrolling. Use case 2 does, so added code to handle that. Use-cases 3-6 always pass a LayoutView as the ancestor parameter, which already doesn't include scrolling. Use-case 7 wants scrolling, so added code to do that. ========== to ========== Don't adjust for scrolling of the ancestor, rather than un-adjusting for it later. This simplifies the paint invalidation code and avoids code to depend on compositing state. It also brings non-LayoutView scrolling in line with LayoutView in terms of whether it accounts for scroll, and makes clipping and scrolling apply together. Note that there are seven use cases of mapToVisualRectInAncestorState: 1. Paint invalidation 2. IntersectionObserver 3. Layout*::absoluteClippedOverflowRect 4. WebPluginContainerImpl::computeClipRectsForPlugin 5. CompositedLayerMapping::recomputeInterestRect 6. LayoutObject::selectionRectInViewCoordinates 7. FrameView::windowClipRect Use-case 1 doesn't want scrolling. Use case 2 does, so added code to handle that. Use-cases 3-6 always pass a LayoutView as the ancestor parameter, which already doesn't include scrolling. Use-case 7 wants scrolling, so added code to do that. Committed: https://crrev.com/28df6fb66bdd41a7d695141560933f701497fc2e Cr-Commit-Position: refs/heads/master@{#410079} ==========
Message was sent while issue was closed.
Patchset 14 (id:??) landed as https://crrev.com/28df6fb66bdd41a7d695141560933f701497fc2e Cr-Commit-Position: refs/heads/master@{#410079} |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
