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

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

Issue 2387883002: Use float for scroll offset. (Closed)
Patch Set: Created 4 years, 2 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) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com)
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 if (isOrthogonalWritingModeRoot()) 249 if (isOrthogonalWritingModeRoot())
250 markOrthogonalWritingModeRoot(); 250 markOrthogonalWritingModeRoot();
251 else 251 else
252 unmarkOrthogonalWritingModeRoot(); 252 unmarkOrthogonalWritingModeRoot();
253 } 253 }
254 254
255 clearPercentHeightDescendants(); 255 clearPercentHeightDescendants();
256 } 256 }
257 257
258 // If our zoom factor changes and we have a defined scrollLeft/Top, we need to adjust that value into the 258 // If our zoom factor changes and we have a defined scrollLeft/Top, we need to adjust that value into the
259 // new zoomed coordinate space. Note that the new scroll position may be outs ide the normal min/max 259 // new zoomed coordinate space. Note that the new scroll offset may be outsid e the normal min/max
260 // range of the scrollable area, which is weird but OK, because the scrollable area will update its 260 // range of the scrollable area, which is weird but OK, because the scrollable area will update its
261 // min/max in updateAfterLayout(). 261 // min/max in updateAfterLayout().
262 if (hasOverflowClip() && oldStyle && 262 if (hasOverflowClip() && oldStyle &&
263 oldStyle->effectiveZoom() != newStyle.effectiveZoom()) { 263 oldStyle->effectiveZoom() != newStyle.effectiveZoom()) {
264 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea(); 264 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea();
265 ASSERT(scrollableArea); 265 ASSERT(scrollableArea);
266 // We use scrollPosition() rather than offsetFromOrigin(), because scrollPos ition is the distance 266 // We use scrollOffset() rather than offsetFromOrigin(), because scrollOffse t is the distance
267 // from the beginning of flow for the box, which is the dimension we want to preserve. 267 // from the beginning of flow for the box, which is the dimension we want to preserve.
268 DoublePoint oldPosition = scrollableArea->scrollPositionDouble(); 268 ScrollOffset oldOffset = scrollableArea->scrollOffset();
269 if (oldPosition.x() || oldPosition.y()) { 269 if (oldOffset.width() || oldOffset.height()) {
270 DoublePoint newPosition = oldPosition.scaledBy(newStyle.effectiveZoom() / 270 ScrollOffset newOffset = oldOffset.scaledBy(newStyle.effectiveZoom() /
271 oldStyle->effectiveZoom()); 271 oldStyle->effectiveZoom());
272 scrollableArea->setScrollPositionUnconditionally(newPosition); 272 scrollableArea->setScrollOffsetUnconditionally(newOffset);
273 } 273 }
274 } 274 }
275 275
276 // Our opaqueness might have changed without triggering layout. 276 // Our opaqueness might have changed without triggering layout.
277 if (diff.needsPaintInvalidation()) { 277 if (diff.needsPaintInvalidation()) {
278 LayoutObject* parentToInvalidate = parent(); 278 LayoutObject* parentToInvalidate = parent();
279 for (unsigned i = 0; 279 for (unsigned i = 0;
280 i < backgroundObscurationTestMaxDepth && parentToInvalidate; ++i) { 280 i < backgroundObscurationTestMaxDepth && parentToInvalidate; ++i) {
281 parentToInvalidate->invalidateBackgroundObscurationStatus(); 281 parentToInvalidate->invalidateBackgroundObscurationStatus();
282 parentToInvalidate = parentToInvalidate->parent(); 282 parentToInvalidate = parentToInvalidate->parent();
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 LayoutUnit LayoutBox::scrollHeight() const { 508 LayoutUnit LayoutBox::scrollHeight() const {
509 if (hasOverflowClip()) 509 if (hasOverflowClip())
510 return getScrollableArea()->scrollHeight(); 510 return getScrollableArea()->scrollHeight();
511 // For objects with visible overflow, this matches IE. 511 // For objects with visible overflow, this matches IE.
512 // FIXME: Need to work right with writing modes. 512 // FIXME: Need to work right with writing modes.
513 return std::max(clientHeight(), layoutOverflowRect().maxY() - borderTop()); 513 return std::max(clientHeight(), layoutOverflowRect().maxY() - borderTop());
514 } 514 }
515 515
516 LayoutUnit LayoutBox::scrollLeft() const { 516 LayoutUnit LayoutBox::scrollLeft() const {
517 return hasOverflowClip() 517 return hasOverflowClip()
518 ? LayoutUnit(getScrollableArea()->offsetFromOrigin().width()) 518 ? LayoutUnit(getScrollableArea()->absolutePosition().x())
519 : LayoutUnit(); 519 : LayoutUnit();
520 } 520 }
521 521
522 LayoutUnit LayoutBox::scrollTop() const { 522 LayoutUnit LayoutBox::scrollTop() const {
523 return hasOverflowClip() 523 return hasOverflowClip()
524 ? LayoutUnit(getScrollableArea()->offsetFromOrigin().height()) 524 ? LayoutUnit(getScrollableArea()->absolutePosition().y())
525 : LayoutUnit(); 525 : LayoutUnit();
526 } 526 }
527 527
528 int LayoutBox::pixelSnappedScrollWidth() const { 528 int LayoutBox::pixelSnappedScrollWidth() const {
529 return snapSizeToPixel(scrollWidth(), location().x() + clientLeft()); 529 return snapSizeToPixel(scrollWidth(), location().x() + clientLeft());
530 } 530 }
531 531
532 int LayoutBox::pixelSnappedScrollHeight() const { 532 int LayoutBox::pixelSnappedScrollHeight() const {
533 if (hasOverflowClip()) 533 if (hasOverflowClip())
534 return snapSizeToPixel(getScrollableArea()->scrollHeight(), 534 return snapSizeToPixel(getScrollableArea()->scrollHeight(),
535 location().y() + clientTop()); 535 location().y() + clientTop());
536 // For objects with visible overflow, this matches IE. 536 // For objects with visible overflow, this matches IE.
537 // FIXME: Need to work right with writing modes. 537 // FIXME: Need to work right with writing modes.
538 return snapSizeToPixel(scrollHeight(), location().y() + clientTop()); 538 return snapSizeToPixel(scrollHeight(), location().y() + clientTop());
539 } 539 }
540 540
541 void LayoutBox::setScrollLeft(LayoutUnit newLeft) { 541 void LayoutBox::setScrollLeft(LayoutUnit newLeft) {
542 // This doesn't hit in any tests, but since the equivalent code in setScrollTo p 542 // This doesn't hit in any tests, but since the equivalent code in setScrollTo p
543 // does, presumably this code does as well. 543 // does, presumably this code does as well.
544 DisableCompositingQueryAsserts disabler; 544 DisableCompositingQueryAsserts disabler;
545 545
546 if (!hasOverflowClip()) 546 if (!hasOverflowClip())
547 return; 547 return;
548 548
549 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); 549 PaintLayerScrollableArea* scrollableArea = getScrollableArea();
550 DoubleSize newOffset(newLeft, scrollableArea->offsetFromOrigin().height()); 550 FloatPoint newPosition(newLeft.toFloat(),
551 scrollableArea->scrollToOffsetFromOrigin(newOffset, ScrollBehaviorAuto); 551 scrollableArea->absolutePosition().y());
552 scrollableArea->scrollToAbsolutePosition(newPosition, ScrollBehaviorAuto);
552 } 553 }
553 554
554 void LayoutBox::setScrollTop(LayoutUnit newTop) { 555 void LayoutBox::setScrollTop(LayoutUnit newTop) {
555 // Hits in compositing/overflow/do-not-assert-on-invisible-composited-layers.h tml 556 // Hits in compositing/overflow/do-not-assert-on-invisible-composited-layers.h tml
556 DisableCompositingQueryAsserts disabler; 557 DisableCompositingQueryAsserts disabler;
557 558
558 if (!hasOverflowClip()) 559 if (!hasOverflowClip())
559 return; 560 return;
560 561
561 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); 562 PaintLayerScrollableArea* scrollableArea = getScrollableArea();
562 DoubleSize newOffset(scrollableArea->offsetFromOrigin().width(), newTop); 563 FloatPoint newPosition(scrollableArea->absolutePosition().x(),
563 scrollableArea->scrollToOffsetFromOrigin(newOffset, ScrollBehaviorAuto); 564 newTop.toFloat());
565 scrollableArea->scrollToAbsolutePosition(newPosition, ScrollBehaviorAuto);
564 } 566 }
565 567
566 void LayoutBox::scrollToOffset(const DoubleSize& offset, 568 void LayoutBox::scrollToPosition(const FloatPoint& position,
567 ScrollBehavior scrollBehavior) { 569 ScrollBehavior scrollBehavior) {
568 // This doesn't hit in any tests, but since the equivalent code in setScrollTo p 570 // This doesn't hit in any tests, but since the equivalent code in setScrollTo p
569 // does, presumably this code does as well. 571 // does, presumably this code does as well.
570 DisableCompositingQueryAsserts disabler; 572 DisableCompositingQueryAsserts disabler;
571 573
572 if (!hasOverflowClip()) 574 if (!hasOverflowClip())
573 return; 575 return;
574 576
575 getScrollableArea()->scrollToOffsetFromOrigin(offset, scrollBehavior); 577 getScrollableArea()->scrollToAbsolutePosition(position, scrollBehavior);
576 } 578 }
577 579
578 // Returns true iff we are attempting an autoscroll inside an iframe with scroll ing="no". 580 // Returns true iff we are attempting an autoscroll inside an iframe with scroll ing="no".
579 static bool isDisallowedAutoscroll(HTMLFrameOwnerElement* ownerElement, 581 static bool isDisallowedAutoscroll(HTMLFrameOwnerElement* ownerElement,
580 FrameView* frameView) { 582 FrameView* frameView) {
581 if (ownerElement && isHTMLFrameElementBase(*ownerElement)) { 583 if (ownerElement && isHTMLFrameElementBase(*ownerElement)) {
582 HTMLFrameElementBase* frameElementBase = 584 HTMLFrameElementBase* frameElementBase =
583 toHTMLFrameElementBase(ownerElement); 585 toHTMLFrameElementBase(ownerElement);
584 if (Page* page = frameView->frame().page()) { 586 if (Page* page = frameView->frame().page()) {
585 return page->autoscrollController().autoscrollInProgress() && 587 return page->autoscrollController().autoscrollInProgress() &&
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
996 IntSize LayoutBox::calculateAutoscrollDirection( 998 IntSize LayoutBox::calculateAutoscrollDirection(
997 const IntPoint& pointInRootFrame) const { 999 const IntPoint& pointInRootFrame) const {
998 if (!frame()) 1000 if (!frame())
999 return IntSize(); 1001 return IntSize();
1000 1002
1001 FrameView* frameView = frame()->view(); 1003 FrameView* frameView = frame()->view();
1002 if (!frameView) 1004 if (!frameView)
1003 return IntSize(); 1005 return IntSize();
1004 1006
1005 IntRect box(absoluteBoundingBoxRect()); 1007 IntRect box(absoluteBoundingBoxRect());
1006 box.move(view()->frameView()->scrollOffset()); 1008 box.move(view()->frameView()->scrollOffsetInt());
1007 IntRect windowBox = view()->frameView()->contentsToRootFrame(box); 1009 IntRect windowBox = view()->frameView()->contentsToRootFrame(box);
1008 1010
1009 IntPoint windowAutoscrollPoint = pointInRootFrame; 1011 IntPoint windowAutoscrollPoint = pointInRootFrame;
1010 1012
1011 if (windowAutoscrollPoint.x() < windowBox.x() + autoscrollBeltSize) 1013 if (windowAutoscrollPoint.x() < windowBox.x() + autoscrollBeltSize)
1012 windowAutoscrollPoint.move(-autoscrollBeltSize, 0); 1014 windowAutoscrollPoint.move(-autoscrollBeltSize, 0);
1013 else if (windowAutoscrollPoint.x() > windowBox.maxX() - autoscrollBeltSize) 1015 else if (windowAutoscrollPoint.x() > windowBox.maxX() - autoscrollBeltSize)
1014 windowAutoscrollPoint.move(autoscrollBeltSize, 0); 1016 windowAutoscrollPoint.move(autoscrollBeltSize, 0);
1015 1017
1016 if (windowAutoscrollPoint.y() < windowBox.y() + autoscrollBeltSize) 1018 if (windowAutoscrollPoint.y() < windowBox.y() + autoscrollBeltSize)
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1080 if (abs(delta.width()) <= 1082 if (abs(delta.width()) <=
1081 AutoscrollController:: 1083 AutoscrollController::
1082 noMiddleClickAutoscrollRadius) // at the center we let the space for the icon 1084 noMiddleClickAutoscrollRadius) // at the center we let the space for the icon
1083 delta.setWidth(0); 1085 delta.setWidth(0);
1084 if (abs(delta.height()) <= 1086 if (abs(delta.height()) <=
1085 AutoscrollController::noMiddleClickAutoscrollRadius) 1087 AutoscrollController::noMiddleClickAutoscrollRadius)
1086 delta.setHeight(0); 1088 delta.setHeight(0);
1087 scroll(ScrollByPixel, FloatSize(adjustedScrollDelta(delta))); 1089 scroll(ScrollByPixel, FloatSize(adjustedScrollDelta(delta)));
1088 } 1090 }
1089 1091
1090 void LayoutBox::scrollByRecursively(const DoubleSize& delta) { 1092 void LayoutBox::scrollByRecursively(const ScrollOffset& delta) {
1091 if (delta.isZero()) 1093 if (delta.isZero())
1092 return; 1094 return;
1093 1095
1094 bool restrictedByLineClamp = false; 1096 bool restrictedByLineClamp = false;
1095 if (parent()) 1097 if (parent())
1096 restrictedByLineClamp = !parent()->style()->lineClamp().isNone(); 1098 restrictedByLineClamp = !parent()->style()->lineClamp().isNone();
1097 1099
1098 if (hasOverflowClip() && !restrictedByLineClamp) { 1100 if (hasOverflowClip() && !restrictedByLineClamp) {
1099 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea(); 1101 PaintLayerScrollableArea* scrollableArea = this->getScrollableArea();
1100 ASSERT(scrollableArea); 1102 ASSERT(scrollableArea);
1101 1103
1102 DoubleSize newScrollOffset = scrollableArea->offsetFromOrigin() + delta; 1104 ScrollOffset newScrollOffset = scrollableArea->scrollOffset() + delta;
1103 scrollableArea->scrollToOffsetFromOrigin(newScrollOffset); 1105 scrollableArea->setScrollOffset(newScrollOffset, ProgrammaticScroll);
1104 1106
1105 // If this layer can't do the scroll we ask the next layer up that can scrol l to try 1107 // If this layer can't do the scroll we ask the next layer up that can scrol l to try
1106 DoubleSize remainingScrollOffset = 1108 ScrollOffset remainingScrollOffset =
1107 newScrollOffset - scrollableArea->offsetFromOrigin(); 1109 newScrollOffset - scrollableArea->scrollOffset();
1108 if (!remainingScrollOffset.isZero() && parent()) { 1110 if (!remainingScrollOffset.isZero() && parent()) {
1109 if (LayoutBox* scrollableBox = enclosingScrollableBox()) 1111 if (LayoutBox* scrollableBox = enclosingScrollableBox())
1110 scrollableBox->scrollByRecursively(remainingScrollOffset); 1112 scrollableBox->scrollByRecursively(remainingScrollOffset);
1111 1113
1112 LocalFrame* frame = this->frame(); 1114 LocalFrame* frame = this->frame();
1113 if (frame && frame->page()) 1115 if (frame && frame->page())
1114 frame->page()->autoscrollController().updateAutoscrollLayoutObject(); 1116 frame->page()->autoscrollController().updateAutoscrollLayoutObject();
1115 } 1117 }
1116 } else if (view()->frameView()) { 1118 } else if (view()->frameView()) {
1117 // If we are here, we were called on a layoutObject that can be programmatic ally scrolled, but doesn't 1119 // If we are here, we were called on a layoutObject that can be programmatic ally scrolled, but doesn't
1118 // have an overflow clip. Which means that it is a document node that can be scrolled. 1120 // have an overflow clip. Which means that it is a document node that can be scrolled.
1119 // FIXME: Pass in DoubleSize. crbug.com/414283. 1121 // FIXME: Pass in DoubleSize. crbug.com/414283.
1120 view()->frameView()->scrollBy(flooredIntSize(delta), UserScroll); 1122 view()->frameView()->scrollBy(delta, UserScroll);
1121 1123
1122 // FIXME: If we didn't scroll the whole way, do we want to try looking at th e frames ownerElement? 1124 // FIXME: If we didn't scroll the whole way, do we want to try looking at th e frames ownerElement?
1123 // https://bugs.webkit.org/show_bug.cgi?id=28237 1125 // https://bugs.webkit.org/show_bug.cgi?id=28237
1124 } 1126 }
1125 } 1127 }
1126 1128
1127 bool LayoutBox::needsPreferredWidthsRecalculation() const { 1129 bool LayoutBox::needsPreferredWidthsRecalculation() const {
1128 return style()->paddingStart().isPercentOrCalc() || 1130 return style()->paddingStart().isPercentOrCalc() ||
1129 style()->paddingEnd().isPercentOrCalc(); 1131 style()->paddingEnd().isPercentOrCalc();
1130 } 1132 }
1131 1133
1132 IntSize LayoutBox::originAdjustmentForScrollbars() const { 1134 IntSize LayoutBox::originAdjustmentForScrollbars() const {
1133 IntSize size; 1135 IntSize size;
1134 int adjustmentWidth = verticalScrollbarWidth(); 1136 int adjustmentWidth = verticalScrollbarWidth();
1135 if (hasFlippedBlocksWritingMode() || 1137 if (hasFlippedBlocksWritingMode() ||
1136 (isHorizontalWritingMode() && 1138 (isHorizontalWritingMode() &&
1137 shouldPlaceBlockDirectionScrollbarOnLogicalLeft())) { 1139 shouldPlaceBlockDirectionScrollbarOnLogicalLeft())) {
1138 size.expand(adjustmentWidth, 0); 1140 size.expand(adjustmentWidth, 0);
1139 } 1141 }
1140 return size; 1142 return size;
1141 } 1143 }
1142 1144
1143 IntSize LayoutBox::scrolledContentOffset() const { 1145 IntSize LayoutBox::scrolledContentOffset() const {
1144 ASSERT(hasOverflowClip()); 1146 ASSERT(hasOverflowClip());
1145 ASSERT(hasLayer()); 1147 ASSERT(hasLayer());
1146 // FIXME: Return DoubleSize here. crbug.com/414283. 1148 // FIXME: Return DoubleSize here. crbug.com/414283.
1147 PaintLayerScrollableArea* scrollableArea = getScrollableArea(); 1149 PaintLayerScrollableArea* scrollableArea = getScrollableArea();
1148 IntSize result = flooredIntSize(scrollableArea->scrollPosition()) + 1150 IntSize result =
1149 originAdjustmentForScrollbars(); 1151 scrollableArea->scrollOffsetInt() + originAdjustmentForScrollbars();
1150 if (isHorizontalWritingMode() && 1152 if (isHorizontalWritingMode() &&
1151 shouldPlaceBlockDirectionScrollbarOnLogicalLeft()) 1153 shouldPlaceBlockDirectionScrollbarOnLogicalLeft())
1152 result.expand(-verticalScrollbarWidth(), 0); 1154 result.expand(-verticalScrollbarWidth(), 0);
1153 return result; 1155 return result;
1154 } 1156 }
1155 1157
1156 LayoutRect LayoutBox::clippingRect() const { 1158 LayoutRect LayoutBox::clippingRect() const {
1157 LayoutRect result = LayoutRect(LayoutRect::infiniteIntRect()); 1159 LayoutRect result = LayoutRect(LayoutRect::infiniteIntRect());
1158 if (hasOverflowClip() || style()->containsPaint()) 1160 if (hasOverflowClip() || style()->containsPaint())
1159 result = overflowClipRect(LayoutPoint()); 1161 result = overflowClipRect(LayoutPoint());
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after
1726 } 1728 }
1727 1729
1728 bool LayoutBox::intersectsVisibleViewport() const { 1730 bool LayoutBox::intersectsVisibleViewport() const {
1729 LayoutRect rect = visualOverflowRect(); 1731 LayoutRect rect = visualOverflowRect();
1730 LayoutView* layoutView = view(); 1732 LayoutView* layoutView = view();
1731 while (!layoutView->frame()->ownerLayoutItem().isNull()) 1733 while (!layoutView->frame()->ownerLayoutItem().isNull())
1732 layoutView = 1734 layoutView =
1733 LayoutAPIShim::layoutObjectFrom(layoutView->frame()->ownerLayoutItem()) 1735 LayoutAPIShim::layoutObjectFrom(layoutView->frame()->ownerLayoutItem())
1734 ->view(); 1736 ->view();
1735 mapToVisualRectInAncestorSpace(layoutView, rect); 1737 mapToVisualRectInAncestorSpace(layoutView, rect);
1736 return rect.intersects(LayoutRect(layoutView->frameView() 1738 return rect.intersects(LayoutRect(
1737 ->getScrollableArea() 1739 layoutView->frameView()->getScrollableArea()->visibleContentRect()));
1738 ->visibleContentRectDouble()));
1739 } 1740 }
1740 1741
1741 PaintInvalidationReason LayoutBox::invalidatePaintIfNeeded( 1742 PaintInvalidationReason LayoutBox::invalidatePaintIfNeeded(
1742 const PaintInvalidationState& paintInvalidationState) { 1743 const PaintInvalidationState& paintInvalidationState) {
1743 if (hasBoxDecorationBackground() 1744 if (hasBoxDecorationBackground()
1744 // We also paint overflow controls in background phase. 1745 // We also paint overflow controls in background phase.
1745 || (hasOverflowClip() && getScrollableArea()->hasOverflowControls())) { 1746 || (hasOverflowClip() && getScrollableArea()->hasOverflowControls())) {
1746 PaintLayer& layer = paintInvalidationState.paintingLayer(); 1747 PaintLayer& layer = paintInvalidationState.paintingLayer();
1747 if (layer.layoutObject() != this) 1748 if (layer.layoutObject() != this)
1748 layer.setNeedsPaintPhaseDescendantBlockBackgrounds(); 1749 layer.setNeedsPaintPhaseDescendantBlockBackgrounds();
(...skipping 3725 matching lines...) Expand 10 before | Expand all | Expand 10 after
5474 LayoutRect rect = frameRect(); 5475 LayoutRect rect = frameRect();
5475 5476
5476 LayoutBlock* block = containingBlock(); 5477 LayoutBlock* block = containingBlock();
5477 if (block) 5478 if (block)
5478 block->adjustChildDebugRect(rect); 5479 block->adjustChildDebugRect(rect);
5479 5480
5480 return rect; 5481 return rect;
5481 } 5482 }
5482 5483
5483 } // namespace blink 5484 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698