| Index: third_party/WebKit/Source/core/layout/LayoutBlock.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutBlock.cpp b/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
|
| index 06e73dba1f4ea003b7dd1afdb40018e6751e1a62..87a2f7d19ded9ab6783cb4204caba738a1f3e77e 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
|
| @@ -2194,119 +2194,6 @@ LayoutBlockFlow* LayoutBlock::nearestInnerBlockWithFirstLine() const
|
| return nullptr;
|
| }
|
|
|
| -// Helper methods for obtaining the last line, computing line counts and heights for line counts
|
| -// (crawling into blocks).
|
| -static bool shouldCheckLines(LayoutObject* obj)
|
| -{
|
| - return !obj->isFloatingOrOutOfFlowPositioned()
|
| - && obj->isLayoutBlock() && obj->style()->height().isAuto()
|
| - && (!obj->isDeprecatedFlexibleBox() || obj->style()->boxOrient() == VERTICAL);
|
| -}
|
| -
|
| -static int getHeightForLineCount(LayoutBlock* block, int lineCount, bool includeBottom, int& count)
|
| -{
|
| - if (block->style()->visibility() == VISIBLE) {
|
| - if (block->isLayoutBlockFlow() && block->childrenInline()) {
|
| - for (RootInlineBox* box = toLayoutBlockFlow(block)->firstRootBox(); box; box = box->nextRootBox()) {
|
| - if (++count == lineCount)
|
| - return box->lineBottom() + (includeBottom ? (block->borderBottom() + block->paddingBottom()) : LayoutUnit());
|
| - }
|
| - } else {
|
| - LayoutBox* normalFlowChildWithoutLines = nullptr;
|
| - for (LayoutBox* obj = block->firstChildBox(); obj; obj = obj->nextSiblingBox()) {
|
| - if (shouldCheckLines(obj)) {
|
| - int result = getHeightForLineCount(toLayoutBlock(obj), lineCount, false, count);
|
| - if (result != -1)
|
| - return result + obj->location().y() + (includeBottom ? (block->borderBottom() + block->paddingBottom()) : LayoutUnit());
|
| - } else if (!obj->isFloatingOrOutOfFlowPositioned()) {
|
| - normalFlowChildWithoutLines = obj;
|
| - }
|
| - }
|
| - if (normalFlowChildWithoutLines && lineCount == 0)
|
| - return normalFlowChildWithoutLines->location().y() + normalFlowChildWithoutLines->size().height();
|
| - }
|
| - }
|
| -
|
| - return -1;
|
| -}
|
| -
|
| -RootInlineBox* LayoutBlock::lineAtIndex(int i) const
|
| -{
|
| - ASSERT(i >= 0);
|
| -
|
| - if (style()->visibility() != VISIBLE)
|
| - return nullptr;
|
| -
|
| - if (childrenInline()) {
|
| - for (RootInlineBox* box = firstRootBox(); box; box = box->nextRootBox()) {
|
| - if (!i--)
|
| - return box;
|
| - }
|
| - } else {
|
| - for (LayoutObject* child = firstChild(); child; child = child->nextSibling()) {
|
| - if (!shouldCheckLines(child))
|
| - continue;
|
| - if (RootInlineBox* box = toLayoutBlock(child)->lineAtIndex(i))
|
| - return box;
|
| - }
|
| - }
|
| -
|
| - return nullptr;
|
| -}
|
| -
|
| -int LayoutBlock::lineCount(const RootInlineBox* stopRootInlineBox, bool* found) const
|
| -{
|
| - int count = 0;
|
| -
|
| - if (style()->visibility() == VISIBLE) {
|
| - if (childrenInline()) {
|
| - for (RootInlineBox* box = firstRootBox(); box; box = box->nextRootBox()) {
|
| - count++;
|
| - if (box == stopRootInlineBox) {
|
| - if (found)
|
| - *found = true;
|
| - break;
|
| - }
|
| - }
|
| - } else {
|
| - for (LayoutObject* obj = firstChild(); obj; obj = obj->nextSibling()) {
|
| - if (shouldCheckLines(obj)) {
|
| - bool recursiveFound = false;
|
| - count += toLayoutBlock(obj)->lineCount(stopRootInlineBox, &recursiveFound);
|
| - if (recursiveFound) {
|
| - if (found)
|
| - *found = true;
|
| - break;
|
| - }
|
| - }
|
| - }
|
| - }
|
| - }
|
| - return count;
|
| -}
|
| -
|
| -int LayoutBlock::heightForLineCount(int lineCount)
|
| -{
|
| - int count = 0;
|
| - return getHeightForLineCount(this, lineCount, true, count);
|
| -}
|
| -
|
| -void LayoutBlock::clearTruncation()
|
| -{
|
| - if (style()->visibility() == VISIBLE) {
|
| - if (childrenInline() && hasMarkupTruncation()) {
|
| - setHasMarkupTruncation(false);
|
| - for (RootInlineBox* box = firstRootBox(); box; box = box->nextRootBox())
|
| - box->clearTruncation();
|
| - } else {
|
| - for (LayoutObject* obj = firstChild(); obj; obj = obj->nextSibling()) {
|
| - if (shouldCheckLines(obj))
|
| - toLayoutBlock(obj)->clearTruncation();
|
| - }
|
| - }
|
| - }
|
| -}
|
| -
|
| void LayoutBlock::absoluteRects(Vector<IntRect>& rects, const LayoutPoint& accumulatedOffset) const
|
| {
|
| // For blocks inside inlines, we go ahead and include margins so that we run right up to the
|
|
|