| Index: Source/core/layout/line/InlineTextBox.cpp
|
| diff --git a/Source/core/layout/line/InlineTextBox.cpp b/Source/core/layout/line/InlineTextBox.cpp
|
| index 5845d3797d0120d6ec5215baf2ea6b59821c2d39..43d888c380dabe3176f1ef2d362036116358b8a1 100644
|
| --- a/Source/core/layout/line/InlineTextBox.cpp
|
| +++ b/Source/core/layout/line/InlineTextBox.cpp
|
| @@ -103,20 +103,20 @@ int InlineTextBox::baselinePosition(FontBaseline baselineType) const
|
| {
|
| if (!isText() || !parent())
|
| return 0;
|
| - if (parent()->renderer() == renderer().parent())
|
| + if (parent()->layoutObject() == layoutObject().parent())
|
| return parent()->baselinePosition(baselineType);
|
| - return toLayoutBoxModelObject(renderer().parent())->baselinePosition(baselineType, isFirstLineStyle(), isHorizontal() ? HorizontalLine : VerticalLine, PositionOnContainingLine);
|
| + return toLayoutBoxModelObject(layoutObject().parent())->baselinePosition(baselineType, isFirstLineStyle(), isHorizontal() ? HorizontalLine : VerticalLine, PositionOnContainingLine);
|
| }
|
|
|
| LayoutUnit InlineTextBox::lineHeight() const
|
| {
|
| - if (!isText() || !renderer().parent())
|
| + if (!isText() || !layoutObject().parent())
|
| return 0;
|
| - if (renderer().isBR())
|
| - return toLayoutBR(renderer()).lineHeight(isFirstLineStyle());
|
| - if (parent()->renderer() == renderer().parent())
|
| + if (layoutObject().isBR())
|
| + return toLayoutBR(layoutObject()).lineHeight(isFirstLineStyle());
|
| + if (parent()->layoutObject() == layoutObject().parent())
|
| return parent()->lineHeight();
|
| - return toLayoutBoxModelObject(renderer().parent())->lineHeight(isFirstLineStyle(), isHorizontal() ? HorizontalLine : VerticalLine, PositionOnContainingLine);
|
| + return toLayoutBoxModelObject(layoutObject().parent())->lineHeight(isFirstLineStyle(), isHorizontal() ? HorizontalLine : VerticalLine, PositionOnContainingLine);
|
| }
|
|
|
| bool InlineTextBox::isSelected(int startPos, int endPos) const
|
| @@ -130,16 +130,16 @@ bool InlineTextBox::isSelected(int startPos, int endPos) const
|
|
|
| LayoutObject::SelectionState InlineTextBox::selectionState() const
|
| {
|
| - LayoutObject::SelectionState state = renderer().selectionState();
|
| + LayoutObject::SelectionState state = layoutObject().selectionState();
|
| if (state == LayoutObject::SelectionStart || state == LayoutObject::SelectionEnd || state == LayoutObject::SelectionBoth) {
|
| int startPos, endPos;
|
| - renderer().selectionStartEnd(startPos, endPos);
|
| + layoutObject().selectionStartEnd(startPos, endPos);
|
| // The position after a hard line break is considered to be past its end.
|
| // See the corresponding code in InlineTextBox::isSelected.
|
| int lastSelectable = start() + len() - (isLineBreak() ? 1 : 0);
|
|
|
| // FIXME: Remove -webkit-line-break: LineBreakAfterWhiteSpace.
|
| - int endOfLineAdjustmentForCSSLineBreak = renderer().style()->lineBreak() == LineBreakAfterWhiteSpace ? -1 : 0;
|
| + int endOfLineAdjustmentForCSSLineBreak = layoutObject().style()->lineBreak() == LineBreakAfterWhiteSpace ? -1 : 0;
|
| bool start = (state != LayoutObject::SelectionEnd && startPos >= m_start && startPos <= m_start + m_len + endOfLineAdjustmentForCSSLineBreak);
|
| bool end = (state != LayoutObject::SelectionStart && endPos > m_start && endPos <= lastSelectable);
|
| if (start && end)
|
| @@ -187,7 +187,7 @@ LayoutRect InlineTextBox::localSelectionRect(int startPos, int endPos)
|
|
|
| LayoutUnit selTop = root().selectionTop();
|
| LayoutUnit selHeight = root().selectionHeight();
|
| - const LayoutStyle& styleToUse = renderer().styleRef(isFirstLineStyle());
|
| + const LayoutStyle& styleToUse = layoutObject().styleRef(isFirstLineStyle());
|
| const Font& font = styleToUse.font();
|
|
|
| StringBuilder charactersWithHyphen;
|
| @@ -219,7 +219,7 @@ LayoutRect InlineTextBox::localSelectionRect(int startPos, int endPos)
|
|
|
| void InlineTextBox::deleteLine()
|
| {
|
| - renderer().removeTextBox(this);
|
| + layoutObject().removeTextBox(this);
|
| destroy();
|
| }
|
|
|
| @@ -228,7 +228,7 @@ void InlineTextBox::extractLine()
|
| if (extracted())
|
| return;
|
|
|
| - renderer().extractTextBox(this);
|
| + layoutObject().extractTextBox(this);
|
| }
|
|
|
| void InlineTextBox::attachLine()
|
| @@ -236,7 +236,7 @@ void InlineTextBox::attachLine()
|
| if (!extracted())
|
| return;
|
|
|
| - renderer().attachTextBox(this);
|
| + layoutObject().attachTextBox(this);
|
| }
|
|
|
| FloatWillBeLayoutUnit InlineTextBox::placeEllipsisBox(bool flowIsLTR, FloatWillBeLayoutUnit visibleLeftEdge, FloatWillBeLayoutUnit visibleRightEdge, FloatWillBeLayoutUnit ellipsisWidth, FloatWillBeLayoutUnit &truncatedWidth, bool& foundBox)
|
| @@ -290,7 +290,7 @@ FloatWillBeLayoutUnit InlineTextBox::placeEllipsisBox(bool flowIsLTR, FloatWillB
|
|
|
| // If we got here that means that we were only partially truncated and we need to return the pixel offset at which
|
| // to place the ellipsis.
|
| - FloatWillBeLayoutUnit widthOfVisibleText = renderer().width(m_start, offset, textPos(), flowIsLTR ? LTR : RTL, isFirstLineStyle());
|
| + FloatWillBeLayoutUnit widthOfVisibleText = layoutObject().width(m_start, offset, textPos(), flowIsLTR ? LTR : RTL, isFirstLineStyle());
|
|
|
| // The ellipsis needs to be placed just after the last visible character.
|
| // Where "after" is defined by the flow directionality, not the inline
|
| @@ -308,7 +308,7 @@ FloatWillBeLayoutUnit InlineTextBox::placeEllipsisBox(bool flowIsLTR, FloatWillB
|
|
|
| bool InlineTextBox::isLineBreak() const
|
| {
|
| - return renderer().isBR() || (renderer().style()->preserveNewline() && len() == 1 && (*renderer().text().impl())[start()] == '\n');
|
| + return layoutObject().isBR() || (layoutObject().style()->preserveNewline() && len() == 1 && (*layoutObject().text().impl())[start()] == '\n');
|
| }
|
|
|
| bool InlineTextBox::nodeAtPoint(const HitTestRequest& request, HitTestResult& result, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, LayoutUnit /* lineTop */, LayoutUnit /*lineBottom*/)
|
| @@ -322,8 +322,8 @@ bool InlineTextBox::nodeAtPoint(const HitTestRequest& request, HitTestResult& re
|
| // FIXME: both calls to rawValue() below is temporary and should be removed once the transition
|
| // to LayoutUnit-based types is complete (crbug.com/321237)
|
| if (m_truncation != cFullTruncation && visibleToHitTestRequest(request) && locationInContainer.intersects(rect.rawValue())) {
|
| - renderer().updateHitTestResult(result, flipForWritingMode(locationInContainer.point() - toLayoutSize(accumulatedOffset)));
|
| - if (!result.addNodeToListBasedTestResult(renderer().node(), request, locationInContainer, rect.rawValue()))
|
| + layoutObject().updateHitTestResult(result, flipForWritingMode(locationInContainer.point() - toLayoutSize(accumulatedOffset)));
|
| + if (!result.addNodeToListBasedTestResult(layoutObject().node(), request, locationInContainer, rect.rawValue()))
|
| return true;
|
| }
|
| return false;
|
| @@ -339,7 +339,7 @@ bool InlineTextBox::getEmphasisMarkPosition(const LayoutStyle& style, TextEmphas
|
| if (emphasisPosition == TextEmphasisPositionUnder)
|
| return true; // Ruby text is always over, so it cannot suppress emphasis marks under.
|
|
|
| - LayoutBlock* containingBlock = renderer().containingBlock();
|
| + LayoutBlock* containingBlock = layoutObject().containingBlock();
|
| if (!containingBlock->isRubyBase())
|
| return true; // This text is not inside a ruby base, so it does not have ruby text over it.
|
|
|
| @@ -360,14 +360,14 @@ void InlineTextBox::paint(const PaintInfo& paintInfo, const LayoutPoint& paintOf
|
| void InlineTextBox::selectionStartEnd(int& sPos, int& ePos) const
|
| {
|
| int startPos, endPos;
|
| - if (renderer().selectionState() == LayoutObject::SelectionInside) {
|
| + if (layoutObject().selectionState() == LayoutObject::SelectionInside) {
|
| startPos = 0;
|
| - endPos = renderer().textLength();
|
| + endPos = layoutObject().textLength();
|
| } else {
|
| - renderer().selectionStartEnd(startPos, endPos);
|
| - if (renderer().selectionState() == LayoutObject::SelectionStart)
|
| - endPos = renderer().textLength();
|
| - else if (renderer().selectionState() == LayoutObject::SelectionEnd)
|
| + layoutObject().selectionStartEnd(startPos, endPos);
|
| + if (layoutObject().selectionState() == LayoutObject::SelectionStart)
|
| + endPos = layoutObject().textLength();
|
| + else if (layoutObject().selectionState() == LayoutObject::SelectionEnd)
|
| startPos = 0;
|
| }
|
|
|
| @@ -414,7 +414,7 @@ int InlineTextBox::offsetForPosition(FloatWillBeLayoutUnit lineOffset, bool incl
|
| if (lineOffset - logicalLeft() < 0)
|
| return isLeftToRightDirection() ? 0 : len();
|
|
|
| - LayoutText& text = renderer();
|
| + LayoutText& text = layoutObject();
|
| const LayoutStyle& style = text.styleRef(isFirstLineStyle());
|
| const Font& font = style.font();
|
| return font.offsetForPosition(constructTextRun(style, font), lineOffset - logicalLeft(), includePartialGlyphs);
|
| @@ -428,7 +428,7 @@ FloatWillBeLayoutUnit InlineTextBox::positionForOffset(int offset) const
|
| if (isLineBreak())
|
| return logicalLeft();
|
|
|
| - LayoutText& text = renderer();
|
| + LayoutText& text = layoutObject();
|
| const LayoutStyle& styleToUse = text.styleRef(isFirstLineStyle());
|
| const Font& font = styleToUse.font();
|
| int from = !isLeftToRightDirection() ? offset - m_start : 0;
|
| @@ -465,7 +465,7 @@ void InlineTextBox::characterWidths(Vector<FloatWillBeLayoutUnit>& widths) const
|
| {
|
| FontCachePurgePreventer fontCachePurgePreventer;
|
|
|
| - const LayoutStyle& styleToUse = renderer().styleRef(isFirstLineStyle());
|
| + const LayoutStyle& styleToUse = layoutObject().styleRef(isFirstLineStyle());
|
| const Font& font = styleToUse.font();
|
|
|
| TextRun textRun = constructTextRun(styleToUse, font);
|
| @@ -482,16 +482,16 @@ void InlineTextBox::characterWidths(Vector<FloatWillBeLayoutUnit>& widths) const
|
|
|
| TextRun InlineTextBox::constructTextRun(const LayoutStyle& style, const Font& font, StringBuilder* charactersWithHyphen) const
|
| {
|
| - ASSERT(renderer().text());
|
| + ASSERT(layoutObject().text());
|
|
|
| - StringView string = renderer().text().createView();
|
| + StringView string = layoutObject().text().createView();
|
| unsigned startPos = start();
|
| unsigned length = len();
|
|
|
| if (string.length() != length || startPos)
|
| string.narrow(startPos, length);
|
|
|
| - return constructTextRun(style, font, string, renderer().textLength() - startPos, charactersWithHyphen);
|
| + return constructTextRun(style, font, string, layoutObject().textLength() - startPos, charactersWithHyphen);
|
| }
|
|
|
| TextRun InlineTextBox::constructTextRun(const LayoutStyle& style, const Font& font, StringView string, int maximumLength, StringBuilder* charactersWithHyphen) const
|
| @@ -507,9 +507,9 @@ TextRun InlineTextBox::constructTextRun(const LayoutStyle& style, const Font& fo
|
|
|
| ASSERT(maximumLength >= static_cast<int>(string.length()));
|
|
|
| - TextRun run(string, textPos(), expansion(), expansionBehavior(), direction(), dirOverride() || style.rtlOrdering() == VisualOrder, !renderer().canUseSimpleFontCodePath());
|
| + TextRun run(string, textPos(), expansion(), expansionBehavior(), direction(), dirOverride() || style.rtlOrdering() == VisualOrder, !layoutObject().canUseSimpleFontCodePath());
|
| run.setTabSize(!style.collapseWhiteSpace(), style.tabSize());
|
| - run.setCodePath(renderer().canUseSimpleFontCodePath() ? TextRun::ForceSimple : TextRun::ForceComplex);
|
| + run.setCodePath(layoutObject().canUseSimpleFontCodePath() ? TextRun::ForceSimple : TextRun::ForceComplex);
|
| run.setTextJustify(style.textJustify());
|
|
|
| // Propagate the maximum length of the characters buffer to the TextRun, even when we're only processing a substring.
|
| @@ -532,7 +532,7 @@ const char* InlineTextBox::boxName() const
|
|
|
| void InlineTextBox::showBox(int printedCharacters) const
|
| {
|
| - const LayoutText& obj = renderer();
|
| + const LayoutText& obj = layoutObject();
|
| String value = obj.text();
|
| value = value.substring(start(), len());
|
| value.replaceWithLiteral('\\', "\\\\");
|
|
|