Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 2850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2861 bool skippedAutoHeightContainingBlock = false; | 2861 bool skippedAutoHeightContainingBlock = false; |
| 2862 RenderBlock* cb = containingBlock(); | 2862 RenderBlock* cb = containingBlock(); |
| 2863 const RenderBox* containingBlockChild = this; | 2863 const RenderBox* containingBlockChild = this; |
| 2864 LayoutUnit rootMarginBorderPaddingHeight = 0; | 2864 LayoutUnit rootMarginBorderPaddingHeight = 0; |
| 2865 while (!cb->isRenderView() && skipContainingBlockForPercentHeightCalculation (cb)) { | 2865 while (!cb->isRenderView() && skipContainingBlockForPercentHeightCalculation (cb)) { |
| 2866 if (cb->isBody() || cb->isRoot()) | 2866 if (cb->isBody() || cb->isRoot()) |
| 2867 rootMarginBorderPaddingHeight += cb->marginBefore() + cb->marginAfte r() + cb->borderAndPaddingLogicalHeight(); | 2867 rootMarginBorderPaddingHeight += cb->marginBefore() + cb->marginAfte r() + cb->borderAndPaddingLogicalHeight(); |
| 2868 skippedAutoHeightContainingBlock = true; | 2868 skippedAutoHeightContainingBlock = true; |
| 2869 containingBlockChild = cb; | 2869 containingBlockChild = cb; |
| 2870 cb = cb->containingBlock(); | 2870 cb = cb->containingBlock(); |
| 2871 cb->addPercentHeightDescendant(const_cast<RenderBox*>(this)); | |
| 2872 } | 2871 } |
| 2872 cb->addPercentHeightDescendant(const_cast<RenderBox*>(this)); | |
|
ojan
2014/01/03 02:04:26
I'm still not sure this is correct. For example, t
Xianzhu
2014/01/03 20:46:24
Actually percentHeightDescendants set doesn't incl
| |
| 2873 | 2873 |
| 2874 RenderStyle* cbstyle = cb->style(); | 2874 RenderStyle* cbstyle = cb->style(); |
| 2875 | 2875 |
| 2876 // A positioned element that specified both top/bottom or that specifies hei ght should be treated as though it has a height | 2876 // A positioned element that specified both top/bottom or that specifies hei ght should be treated as though it has a height |
| 2877 // explicitly specified that can be used for any percentage computations. | 2877 // explicitly specified that can be used for any percentage computations. |
| 2878 bool isOutOfFlowPositionedWithSpecifiedHeight = cb->isOutOfFlowPositioned() && (!cbstyle->logicalHeight().isAuto() || (!cbstyle->logicalTop().isAuto() && !c bstyle->logicalBottom().isAuto())); | 2878 bool isOutOfFlowPositionedWithSpecifiedHeight = cb->isOutOfFlowPositioned() && (!cbstyle->logicalHeight().isAuto() || (!cbstyle->logicalTop().isAuto() && !c bstyle->logicalBottom().isAuto())); |
| 2879 | 2879 |
| 2880 bool includeBorderPadding = isTable(); | 2880 bool includeBorderPadding = isTable(); |
| 2881 | 2881 |
| 2882 if (isHorizontalWritingMode() != cb->isHorizontalWritingMode()) | 2882 if (isHorizontalWritingMode() != cb->isHorizontalWritingMode()) |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3027 | 3027 |
| 3028 LayoutUnit RenderBox::computeReplacedLogicalHeightUsing(Length logicalHeight) co nst | 3028 LayoutUnit RenderBox::computeReplacedLogicalHeightUsing(Length logicalHeight) co nst |
| 3029 { | 3029 { |
| 3030 switch (logicalHeight.type()) { | 3030 switch (logicalHeight.type()) { |
| 3031 case Fixed: | 3031 case Fixed: |
| 3032 return adjustContentBoxLogicalHeightForBoxSizing(logicalHeight.value ()); | 3032 return adjustContentBoxLogicalHeightForBoxSizing(logicalHeight.value ()); |
| 3033 case Percent: | 3033 case Percent: |
| 3034 case Calculated: | 3034 case Calculated: |
| 3035 { | 3035 { |
| 3036 RenderObject* cb = isOutOfFlowPositioned() ? container() : containin gBlock(); | 3036 RenderObject* cb = isOutOfFlowPositioned() ? container() : containin gBlock(); |
| 3037 while (cb->isAnonymous()) { | 3037 while (cb->isAnonymous()) |
| 3038 cb = cb->containingBlock(); | 3038 cb = cb->containingBlock(); |
| 3039 if (cb->isRenderBlock()) | |
| 3039 toRenderBlock(cb)->addPercentHeightDescendant(const_cast<RenderB ox*>(this)); | 3040 toRenderBlock(cb)->addPercentHeightDescendant(const_cast<RenderB ox*>(this)); |
| 3040 } | |
| 3041 | 3041 |
| 3042 // FIXME: This calculation is not patched for block-flow yet. | 3042 // FIXME: This calculation is not patched for block-flow yet. |
| 3043 // https://bugs.webkit.org/show_bug.cgi?id=46500 | 3043 // https://bugs.webkit.org/show_bug.cgi?id=46500 |
| 3044 if (cb->isOutOfFlowPositioned() && cb->style()->height().isAuto() && !(cb->style()->top().isAuto() || cb->style()->bottom().isAuto())) { | 3044 if (cb->isOutOfFlowPositioned() && cb->style()->height().isAuto() && !(cb->style()->top().isAuto() || cb->style()->bottom().isAuto())) { |
| 3045 ASSERT_WITH_SECURITY_IMPLICATION(cb->isRenderBlock()); | 3045 ASSERT_WITH_SECURITY_IMPLICATION(cb->isRenderBlock()); |
| 3046 RenderBlock* block = toRenderBlock(cb); | 3046 RenderBlock* block = toRenderBlock(cb); |
| 3047 LogicalExtentComputedValues computedValues; | 3047 LogicalExtentComputedValues computedValues; |
| 3048 block->computeLogicalHeight(block->logicalHeight(), 0, computedV alues); | 3048 block->computeLogicalHeight(block->logicalHeight(), 0, computedV alues); |
| 3049 LayoutUnit newContentHeight = computedValues.m_extent - block->b orderAndPaddingLogicalHeight() - block->scrollbarLogicalHeight(); | 3049 LayoutUnit newContentHeight = computedValues.m_extent - block->b orderAndPaddingLogicalHeight() - block->scrollbarLogicalHeight(); |
| 3050 LayoutUnit newHeight = block->adjustContentBoxLogicalHeightForBo xSizing(newContentHeight); | 3050 LayoutUnit newHeight = block->adjustContentBoxLogicalHeightForBo xSizing(newContentHeight); |
| (...skipping 1904 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4955 return 0; | 4955 return 0; |
| 4956 | 4956 |
| 4957 if (!layoutState && !flowThreadContainingBlock()) | 4957 if (!layoutState && !flowThreadContainingBlock()) |
| 4958 return 0; | 4958 return 0; |
| 4959 | 4959 |
| 4960 RenderBlock* containerBlock = containingBlock(); | 4960 RenderBlock* containerBlock = containingBlock(); |
| 4961 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); | 4961 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); |
| 4962 } | 4962 } |
| 4963 | 4963 |
| 4964 } // namespace WebCore | 4964 } // namespace WebCore |
| OLD | NEW |