Ignore:
Timestamp:
Oct 28, 2019, 4:09:39 PM (6 years ago)
Author:
Alan Bujtas
Message:

Hidden framesets should provide default edgeInfo value
https://bugs.webkit.org/show_bug.cgi?id=203506
<rdar://problem/56233726>

Reviewed by Simon Fraser.

Source/WebCore:

The grid information (and certain associated structures e.g. edegeInfo) for a frameset is updated through the layout() call.
When the used height/width computes to zero on a frameset child (frame or nested frameset), we don't run layout on the renderer thus
hidden nested framesets can only provide the default edge info.
This patch changes this behaviour and we now call layout on those hidden renderers the same way we do it on iOS.

Test: fast/frames/hidden-frameset.html

  • rendering/RenderFrameSet.cpp:

(WebCore::RenderFrameSet::edgeInfo const):

LayoutTests:

  • fast/frames/hidden-frameset-expected.txt: Added.
  • fast/frames/hidden-frameset.html: Added.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/rendering/RenderFrameSet.cpp

    r239645 r251680  
    526526
    527527            // has to be resized and itself resize its contents
    528             if (width != child->width() || height != child->height()) {
    529                 child->setWidth(width);
    530                 child->setHeight(height);
     528            child->setWidth(width);
     529            child->setHeight(height);
    531530#if PLATFORM(IOS_FAMILY)
    532                 // FIXME: Is this iOS-specific?
    533                 child->setNeedsLayout(MarkOnlyThis);
     531            // FIXME: Is this iOS-specific?
     532            child->setNeedsLayout(MarkOnlyThis);
    534533#else
    535                 child->setNeedsLayout();
     534            child->setNeedsLayout();
    536535#endif
    537                 child->layout();
    538             }
     536            child->layout();
    539537
    540538            xPos += width + borderThickness;
Note: See TracChangeset for help on using the changeset viewer.