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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutBlock.cpp

Issue 1774943003: blink: Rename platform/ methods to prefix with get when they collide. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clash-platform: rebase-yayyyyyyyy Created 4 years, 9 months 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
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 859 matching lines...) Expand 10 before | Expand all | Expand 10 after
870 --gDelayUpdateScrollInfo; 870 --gDelayUpdateScrollInfo;
871 ASSERT(gDelayUpdateScrollInfo >= 0); 871 ASSERT(gDelayUpdateScrollInfo >= 0);
872 if (gDelayUpdateScrollInfo == 0) { 872 if (gDelayUpdateScrollInfo == 0) {
873 ASSERT(gDelayedUpdateScrollInfoSet); 873 ASSERT(gDelayedUpdateScrollInfoSet);
874 874
875 OwnPtr<DelayedUpdateScrollInfoSet> infoSet(adoptPtr(gDelayedUpdateScroll InfoSet)); 875 OwnPtr<DelayedUpdateScrollInfoSet> infoSet(adoptPtr(gDelayedUpdateScroll InfoSet));
876 gDelayedUpdateScrollInfoSet = nullptr; 876 gDelayedUpdateScrollInfoSet = nullptr;
877 877
878 for (auto* block : *infoSet) { 878 for (auto* block : *infoSet) {
879 if (block->hasOverflowClip()) { 879 if (block->hasOverflowClip()) {
880 childrenMarkedForRelayout |= block->layer()->scrollableArea()->u pdateAfterLayout(layoutScope); 880 childrenMarkedForRelayout |= block->layer()->getScrollableArea() ->updateAfterLayout(layoutScope);
881 } 881 }
882 } 882 }
883 } 883 }
884 return childrenMarkedForRelayout; 884 return childrenMarkedForRelayout;
885 } 885 }
886 886
887 void LayoutBlock::updateScrollInfoAfterLayout() 887 void LayoutBlock::updateScrollInfoAfterLayout()
888 { 888 {
889 if (hasOverflowClip()) { 889 if (hasOverflowClip()) {
890 if (style()->isFlippedBlocksWritingMode()) { 890 if (style()->isFlippedBlocksWritingMode()) {
891 // FIXME: https://bugs.webkit.org/show_bug.cgi?id=97937 891 // FIXME: https://bugs.webkit.org/show_bug.cgi?id=97937
892 // Workaround for now. We cannot delay the scroll info for overflow 892 // Workaround for now. We cannot delay the scroll info for overflow
893 // for items with opposite writing directions, as the contents needs 893 // for items with opposite writing directions, as the contents needs
894 // to overflow in that direction 894 // to overflow in that direction
895 layer()->scrollableArea()->updateAfterLayout(); 895 layer()->getScrollableArea()->updateAfterLayout();
896 return; 896 return;
897 } 897 }
898 898
899 if (gDelayUpdateScrollInfo) 899 if (gDelayUpdateScrollInfo)
900 gDelayedUpdateScrollInfoSet->add(this); 900 gDelayedUpdateScrollInfoSet->add(this);
901 else 901 else
902 layer()->scrollableArea()->updateAfterLayout(); 902 layer()->getScrollableArea()->updateAfterLayout();
903 } 903 }
904 } 904 }
905 905
906 void LayoutBlock::layout() 906 void LayoutBlock::layout()
907 { 907 {
908 LayoutAnalyzer::Scope analyzer(*this); 908 LayoutAnalyzer::Scope analyzer(*this);
909 909
910 bool needsScrollAnchoring = RuntimeEnabledFeatures::scrollAnchoringEnabled() && hasOverflowClip(); 910 bool needsScrollAnchoring = RuntimeEnabledFeatures::scrollAnchoringEnabled() && hasOverflowClip();
911 if (needsScrollAnchoring) 911 if (needsScrollAnchoring)
912 scrollableArea()->scrollAnchor().save(); 912 getScrollableArea()->scrollAnchor().save();
913 913
914 // Table cells call layoutBlock directly, so don't add any logic here. Put code into 914 // Table cells call layoutBlock directly, so don't add any logic here. Put code into
915 // layoutBlock(). 915 // layoutBlock().
916 layoutBlock(false); 916 layoutBlock(false);
917 917
918 // It's safe to check for control clip here, since controls can never be tab le cells. 918 // It's safe to check for control clip here, since controls can never be tab le cells.
919 // If we have a lightweight clip, there can never be any overflow from child ren. 919 // If we have a lightweight clip, there can never be any overflow from child ren.
920 if (hasControlClip() && m_overflow) 920 if (hasControlClip() && m_overflow)
921 clearLayoutOverflow(); 921 clearLayoutOverflow();
922 922
923 invalidateBackgroundObscurationStatus(); 923 invalidateBackgroundObscurationStatus();
924 924
925 if (needsScrollAnchoring) 925 if (needsScrollAnchoring)
926 scrollableArea()->scrollAnchor().restore(); 926 getScrollableArea()->scrollAnchor().restore();
927 927
928 m_heightAvailableToChildrenChanged = false; 928 m_heightAvailableToChildrenChanged = false;
929 } 929 }
930 930
931 bool LayoutBlock::widthAvailableToChildrenHasChanged() 931 bool LayoutBlock::widthAvailableToChildrenHasChanged()
932 { 932 {
933 // TODO(robhogan): Does m_widthAvailableToChildrenChanged always get reset w hen it needs to? 933 // TODO(robhogan): Does m_widthAvailableToChildrenChanged always get reset w hen it needs to?
934 bool widthAvailableToChildrenHasChanged = m_widthAvailableToChildrenChanged; 934 bool widthAvailableToChildrenHasChanged = m_widthAvailableToChildrenChanged;
935 m_widthAvailableToChildrenChanged = false; 935 m_widthAvailableToChildrenChanged = false;
936 936
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after
1596 afterLowest->markDirty(); 1596 afterLowest->markDirty();
1597 afterLowest = afterLowest->prevRootBox(); 1597 afterLowest = afterLowest->prevRootBox();
1598 } 1598 }
1599 } 1599 }
1600 1600
1601 bool LayoutBlock::isPointInOverflowControl(HitTestResult& result, const LayoutPo int& locationInContainer, const LayoutPoint& accumulatedOffset) const 1601 bool LayoutBlock::isPointInOverflowControl(HitTestResult& result, const LayoutPo int& locationInContainer, const LayoutPoint& accumulatedOffset) const
1602 { 1602 {
1603 if (!scrollsOverflow()) 1603 if (!scrollsOverflow())
1604 return false; 1604 return false;
1605 1605
1606 return layer()->scrollableArea()->hitTestOverflowControls(result, roundedInt Point(locationInContainer - toLayoutSize(accumulatedOffset))); 1606 return layer()->getScrollableArea()->hitTestOverflowControls(result, rounded IntPoint(locationInContainer - toLayoutSize(accumulatedOffset)));
1607 } 1607 }
1608 1608
1609 Node* LayoutBlock::nodeForHitTest() const 1609 Node* LayoutBlock::nodeForHitTest() const
1610 { 1610 {
1611 // If we are in the margins of block elements that are part of a 1611 // If we are in the margins of block elements that are part of a
1612 // continuation we're actually still inside the enclosing element 1612 // continuation we're actually still inside the enclosing element
1613 // that was split. Use the appropriate inner node. 1613 // that was split. Use the appropriate inner node.
1614 return isAnonymousBlockContinuation() ? continuation()->node() : node(); 1614 return isAnonymousBlockContinuation() ? continuation()->node() : node();
1615 } 1615 }
1616 1616
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
1918 1918
1919 if (hasOverflowClip()) 1919 if (hasOverflowClip())
1920 offset += LayoutSize(scrolledContentOffset()); 1920 offset += LayoutSize(scrolledContentOffset());
1921 1921
1922 offset = flipForWritingMode(offset); 1922 offset = flipForWritingMode(offset);
1923 } 1923 }
1924 1924
1925 int LayoutBlock::columnGap() const 1925 int LayoutBlock::columnGap() const
1926 { 1926 {
1927 if (style()->hasNormalColumnGap()) 1927 if (style()->hasNormalColumnGap())
1928 return style()->fontDescription().computedPixelSize(); // "1em" is recom mended as the normal gap setting. Matches <p> margins. 1928 return style()->getFontDescription().computedPixelSize(); // "1em" is re commended as the normal gap setting. Matches <p> margins.
1929 return static_cast<int>(style()->columnGap()); 1929 return static_cast<int>(style()->columnGap());
1930 } 1930 }
1931 1931
1932 void LayoutBlock::computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, Lay outUnit& maxLogicalWidth) const 1932 void LayoutBlock::computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, Lay outUnit& maxLogicalWidth) const
1933 { 1933 {
1934 // Layout-contained elements don't consider their contents for preferred siz ing. 1934 // Layout-contained elements don't consider their contents for preferred siz ing.
1935 if (style()->containsLayout()) 1935 if (style()->containsLayout())
1936 return; 1936 return;
1937 1937
1938 if (childrenInline()) { 1938 if (childrenInline()) {
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
2176 if (baselinePos != -1) 2176 if (baselinePos != -1)
2177 return beforeMarginInLineDirection(direction) + baselinePos; 2177 return beforeMarginInLineDirection(direction) + baselinePos;
2178 2178
2179 return LayoutBox::baselinePosition(baselineType, firstLine, direction, l inePositionMode); 2179 return LayoutBox::baselinePosition(baselineType, firstLine, direction, l inePositionMode);
2180 } 2180 }
2181 2181
2182 // If we're not replaced, we'll only get called with PositionOfInteriorLineB oxes. 2182 // If we're not replaced, we'll only get called with PositionOfInteriorLineB oxes.
2183 // Note that inline-block counts as replaced here. 2183 // Note that inline-block counts as replaced here.
2184 ASSERT(linePositionMode == PositionOfInteriorLineBoxes); 2184 ASSERT(linePositionMode == PositionOfInteriorLineBoxes);
2185 2185
2186 const FontMetrics& fontMetrics = style(firstLine)->fontMetrics(); 2186 const FontMetrics& fontMetrics = style(firstLine)->getFontMetrics();
2187 return fontMetrics.ascent(baselineType) + (lineHeight(firstLine, direction, linePositionMode) - fontMetrics.height()) / 2; 2187 return fontMetrics.ascent(baselineType) + (lineHeight(firstLine, direction, linePositionMode) - fontMetrics.height()) / 2;
2188 } 2188 }
2189 2189
2190 LayoutUnit LayoutBlock::minLineHeightForReplacedObject(bool isFirstLine, LayoutU nit replacedHeight) const 2190 LayoutUnit LayoutBlock::minLineHeightForReplacedObject(bool isFirstLine, LayoutU nit replacedHeight) const
2191 { 2191 {
2192 if (!document().inNoQuirksMode() && replacedHeight) 2192 if (!document().inNoQuirksMode() && replacedHeight)
2193 return replacedHeight; 2193 return replacedHeight;
2194 2194
2195 return std::max<LayoutUnit>(replacedHeight, lineHeight(isFirstLine, isHorizo ntalWritingMode() ? HorizontalLine : VerticalLine, PositionOfInteriorLineBoxes)) ; 2195 return std::max<LayoutUnit>(replacedHeight, lineHeight(isFirstLine, isHorizo ntalWritingMode() ? HorizontalLine : VerticalLine, PositionOfInteriorLineBoxes)) ;
2196 } 2196 }
2197 2197
2198 int LayoutBlock::firstLineBoxBaseline() const 2198 int LayoutBlock::firstLineBoxBaseline() const
2199 { 2199 {
2200 if (isWritingModeRoot() && !isRubyRun()) 2200 if (isWritingModeRoot() && !isRubyRun())
2201 return -1; 2201 return -1;
2202 2202
2203 if (childrenInline()) { 2203 if (childrenInline()) {
2204 if (firstLineBox()) 2204 if (firstLineBox())
2205 return firstLineBox()->logicalTop() + style(true)->fontMetrics().asc ent(firstRootBox()->baselineType()); 2205 return firstLineBox()->logicalTop() + style(true)->getFontMetrics(). ascent(firstRootBox()->baselineType());
2206 return -1; 2206 return -1;
2207 } 2207 }
2208 for (LayoutBox* curr = firstChildBox(); curr; curr = curr->nextSiblingBox()) { 2208 for (LayoutBox* curr = firstChildBox(); curr; curr = curr->nextSiblingBox()) {
2209 if (!curr->isFloatingOrOutOfFlowPositioned()) { 2209 if (!curr->isFloatingOrOutOfFlowPositioned()) {
2210 int result = curr->firstLineBoxBaseline(); 2210 int result = curr->firstLineBoxBaseline();
2211 if (result != -1) 2211 if (result != -1)
2212 return curr->logicalTop() + result; // Translate to our coordina te space. 2212 return curr->logicalTop() + result; // Translate to our coordina te space.
2213 } 2213 }
2214 } 2214 }
2215 return -1; 2215 return -1;
(...skipping 13 matching lines...) Expand all
2229 if ((!style()->isOverflowVisible() && !shouldIgnoreOverflowPropertyForInline BlockBaseline()) || style()->containsLayout()) { 2229 if ((!style()->isOverflowVisible() && !shouldIgnoreOverflowPropertyForInline BlockBaseline()) || style()->containsLayout()) {
2230 // We are not calling LayoutBox::baselinePosition here because the calle r should add the margin-top/margin-right, not us. 2230 // We are not calling LayoutBox::baselinePosition here because the calle r should add the margin-top/margin-right, not us.
2231 return lineDirection == HorizontalLine ? size().height() + marginBottom( ) : size().width() + marginLeft(); 2231 return lineDirection == HorizontalLine ? size().height() + marginBottom( ) : size().width() + marginLeft();
2232 } 2232 }
2233 2233
2234 if (isWritingModeRoot() && !isRubyRun()) 2234 if (isWritingModeRoot() && !isRubyRun())
2235 return -1; 2235 return -1;
2236 2236
2237 if (childrenInline()) { 2237 if (childrenInline()) {
2238 if (!firstLineBox() && hasLineIfEmpty()) { 2238 if (!firstLineBox() && hasLineIfEmpty()) {
2239 const FontMetrics& fontMetrics = firstLineStyle()->fontMetrics(); 2239 const FontMetrics& fontMetrics = firstLineStyle()->getFontMetrics();
2240 return fontMetrics.ascent() 2240 return fontMetrics.ascent()
2241 + (lineHeight(true, lineDirection, PositionOfInteriorLineBoxes) - fontMetrics.height()) / 2 2241 + (lineHeight(true, lineDirection, PositionOfInteriorLineBoxes) - fontMetrics.height()) / 2
2242 + (lineDirection == HorizontalLine ? borderTop() + paddingTop() : borderRight() + paddingRight()); 2242 + (lineDirection == HorizontalLine ? borderTop() + paddingTop() : borderRight() + paddingRight());
2243 } 2243 }
2244 if (lastLineBox()) 2244 if (lastLineBox())
2245 return lastLineBox()->logicalTop() + style(lastLineBox() == firstLin eBox())->fontMetrics().ascent(lastRootBox()->baselineType()); 2245 return lastLineBox()->logicalTop() + style(lastLineBox() == firstLin eBox())->getFontMetrics().ascent(lastRootBox()->baselineType());
2246 return -1; 2246 return -1;
2247 } 2247 }
2248 2248
2249 bool haveNormalFlowChild = false; 2249 bool haveNormalFlowChild = false;
2250 for (LayoutBox* curr = lastChildBox(); curr; curr = curr->previousSiblingBox ()) { 2250 for (LayoutBox* curr = lastChildBox(); curr; curr = curr->previousSiblingBox ()) {
2251 if (!curr->isFloatingOrOutOfFlowPositioned()) { 2251 if (!curr->isFloatingOrOutOfFlowPositioned()) {
2252 haveNormalFlowChild = true; 2252 haveNormalFlowChild = true;
2253 int result = curr->inlineBlockBaseline(lineDirection); 2253 int result = curr->inlineBlockBaseline(lineDirection);
2254 if (result != -1) 2254 if (result != -1)
2255 return curr->logicalTop() + result; // Translate to our coordina te space. 2255 return curr->logicalTop() + result; // Translate to our coordina te space.
2256 } 2256 }
2257 } 2257 }
2258 if (!haveNormalFlowChild && hasLineIfEmpty()) { 2258 if (!haveNormalFlowChild && hasLineIfEmpty()) {
2259 const FontMetrics& fontMetrics = firstLineStyle()->fontMetrics(); 2259 const FontMetrics& fontMetrics = firstLineStyle()->getFontMetrics();
2260 return fontMetrics.ascent() 2260 return fontMetrics.ascent()
2261 + (lineHeight(true, lineDirection, PositionOfInteriorLineBoxes) - fo ntMetrics.height()) / 2 2261 + (lineHeight(true, lineDirection, PositionOfInteriorLineBoxes) - fo ntMetrics.height()) / 2
2262 + (lineDirection == HorizontalLine ? borderTop() + paddingTop() : bo rderRight() + paddingRight()); 2262 + (lineDirection == HorizontalLine ? borderTop() + paddingTop() : bo rderRight() + paddingRight());
2263 } 2263 }
2264 return -1; 2264 return -1;
2265 } 2265 }
2266 2266
2267 LayoutBlock* LayoutBlock::enclosingFirstLineStyleBlock() const 2267 LayoutBlock* LayoutBlock::enclosingFirstLineStyleBlock() const
2268 { 2268 {
2269 LayoutBlock* firstLineBlock = const_cast<LayoutBlock*>(this); 2269 LayoutBlock* firstLineBlock = const_cast<LayoutBlock*>(this);
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after
2797 clearSelfNeedsOverflowRecalcAfterStyleChange(); 2797 clearSelfNeedsOverflowRecalcAfterStyleChange();
2798 // If the current block needs layout, overflow will be recalculated during 2798 // If the current block needs layout, overflow will be recalculated during
2799 // layout time anyway. We can safely exit here. 2799 // layout time anyway. We can safely exit here.
2800 if (needsLayout()) 2800 if (needsLayout())
2801 return false; 2801 return false;
2802 2802
2803 LayoutUnit oldClientAfterEdge = hasOverflowModel() ? m_overflow->layoutClien tAfterEdge() : clientLogicalBottom(); 2803 LayoutUnit oldClientAfterEdge = hasOverflowModel() ? m_overflow->layoutClien tAfterEdge() : clientLogicalBottom();
2804 computeOverflow(oldClientAfterEdge, true); 2804 computeOverflow(oldClientAfterEdge, true);
2805 2805
2806 if (hasOverflowClip()) 2806 if (hasOverflowClip())
2807 layer()->scrollableArea()->updateAfterOverflowRecalc(); 2807 layer()->getScrollableArea()->updateAfterOverflowRecalc();
2808 2808
2809 return !hasOverflowClip(); 2809 return !hasOverflowClip();
2810 } 2810 }
2811 2811
2812 // Called when a positioned object moves but doesn't necessarily change size. A simplified layout is attempted 2812 // Called when a positioned object moves but doesn't necessarily change size. A simplified layout is attempted
2813 // that just updates the object's position. If the size does change, the object remains dirty. 2813 // that just updates the object's position. If the size does change, the object remains dirty.
2814 bool LayoutBlock::tryLayoutDoingPositionedMovementOnly() 2814 bool LayoutBlock::tryLayoutDoingPositionedMovementOnly()
2815 { 2815 {
2816 LayoutUnit oldWidth = logicalWidth(); 2816 LayoutUnit oldWidth = logicalWidth();
2817 LogicalExtentComputedValues computedValues; 2817 LogicalExtentComputedValues computedValues;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
2865 void LayoutBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Layout Object* obj) const 2865 void LayoutBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Layout Object* obj) const
2866 { 2866 {
2867 showLayoutObject(); 2867 showLayoutObject();
2868 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot Box()) 2868 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot Box())
2869 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa bel2, obj, 1); 2869 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa bel2, obj, 1);
2870 } 2870 }
2871 2871
2872 #endif 2872 #endif
2873 2873
2874 } // namespace blink 2874 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/HitTestResult.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutBlockFlowLine.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698