| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2  * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 
| 3  *           (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) | 3  *           (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) | 
| 4  * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) | 4  * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) | 
| 5  * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc.
      All rights reserved. | 5  * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc.
      All rights reserved. | 
| 6  * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 6  * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 
| 7  * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> | 7  * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> | 
| 8  * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
     orchmobile.com/) | 8  * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
     orchmobile.com/) | 
| 9  * Copyright (c) 2011, Code Aurora Forum. All rights reserved. | 9  * Copyright (c) 2011, Code Aurora Forum. All rights reserved. | 
| 10  * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 10  * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 137     if (style.styleType() != PseudoIdFirstLetter) | 137     if (style.styleType() != PseudoIdFirstLetter) | 
| 138         return; | 138         return; | 
| 139 | 139 | 
| 140     // Force inline display (except for floating first-letters). | 140     // Force inline display (except for floating first-letters). | 
| 141     style.setDisplay(style.isFloating() ? BLOCK : INLINE); | 141     style.setDisplay(style.isFloating() ? BLOCK : INLINE); | 
| 142 | 142 | 
| 143     // CSS2 says first-letter can't be positioned. | 143     // CSS2 says first-letter can't be positioned. | 
| 144     style.setPosition(StaticPosition); | 144     style.setPosition(StaticPosition); | 
| 145 } | 145 } | 
| 146 | 146 | 
| 147 static void adjustStyleForAlignment(ComputedStyle& style, const ComputedStyle& p
     arentStyle) | 147 void StyleAdjuster::adjustStyleForAlignment(ComputedStyle& style, const Computed
     Style& parentStyle) | 
| 148 { | 148 { | 
| 149     bool isFlexOrGrid = style.isDisplayFlexibleOrGridBox(); | 149     // To avoid needing to copy the RareNonInheritedData, we repurpose the 'auto
     ' flag | 
| 150     bool absolutePositioned = style.position() == AbsolutePosition; | 150     // to not just mean 'auto' prior to running the StyleAdjuster but also mean 
     'normal' | 
|  | 151     // after running it. | 
| 151 | 152 | 
| 152     // If the inherited value of justify-items includes the legacy keyword, 'aut
     o' | 153     // If the inherited value of justify-items includes the 'legacy' keyword, 'a
     uto' | 
| 153     // computes to the the inherited value. | 154     // computes to the the inherited value. | 
| 154     // Otherwise, auto computes to: | 155     // Otherwise, 'auto' computes to 'normal'. | 
| 155     //  - 'stretch' for flex containers and grid containers. |  | 
| 156     //  - 'start' for everything else. |  | 
| 157     if (style.justifyItemsPosition() == ItemPositionAuto) { | 156     if (style.justifyItemsPosition() == ItemPositionAuto) { | 
| 158         if (parentStyle.justifyItemsPositionType() == LegacyPosition) | 157         if (parentStyle.justifyItemsPositionType() == LegacyPosition) | 
| 159             style.setJustifyItems(parentStyle.justifyItems()); | 158             style.setJustifyItems(parentStyle.justifyItems()); | 
| 160         else if (isFlexOrGrid) |  | 
| 161             style.setJustifyItemsPosition(ItemPositionStretch); |  | 
| 162     } | 159     } | 
| 163 | 160 | 
| 164     // The 'auto' keyword computes to 'stretch' on absolutely-positioned element
     s, | 161     // The 'auto' keyword computes the computed value of justify-items on the pa
     rent (minus | 
| 165     // and to the computed value of justify-items on the parent (minus | 162     // any legacy keywords), or 'normal' if the box has no parent. | 
| 166     // any legacy keywords) on all other boxes. |  | 
| 167     if (style.justifySelfPosition() == ItemPositionAuto) { | 163     if (style.justifySelfPosition() == ItemPositionAuto) { | 
| 168         if (absolutePositioned) | 164         if (parentStyle.justifyItemsPositionType() == LegacyPosition) | 
| 169             style.setJustifySelfPosition(ItemPositionStretch); | 165             style.setJustifySelfPosition(parentStyle.justifyItemsPosition()); | 
| 170         else | 166         else if (parentStyle.justifyItemsPosition() != ItemPositionAuto) | 
| 171             style.setJustifySelf(parentStyle.justifyItems()); | 167             style.setJustifySelf(parentStyle.justifyItems()); | 
| 172     } | 168     } | 
| 173 | 169 | 
| 174     // The 'auto' keyword computes to: | 170     // The 'auto' keyword computes the computed value of align-items on the pare
     nt | 
| 175     //  - 'stretch' for flex containers and grid containers, | 171     // or 'normal' if the box has no parent. | 
| 176     //  - 'start' for everything else. | 172     if (style.alignSelfPosition() == ItemPositionAuto && parentStyle.alignItemsP
     osition() != ItemPositionNormal) | 
| 177     if (style.alignItemsPosition() == ItemPositionAuto) { | 173         style.setAlignSelf(parentStyle.alignItems()); | 
| 178         if (isFlexOrGrid) |  | 
| 179             style.setAlignItemsPosition(ItemPositionStretch); |  | 
| 180     } |  | 
| 181 } | 174 } | 
| 182 | 175 | 
| 183 static void adjustStyleForHTMLElement(ComputedStyle& style, const ComputedStyle&
      parentStyle, HTMLElement& element) | 176 static void adjustStyleForHTMLElement(ComputedStyle& style, const ComputedStyle&
      parentStyle, HTMLElement& element) | 
| 184 { | 177 { | 
| 185     // <div> and <span> are the most common elements on the web, we skip all the
      work for them. | 178     // <div> and <span> are the most common elements on the web, we skip all the
      work for them. | 
| 186     if (isHTMLDivElement(element) || isHTMLSpanElement(element)) | 179     if (isHTMLDivElement(element) || isHTMLSpanElement(element)) | 
| 187         return; | 180         return; | 
| 188 | 181 | 
| 189     if (isHTMLTableCellElement(element)) { | 182     if (isHTMLTableCellElement(element)) { | 
| 190         if (style.whiteSpace() == KHTML_NOWRAP) { | 183         if (style.whiteSpace() == KHTML_NOWRAP) { | 
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 411             style.setDisplay(BLOCK); | 404             style.setDisplay(BLOCK); | 
| 412 | 405 | 
| 413         // Columns don't apply to svg text elements. | 406         // Columns don't apply to svg text elements. | 
| 414         if (isSVGTextElement(*element)) | 407         if (isSVGTextElement(*element)) | 
| 415             style.clearMultiCol(); | 408             style.clearMultiCol(); | 
| 416     } | 409     } | 
| 417     adjustStyleForAlignment(style, parentStyle); | 410     adjustStyleForAlignment(style, parentStyle); | 
| 418 } | 411 } | 
| 419 | 412 | 
| 420 } // namespace blink | 413 } // namespace blink | 
| OLD | NEW | 
|---|