| OLD | NEW |
| 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 979 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 990 default: | 990 default: |
| 991 filterValue = CSSFilterValue::create(CSSFilterValue::UnknownFilterOp
eration); | 991 filterValue = CSSFilterValue::create(CSSFilterValue::UnknownFilterOp
eration); |
| 992 break; | 992 break; |
| 993 } | 993 } |
| 994 list->append(filterValue.release()); | 994 list->append(filterValue.release()); |
| 995 } | 995 } |
| 996 | 996 |
| 997 return list.release(); | 997 return list.release(); |
| 998 } | 998 } |
| 999 | 999 |
| 1000 static PassRefPtr<CSSValue> valueForGridTrackBreadth(const GridLength& trackBrea
dth, const RenderStyle* style, RenderView* renderView) | 1000 static PassRefPtr<CSSValue> valueForGridTrackBreadth(const GridLength& trackBrea
dth, const RenderStyle* style, const LayoutUnit& maxSize, RenderView* renderView
) |
| 1001 { | 1001 { |
| 1002 // FIXME: according to the specs we must always return the used value http:/
/crbug.com/297158 |
| 1002 if (!trackBreadth.isLength()) | 1003 if (!trackBreadth.isLength()) |
| 1003 return cssValuePool().createValue(trackBreadth.flex(), CSSPrimitiveValue
::CSS_FR); | 1004 return cssValuePool().createValue(trackBreadth.flex(), CSSPrimitiveValue
::CSS_FR); |
| 1004 | 1005 |
| 1005 const Length& trackBreadthLength = trackBreadth.length(); | 1006 const Length& trackBreadthLength = trackBreadth.length(); |
| 1006 if (trackBreadthLength.isAuto()) | 1007 if (trackBreadthLength.isAuto()) |
| 1007 return cssValuePool().createIdentifierValue(CSSValueAuto); | 1008 return cssValuePool().createIdentifierValue(CSSValueAuto); |
| 1008 if (trackBreadthLength.isViewportPercentage()) | 1009 if (trackBreadthLength.isViewportPercentage()) |
| 1009 return zoomAdjustedPixelValue(valueForLength(trackBreadthLength, 0, rend
erView), style); | 1010 return zoomAdjustedPixelValue(valueForLength(trackBreadthLength, 0, rend
erView), style); |
| 1011 if (trackBreadthLength.isCalculated()) |
| 1012 return zoomAdjustedPixelValue(valueForLength(trackBreadthLength, maxSize
, renderView), style); |
| 1010 return zoomAdjustedPixelValueForLength(trackBreadthLength, style); | 1013 return zoomAdjustedPixelValueForLength(trackBreadthLength, style); |
| 1011 } | 1014 } |
| 1012 | 1015 |
| 1013 static PassRefPtr<CSSValue> valueForGridTrackSize(const GridTrackSize& trackSize
, const RenderStyle* style, RenderView* renderView) | 1016 static PassRefPtr<CSSValue> valueForGridTrackSize(const GridTrackSize& trackSize
, const RenderStyle* style, const LayoutUnit& maxSize, RenderView* renderView) |
| 1014 { | 1017 { |
| 1015 switch (trackSize.type()) { | 1018 switch (trackSize.type()) { |
| 1016 case LengthTrackSizing: | 1019 case LengthTrackSizing: |
| 1017 return valueForGridTrackBreadth(trackSize.length(), style, renderView); | 1020 return valueForGridTrackBreadth(trackSize.length(), style, maxSize, rend
erView); |
| 1018 case MinMaxTrackSizing: | 1021 case MinMaxTrackSizing: |
| 1019 RefPtr<CSSValueList> minMaxTrackBreadths = CSSValueList::createCommaSepa
rated(); | 1022 RefPtr<CSSValueList> minMaxTrackBreadths = CSSValueList::createCommaSepa
rated(); |
| 1020 minMaxTrackBreadths->append(valueForGridTrackBreadth(trackSize.minTrackB
readth(), style, renderView)); | 1023 minMaxTrackBreadths->append(valueForGridTrackBreadth(trackSize.minTrackB
readth(), style, maxSize, renderView)); |
| 1021 minMaxTrackBreadths->append(valueForGridTrackBreadth(trackSize.maxTrackB
readth(), style, renderView)); | 1024 minMaxTrackBreadths->append(valueForGridTrackBreadth(trackSize.maxTrackB
readth(), style, maxSize, renderView)); |
| 1022 return CSSFunctionValue::create("minmax(", minMaxTrackBreadths); | 1025 return CSSFunctionValue::create("minmax(", minMaxTrackBreadths); |
| 1023 } | 1026 } |
| 1024 ASSERT_NOT_REACHED(); | 1027 ASSERT_NOT_REACHED(); |
| 1025 return 0; | 1028 return 0; |
| 1026 } | 1029 } |
| 1027 | 1030 |
| 1028 static void addValuesForNamedGridLinesAtIndex(const OrderedNamedGridLines& order
edNamedGridLines, size_t i, CSSValueList& list) | 1031 static void addValuesForNamedGridLinesAtIndex(const OrderedNamedGridLines& order
edNamedGridLines, size_t i, CSSValueList& list) |
| 1029 { | 1032 { |
| 1030 const Vector<String>& namedGridLines = orderedNamedGridLines.get(i); | 1033 const Vector<String>& namedGridLines = orderedNamedGridLines.get(i); |
| 1031 for (size_t j = 0; j < namedGridLines.size(); ++j) | 1034 for (size_t j = 0; j < namedGridLines.size(); ++j) |
| 1032 list.append(cssValuePool().createValue(namedGridLines[j], CSSPrimitiveVa
lue::CSS_STRING)); | 1035 list.append(cssValuePool().createValue(namedGridLines[j], CSSPrimitiveVa
lue::CSS_STRING)); |
| 1033 } | 1036 } |
| 1034 | 1037 |
| 1035 static PassRefPtr<CSSValue> valueForGridTrackList(const Vector<GridTrackSize>& t
rackSizes, const OrderedNamedGridLines& orderedNamedGridLines, const RenderStyle
* style, RenderView* renderView) | 1038 static PassRefPtr<CSSValue> valueForGridTrackList(const Vector<GridTrackSize>& t
rackSizes, const OrderedNamedGridLines& orderedNamedGridLines, const RenderStyle
* style, const LayoutUnit& maxSize, RenderView* renderView) |
| 1036 { | 1039 { |
| 1037 // Handle the 'none' case here. | 1040 // Handle the 'none' case here. |
| 1038 if (!trackSizes.size()) { | 1041 if (!trackSizes.size()) { |
| 1039 ASSERT(orderedNamedGridLines.isEmpty()); | 1042 ASSERT(orderedNamedGridLines.isEmpty()); |
| 1040 return cssValuePool().createIdentifierValue(CSSValueNone); | 1043 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 1041 } | 1044 } |
| 1042 | 1045 |
| 1043 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); | 1046 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 1044 for (size_t i = 0; i < trackSizes.size(); ++i) { | 1047 for (size_t i = 0; i < trackSizes.size(); ++i) { |
| 1045 addValuesForNamedGridLinesAtIndex(orderedNamedGridLines, i, *list); | 1048 addValuesForNamedGridLinesAtIndex(orderedNamedGridLines, i, *list); |
| 1046 list->append(valueForGridTrackSize(trackSizes[i], style, renderView)); | 1049 list->append(valueForGridTrackSize(trackSizes[i], style, maxSize, render
View)); |
| 1047 } | 1050 } |
| 1048 // Those are the trailing <string>* allowed in the syntax. | 1051 // Those are the trailing <string>* allowed in the syntax. |
| 1049 addValuesForNamedGridLinesAtIndex(orderedNamedGridLines, trackSizes.size(),
*list); | 1052 addValuesForNamedGridLinesAtIndex(orderedNamedGridLines, trackSizes.size(),
*list); |
| 1050 return list.release(); | 1053 return list.release(); |
| 1051 } | 1054 } |
| 1052 | 1055 |
| 1053 static PassRefPtr<CSSValue> valueForGridPosition(const GridPosition& position) | 1056 static PassRefPtr<CSSValue> valueForGridPosition(const GridPosition& position) |
| 1054 { | 1057 { |
| 1055 if (position.isAuto()) | 1058 if (position.isAuto()) |
| 1056 return cssValuePool().createIdentifierValue(CSSValueAuto); | 1059 return cssValuePool().createIdentifierValue(CSSValueAuto); |
| (...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1554 | 1557 |
| 1555 static bool isLayoutDependent(CSSPropertyID propertyID, PassRefPtr<RenderStyle>
style, RenderObject* renderer) | 1558 static bool isLayoutDependent(CSSPropertyID propertyID, PassRefPtr<RenderStyle>
style, RenderObject* renderer) |
| 1556 { | 1559 { |
| 1557 // Some properties only depend on layout in certain conditions which | 1560 // Some properties only depend on layout in certain conditions which |
| 1558 // are specified in the main switch statement below. So we can avoid | 1561 // are specified in the main switch statement below. So we can avoid |
| 1559 // forcing layout in those conditions. The conditions in this switch | 1562 // forcing layout in those conditions. The conditions in this switch |
| 1560 // statement must remain in sync with the conditions in the main switch. | 1563 // statement must remain in sync with the conditions in the main switch. |
| 1561 // FIXME: Some of these cases could be narrowed down or optimized better. | 1564 // FIXME: Some of these cases could be narrowed down or optimized better. |
| 1562 switch (propertyID) { | 1565 switch (propertyID) { |
| 1563 case CSSPropertyBottom: | 1566 case CSSPropertyBottom: |
| 1567 case CSSPropertyGridDefinitionColumns: |
| 1568 case CSSPropertyGridDefinitionRows: |
| 1564 case CSSPropertyHeight: | 1569 case CSSPropertyHeight: |
| 1565 case CSSPropertyLeft: | 1570 case CSSPropertyLeft: |
| 1566 case CSSPropertyRight: | 1571 case CSSPropertyRight: |
| 1567 case CSSPropertyTop: | 1572 case CSSPropertyTop: |
| 1568 case CSSPropertyWebkitPerspectiveOrigin: | 1573 case CSSPropertyWebkitPerspectiveOrigin: |
| 1569 case CSSPropertyWebkitTransform: | 1574 case CSSPropertyWebkitTransform: |
| 1570 case CSSPropertyWebkitTransformOrigin: | 1575 case CSSPropertyWebkitTransformOrigin: |
| 1571 case CSSPropertyWidth: | 1576 case CSSPropertyWidth: |
| 1572 case CSSPropertyWebkitFilter: | 1577 case CSSPropertyWebkitFilter: |
| 1573 return true; | 1578 return true; |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2027 return cssValuePool().createIdentifierValue(CSSValueNormal); | 2032 return cssValuePool().createIdentifierValue(CSSValueNormal); |
| 2028 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); | 2033 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 2029 for (unsigned i = 0; i < featureSettings->size(); ++i) { | 2034 for (unsigned i = 0; i < featureSettings->size(); ++i) { |
| 2030 const FontFeature& feature = featureSettings->at(i); | 2035 const FontFeature& feature = featureSettings->at(i); |
| 2031 RefPtr<FontFeatureValue> featureValue = FontFeatureValue::create
(feature.tag(), feature.value()); | 2036 RefPtr<FontFeatureValue> featureValue = FontFeatureValue::create
(feature.tag(), feature.value()); |
| 2032 list->append(featureValue.release()); | 2037 list->append(featureValue.release()); |
| 2033 } | 2038 } |
| 2034 return list.release(); | 2039 return list.release(); |
| 2035 } | 2040 } |
| 2036 case CSSPropertyGridAutoColumns: | 2041 case CSSPropertyGridAutoColumns: |
| 2037 return valueForGridTrackSize(style->gridAutoColumns(), style.get(),
m_node->document().renderView()); | 2042 return valueForGridTrackSize(style->gridAutoColumns(), style.get(),
sizingBox(renderer).width(), m_node->document().renderView()); |
| 2038 case CSSPropertyGridAutoFlow: | 2043 case CSSPropertyGridAutoFlow: |
| 2039 return cssValuePool().createValue(style->gridAutoFlow()); | 2044 return cssValuePool().createValue(style->gridAutoFlow()); |
| 2040 case CSSPropertyGridAutoRows: | 2045 case CSSPropertyGridAutoRows: |
| 2041 return valueForGridTrackSize(style->gridAutoRows(), style.get(), m_n
ode->document().renderView()); | 2046 return valueForGridTrackSize(style->gridAutoRows(), style.get(), siz
ingBox(renderer).height(), m_node->document().renderView()); |
| 2042 case CSSPropertyGridDefinitionColumns: | 2047 case CSSPropertyGridDefinitionColumns: |
| 2043 return valueForGridTrackList(style->gridDefinitionColumns(), style->
orderedNamedGridColumnLines(), style.get(), m_node->document().renderView()); | 2048 return valueForGridTrackList(style->gridDefinitionColumns(), style->
orderedNamedGridColumnLines(), style.get(), sizingBox(renderer).width(), m_node-
>document().renderView()); |
| 2044 case CSSPropertyGridDefinitionRows: | 2049 case CSSPropertyGridDefinitionRows: |
| 2045 return valueForGridTrackList(style->gridDefinitionRows(), style->ord
eredNamedGridRowLines(), style.get(), m_node->document().renderView()); | 2050 return valueForGridTrackList(style->gridDefinitionRows(), style->ord
eredNamedGridRowLines(), style.get(), sizingBox(renderer).height(), m_node->docu
ment().renderView()); |
| 2046 | 2051 |
| 2047 case CSSPropertyGridColumnStart: | 2052 case CSSPropertyGridColumnStart: |
| 2048 return valueForGridPosition(style->gridColumnStart()); | 2053 return valueForGridPosition(style->gridColumnStart()); |
| 2049 case CSSPropertyGridColumnEnd: | 2054 case CSSPropertyGridColumnEnd: |
| 2050 return valueForGridPosition(style->gridColumnEnd()); | 2055 return valueForGridPosition(style->gridColumnEnd()); |
| 2051 case CSSPropertyGridRowStart: | 2056 case CSSPropertyGridRowStart: |
| 2052 return valueForGridPosition(style->gridRowStart()); | 2057 return valueForGridPosition(style->gridRowStart()); |
| 2053 case CSSPropertyGridRowEnd: | 2058 case CSSPropertyGridRowEnd: |
| 2054 return valueForGridPosition(style->gridRowEnd()); | 2059 return valueForGridPosition(style->gridRowEnd()); |
| 2055 case CSSPropertyGridColumn: | 2060 case CSSPropertyGridColumn: |
| (...skipping 1139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3195 static const CSSPropertyID propertiesAfterSlashSeperator[3] = { CSSPropertyB
ackgroundSize, CSSPropertyBackgroundOrigin, | 3200 static const CSSPropertyID propertiesAfterSlashSeperator[3] = { CSSPropertyB
ackgroundSize, CSSPropertyBackgroundOrigin, |
| 3196 CSSPropertyB
ackgroundClip }; | 3201 CSSPropertyB
ackgroundClip }; |
| 3197 | 3202 |
| 3198 RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); | 3203 RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); |
| 3199 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa
ckground, propertiesBeforeSlashSeperator, WTF_ARRAY_LENGTH(propertiesBeforeSlash
Seperator)))); | 3204 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa
ckground, propertiesBeforeSlashSeperator, WTF_ARRAY_LENGTH(propertiesBeforeSlash
Seperator)))); |
| 3200 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa
ckground, propertiesAfterSlashSeperator, WTF_ARRAY_LENGTH(propertiesAfterSlashSe
perator)))); | 3205 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa
ckground, propertiesAfterSlashSeperator, WTF_ARRAY_LENGTH(propertiesAfterSlashSe
perator)))); |
| 3201 return list.release(); | 3206 return list.release(); |
| 3202 } | 3207 } |
| 3203 | 3208 |
| 3204 } // namespace WebCore | 3209 } // namespace WebCore |
| OLD | NEW |