|
|
Created:
6 years, 7 months ago by leviw_travelin_and_unemployed Modified:
6 years, 6 months ago CC:
blink-reviews, blink-reviews-rendering, zoltan1, eae+blinkwatch, leviw+renderwatch, jchaffraix+rendering, pdr., rune+blink Base URL:
svn://svn.chromium.org/blink/trunk Visibility:
Public. |
Description[RAL] Fix nested non-composited RenderView repainting
When a nested RenderView isn't composited, it acts like a repaint
boundary, but then relies on repaintViewRectangle to translate
the repaint coordinates into the coordinate space of the actual
repaint container. This patch overrides repaintTreeAfterLayout for
RenderView to simply repaint the viewRect. It also pushes some
repaint logic out of RenderObject and into RenderView.
BUG=370366
Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=175423
Patch Set 1 #Patch Set 2 : Proposed fix #
Total comments: 6
Patch Set 3 : Updating naming #Patch Set 4 : Patch for landing #Patch Set 5 : Remove unnecessary test expectation #Patch Set 6 : Moar rebaselines #
Messages
Total messages: 44 (0 generated)
https://codereview.chromium.org/271803002/diff/20001/Source/core/rendering/Re... File Source/core/rendering/RenderBox.cpp (right): https://codereview.chromium.org/271803002/diff/20001/Source/core/rendering/Re... Source/core/rendering/RenderBox.cpp:1592: LayoutStateMaintainer statePusher(*this, isTableRow() ? LayoutSize() : locationOffset()); It is weird that we push LayoutState if we don't expect to invalidate (your patch adds some invalidation though). https://codereview.chromium.org/271803002/diff/20001/Source/core/rendering/Re... File Source/core/rendering/RenderView.cpp (right): https://codereview.chromium.org/271803002/diff/20001/Source/core/rendering/Re... Source/core/rendering/RenderView.cpp:441: void RenderView::repaintTreeAfterLayout(const RenderLayerModelObject& repaintContainer) This code path seems very artificial to me as I would expect the FrameView to handle the full repaint case as it used to do before repaint-after-layout (see https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit...)
https://codereview.chromium.org/271803002/diff/20001/Source/core/rendering/Re... File Source/core/rendering/RenderBox.cpp (right): https://codereview.chromium.org/271803002/diff/20001/Source/core/rendering/Re... Source/core/rendering/RenderBox.cpp:1592: LayoutStateMaintainer statePusher(*this, isTableRow() ? LayoutSize() : locationOffset()); On 2014/05/30 02:39:32, Julien Chaffraix - PST wrote: > It is weird that we push LayoutState if we don't expect to invalidate (your > patch adds some invalidation though). We still need to generate our cached repaint rects. LayoutState makes that faster. https://codereview.chromium.org/271803002/diff/20001/Source/core/rendering/Re... File Source/core/rendering/RenderView.cpp (right): https://codereview.chromium.org/271803002/diff/20001/Source/core/rendering/Re... Source/core/rendering/RenderView.cpp:441: void RenderView::repaintTreeAfterLayout(const RenderLayerModelObject& repaintContainer) On 2014/05/30 02:39:32, Julien Chaffraix - PST wrote: > This code path seems very artificial to me as I would expect the FrameView to > handle the full repaint case as it used to do before repaint-after-layout (see > https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit...) I'm not sure I understand what the "artificial" part of this comment really means.
lgtm https://codereview.chromium.org/271803002/diff/20001/Source/core/rendering/Re... File Source/core/rendering/RenderView.cpp (right): https://codereview.chromium.org/271803002/diff/20001/Source/core/rendering/Re... Source/core/rendering/RenderView.cpp:441: void RenderView::repaintTreeAfterLayout(const RenderLayerModelObject& repaintContainer) On 2014/05/30 02:39:32, Julien Chaffraix - PST wrote: > This code path seems very artificial to me as I would expect the FrameView to > handle the full repaint case as it used to do before repaint-after-layout (see > https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit...) That code path is never hit in RAL. I don't necessarily think it should be. I think it makes sense for all of the invalidating to happen the same way, if possible, which means the RenderObjects doing the invalidation.
Jchaffraix, let me know if you still have objections. I'd love to get this resolved. We're close to being ready to turn RAL on again.
lgtm https://codereview.chromium.org/271803002/diff/20001/Source/core/rendering/Re... File Source/core/rendering/RenderView.cpp (right): https://codereview.chromium.org/271803002/diff/20001/Source/core/rendering/Re... Source/core/rendering/RenderView.cpp:441: void RenderView::repaintTreeAfterLayout(const RenderLayerModelObject& repaintContainer) On 2014/06/02 00:38:29, dsinclair wrote: > On 2014/05/30 02:39:32, Julien Chaffraix - PST wrote: > > This code path seems very artificial to me as I would expect the FrameView to > > handle the full repaint case as it used to do before repaint-after-layout (see > > > https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit...) > > That code path is never hit in RAL. I don't necessarily think it should be. I > think it makes sense for all of the invalidating to happen the same way, if > possible, which means the RenderObjects doing the invalidation. It's not hit by RAL because we made it so, not because we can't have RAL hit it. That was the fix I had in mind for this change but Levi pointed out it was busted but hidden by our massive overinvalidation.
The CQ bit was checked by leviw@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/leviw@chromium.org/271803002/20001
The CQ bit was unchecked by commit-bot@chromium.org
Failed to apply patch for LayoutTests/platform/mac/fast/repaint/overflow-scroll-body-appear-expected.txt: While running patch -p1 --forward --force --no-backup-if-mismatch; can't find file to patch at input line 6 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |Index: LayoutTests/platform/mac/fast/repaint/overflow-scroll-body-appear-expected.txt |diff --git a/LayoutTests/platform/mac/fast/repaint/overflow-scroll-body-appear-expected.txt b/LayoutTests/platform/mac/fast/repaint/overflow-scroll-body-appear-expected.txt |index 7bebc7c60b1535e3ebc34a83beb55e85d3314cb6..1b856e6b591556998b62ce3817135e3aa7920aeb 100644 |--- a/LayoutTests/platform/mac/fast/repaint/overflow-scroll-body-appear-expected.txt |+++ b/LayoutTests/platform/mac/fast/repaint/overflow-scroll-body-appear-expected.txt -------------------------- No file to patch. Skipping patch. 1 out of 1 hunk ignored Patch: LayoutTests/platform/mac/fast/repaint/overflow-scroll-body-appear-expected.txt Index: LayoutTests/platform/mac/fast/repaint/overflow-scroll-body-appear-expected.txt diff --git a/LayoutTests/platform/mac/fast/repaint/overflow-scroll-body-appear-expected.txt b/LayoutTests/platform/mac/fast/repaint/overflow-scroll-body-appear-expected.txt index 7bebc7c60b1535e3ebc34a83beb55e85d3314cb6..1b856e6b591556998b62ce3817135e3aa7920aeb 100644 --- a/LayoutTests/platform/mac/fast/repaint/overflow-scroll-body-appear-expected.txt +++ b/LayoutTests/platform/mac/fast/repaint/overflow-scroll-body-appear-expected.txt @@ -6,11 +6,10 @@ (contentsOpaque 1) (drawsContent 1) (repaint rects - (rect 785.00 0.00 15.00 600.00) - (rect 0.00 585.00 800.00 15.00) (rect 0.00 0.00 2008.00 2092.00) (rect 0.00 0.00 2008.00 2092.00) (rect 0.00 0.00 800.00 600.00) + (rect 0.00 0.00 785.00 585.00) ) ) )
The CQ bit was unchecked by leviw@chromium.org
The CQ bit was checked by leviw@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/leviw@chromium.org/271803002/40001
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: blink_presubmit on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/blink_presubmit/builds/6736) linux_blink_dbg on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_dbg/builds/1...) linux_blink_rel on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_rel/builds/1...) mac_blink_rel on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/mac_blink_rel/builds/9963) win_blink_rel on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/win_blink_rel/builds/10265)
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_blink_rel on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_rel/builds/1...)
The CQ bit was checked by leviw@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/leviw@chromium.org/271803002/60001
The CQ bit was unchecked by leviw@chromium.org
The CQ bit was checked by leviw@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/leviw@chromium.org/271803002/80001
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: blink_presubmit on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/blink_presubmit/builds/6824)
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: blink_presubmit on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/blink_presubmit/builds/6835)
The CQ bit was checked by leviw@chromium.org
Gotta re-run because of https://codereview.chromium.org/293063016
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/leviw@chromium.org/271803002/100001
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: linux_blink_dbg on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_dbg/builds/1...) linux_blink_rel on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_rel/builds/1...) mac_blink_rel on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/mac_blink_rel/builds/10126) win_blink_rel on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/win_blink_rel/builds/10440)
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_blink_rel on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_rel/builds/1...)
The CQ bit was checked by leviw@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/leviw@chromium.org/271803002/120001
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: linux_blink_rel on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_rel/builds/1...) win_blink_rel on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/win_blink_rel/builds/10459) win_gpu_triggered_tests on tryserver.chromium.gpu (http://build.chromium.org/p/tryserver.chromium.gpu/builders/win_gpu_triggered...)
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: win_gpu_triggered_tests on tryserver.chromium.gpu (http://build.chromium.org/p/tryserver.chromium.gpu/builders/win_gpu_triggered...)
The CQ bit was checked by leviw@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/leviw@chromium.org/271803002/120001
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: linux_blink_rel on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_rel/builds/1...) win_gpu_triggered_tests on tryserver.chromium.gpu (http://build.chromium.org/p/tryserver.chromium.gpu/builders/win_gpu_triggered...)
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: win_gpu_triggered_tests on tryserver.chromium.gpu (http://build.chromium.org/p/tryserver.chromium.gpu/builders/win_gpu_triggered...)
The CQ bit was checked by leviw@chromium.org
On 2014/06/04 01:07:06, I haz the power (commit-bot) wrote: > Try jobs failed on following builders: > win_gpu_triggered_tests on tryserver.chromium.gpu > (http://build.chromium.org/p/tryserver.chromium.gpu/builders/win_gpu_triggered...) win_gpu_triggered_tests passed on the last patchset... linux_blink_rel *AGAIN* failed with "Aborting due to failed build state"
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/leviw@chromium.org/271803002/120001
Message was sent while issue was closed.
Change committed as 175423 |