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

Side by Side Diff: Source/core/css/CSSComputedStyleDeclaration.cpp

Issue 134013002: Upgrade align-self and align-items parsing to CSS 3 (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Really fix the tests Created 6 years, 11 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004 Zack Rusin <zack@kde.org> 2 * Copyright (C) 2004 Zack Rusin <zack@kde.org>
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
6 * Copyright (C) 2011 Sencha, Inc. All rights reserved. 6 * Copyright (C) 2011 Sencha, Inc. 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 Lesser General Public 9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 1502 matching lines...) Expand 10 before | Expand all | Expand 10 after
1513 { 1513 {
1514 if (!m_node) 1514 if (!m_node)
1515 return 0; 1515 return 0;
1516 if (m_node->isElementNode()) { 1516 if (m_node->isElementNode()) {
1517 if (PseudoElement* element = toElement(m_node)->pseudoElement(m_pseudoEl ementSpecifier)) 1517 if (PseudoElement* element = toElement(m_node)->pseudoElement(m_pseudoEl ementSpecifier))
1518 return element; 1518 return element;
1519 } 1519 }
1520 return m_node.get(); 1520 return m_node.get();
1521 } 1521 }
1522 1522
1523 static PassRefPtr<CSSValueList> valueForItemPositionWithOverflowAlignment(ItemPo sition itemPosition, OverflowAlignment overflowAlignment)
1524 {
1525 RefPtr<CSSValueList> result = CSSValueList::createSpaceSeparated();
1526 result->append(CSSPrimitiveValue::create(itemPosition));
1527 if (itemPosition >= ItemPositionCenter && overflowAlignment != OverflowAlign mentDefault)
1528 result->append(CSSPrimitiveValue::create(overflowAlignment));
1529 return result.release();
1530 }
1531
1523 PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(CSSPropert yID propertyID, EUpdateLayout updateLayout) const 1532 PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(CSSPropert yID propertyID, EUpdateLayout updateLayout) const
1524 { 1533 {
1525 Node* styledNode = this->styledNode(); 1534 Node* styledNode = this->styledNode();
1526 if (!styledNode) 1535 if (!styledNode)
1527 return 0; 1536 return 0;
1528 RenderObject* renderer = styledNode->renderer(); 1537 RenderObject* renderer = styledNode->renderer();
1529 RefPtr<RenderStyle> style; 1538 RefPtr<RenderStyle> style;
1530 1539
1531 if (updateLayout) { 1540 if (updateLayout) {
1532 Document& document = styledNode->document(); 1541 Document& document = styledNode->document();
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
1849 } 1858 }
1850 case CSSPropertyDirection: 1859 case CSSPropertyDirection:
1851 return cssValuePool().createValue(style->direction()); 1860 return cssValuePool().createValue(style->direction());
1852 case CSSPropertyDisplay: 1861 case CSSPropertyDisplay:
1853 return cssValuePool().createValue(style->display()); 1862 return cssValuePool().createValue(style->display());
1854 case CSSPropertyEmptyCells: 1863 case CSSPropertyEmptyCells:
1855 return cssValuePool().createValue(style->emptyCells()); 1864 return cssValuePool().createValue(style->emptyCells());
1856 case CSSPropertyAlignContent: 1865 case CSSPropertyAlignContent:
1857 return cssValuePool().createValue(style->alignContent()); 1866 return cssValuePool().createValue(style->alignContent());
1858 case CSSPropertyAlignItems: 1867 case CSSPropertyAlignItems:
1859 return cssValuePool().createValue(style->alignItems()); 1868 return valueForItemPositionWithOverflowAlignment(style->alignItems() , style->alignItemsOverflowAlignment());
1860 case CSSPropertyAlignSelf: 1869 case CSSPropertyAlignSelf: {
1861 if (style->alignSelf() == AlignAuto) { 1870 ItemPosition alignSelf = style->alignSelf();
1871 if (alignSelf == ItemPositionAuto) {
1862 Node* parent = styledNode->parentNode(); 1872 Node* parent = styledNode->parentNode();
1863 if (parent && parent->computedStyle()) 1873 if (parent && parent->computedStyle())
1864 return cssValuePool().createValue(parent->computedStyle()->a lignItems()); 1874 alignSelf = parent->computedStyle()->alignItems();
1865 return cssValuePool().createValue(AlignStretch); 1875 else
1876 alignSelf = ItemPositionStretch;
1866 } 1877 }
1867 return cssValuePool().createValue(style->alignSelf()); 1878 return valueForItemPositionWithOverflowAlignment(alignSelf, style->a lignSelfOverflowAlignment());
1879 }
1868 case CSSPropertyFlex: 1880 case CSSPropertyFlex:
1869 return valuesForShorthandProperty(flexShorthand()); 1881 return valuesForShorthandProperty(flexShorthand());
1870 case CSSPropertyFlexBasis: 1882 case CSSPropertyFlexBasis:
1871 return cssValuePool().createValue(style->flexBasis()); 1883 return cssValuePool().createValue(style->flexBasis());
1872 case CSSPropertyFlexDirection: 1884 case CSSPropertyFlexDirection:
1873 return cssValuePool().createValue(style->flexDirection()); 1885 return cssValuePool().createValue(style->flexDirection());
1874 case CSSPropertyFlexFlow: 1886 case CSSPropertyFlexFlow:
1875 return valuesForShorthandProperty(flexFlowShorthand()); 1887 return valuesForShorthandProperty(flexFlowShorthand());
1876 case CSSPropertyFlexGrow: 1888 case CSSPropertyFlexGrow:
1877 return cssValuePool().createValue(style->flexGrow()); 1889 return cssValuePool().createValue(style->flexGrow());
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1984 return cssValuePool().createIdentifierValue(CSSValueAuto); 1996 return cssValuePool().createIdentifierValue(CSSValueAuto);
1985 return cssValuePool().createValue(style->hyphenationString(), CSSPri mitiveValue::CSS_STRING); 1997 return cssValuePool().createValue(style->hyphenationString(), CSSPri mitiveValue::CSS_STRING);
1986 case CSSPropertyWebkitBorderFit: 1998 case CSSPropertyWebkitBorderFit:
1987 if (style->borderFit() == BorderFitBorder) 1999 if (style->borderFit() == BorderFitBorder)
1988 return cssValuePool().createIdentifierValue(CSSValueBorder); 2000 return cssValuePool().createIdentifierValue(CSSValueBorder);
1989 return cssValuePool().createIdentifierValue(CSSValueLines); 2001 return cssValuePool().createIdentifierValue(CSSValueLines);
1990 case CSSPropertyImageRendering: 2002 case CSSPropertyImageRendering:
1991 return CSSPrimitiveValue::create(style->imageRendering()); 2003 return CSSPrimitiveValue::create(style->imageRendering());
1992 case CSSPropertyIsolation: 2004 case CSSPropertyIsolation:
1993 return cssValuePool().createValue(style->isolation()); 2005 return cssValuePool().createValue(style->isolation());
1994 case CSSPropertyJustifySelf: { 2006 case CSSPropertyJustifySelf:
1995 RefPtr<CSSValueList> result = CSSValueList::createSpaceSeparated(); 2007 return valueForItemPositionWithOverflowAlignment(style->justifySelf( ), style->justifySelfOverflowAlignment());
1996 result->append(CSSPrimitiveValue::create(style->justifySelf()));
1997 if (style->justifySelf() >= ItemPositionCenter && style->justifySelf OverflowAlignment() != OverflowAlignmentDefault)
1998 result->append(CSSPrimitiveValue::create(style->justifySelfOverf lowAlignment()));
1999 return result.release();
2000 }
2001 case CSSPropertyLeft: 2008 case CSSPropertyLeft:
2002 return valueForPositionOffset(*style, CSSPropertyLeft, renderer); 2009 return valueForPositionOffset(*style, CSSPropertyLeft, renderer);
2003 case CSSPropertyLetterSpacing: 2010 case CSSPropertyLetterSpacing:
2004 if (!style->letterSpacing()) 2011 if (!style->letterSpacing())
2005 return cssValuePool().createIdentifierValue(CSSValueNormal); 2012 return cssValuePool().createIdentifierValue(CSSValueNormal);
2006 return zoomAdjustedPixelValue(style->letterSpacing(), *style); 2013 return zoomAdjustedPixelValue(style->letterSpacing(), *style);
2007 case CSSPropertyWebkitLineClamp: 2014 case CSSPropertyWebkitLineClamp:
2008 if (style->lineClamp().isNone()) 2015 if (style->lineClamp().isNone())
2009 return cssValuePool().createIdentifierValue(CSSValueNone); 2016 return cssValuePool().createIdentifierValue(CSSValueNone);
2010 return cssValuePool().createValue(style->lineClamp().value(), style- >lineClamp().isPercentage() ? CSSPrimitiveValue::CSS_PERCENTAGE : CSSPrimitiveVa lue::CSS_NUMBER); 2017 return cssValuePool().createValue(style->lineClamp().value(), style- >lineClamp().isPercentage() ? CSSPrimitiveValue::CSS_PERCENTAGE : CSSPrimitiveVa lue::CSS_NUMBER);
(...skipping 1128 matching lines...) Expand 10 before | Expand all | Expand 10 after
3139 static const CSSPropertyID propertiesAfterSlashSeperator[3] = { CSSPropertyB ackgroundSize, CSSPropertyBackgroundOrigin, 3146 static const CSSPropertyID propertiesAfterSlashSeperator[3] = { CSSPropertyB ackgroundSize, CSSPropertyBackgroundOrigin,
3140 CSSPropertyB ackgroundClip }; 3147 CSSPropertyB ackgroundClip };
3141 3148
3142 RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); 3149 RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated();
3143 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa ckground, propertiesBeforeSlashSeperator, WTF_ARRAY_LENGTH(propertiesBeforeSlash Seperator)))); 3150 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa ckground, propertiesBeforeSlashSeperator, WTF_ARRAY_LENGTH(propertiesBeforeSlash Seperator))));
3144 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa ckground, propertiesAfterSlashSeperator, WTF_ARRAY_LENGTH(propertiesAfterSlashSe perator)))); 3151 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa ckground, propertiesAfterSlashSeperator, WTF_ARRAY_LENGTH(propertiesAfterSlashSe perator))));
3145 return list.release(); 3152 return list.release();
3146 } 3153 }
3147 3154
3148 } // namespace WebCore 3155 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698