Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(123)

Side by Side Diff: Source/core/rendering/RenderBlock.cpp

Issue 53373003: Remove display:run-in as per https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/_tHSX… (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: fix test Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/rendering/RenderBlock.h ('k') | Source/core/rendering/RenderFileUploadControl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2007 David Smith (catfish.man@gmail.com) 4 * (C) 2007 David Smith (catfish.man@gmail.com)
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 717 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 } 728 }
729 729
730 beforeChild = splitAnonymousBoxesAroundChild(beforeChild); 730 beforeChild = splitAnonymousBoxesAroundChild(beforeChild);
731 731
732 ASSERT(beforeChild->parent() == this); 732 ASSERT(beforeChild->parent() == this);
733 if (beforeChild->parent() != this) { 733 if (beforeChild->parent() != this) {
734 // We should never reach here. If we do, we need to use the 734 // We should never reach here. If we do, we need to use the
735 // safe fallback to use the topmost beforeChild container. 735 // safe fallback to use the topmost beforeChild container.
736 beforeChild = beforeChildContainer; 736 beforeChild = beforeChildContainer;
737 } 737 }
738 } else {
739 // We will reach here when beforeChild is a run-in element.
740 // If run-in element precedes a block-level element, it becomes the
741 // the first inline child of that block level element. The insertion
742 // point will be before that block-level element.
743 ASSERT(beforeChild->isRunIn());
744 beforeChild = beforeChildContainer;
745 } 738 }
746 } 739 }
747 740
748 // Nothing goes before the intruded run-in.
749 if (beforeChild && beforeChild->isRunIn() && runInIsPlacedIntoSiblingBlock(b eforeChild))
750 beforeChild = beforeChild->nextSibling();
751
752 // Check for a spanning element in columns. 741 // Check for a spanning element in columns.
753 if (gColumnFlowSplitEnabled) { 742 if (gColumnFlowSplitEnabled) {
754 RenderBlock* columnsBlockAncestor = columnsBlockForSpanningElement(newCh ild); 743 RenderBlock* columnsBlockAncestor = columnsBlockForSpanningElement(newCh ild);
755 if (columnsBlockAncestor) { 744 if (columnsBlockAncestor) {
756 TemporaryChange<bool> columnFlowSplitEnabled(gColumnFlowSplitEnabled , false); 745 TemporaryChange<bool> columnFlowSplitEnabled(gColumnFlowSplitEnabled , false);
757 // We are placing a column-span element inside a block. 746 // We are placing a column-span element inside a block.
758 RenderBlock* newBox = createAnonymousColumnSpanBlock(); 747 RenderBlock* newBox = createAnonymousColumnSpanBlock();
759 748
760 if (columnsBlockAncestor != this && !isRenderFlowThread()) { 749 if (columnsBlockAncestor != this && !isRenderFlowThread()) {
761 // We are nested inside a multi-column element and are being spl it by the span. We have to break up 750 // We are nested inside a multi-column element and are being spl it by the span. We have to break up
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 // No suitable existing anonymous box - create a new one. 798 // No suitable existing anonymous box - create a new one.
810 RenderBlock* newBox = createAnonymousBlock(); 799 RenderBlock* newBox = createAnonymousBlock();
811 RenderBox::addChild(newBox, beforeChild); 800 RenderBox::addChild(newBox, beforeChild);
812 newBox->addChild(newChild); 801 newBox->addChild(newChild);
813 return; 802 return;
814 } 803 }
815 } 804 }
816 805
817 RenderBox::addChild(newChild, beforeChild); 806 RenderBox::addChild(newChild, beforeChild);
818 807
819 // Handle placement of run-ins.
820 placeRunInIfNeeded(newChild);
821
822 if (madeBoxesNonInline && parent() && isAnonymousBlock() && parent()->isRend erBlock()) 808 if (madeBoxesNonInline && parent() && isAnonymousBlock() && parent()->isRend erBlock())
823 toRenderBlock(parent())->removeLeftoverAnonymousBlock(this); 809 toRenderBlock(parent())->removeLeftoverAnonymousBlock(this);
824 // this object may be dead here 810 // this object may be dead here
825 } 811 }
826 812
827 void RenderBlock::addChild(RenderObject* newChild, RenderObject* beforeChild) 813 void RenderBlock::addChild(RenderObject* newChild, RenderObject* beforeChild)
828 { 814 {
829 if (continuation() && !isAnonymousBlock()) 815 if (continuation() && !isAnonymousBlock())
830 addChildToContinuation(newChild, beforeChild); 816 addChildToContinuation(newChild, beforeChild);
831 else 817 else
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
919 ASSERT(!insertionPoint || insertionPoint->parent() == this); 905 ASSERT(!insertionPoint || insertionPoint->parent() == this);
920 906
921 setChildrenInline(false); 907 setChildrenInline(false);
922 908
923 RenderObject *child = firstChild(); 909 RenderObject *child = firstChild();
924 if (!child) 910 if (!child)
925 return; 911 return;
926 912
927 deleteLineBoxTree(); 913 deleteLineBoxTree();
928 914
929 // Since we are going to have block children, we have to move
930 // back the run-in to its original place.
931 if (child->isRunIn()) {
932 moveRunInToOriginalPosition(child);
933 child = firstChild();
934 }
935
936 while (child) { 915 while (child) {
937 RenderObject *inlineRunStart, *inlineRunEnd; 916 RenderObject *inlineRunStart, *inlineRunEnd;
938 getInlineRun(child, insertionPoint, inlineRunStart, inlineRunEnd); 917 getInlineRun(child, insertionPoint, inlineRunStart, inlineRunEnd);
939 918
940 if (!inlineRunStart) 919 if (!inlineRunStart)
941 break; 920 break;
942 921
943 child = inlineRunEnd->nextSibling(); 922 child = inlineRunEnd->nextSibling();
944 923
945 RenderBlock* block = createAnonymousBlock(); 924 RenderBlock* block = createAnonymousBlock();
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1009 988
1010 static bool canMergeContiguousAnonymousBlocks(RenderObject* oldChild, RenderObje ct* prev, RenderObject* next) 989 static bool canMergeContiguousAnonymousBlocks(RenderObject* oldChild, RenderObje ct* prev, RenderObject* next)
1011 { 990 {
1012 if (oldChild->documentBeingDestroyed() || oldChild->isInline() || oldChild-> virtualContinuation()) 991 if (oldChild->documentBeingDestroyed() || oldChild->isInline() || oldChild-> virtualContinuation())
1013 return false; 992 return false;
1014 993
1015 if ((prev && (!prev->isAnonymousBlock() || toRenderBlock(prev)->continuation () || toRenderBlock(prev)->beingDestroyed())) 994 if ((prev && (!prev->isAnonymousBlock() || toRenderBlock(prev)->continuation () || toRenderBlock(prev)->beingDestroyed()))
1016 || (next && (!next->isAnonymousBlock() || toRenderBlock(next)->continuat ion() || toRenderBlock(next)->beingDestroyed()))) 995 || (next && (!next->isAnonymousBlock() || toRenderBlock(next)->continuat ion() || toRenderBlock(next)->beingDestroyed())))
1017 return false; 996 return false;
1018 997
1019 // FIXME: This check isn't required when inline run-ins can't be split into continuations.
1020 if (prev && prev->firstChild() && prev->firstChild()->isInline() && prev->fi rstChild()->isRunIn())
1021 return false;
1022
1023 if ((prev && (prev->isRubyRun() || prev->isRubyBase())) 998 if ((prev && (prev->isRubyRun() || prev->isRubyBase()))
1024 || (next && (next->isRubyRun() || next->isRubyBase()))) 999 || (next && (next->isRubyRun() || next->isRubyBase())))
1025 return false; 1000 return false;
1026 1001
1027 if (!prev || !next) 1002 if (!prev || !next)
1028 return true; 1003 return true;
1029 1004
1030 // Make sure the types of the anonymous blocks match up. 1005 // Make sure the types of the anonymous blocks match up.
1031 return prev->isAnonymousColumnsBlock() == next->isAnonymousColumnsBlock() 1006 return prev->isAnonymousColumnsBlock() == next->isAnonymousColumnsBlock()
1032 && prev->isAnonymousColumnSpanBlock() == next->isAnonymousColumnSpanB lock(); 1007 && prev->isAnonymousColumnSpanBlock() == next->isAnonymousColumnSpanB lock();
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
1587 RenderTheme::theme().adjustRepaintRect(this, inflatedRect); 1562 RenderTheme::theme().adjustRepaintRect(this, inflatedRect);
1588 addVisualOverflow(inflatedRect); 1563 addVisualOverflow(inflatedRect);
1589 } 1564 }
1590 1565
1591 bool RenderBlock::expandsToEncloseOverhangingFloats() const 1566 bool RenderBlock::expandsToEncloseOverhangingFloats() const
1592 { 1567 {
1593 return isInlineBlockOrInlineTable() || isFloatingOrOutOfFlowPositioned() || hasOverflowClip() || (parent() && parent()->isFlexibleBoxIncludingDeprecated()) 1568 return isInlineBlockOrInlineTable() || isFloatingOrOutOfFlowPositioned() || hasOverflowClip() || (parent() && parent()->isFlexibleBoxIncludingDeprecated())
1594 || hasColumns() || isTableCell() || isTableCaption() || isFieldset() || isWritingModeRoot() || isRoot(); 1569 || hasColumns() || isTableCell() || isTableCaption() || isFieldset() || isWritingModeRoot() || isRoot();
1595 } 1570 }
1596 1571
1597 static void destroyRunIn(RenderBoxModelObject* runIn)
1598 {
1599 ASSERT(runIn->isRunIn());
1600 ASSERT(!runIn->firstChild());
1601
1602 // Delete our line box tree. This is needed as our children got moved
1603 // and our line box tree is no longer valid.
1604 if (runIn->isRenderBlock())
1605 toRenderBlock(runIn)->deleteLineBoxTree();
1606 else if (runIn->isRenderInline())
1607 toRenderInline(runIn)->deleteLineBoxTree();
1608 else
1609 ASSERT_NOT_REACHED();
1610
1611 runIn->destroy();
1612 }
1613
1614 void RenderBlock::placeRunInIfNeeded(RenderObject* newChild)
1615 {
1616 if (newChild->isRunIn())
1617 moveRunInUnderSiblingBlockIfNeeded(newChild);
1618 else if (RenderObject* prevSibling = newChild->previousSibling()) {
1619 if (prevSibling->isRunIn())
1620 moveRunInUnderSiblingBlockIfNeeded(prevSibling);
1621 }
1622 }
1623
1624 RenderBoxModelObject* RenderBlock::createReplacementRunIn(RenderBoxModelObject* runIn)
1625 {
1626 ASSERT(runIn->isRunIn());
1627 ASSERT(runIn->node());
1628
1629 RenderBoxModelObject* newRunIn = 0;
1630 if (!runIn->isRenderBlockFlow())
1631 newRunIn = new RenderBlockFlow(runIn->node());
1632 else
1633 newRunIn = new RenderInline(toElement(runIn->node()));
1634
1635 runIn->node()->setRenderer(newRunIn);
1636 newRunIn->setStyle(runIn->style());
1637
1638 runIn->moveAllChildrenTo(newRunIn, true);
1639
1640 return newRunIn;
1641 }
1642
1643 void RenderBlock::moveRunInUnderSiblingBlockIfNeeded(RenderObject* runIn)
1644 {
1645 ASSERT(runIn->isRunIn());
1646
1647 // See if we have inline children. If the children aren't inline,
1648 // then just treat the run-in as a normal block.
1649 if (!runIn->childrenInline())
1650 return;
1651
1652 // FIXME: We don't handle non-block flow elements with run-in for now.
1653 if (!runIn->isRenderBlockFlow())
1654 return;
1655
1656 // FIXME: We don't support run-ins with or as part of a continuation
1657 // as it makes the back-and-forth placing complex.
1658 if (runIn->isElementContinuation() || runIn->virtualContinuation())
1659 return;
1660
1661 // Check if this node is allowed to run-in. E.g. <select> expects its render er to
1662 // be a RenderListBox or RenderMenuList, and hence cannot be a RenderInline run-in.
1663 if (!runIn->canBeReplacedWithInlineRunIn())
1664 return;
1665
1666 RenderObject* curr = runIn->nextSibling();
1667 if (!curr || !curr->isRenderBlock() || !curr->childrenInline())
1668 return;
1669
1670 // Per CSS3, "A run-in cannot run in to a block that already starts with a
1671 // run-in or that itself is a run-in".
1672 if (curr->isRunIn() || (curr->firstChild() && curr->firstChild()->isRunIn()) )
1673 return;
1674
1675 if (curr->isAnonymous() || curr->isFloatingOrOutOfFlowPositioned())
1676 return;
1677
1678 // FIXME: We don't support run-ins with or as part of a continuation
1679 // as it makes the back-and-forth placing complex.
1680 if (curr->isElementContinuation() || curr->virtualContinuation())
1681 return;
1682
1683 RenderBoxModelObject* oldRunIn = toRenderBoxModelObject(runIn);
1684 RenderBoxModelObject* newRunIn = createReplacementRunIn(oldRunIn);
1685 destroyRunIn(oldRunIn);
1686
1687 // Now insert the new child under |curr| block. Use addChild instead of inse rtChildNode
1688 // since it handles correct placement of the children, especially where we c annot insert
1689 // anything before the first child. e.g. details tag. See https://bugs.webki t.org/show_bug.cgi?id=58228.
1690 curr->addChild(newRunIn, curr->firstChild());
1691
1692 // Make sure that |this| get a layout since its run-in child moved.
1693 curr->setNeedsLayoutAndPrefWidthsRecalc();
1694 }
1695
1696 bool RenderBlock::runInIsPlacedIntoSiblingBlock(RenderObject* runIn)
1697 {
1698 ASSERT(runIn->isRunIn());
1699
1700 // If we don't have a parent, we can't be moved into our sibling block.
1701 if (!parent())
1702 return false;
1703
1704 // An intruded run-in needs to be an inline.
1705 if (!runIn->isRenderInline())
1706 return false;
1707
1708 return true;
1709 }
1710
1711 void RenderBlock::moveRunInToOriginalPosition(RenderObject* runIn)
1712 {
1713 ASSERT(runIn->isRunIn());
1714
1715 if (!runInIsPlacedIntoSiblingBlock(runIn))
1716 return;
1717
1718 // FIXME: Run-in that are now placed in sibling block can break up into cont inuation
1719 // chains when new children are added to it. We cannot easily send them back to their
1720 // original place since that requires writing integration logic with RenderI nline::addChild
1721 // and all other places that might cause continuations to be created (withou t blowing away
1722 // |this|). Disabling this feature for now to prevent crashes.
1723 if (runIn->isElementContinuation() || runIn->virtualContinuation())
1724 return;
1725
1726 RenderBoxModelObject* oldRunIn = toRenderBoxModelObject(runIn);
1727 RenderBoxModelObject* newRunIn = createReplacementRunIn(oldRunIn);
1728 destroyRunIn(oldRunIn);
1729
1730 // Add the run-in block as our previous sibling.
1731 parent()->addChild(newRunIn, this);
1732
1733 // Make sure that the parent holding the new run-in gets layout.
1734 parent()->setNeedsLayoutAndPrefWidthsRecalc();
1735 }
1736
1737 LayoutUnit RenderBlock::computeStartPositionDeltaForChildAvoidingFloats(const Re nderBox* child, LayoutUnit childMarginStart, RenderRegion* region) 1572 LayoutUnit RenderBlock::computeStartPositionDeltaForChildAvoidingFloats(const Re nderBox* child, LayoutUnit childMarginStart, RenderRegion* region)
1738 { 1573 {
1739 LayoutUnit startPosition = startOffsetForContent(region); 1574 LayoutUnit startPosition = startOffsetForContent(region);
1740 1575
1741 // Add in our start margin. 1576 // Add in our start margin.
1742 LayoutUnit oldPosition = startPosition + childMarginStart; 1577 LayoutUnit oldPosition = startPosition + childMarginStart;
1743 LayoutUnit newPosition = oldPosition; 1578 LayoutUnit newPosition = oldPosition;
1744 1579
1745 LayoutUnit blockOffset = logicalTopForChild(child); 1580 LayoutUnit blockOffset = logicalTopForChild(child);
1746 if (region) 1581 if (region)
(...skipping 3373 matching lines...) Expand 10 before | Expand all | Expand 10 after
5120 // adding and removing children of firstLetterContainer. 4955 // adding and removing children of firstLetterContainer.
5121 LayoutStateDisabler layoutStateDisabler(view()); 4956 LayoutStateDisabler layoutStateDisabler(view());
5122 4957
5123 createFirstLetterRenderer(firstLetterBlock, currChild, length); 4958 createFirstLetterRenderer(firstLetterBlock, currChild, length);
5124 } 4959 }
5125 4960
5126 // Helper methods for obtaining the last line, computing line counts and heights for line counts 4961 // Helper methods for obtaining the last line, computing line counts and heights for line counts
5127 // (crawling into blocks). 4962 // (crawling into blocks).
5128 static bool shouldCheckLines(RenderObject* obj) 4963 static bool shouldCheckLines(RenderObject* obj)
5129 { 4964 {
5130 return !obj->isFloatingOrOutOfFlowPositioned() && !obj->isRunIn() 4965 return !obj->isFloatingOrOutOfFlowPositioned()
5131 && obj->isRenderBlock() && obj->style()->height().isAuto() 4966 && obj->isRenderBlock() && obj->style()->height().isAuto()
5132 && (!obj->isDeprecatedFlexibleBox() || obj->style()->boxOrient() == VERT ICAL); 4967 && (!obj->isDeprecatedFlexibleBox() || obj->style()->boxOrient() == VERT ICAL);
5133 } 4968 }
5134 4969
5135 static int getHeightForLineCount(RenderBlock* block, int l, bool includeBottom, int& count) 4970 static int getHeightForLineCount(RenderBlock* block, int l, bool includeBottom, int& count)
5136 { 4971 {
5137 if (block->style()->visibility() == VISIBLE) { 4972 if (block->style()->visibility() == VISIBLE) {
5138 if (block->childrenInline()) { 4973 if (block->childrenInline()) {
5139 for (RootInlineBox* box = block->firstRootBox(); box; box = box->nex tRootBox()) { 4974 for (RootInlineBox* box = block->firstRootBox(); box; box = box->nex tRootBox()) {
5140 if (++count == l) 4975 if (++count == l)
5141 return box->lineBottom() + (includeBottom ? (block->borderBo ttom() + block->paddingBottom()) : LayoutUnit()); 4976 return box->lineBottom() + (includeBottom ? (block->borderBo ttom() + block->paddingBottom()) : LayoutUnit());
5142 } 4977 }
5143 } 4978 }
5144 else { 4979 else {
5145 RenderBox* normalFlowChildWithoutLines = 0; 4980 RenderBox* normalFlowChildWithoutLines = 0;
5146 for (RenderBox* obj = block->firstChildBox(); obj; obj = obj->nextSi blingBox()) { 4981 for (RenderBox* obj = block->firstChildBox(); obj; obj = obj->nextSi blingBox()) {
5147 if (shouldCheckLines(obj)) { 4982 if (shouldCheckLines(obj)) {
5148 int result = getHeightForLineCount(toRenderBlock(obj), l, fa lse, count); 4983 int result = getHeightForLineCount(toRenderBlock(obj), l, fa lse, count);
5149 if (result != -1) 4984 if (result != -1)
5150 return result + obj->y() + (includeBottom ? (block->bord erBottom() + block->paddingBottom()) : LayoutUnit()); 4985 return result + obj->y() + (includeBottom ? (block->bord erBottom() + block->paddingBottom()) : LayoutUnit());
5151 } else if (!obj->isFloatingOrOutOfFlowPositioned() && !obj->isRu nIn()) 4986 } else if (!obj->isFloatingOrOutOfFlowPositioned())
5152 normalFlowChildWithoutLines = obj; 4987 normalFlowChildWithoutLines = obj;
5153 } 4988 }
5154 if (normalFlowChildWithoutLines && l == 0) 4989 if (normalFlowChildWithoutLines && l == 0)
5155 return normalFlowChildWithoutLines->y() + normalFlowChildWithout Lines->height(); 4990 return normalFlowChildWithoutLines->y() + normalFlowChildWithout Lines->height();
5156 } 4991 }
5157 } 4992 }
5158 4993
5159 return -1; 4994 return -1;
5160 } 4995 }
5161 4996
(...skipping 785 matching lines...) Expand 10 before | Expand all | Expand 10 after
5947 return "RenderBlock (anonymous)"; 5782 return "RenderBlock (anonymous)";
5948 // FIXME: Temporary hack while the new generated content system is being imp lemented. 5783 // FIXME: Temporary hack while the new generated content system is being imp lemented.
5949 if (isPseudoElement()) 5784 if (isPseudoElement())
5950 return "RenderBlock (generated)"; 5785 return "RenderBlock (generated)";
5951 if (isAnonymous()) 5786 if (isAnonymous())
5952 return "RenderBlock (generated)"; 5787 return "RenderBlock (generated)";
5953 if (isRelPositioned()) 5788 if (isRelPositioned())
5954 return "RenderBlock (relative positioned)"; 5789 return "RenderBlock (relative positioned)";
5955 if (isStickyPositioned()) 5790 if (isStickyPositioned())
5956 return "RenderBlock (sticky positioned)"; 5791 return "RenderBlock (sticky positioned)";
5957 if (isRunIn())
5958 return "RenderBlock (run-in)";
5959 return "RenderBlock"; 5792 return "RenderBlock";
5960 } 5793 }
5961 5794
5962 template <typename CharacterType> 5795 template <typename CharacterType>
5963 static inline TextRun constructTextRunInternal(RenderObject* context, const Font & font, const CharacterType* characters, int length, RenderStyle* style, TextRun ::ExpansionBehavior expansion) 5796 static inline TextRun constructTextRunInternal(RenderObject* context, const Font & font, const CharacterType* characters, int length, RenderStyle* style, TextRun ::ExpansionBehavior expansion)
5964 { 5797 {
5965 ASSERT(style); 5798 ASSERT(style);
5966 5799
5967 TextDirection textDirection = LTR; 5800 TextDirection textDirection = LTR;
5968 bool directionalOverride = style->rtlOrdering() == VisualOrder; 5801 bool directionalOverride = style->rtlOrdering() == VisualOrder;
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
6089 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render Object* obj) const 5922 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render Object* obj) const
6090 { 5923 {
6091 showRenderObject(); 5924 showRenderObject();
6092 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot Box()) 5925 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot Box())
6093 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa bel2, obj, 1); 5926 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa bel2, obj, 1);
6094 } 5927 }
6095 5928
6096 #endif 5929 #endif
6097 5930
6098 } // namespace WebCore 5931 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderBlock.h ('k') | Source/core/rendering/RenderFileUploadControl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698