| Index: Source/core/layout/LayoutBlockFlowLine.cpp
|
| diff --git a/Source/core/layout/LayoutBlockFlowLine.cpp b/Source/core/layout/LayoutBlockFlowLine.cpp
|
| index c54361d8dcafb16f8b0377802827645f70be5b36..026dfc368696d0e63ac37a88526d786e8a397239 100644
|
| --- a/Source/core/layout/LayoutBlockFlowLine.cpp
|
| +++ b/Source/core/layout/LayoutBlockFlowLine.cpp
|
| @@ -51,7 +51,7 @@ namespace blink {
|
|
|
| using namespace WTF::Unicode;
|
|
|
| -static inline InlineBox* createInlineBoxForRenderer(LayoutObject* obj, bool isRootLineBox, bool isOnlyRun = false)
|
| +static inline InlineBox* createInlineBoxForLayoutObject(LayoutObject* obj, bool isRootLineBox, bool isOnlyRun = false)
|
| {
|
| // Callers should handle text themselves.
|
| ASSERT(!obj->isText());
|
| @@ -80,7 +80,7 @@ static inline InlineTextBox* createInlineBoxForText(BidiRun& run, bool isOnlyRun
|
| return textBox;
|
| }
|
|
|
| -static inline void dirtyLineBoxesForRenderer(LayoutObject* o, bool fullLayout)
|
| +static inline void dirtyLineBoxesForObject(LayoutObject* o, bool fullLayout)
|
| {
|
| if (o->isText()) {
|
| LayoutText* layoutText = toLayoutText(o);
|
| @@ -113,7 +113,7 @@ InlineFlowBox* LayoutBlockFlow::createLineBoxes(LayoutObject* obj, const LineInf
|
|
|
| LayoutInline* inlineFlow = (obj != this) ? toLayoutInline(obj) : 0;
|
|
|
| - // Get the last box we made for this render object.
|
| + // Get the last box we made for this layout object.
|
| parentBox = inlineFlow ? inlineFlow->lastLineBox() : toLayoutBlock(obj)->lastLineBox();
|
|
|
| // If this box or its ancestor is constructed then it is from a previous line, and we need
|
| @@ -125,9 +125,9 @@ InlineFlowBox* LayoutBlockFlow::createLineBoxes(LayoutObject* obj, const LineInf
|
| bool allowedToConstructNewBox = !hasDefaultLineBoxContain || !inlineFlow || inlineFlow->alwaysCreateLineBoxes();
|
| bool canUseExistingParentBox = parentBox && !parentIsConstructedOrHaveNext(parentBox);
|
| if (allowedToConstructNewBox && !canUseExistingParentBox) {
|
| - // We need to make a new box for this render object. Once
|
| + // We need to make a new box for this layout object. Once
|
| // made, we need to place it at the end of the current line.
|
| - InlineBox* newBox = createInlineBoxForRenderer(obj, obj == this);
|
| + InlineBox* newBox = createInlineBoxForLayoutObject(obj, obj == this);
|
| ASSERT_WITH_SECURITY_IMPLICATION(newBox->isInlineFlowBox());
|
| parentBox = toInlineFlowBox(newBox);
|
| parentBox->setFirstLineStyleBit(lineInfo.isFirstLine());
|
| @@ -173,7 +173,7 @@ static inline bool endsWithASCIISpaces(const CharacterType* characters, unsigned
|
| return false;
|
| }
|
|
|
| -static bool reachedEndOfTextRenderer(const BidiRunList<BidiRun>& bidiRuns)
|
| +static bool reachedEndOfTextRun(const BidiRunList<BidiRun>& bidiRuns)
|
| {
|
| BidiRun* run = bidiRuns.logicallyLastRun();
|
| if (!run)
|
| @@ -212,7 +212,7 @@ RootInlineBox* LayoutBlockFlow::constructLine(BidiRunList<BidiRun>& bidiRuns, co
|
| if (r->m_object->isText())
|
| box = createInlineBoxForText(*r, isOnlyRun);
|
| else
|
| - box = createInlineBoxForRenderer(r->m_object, false, isOnlyRun);
|
| + box = createInlineBoxForLayoutObject(r->m_object, false, isOnlyRun);
|
| r->m_box = box;
|
|
|
| ASSERT(box);
|
| @@ -255,7 +255,7 @@ RootInlineBox* LayoutBlockFlow::constructLine(BidiRunList<BidiRun>& bidiRuns, co
|
| // paint borders/margins/padding. This knowledge will ultimately be used when
|
| // we determine the horizontal positions and widths of all the inline boxes on
|
| // the line.
|
| - bool isLogicallyLastRunWrapped = bidiRuns.logicallyLastRun()->m_object && bidiRuns.logicallyLastRun()->m_object->isText() ? !reachedEndOfTextRenderer(bidiRuns) : true;
|
| + bool isLogicallyLastRunWrapped = bidiRuns.logicallyLastRun()->m_object && bidiRuns.logicallyLastRun()->m_object->isText() ? !reachedEndOfTextRun(bidiRuns) : true;
|
| lastLineBox()->determineSpacingForFlowBoxes(lineInfo.isLastLine(), isLogicallyLastRunWrapped, bidiRuns.logicallyLastRun()->m_object);
|
|
|
| // Now mark the line boxes as being constructed.
|
| @@ -350,7 +350,7 @@ static void updateLogicalWidthForCenterAlignedBlock(bool isLeftToRightDirection,
|
| logicalLeft += totalLogicalWidth > availableLogicalWidth ? (availableLogicalWidth - totalLogicalWidth) : (availableLogicalWidth - totalLogicalWidth) / 2 - trailingSpaceWidth;
|
| }
|
|
|
| -void LayoutBlockFlow::setMarginsForRubyRun(BidiRun* run, LayoutRubyRun* renderer, LayoutObject* previousObject, const LineInfo& lineInfo)
|
| +void LayoutBlockFlow::setMarginsForRubyRun(BidiRun* run, LayoutRubyRun* layoutRubyRun, LayoutObject* previousObject, const LineInfo& lineInfo)
|
| {
|
| int startOverhang;
|
| int endOverhang;
|
| @@ -361,18 +361,18 @@ void LayoutBlockFlow::setMarginsForRubyRun(BidiRun* run, LayoutRubyRun* renderer
|
| break;
|
| }
|
| }
|
| - renderer->getOverhang(lineInfo.isFirstLine(), renderer->style()->isLeftToRightDirection() ? previousObject : nextObject, renderer->style()->isLeftToRightDirection() ? nextObject : previousObject, startOverhang, endOverhang);
|
| - setMarginStartForChild(*renderer, -startOverhang);
|
| - setMarginEndForChild(*renderer, -endOverhang);
|
| + layoutRubyRun->getOverhang(lineInfo.isFirstLine(), layoutRubyRun->style()->isLeftToRightDirection() ? previousObject : nextObject, layoutRubyRun->style()->isLeftToRightDirection() ? nextObject : previousObject, startOverhang, endOverhang);
|
| + setMarginStartForChild(*layoutRubyRun, -startOverhang);
|
| + setMarginEndForChild(*layoutRubyRun, -endOverhang);
|
| }
|
|
|
| -static inline void setLogicalWidthForTextRun(RootInlineBox* lineBox, BidiRun* run, LayoutText* renderer, float xPos, const LineInfo& lineInfo,
|
| +static inline void setLogicalWidthForTextRun(RootInlineBox* lineBox, BidiRun* run, LayoutText* layoutText, float xPos, const LineInfo& lineInfo,
|
| GlyphOverflowAndFallbackFontsMap& textBoxDataMap, VerticalPositionCache& verticalPositionCache, WordMeasurements& wordMeasurements)
|
| {
|
| HashSet<const SimpleFontData*> fallbackFonts;
|
| GlyphOverflow glyphOverflow;
|
|
|
| - const Font& font = renderer->style(lineInfo.isFirstLine())->font();
|
| + const Font& font = layoutText->style(lineInfo.isFirstLine())->font();
|
| // Always compute glyph overflow if the block's line-box-contain value is "glyphs".
|
| if (lineBox->fitsToGlyphs()) {
|
| // If we don't stick out of the root line's font box, then don't bother computing our glyph overflow. This optimization
|
| @@ -389,8 +389,8 @@ static inline void setLogicalWidthForTextRun(RootInlineBox* lineBox, BidiRun* ru
|
|
|
| LayoutUnit hyphenWidth = 0;
|
| if (toInlineTextBox(run->m_box)->hasHyphen()) {
|
| - const Font& font = renderer->style(lineInfo.isFirstLine())->font();
|
| - hyphenWidth = measureHyphenWidth(renderer, font, run->direction());
|
| + const Font& font = layoutText->style(lineInfo.isFirstLine())->font();
|
| + hyphenWidth = measureHyphenWidth(layoutText, font, run->direction());
|
| }
|
| float measuredWidth = 0;
|
|
|
| @@ -399,9 +399,9 @@ static inline void setLogicalWidthForTextRun(RootInlineBox* lineBox, BidiRun* ru
|
| #if OS(MACOSX)
|
| // FIXME: Having any font feature settings enabled can lead to selection gaps on
|
| // Chromium-mac. https://bugs.webkit.org/show_bug.cgi?id=113418
|
| - bool canUseSimpleFontCodePath = renderer->canUseSimpleFontCodePath() && !font.fontDescription().featureSettings();
|
| + bool canUseSimpleFontCodePath = layoutText->canUseSimpleFontCodePath() && !font.fontDescription().featureSettings();
|
| #else
|
| - bool canUseSimpleFontCodePath = renderer->canUseSimpleFontCodePath();
|
| + bool canUseSimpleFontCodePath = layoutText->canUseSimpleFontCodePath();
|
| #endif
|
|
|
| // For complex text we need to compute the glyph bounds as accents can extend outside the frameRect.
|
| @@ -417,15 +417,15 @@ static inline void setLogicalWidthForTextRun(RootInlineBox* lineBox, BidiRun* ru
|
| const WordMeasurement& wordMeasurement = wordMeasurements[i];
|
| if (wordMeasurement.width <=0 || wordMeasurement.startOffset == wordMeasurement.endOffset)
|
| continue;
|
| - if (wordMeasurement.renderer != renderer || wordMeasurement.startOffset != lastEndOffset || wordMeasurement.endOffset > run->m_stop)
|
| + if (wordMeasurement.layoutText != layoutText || wordMeasurement.startOffset != lastEndOffset || wordMeasurement.endOffset > run->m_stop)
|
| continue;
|
|
|
| lastEndOffset = wordMeasurement.endOffset;
|
| if (kerningIsEnabled && lastEndOffset == run->m_stop) {
|
| int wordLength = lastEndOffset - wordMeasurement.startOffset;
|
| - measuredWidth += renderer->width(wordMeasurement.startOffset, wordLength, xPos, run->direction(), lineInfo.isFirstLine());
|
| - if (i > 0 && wordLength == 1 && renderer->characterAt(wordMeasurement.startOffset) == ' ')
|
| - measuredWidth += renderer->style()->wordSpacing();
|
| + measuredWidth += layoutText->width(wordMeasurement.startOffset, wordLength, xPos, run->direction(), lineInfo.isFirstLine());
|
| + if (i > 0 && wordLength == 1 && layoutText->characterAt(wordMeasurement.startOffset) == ' ')
|
| + measuredWidth += layoutText->style()->wordSpacing();
|
| } else {
|
| measuredWidth += wordMeasurement.width;
|
| }
|
| @@ -443,7 +443,7 @@ static inline void setLogicalWidthForTextRun(RootInlineBox* lineBox, BidiRun* ru
|
| }
|
|
|
| if (!measuredWidth)
|
| - measuredWidth = renderer->width(run->m_start, run->m_stop - run->m_start, xPos, run->direction(), lineInfo.isFirstLine(), &fallbackFonts, &glyphOverflow);
|
| + measuredWidth = layoutText->width(run->m_start, run->m_stop - run->m_start, xPos, run->direction(), lineInfo.isFirstLine(), &fallbackFonts, &glyphOverflow);
|
|
|
| run->m_box->setLogicalWidth(measuredWidth + hyphenWidth);
|
| if (!fallbackFonts.isEmpty()) {
|
| @@ -544,7 +544,7 @@ void LayoutBlockFlow::updateLogicalWidthForAlignment(const ETextAlign& textAlign
|
|
|
| static void updateLogicalInlinePositions(LayoutBlockFlow* block, float& lineLogicalLeft, float& lineLogicalRight, float& availableLogicalWidth, bool firstLine, IndentTextOrNot shouldIndentText, LayoutUnit boxLogicalHeight)
|
| {
|
| - LayoutUnit lineLogicalHeight = block->minLineHeightForReplacedRenderer(firstLine, boxLogicalHeight);
|
| + LayoutUnit lineLogicalHeight = block->minLineHeightForReplacedObject(firstLine, boxLogicalHeight);
|
| lineLogicalLeft = block->logicalLeftOffsetForLine(block->logicalHeight(), shouldIndentText == IndentText, lineLogicalHeight).toFloat();
|
| lineLogicalRight = block->logicalRightOffsetForLine(block->logicalHeight(), shouldIndentText == IndentText, lineLogicalHeight).toFloat();
|
| availableLogicalWidth = lineLogicalRight - lineLogicalLeft;
|
| @@ -653,7 +653,7 @@ void LayoutBlockFlow::computeBlockDirectionPositionsForLine(RootInlineBox* lineB
|
| {
|
| setLogicalHeight(lineBox->alignBoxesInBlockDirection(logicalHeight(), textBoxDataMap, verticalPositionCache));
|
|
|
| - // Now make sure we place replaced render objects correctly.
|
| + // Now make sure we place replaced layout objects correctly.
|
| for (BidiRun* r = firstRun; r; r = r->next()) {
|
| ASSERT(r->m_box);
|
| if (!r->m_box)
|
| @@ -797,7 +797,7 @@ void LayoutBlockFlow::layoutRunsAndFloatsInRange(LineLayoutState& layoutState,
|
| LineMidpointState& lineMidpointState = resolver.midpointState();
|
| InlineIterator endOfLine = resolver.position();
|
| bool checkForEndLineMatch = layoutState.endLine();
|
| - LayoutTextInfo renderTextInfo;
|
| + LayoutTextInfo layoutTextInfo;
|
| VerticalPositionCache verticalPositionCache;
|
|
|
| LineBreaker lineBreaker(this);
|
| @@ -824,9 +824,9 @@ void LayoutBlockFlow::layoutRunsAndFloatsInRange(LineLayoutState& layoutState,
|
| FloatingObject* lastFloatFromPreviousLine = (containsFloats()) ? m_floatingObjects->set().last().get() : 0;
|
|
|
| WordMeasurements wordMeasurements;
|
| - endOfLine = lineBreaker.nextLineBreak(resolver, layoutState.lineInfo(), renderTextInfo,
|
| + endOfLine = lineBreaker.nextLineBreak(resolver, layoutState.lineInfo(), layoutTextInfo,
|
| lastFloatFromPreviousLine, wordMeasurements);
|
| - renderTextInfo.m_lineBreakIterator.resetPriorContext();
|
| + layoutTextInfo.m_lineBreakIterator.resetPriorContext();
|
| if (resolver.position().atEnd()) {
|
| // FIXME: We shouldn't be creating any runs in nextLineBreak to begin with!
|
| // Once BidiRunList is separated from BidiResolver this will not be needed.
|
| @@ -1084,7 +1084,7 @@ void LayoutBlockFlow::markDirtyFloatsForPaintInvalidation(Vector<FloatWithRect>&
|
| }
|
|
|
| struct InlineMinMaxIterator {
|
| -/* InlineMinMaxIterator is a class that will iterate over all render objects that contribute to
|
| +/* InlineMinMaxIterator is a class that will iterate over all layout objects that contribute to
|
| inline min/max width calculations. Note the following about the way it walks:
|
| (1) Positioned content is skipped (since it does not contribute to min/max width of a block)
|
| (2) We do not drill into the children of floats or replaced elements, since you can't break
|
| @@ -1227,8 +1227,8 @@ void LayoutBlockFlow::computeInlinePreferredLogicalWidths(LayoutUnit& minLogical
|
| LayoutObject* trailingSpaceChild = 0;
|
|
|
| // Firefox and Opera will allow a table cell to grow to fit an image inside it under
|
| - // very specific cirucumstances (in order to match common WinIE renderings).
|
| - // Not supporting the quirk has caused us to mis-render some real sites. (See Bugzilla 10517.)
|
| + // very specific cirucumstances (in order to match common WinIE layouts).
|
| + // Not supporting the quirk has caused us to mis-layout some real sites. (See Bugzilla 10517.)
|
| bool allowImagesToBreak = !document().inQuirksMode() || !isTableCell() || !styleToUse.logicalWidth().isIntrinsicOrAuto();
|
|
|
| bool autoWrap, oldAutoWrap;
|
| @@ -1417,7 +1417,7 @@ void LayoutBlockFlow::computeInlinePreferredLogicalWidths(LayoutUnit& minLogical
|
| hasBreakableChar, hasBreak, firstLineMaxWidth, lastLineMaxWidth,
|
| childMin, childMax, stripFrontSpaces, styleToUse.direction());
|
|
|
| - // This text object will not be rendered, but it may still provide a breaking opportunity.
|
| + // This text object will not be layed out, but it may still provide a breaking opportunity.
|
| if (!hasBreak && !childMax) {
|
| if (autoWrap && (hasBreakableStart || hasBreakableEnd)) {
|
| minLogicalWidth = std::max(minLogicalWidth, inlineMin.toLayoutUnit());
|
| @@ -1585,7 +1585,7 @@ void LayoutBlockFlow::layoutInlineChildren(bool relayoutChildren, LayoutUnit& pa
|
| if (!o->isText())
|
| toLayoutInline(o)->updateAlwaysCreateLineBoxes(layoutState.isFullLayout());
|
| if (layoutState.isFullLayout() || o->selfNeedsLayout())
|
| - dirtyLineBoxesForRenderer(o, layoutState.isFullLayout());
|
| + dirtyLineBoxesForObject(o, layoutState.isFullLayout());
|
| o->clearNeedsLayout();
|
| }
|
| }
|
| @@ -1805,7 +1805,7 @@ void LayoutBlockFlow::determineEndPosition(LineLayoutState& layoutState, RootInl
|
| layoutState.setEndLineLogicalTop(prev->lineBottomWithLeading());
|
|
|
| for (RootInlineBox* line = last; line; line = line->nextRootBox())
|
| - line->extractLine(); // Disconnect all line boxes from their render objects while preserving
|
| + line->extractLine(); // Disconnect all line boxes from their layout objects while preserving
|
| // their connections to one another.
|
|
|
| layoutState.setEndLine(last);
|
|
|