Changeset 287845 in webkit
- Timestamp:
- Jan 10, 2022 10:50:39 AM (6 months ago)
- Location:
- trunk
- Files:
-
- 4 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/TestExpectations (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/rendering/RenderLayer.cpp (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r287843 r287845 1 2022-01-10 Tim Nguyen <ntim@apple.com> 2 3 REGRESSION(r287683): <dialog> elements inside clipped/overflowed elements are no longer shown 4 https://bugs.webkit.org/show_bug.cgi?id=234984 5 6 Reviewed by Simon Fraser. 7 8 Enable relevant tests. Set the asserting test as Crash instead of Skipping. 9 10 * TestExpectations: 11 1 12 2022-01-10 Simon Fraser <simon.fraser@apple.com> 2 13 -
trunk/LayoutTests/TestExpectations
r287823 r287845 2359 2359 webkit.org/b/229315 imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-replaced-renderer.html [ ImageOnlyFailure ] 2360 2360 webkit.org/b/229315 imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-in-table-column.html [ ImageOnlyFailure ] 2361 webkit.org/b/231292 imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-containing-block.html [ ImageOnlyFailure ]2362 webkit.org/b/231292 imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking.html [ ImageOnlyFailure ]2363 webkit.org/b/231292 imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-clip.html [ ImageOnlyFailure ]2364 webkit.org/b/231292 imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-scroll.html [ ImageOnlyFailure ]2365 2361 # Needs layer re-parenting 2366 webkit.org/b/23 1292 [ Debug ] imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html [ Skip]2362 webkit.org/b/234980 [ Debug ] imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html [ Crash ] 2367 2363 2368 2364 # Assertion failure in MessagePort::contextDestroyed, usually attributed to later tests -
trunk/Source/WebCore/ChangeLog
r287838 r287845 1 2022-01-10 Tim Nguyen <ntim@apple.com> 2 3 REGRESSION(r287683): <dialog> elements inside clipped/overflowed elements are no longer shown 4 https://bugs.webkit.org/show_bug.cgi?id=234984 5 6 Reviewed by Simon Fraser. 7 8 Paint at the right place by fixing isContainerForPositioned, also fix clip rects. 9 10 * rendering/RenderLayer.cpp: 11 (WebCore::isContainerForPositioned): 12 (WebCore::RenderLayer::enclosingAncestorForPosition const): 13 (WebCore::accumulateOffsetTowardsAncestor): 14 (WebCore::RenderLayer::calculateClipRects const): 15 1 16 2022-01-10 Sam Weinig <weinig@apple.com> 2 17 -
trunk/Source/WebCore/rendering/RenderLayer.cpp
r287829 r287845 1778 1778 } 1779 1779 1780 static inline bool isContainerForPositioned(RenderLayer& layer, PositionType position) 1781 { 1780 static inline bool isContainerForPositioned(RenderLayer& layer, PositionType position, bool establishesTopLayer) 1781 { 1782 if (establishesTopLayer) 1783 return layer.isRenderViewLayer(); 1784 1782 1785 switch (position) { 1783 1786 case PositionType::Fixed: … … 1816 1819 1817 1820 RenderLayer* curr = parent(); 1818 while (curr && !isContainerForPositioned(*curr, position ))1821 while (curr && !isContainerForPositioned(*curr, position, establishesTopLayer())) 1819 1822 curr = curr->parent(); 1820 1823 … … 2293 2296 foundAncestor = true; 2294 2297 2295 if (isContainerForPositioned(*currLayer, PositionType::Fixed )) {2298 if (isContainerForPositioned(*currLayer, PositionType::Fixed, layer->establishesTopLayer())) { 2296 2299 fixedPositionContainerLayer = currLayer; 2297 2300 ASSERT_UNUSED(foundAncestor, foundAncestor); … … 2332 2335 // This implies that, for out-of-flow positioned elements inside a RenderFragmentedFlow, 2333 2336 // we are bailing out before reaching root layer. 2334 if (isContainerForPositioned(*parentLayer, position ))2337 if (isContainerForPositioned(*parentLayer, position, layer->establishesTopLayer())) 2335 2338 break; 2336 2339 … … 4542 4545 Ref<ClipRects> RenderLayer::parentClipRects(const ClipRectsContext& clipRectsContext) const 4543 4546 { 4544 ASSERT(parent()); 4545 4547 ASSERT(parent() || establishesTopLayer()); 4548 4549 auto containerLayer = establishesTopLayer() ? renderer().view().layer() : parent(); 4546 4550 auto temporaryParentClipRects = [&](const ClipRectsContext& clipContext) { 4547 4551 auto parentClipRects = ClipRects::create(); 4548 parent()->calculateClipRects(clipContext, parentClipRects);4552 containerLayer->calculateClipRects(clipContext, parentClipRects); 4549 4553 return parentClipRects; 4550 4554 }; … … 4559 4563 } 4560 4564 4561 return parent()->updateClipRects(clipRectsContext);4565 return containerLayer->updateClipRects(clipRectsContext); 4562 4566 } 4563 4567
Note: See TracChangeset
for help on using the changeset viewer.