|
|
DescriptionUpdate PseudoElements during recalcStyle.
Update PseudoElements during recalcStyle. If the pseudoStyles have changed,
ensure layoutObject triggers setStyle.
BUG=492785
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Committed: https://crrev.com/b7f5abb9c6374727928fd955052f53811cfe6a90
Cr-Commit-Position: refs/heads/master@{#421755}
Patch Set 1 : done #Patch Set 2 : allow layoutobject to layout on needslayout #Patch Set 3 : Update UpdatePseudoElements on recalcStyle #
Total comments: 2
Patch Set 4 : ensuring layoutObject triggers setStyle on recalcStyle #Patch Set 5 : Rebase to latest #
Messages
Total messages: 69 (54 generated)
Description was changed from ========== done done BUG= ========== to ========== done done BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ==========
The CQ bit was checked by sataya.m@samsung.com 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...
Description was changed from ========== done done BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ========== to ========== IFrame Scrollbar needs reconstruction [RLS] BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ==========
Patchset #1 (id:1) has been deleted
Description was changed from ========== IFrame Scrollbar needs reconstruction [RLS] BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ========== to ========== IFrame Scrollbar needs reconstruction [RLS] BUG=492785 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ==========
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
sataya.m@samsung.com changed reviewers: + skobes@chromium.org
Skobes PTAL. The root cause of this issue is as follows: Iframe platform scrollbar are created at PLSA for RLS. on inserting style: sheet.insertRule("::-webkit-scrollbar { width: 50px; height: 20px; }", 0); PLSA::updateAfterStyleChange is called and the box overflow is 0 and needsHorizontalScrollbar is set to false destroying the platform scrollbars. frameView->needsScrollbarReconstruction() at LayoutPart::updateWidgetGeometry returns false as during the styleUpdate platform scrollbars are destoryed, though i modifed to check PLSA scrollbars in the FrameView::needsScrollbarReconstruction() API (in RLS). So during Style update is we have scrollbars before updateAfterStyleChange and destoryed after updating style im setting the frameView needsLayout. Let me know your thoughts on this patch.
Why doesn't LayoutObject::styleDidChange invalidate the layout properly?
On 2016/09/19 19:32:20, skobes wrote: > Why doesn't LayoutObject::styleDidChange invalidate the layout properly? These statements if (!m_parent) return; in the LayoutObject::styleDidChange is stopping Frameview to invalidate.
The CQ bit was checked by sataya.m@samsung.com 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 checked by sataya.m@samsung.com 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...
Patchset #2 (id:40001) has been deleted
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: mac_chromium_compile_dbg_ng on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_comp...)
The CQ bit was checked by sataya.m@samsung.com 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...
Patchset #2 (id:60001) has been deleted
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
PTAL.
I think the problem is not specific to RLS, or to iframes. For example in https://output.jsbin.com/kepewe/quiet the scrollbars should change from native to custom but they don't, even with this patch. The early return when m_parent is null affects the LayoutView, but the frame scrollbars are controlled by css styling on the <html> element, whose m_parent is not null. I suspect the problem is that the StyleDifference created in LayoutObject::setStyle is not marked as needing layout when we recalc style on the <html> element. But that's surprising since ComputedStyle::diffNeedsFullLayoutAndPaintInvalidation has a check for PseudoIdScrollbar. I wonder why we're not hitting that.
The CQ bit was checked by sataya.m@samsung.com 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: win_chromium_rel_ng on master.tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_rel_...)
The CQ bit was checked by sataya.m@samsung.com 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...
Hi Skobes, Found the real culprit :) On inserting Style change after timeout, All elements recalc their own style. In this process at Element::recalcOwnStyle , ComputedStyle::stylePropagationDiff says their is no style change because of this setStyleInternal is called. The patch checks diffPseudoStyles and returns UpdatePseudoElements oldStyle.hasPseudoStyle(pseudoId) != newStyle.hasPseudoStyle(pseudoId). Let me know your comments on this. Thanks,
Description was changed from ========== IFrame Scrollbar needs reconstruction [RLS] BUG=492785 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ========== to ========== Update UpdatePseudoElements on recalcStyle. Update UpdatePseudoElements on recalcStyle. If the new style has pseudo elements call layoutObjects setStyle which evaluates and validates the needForLayout. BUG=492785 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ==========
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: win_chromium_x64_rel_ng on master.tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_x64_...)
https://codereview.chromium.org/2346213002/diff/100001/third_party/WebKit/Sou... File third_party/WebKit/Source/core/style/ComputedStyle.cpp (left): https://codereview.chromium.org/2346213002/diff/100001/third_party/WebKit/Sou... third_party/WebKit/Source/core/style/ComputedStyle.cpp:173: if (!oldStyle.hasAnyPublicPseudoStyles()) We should avoid looping in the common case that neither oldStyle nor newStyle has pseudo styles. Can we just update the condition here to be: if (!oldStyle.hasAnyPublicPseudoStyles() && !newStyle.hasAnyPublicPseudoStyles()) https://codereview.chromium.org/2346213002/diff/100001/third_party/WebKit/Sou... File third_party/WebKit/Source/core/style/ComputedStyle.cpp (right): https://codereview.chromium.org/2346213002/diff/100001/third_party/WebKit/Sou... third_party/WebKit/Source/core/style/ComputedStyle.cpp:173: for (PseudoId pseudoId = FirstPublicPseudoId; pseudoId < FirstInternalPseudoId; pseudoId = static_cast<PseudoId>(pseudoId + 1)) { Instead of adding another loop let's update the main loop below to only skip if neither oldStyle nor newStyle has the pseudo style for that id.
The CQ bit was checked by sataya.m@samsung.com 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_android_rel_ng on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_androi...)
Patchset #4 (id:120001) has been deleted
The CQ bit was checked by sataya.m@samsung.com 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...
Description was changed from ========== Update UpdatePseudoElements on recalcStyle. Update UpdatePseudoElements on recalcStyle. If the new style has pseudo elements call layoutObjects setStyle which evaluates and validates the needForLayout. BUG=492785 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ========== to ========== Update PseudoElements during recalcStyle. Update PseudoElements during recalcStyle. If the pseudoStyles have changed, ensure layoutObject triggers setStyle. BUG=492785 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ==========
Description was changed from ========== Update PseudoElements during recalcStyle. Update PseudoElements during recalcStyle. If the pseudoStyles have changed, ensure layoutObject triggers setStyle. BUG=492785 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ========== to ========== Update PseudoElements during recalcStyle. Update PseudoElements during recalcStyle. If the pseudoStyles have changed, ensure layoutObject triggers setStyle. BUG=492785 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ==========
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: 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 sataya.m@samsung.com
The CQ bit was unchecked by sataya.m@samsung.com
The CQ bit was checked by sataya.m@samsung.com
The CQ bit was unchecked by sataya.m@samsung.com
PTAL.
friendly ping !!!
lgtm
The CQ bit was checked by sataya.m@samsung.com
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_compile_dbg_ng on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_comp...) 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 sataya.m@samsung.com 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 sataya.m@samsung.com
The CQ bit was checked by sataya.m@samsung.com
The patchset sent to the CQ was uploaded after l-g-t-m from skobes@chromium.org Link to the patchset: https://codereview.chromium.org/2346213002/#ps160001 (title: "Rebase to latest")
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.
Description was changed from ========== Update PseudoElements during recalcStyle. Update PseudoElements during recalcStyle. If the pseudoStyles have changed, ensure layoutObject triggers setStyle. BUG=492785 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ========== to ========== Update PseudoElements during recalcStyle. Update PseudoElements during recalcStyle. If the pseudoStyles have changed, ensure layoutObject triggers setStyle. BUG=492785 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ==========
Message was sent while issue was closed.
Committed patchset #5 (id:160001)
Message was sent while issue was closed.
Description was changed from ========== Update PseudoElements during recalcStyle. Update PseudoElements during recalcStyle. If the pseudoStyles have changed, ensure layoutObject triggers setStyle. BUG=492785 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ========== to ========== Update PseudoElements during recalcStyle. Update PseudoElements during recalcStyle. If the pseudoStyles have changed, ensure layoutObject triggers setStyle. BUG=492785 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Committed: https://crrev.com/b7f5abb9c6374727928fd955052f53811cfe6a90 Cr-Commit-Position: refs/heads/master@{#421755} ==========
Message was sent while issue was closed.
Patchset 5 (id:??) landed as https://crrev.com/b7f5abb9c6374727928fd955052f53811cfe6a90 Cr-Commit-Position: refs/heads/master@{#421755} |