nsInlineFrame::ReflowInlineFrame(ReflowState& rs,
nsInlineFrame::ReflowInlineFrame(nsIPresContext* aPresContext, const nsHTMLReflowState& aReflowState, InlineReflowState& irs,
nsInlineFrame::ReflowInlineFrame(ReflowState& rs,                                 nsIFrame* aFrame,                                 nsReflowStatus& aStatus){  // Make sure that we don't reflow a block frame when we run across  // one. This can easily happen if this inline has a mixture of  // frames (note that an anonymous block frame is used to wrap up the  // direct block children of this inline therefore when we do run  // across a block frame its an anonymous block).  if (nsLineLayout::TreatFrameAsBlock(aFrame)) {    NS_ASSERTION(aFrame != mFrames.FirstChild(), "bad anon-block status");    PushFrames(aFrame, rs.prevFrame);    aStatus = NS_INLINE_LINE_BREAK_AFTER(NS_FRAME_NOT_COMPLETE);    return NS_OK;  }  nsInlineReflow* ir = rs.inlineReflow;  nsresult rv = ir->ReflowFrame(aFrame, PR_FALSE/* XXX */, aStatus);  if (NS_FAILED(rv)) {    return rv;  }  if (NS_INLINE_IS_BREAK(aStatus)) {    if (NS_INLINE_IS_BREAK_BEFORE(aStatus)) {      if (aFrame != mFrames.FirstChild()) {        // Change break-before status into break-after since we have        // already placed at least one child frame. This preserves the        // break-type so that it can be propogated upward.        aStatus = NS_FRAME_NOT_COMPLETE |          NS_INLINE_BREAK | NS_INLINE_BREAK_AFTER |          (aStatus & NS_INLINE_BREAK_TYPE_MASK);        PushFrames(aFrame, rs.prevFrame);      }      else {        // Preserve reflow status when breaking-before our first child        // and propogate it upward without modification.      }    }    else {      // Break-after      if (NS_FRAME_IS_NOT_COMPLETE(aStatus)) {        nsIFrame* newFrame;        rv = CreateNextInFlow(rs.mPresContext, this, aFrame, newFrame);        if (NS_FAILED(rv)) {          return rv;        }      }      nsIFrame* nextFrame;      aFrame->GetNextSibling(nextFrame);      if (nsnull != nextFrame) {        PushFrames(nextFrame, aFrame);      }    }  }  else if (NS_FRAME_IS_NOT_COMPLETE(aStatus)) {    nsIFrame* newFrame;    rv = CreateNextInFlow(rs.mPresContext, this, aFrame, newFrame);    if (NS_FAILED(rv)) {      return rv;    }    nsIFrame* nextFrame;    aFrame->GetNextSibling(nextFrame);    if (nsnull != nextFrame) {      PushFrames(nextFrame, aFrame);    }  }  return rv;}