Bug 133051

Summary: document RenderObject::childrenInline
Product: WebKit Reporter: Jarek Czekalski <jarekczek>
Component: WebCore Misc.Assignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Minor    
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   

Description Jarek Czekalski 2014-05-18 10:33:02 PDT
Could you document what is the exact meaning of WebCore::RenderObject::childrenInline information? This flag seems to be crucial for some parts, for example atk accessibility wrapper depends on it. I would expect this documentation to go before function declaration in RenderObject.h.

Makes sense?
Comment 1 Jarek Czekalski 2014-05-26 12:50:07 PDT
You think it's a trivial question? Here is an interesting example I think:

  0B_RenderBlock {HTML} at (0,0) size 800x600
    0B_RenderBody {BODY} at (8,8) size 784x584
      1B_RenderBlock {DIV} at (0,0) size 784x18
        1I_RenderInline {A} at (0,0) size 24x17 [color=#0000EE]
          0B_RenderText {#text} at (0,0) size 24x17
            text run at (0,0) width 24: "link"

This is a simple div with a link inside. Number prefix is equal to childrenInline(), the letter is taken from isRenderInline() fun. So for the render {A} object childrenInline() holds true, despite it having a single child which is not inline.

I was close to formulating a clean description for childrenInline function whichw would be:

Returns true when object has at least one child and all children are inline.
Returns false when object has no children or all are not inline.
An object can never have mixed block and inline children.

But now I am confused again. RenderInline seems to be some exception to the above rule. And actually an exception to a default meaning of "childrenInline" name.