| 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 * Copyright (C) 2015 Google Inc. All rights reserved. | 7 * Copyright (C) 2015 Google Inc. 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 Lesser General Public | 10 * modify it under the terms of the GNU Lesser General Public |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 #include "platform/LengthFunctions.h" | 55 #include "platform/LengthFunctions.h" |
| 56 | 56 |
| 57 namespace blink { | 57 namespace blink { |
| 58 | 58 |
| 59 inline static bool isFlexOrGrid(Node* element) | 59 inline static bool isFlexOrGrid(Node* element) |
| 60 { | 60 { |
| 61 return element && element->ensureComputedStyle() | 61 return element && element->ensureComputedStyle() |
| 62 && element->ensureComputedStyle()->isDisplayFlexibleOrGridBox(); | 62 && element->ensureComputedStyle()->isDisplayFlexibleOrGridBox(); |
| 63 } | 63 } |
| 64 | 64 |
| 65 inline static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> zoomAdjustedPixelValue(d
ouble value, const ComputedStyle& style) | 65 inline static PassRefPtr<CSSPrimitiveValue> zoomAdjustedPixelValue(double value,
const ComputedStyle& style) |
| 66 { | 66 { |
| 67 return cssValuePool().createValue(adjustFloatForAbsoluteZoom(value, style),
CSSPrimitiveValue::UnitType::Pixels); | 67 return cssValuePool().createValue(adjustFloatForAbsoluteZoom(value, style),
CSSPrimitiveValue::UnitType::Pixels); |
| 68 } | 68 } |
| 69 | 69 |
| 70 inline static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> zoomAdjustedNumberValue(
double value, const ComputedStyle& style) | 70 inline static PassRefPtr<CSSPrimitiveValue> zoomAdjustedNumberValue(double value
, const ComputedStyle& style) |
| 71 { | 71 { |
| 72 return cssValuePool().createValue(value / style.effectiveZoom(), CSSPrimitiv
eValue::UnitType::Number); | 72 return cssValuePool().createValue(value / style.effectiveZoom(), CSSPrimitiv
eValue::UnitType::Number); |
| 73 } | 73 } |
| 74 | 74 |
| 75 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> zoomAdjustedPixelValueForLength
(const Length& length, const ComputedStyle& style) | 75 static PassRefPtr<CSSPrimitiveValue> zoomAdjustedPixelValueForLength(const Lengt
h& length, const ComputedStyle& style) |
| 76 { | 76 { |
| 77 if (length.isFixed()) | 77 if (length.isFixed()) |
| 78 return zoomAdjustedPixelValue(length.value(), style); | 78 return zoomAdjustedPixelValue(length.value(), style); |
| 79 return cssValuePool().createValue(length, style); | 79 return cssValuePool().createValue(length, style); |
| 80 } | 80 } |
| 81 | 81 |
| 82 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> pixelValueForUnzoomedLength(con
st UnzoomedLength& unzoomedLength, const ComputedStyle& style) | 82 static PassRefPtr<CSSPrimitiveValue> pixelValueForUnzoomedLength(const UnzoomedL
ength& unzoomedLength, const ComputedStyle& style) |
| 83 { | 83 { |
| 84 const Length& length = unzoomedLength.length(); | 84 const Length& length = unzoomedLength.length(); |
| 85 if (length.isFixed()) | 85 if (length.isFixed()) |
| 86 return cssValuePool().createValue(length.value(), CSSPrimitiveValue::Uni
tType::Pixels); | 86 return cssValuePool().createValue(length.value(), CSSPrimitiveValue::Uni
tType::Pixels); |
| 87 return cssValuePool().createValue(length, style); | 87 return cssValuePool().createValue(length, style); |
| 88 } | 88 } |
| 89 | 89 |
| 90 static PassRefPtrWillBeRawPtr<CSSValueList> createPositionListForLayer(CSSProper
tyID propertyID, const FillLayer& layer, const ComputedStyle& style) | 90 static PassRefPtr<CSSValueList> createPositionListForLayer(CSSPropertyID propert
yID, const FillLayer& layer, const ComputedStyle& style) |
| 91 { | 91 { |
| 92 RefPtrWillBeRawPtr<CSSValueList> positionList = CSSValueList::createSpaceSep
arated(); | 92 RefPtr<CSSValueList> positionList = CSSValueList::createSpaceSeparated(); |
| 93 if (layer.isBackgroundXOriginSet()) { | 93 if (layer.isBackgroundXOriginSet()) { |
| 94 ASSERT_UNUSED(propertyID, propertyID == CSSPropertyBackgroundPosition ||
propertyID == CSSPropertyWebkitMaskPosition); | 94 ASSERT_UNUSED(propertyID, propertyID == CSSPropertyBackgroundPosition ||
propertyID == CSSPropertyWebkitMaskPosition); |
| 95 positionList->append(cssValuePool().createValue(layer.backgroundXOrigin(
))); | 95 positionList->append(cssValuePool().createValue(layer.backgroundXOrigin(
))); |
| 96 } | 96 } |
| 97 positionList->append(zoomAdjustedPixelValueForLength(layer.xPosition(), styl
e)); | 97 positionList->append(zoomAdjustedPixelValueForLength(layer.xPosition(), styl
e)); |
| 98 if (layer.isBackgroundYOriginSet()) { | 98 if (layer.isBackgroundYOriginSet()) { |
| 99 ASSERT(propertyID == CSSPropertyBackgroundPosition || propertyID == CSSP
ropertyWebkitMaskPosition); | 99 ASSERT(propertyID == CSSPropertyBackgroundPosition || propertyID == CSSP
ropertyWebkitMaskPosition); |
| 100 positionList->append(cssValuePool().createValue(layer.backgroundYOrigin(
))); | 100 positionList->append(cssValuePool().createValue(layer.backgroundYOrigin(
))); |
| 101 } | 101 } |
| 102 positionList->append(zoomAdjustedPixelValueForLength(layer.yPosition(), styl
e)); | 102 positionList->append(zoomAdjustedPixelValueForLength(layer.yPosition(), styl
e)); |
| 103 return positionList.release(); | 103 return positionList.release(); |
| 104 } | 104 } |
| 105 | 105 |
| 106 PassRefPtrWillBeRawPtr<CSSPrimitiveValue> ComputedStyleCSSValueMapping::currentC
olorOrValidColor(const ComputedStyle& style, const StyleColor& color) | 106 PassRefPtr<CSSPrimitiveValue> ComputedStyleCSSValueMapping::currentColorOrValidC
olor(const ComputedStyle& style, const StyleColor& color) |
| 107 { | 107 { |
| 108 // This function does NOT look at visited information, so that computed styl
e doesn't expose that. | 108 // This function does NOT look at visited information, so that computed styl
e doesn't expose that. |
| 109 return cssValuePool().createColorValue(color.resolve(style.color()).rgb()); | 109 return cssValuePool().createColorValue(color.resolve(style.color()).rgb()); |
| 110 } | 110 } |
| 111 | 111 |
| 112 static PassRefPtrWillBeRawPtr<CSSValue> valueForFillSize(const FillSize& fillSiz
e, const ComputedStyle& style) | 112 static PassRefPtr<CSSValue> valueForFillSize(const FillSize& fillSize, const Com
putedStyle& style) |
| 113 { | 113 { |
| 114 if (fillSize.type == Contain) | 114 if (fillSize.type == Contain) |
| 115 return cssValuePool().createIdentifierValue(CSSValueContain); | 115 return cssValuePool().createIdentifierValue(CSSValueContain); |
| 116 | 116 |
| 117 if (fillSize.type == Cover) | 117 if (fillSize.type == Cover) |
| 118 return cssValuePool().createIdentifierValue(CSSValueCover); | 118 return cssValuePool().createIdentifierValue(CSSValueCover); |
| 119 | 119 |
| 120 if (fillSize.size.height().isAuto()) | 120 if (fillSize.size.height().isAuto()) |
| 121 return zoomAdjustedPixelValueForLength(fillSize.size.width(), style); | 121 return zoomAdjustedPixelValueForLength(fillSize.size.width(), style); |
| 122 | 122 |
| 123 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 123 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 124 list->append(zoomAdjustedPixelValueForLength(fillSize.size.width(), style)); | 124 list->append(zoomAdjustedPixelValueForLength(fillSize.size.width(), style)); |
| 125 list->append(zoomAdjustedPixelValueForLength(fillSize.size.height(), style))
; | 125 list->append(zoomAdjustedPixelValueForLength(fillSize.size.height(), style))
; |
| 126 return list.release(); | 126 return list.release(); |
| 127 } | 127 } |
| 128 | 128 |
| 129 static PassRefPtrWillBeRawPtr<CSSValue> valueForFillRepeat(EFillRepeat xRepeat,
EFillRepeat yRepeat) | 129 static PassRefPtr<CSSValue> valueForFillRepeat(EFillRepeat xRepeat, EFillRepeat
yRepeat) |
| 130 { | 130 { |
| 131 // For backwards compatibility, if both values are equal, just return one of
them. And | 131 // For backwards compatibility, if both values are equal, just return one of
them. And |
| 132 // if the two values are equivalent to repeat-x or repeat-y, just return the
shorthand. | 132 // if the two values are equivalent to repeat-x or repeat-y, just return the
shorthand. |
| 133 if (xRepeat == yRepeat) | 133 if (xRepeat == yRepeat) |
| 134 return cssValuePool().createValue(xRepeat); | 134 return cssValuePool().createValue(xRepeat); |
| 135 if (xRepeat == RepeatFill && yRepeat == NoRepeatFill) | 135 if (xRepeat == RepeatFill && yRepeat == NoRepeatFill) |
| 136 return cssValuePool().createIdentifierValue(CSSValueRepeatX); | 136 return cssValuePool().createIdentifierValue(CSSValueRepeatX); |
| 137 if (xRepeat == NoRepeatFill && yRepeat == RepeatFill) | 137 if (xRepeat == NoRepeatFill && yRepeat == RepeatFill) |
| 138 return cssValuePool().createIdentifierValue(CSSValueRepeatY); | 138 return cssValuePool().createIdentifierValue(CSSValueRepeatY); |
| 139 | 139 |
| 140 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 140 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 141 list->append(cssValuePool().createValue(xRepeat)); | 141 list->append(cssValuePool().createValue(xRepeat)); |
| 142 list->append(cssValuePool().createValue(yRepeat)); | 142 list->append(cssValuePool().createValue(yRepeat)); |
| 143 return list.release(); | 143 return list.release(); |
| 144 } | 144 } |
| 145 | 145 |
| 146 static PassRefPtrWillBeRawPtr<CSSValue> valueForFillSourceType(EMaskSourceType t
ype) | 146 static PassRefPtr<CSSValue> valueForFillSourceType(EMaskSourceType type) |
| 147 { | 147 { |
| 148 switch (type) { | 148 switch (type) { |
| 149 case MaskAlpha: | 149 case MaskAlpha: |
| 150 return cssValuePool().createValue(CSSValueAlpha); | 150 return cssValuePool().createValue(CSSValueAlpha); |
| 151 case MaskLuminance: | 151 case MaskLuminance: |
| 152 return cssValuePool().createValue(CSSValueLuminance); | 152 return cssValuePool().createValue(CSSValueLuminance); |
| 153 } | 153 } |
| 154 | 154 |
| 155 ASSERT_NOT_REACHED(); | 155 ASSERT_NOT_REACHED(); |
| 156 | 156 |
| 157 return nullptr; | 157 return nullptr; |
| 158 } | 158 } |
| 159 | 159 |
| 160 static PassRefPtrWillBeRawPtr<CSSValue> valueForPositionOffset(const ComputedSty
le& style, CSSPropertyID propertyID, const LayoutObject* layoutObject) | 160 static PassRefPtr<CSSValue> valueForPositionOffset(const ComputedStyle& style, C
SSPropertyID propertyID, const LayoutObject* layoutObject) |
| 161 { | 161 { |
| 162 Length offset; | 162 Length offset; |
| 163 switch (propertyID) { | 163 switch (propertyID) { |
| 164 case CSSPropertyLeft: | 164 case CSSPropertyLeft: |
| 165 offset = style.left(); | 165 offset = style.left(); |
| 166 break; | 166 break; |
| 167 case CSSPropertyRight: | 167 case CSSPropertyRight: |
| 168 offset = style.right(); | 168 offset = style.right(); |
| 169 break; | 169 break; |
| 170 case CSSPropertyTop: | 170 case CSSPropertyTop: |
| (...skipping 15 matching lines...) Expand all Loading... |
| 186 if (offset.isAuto()) { | 186 if (offset.isAuto()) { |
| 187 // FIXME: It's not enough to simply return "auto" values for one offset
if the other side is defined. | 187 // FIXME: It's not enough to simply return "auto" values for one offset
if the other side is defined. |
| 188 // In other words if left is auto and right is not auto, then left's com
puted value is negative right(). | 188 // In other words if left is auto and right is not auto, then left's com
puted value is negative right(). |
| 189 // So we should get the opposite length unit and see if it is auto. | 189 // So we should get the opposite length unit and see if it is auto. |
| 190 return cssValuePool().createIdentifierValue(CSSValueAuto); | 190 return cssValuePool().createIdentifierValue(CSSValueAuto); |
| 191 } | 191 } |
| 192 | 192 |
| 193 return zoomAdjustedPixelValueForLength(offset, style); | 193 return zoomAdjustedPixelValueForLength(offset, style); |
| 194 } | 194 } |
| 195 | 195 |
| 196 static PassRefPtrWillBeRawPtr<CSSBorderImageSliceValue> valueForNinePieceImageSl
ice(const NinePieceImage& image) | 196 static PassRefPtr<CSSBorderImageSliceValue> valueForNinePieceImageSlice(const Ni
nePieceImage& image) |
| 197 { | 197 { |
| 198 // Create the slices. | 198 // Create the slices. |
| 199 RefPtrWillBeRawPtr<CSSPrimitiveValue> top = nullptr; | 199 RefPtr<CSSPrimitiveValue> top = nullptr; |
| 200 RefPtrWillBeRawPtr<CSSPrimitiveValue> right = nullptr; | 200 RefPtr<CSSPrimitiveValue> right = nullptr; |
| 201 RefPtrWillBeRawPtr<CSSPrimitiveValue> bottom = nullptr; | 201 RefPtr<CSSPrimitiveValue> bottom = nullptr; |
| 202 RefPtrWillBeRawPtr<CSSPrimitiveValue> left = nullptr; | 202 RefPtr<CSSPrimitiveValue> left = nullptr; |
| 203 | 203 |
| 204 // TODO(alancutter): Make this code aware of calc lengths. | 204 // TODO(alancutter): Make this code aware of calc lengths. |
| 205 if (image.imageSlices().top().hasPercent()) | 205 if (image.imageSlices().top().hasPercent()) |
| 206 top = cssValuePool().createValue(image.imageSlices().top().value(), CSSP
rimitiveValue::UnitType::Percentage); | 206 top = cssValuePool().createValue(image.imageSlices().top().value(), CSSP
rimitiveValue::UnitType::Percentage); |
| 207 else | 207 else |
| 208 top = cssValuePool().createValue(image.imageSlices().top().value(), CSSP
rimitiveValue::UnitType::Number); | 208 top = cssValuePool().createValue(image.imageSlices().top().value(), CSSP
rimitiveValue::UnitType::Number); |
| 209 | 209 |
| 210 if (image.imageSlices().right() == image.imageSlices().top() && image.imageS
lices().bottom() == image.imageSlices().top() | 210 if (image.imageSlices().right() == image.imageSlices().top() && image.imageS
lices().bottom() == image.imageSlices().top() |
| 211 && image.imageSlices().left() == image.imageSlices().top()) { | 211 && image.imageSlices().left() == image.imageSlices().top()) { |
| 212 right = top; | 212 right = top; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 231 left = right; | 231 left = right; |
| 232 } else { | 232 } else { |
| 233 if (image.imageSlices().left().hasPercent()) | 233 if (image.imageSlices().left().hasPercent()) |
| 234 left = cssValuePool().createValue(image.imageSlices().left()
.value(), CSSPrimitiveValue::UnitType::Percentage); | 234 left = cssValuePool().createValue(image.imageSlices().left()
.value(), CSSPrimitiveValue::UnitType::Percentage); |
| 235 else | 235 else |
| 236 left = cssValuePool().createValue(image.imageSlices().left()
.value(), CSSPrimitiveValue::UnitType::Number); | 236 left = cssValuePool().createValue(image.imageSlices().left()
.value(), CSSPrimitiveValue::UnitType::Number); |
| 237 } | 237 } |
| 238 } | 238 } |
| 239 } | 239 } |
| 240 | 240 |
| 241 RefPtrWillBeRawPtr<Quad> quad = Quad::create(); | 241 RefPtr<Quad> quad = Quad::create(); |
| 242 quad->setTop(top); | 242 quad->setTop(top); |
| 243 quad->setRight(right); | 243 quad->setRight(right); |
| 244 quad->setBottom(bottom); | 244 quad->setBottom(bottom); |
| 245 quad->setLeft(left); | 245 quad->setLeft(left); |
| 246 | 246 |
| 247 return CSSBorderImageSliceValue::create(cssValuePool().createValue(quad.rele
ase()), image.fill()); | 247 return CSSBorderImageSliceValue::create(cssValuePool().createValue(quad.rele
ase()), image.fill()); |
| 248 } | 248 } |
| 249 | 249 |
| 250 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForNinePieceImageQuad(cons
t BorderImageLengthBox& box, const ComputedStyle& style) | 250 static PassRefPtr<CSSPrimitiveValue> valueForNinePieceImageQuad(const BorderImag
eLengthBox& box, const ComputedStyle& style) |
| 251 { | 251 { |
| 252 // Create the slices. | 252 // Create the slices. |
| 253 RefPtrWillBeRawPtr<CSSPrimitiveValue> top = nullptr; | 253 RefPtr<CSSPrimitiveValue> top = nullptr; |
| 254 RefPtrWillBeRawPtr<CSSPrimitiveValue> right = nullptr; | 254 RefPtr<CSSPrimitiveValue> right = nullptr; |
| 255 RefPtrWillBeRawPtr<CSSPrimitiveValue> bottom = nullptr; | 255 RefPtr<CSSPrimitiveValue> bottom = nullptr; |
| 256 RefPtrWillBeRawPtr<CSSPrimitiveValue> left = nullptr; | 256 RefPtr<CSSPrimitiveValue> left = nullptr; |
| 257 | 257 |
| 258 if (box.top().isNumber()) | 258 if (box.top().isNumber()) |
| 259 top = cssValuePool().createValue(box.top().number(), CSSPrimitiveValue::
UnitType::Number); | 259 top = cssValuePool().createValue(box.top().number(), CSSPrimitiveValue::
UnitType::Number); |
| 260 else | 260 else |
| 261 top = cssValuePool().createValue(box.top().length(), style); | 261 top = cssValuePool().createValue(box.top().length(), style); |
| 262 | 262 |
| 263 if (box.right() == box.top() && box.bottom() == box.top() && box.left() == b
ox.top()) { | 263 if (box.right() == box.top() && box.bottom() == box.top() && box.left() == b
ox.top()) { |
| 264 right = top; | 264 right = top; |
| 265 bottom = top; | 265 bottom = top; |
| 266 left = top; | 266 left = top; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 283 left = right; | 283 left = right; |
| 284 } else { | 284 } else { |
| 285 if (box.left().isNumber()) | 285 if (box.left().isNumber()) |
| 286 left = cssValuePool().createValue(box.left().number(), CSSPr
imitiveValue::UnitType::Number); | 286 left = cssValuePool().createValue(box.left().number(), CSSPr
imitiveValue::UnitType::Number); |
| 287 else | 287 else |
| 288 left = cssValuePool().createValue(box.left().length(), style
); | 288 left = cssValuePool().createValue(box.left().length(), style
); |
| 289 } | 289 } |
| 290 } | 290 } |
| 291 } | 291 } |
| 292 | 292 |
| 293 RefPtrWillBeRawPtr<Quad> quad = Quad::create(); | 293 RefPtr<Quad> quad = Quad::create(); |
| 294 quad->setTop(top); | 294 quad->setTop(top); |
| 295 quad->setRight(right); | 295 quad->setRight(right); |
| 296 quad->setBottom(bottom); | 296 quad->setBottom(bottom); |
| 297 quad->setLeft(left); | 297 quad->setLeft(left); |
| 298 | 298 |
| 299 return cssValuePool().createValue(quad.release()); | 299 return cssValuePool().createValue(quad.release()); |
| 300 } | 300 } |
| 301 | 301 |
| 302 static CSSValueID valueForRepeatRule(int rule) | 302 static CSSValueID valueForRepeatRule(int rule) |
| 303 { | 303 { |
| 304 switch (rule) { | 304 switch (rule) { |
| 305 case RepeatImageRule: | 305 case RepeatImageRule: |
| 306 return CSSValueRepeat; | 306 return CSSValueRepeat; |
| 307 case RoundImageRule: | 307 case RoundImageRule: |
| 308 return CSSValueRound; | 308 return CSSValueRound; |
| 309 case SpaceImageRule: | 309 case SpaceImageRule: |
| 310 return CSSValueSpace; | 310 return CSSValueSpace; |
| 311 default: | 311 default: |
| 312 return CSSValueStretch; | 312 return CSSValueStretch; |
| 313 } | 313 } |
| 314 } | 314 } |
| 315 | 315 |
| 316 static PassRefPtrWillBeRawPtr<CSSValue> valueForNinePieceImageRepeat(const NineP
ieceImage& image) | 316 static PassRefPtr<CSSValue> valueForNinePieceImageRepeat(const NinePieceImage& i
mage) |
| 317 { | 317 { |
| 318 RefPtrWillBeRawPtr<CSSPrimitiveValue> horizontalRepeat = nullptr; | 318 RefPtr<CSSPrimitiveValue> horizontalRepeat = nullptr; |
| 319 RefPtrWillBeRawPtr<CSSPrimitiveValue> verticalRepeat = nullptr; | 319 RefPtr<CSSPrimitiveValue> verticalRepeat = nullptr; |
| 320 | 320 |
| 321 horizontalRepeat = cssValuePool().createIdentifierValue(valueForRepeatRule(i
mage.horizontalRule())); | 321 horizontalRepeat = cssValuePool().createIdentifierValue(valueForRepeatRule(i
mage.horizontalRule())); |
| 322 if (image.horizontalRule() == image.verticalRule()) | 322 if (image.horizontalRule() == image.verticalRule()) |
| 323 verticalRepeat = horizontalRepeat; | 323 verticalRepeat = horizontalRepeat; |
| 324 else | 324 else |
| 325 verticalRepeat = cssValuePool().createIdentifierValue(valueForRepeatRule
(image.verticalRule())); | 325 verticalRepeat = cssValuePool().createIdentifierValue(valueForRepeatRule
(image.verticalRule())); |
| 326 return cssValuePool().createValue(Pair::create(horizontalRepeat.release(), v
erticalRepeat.release(), Pair::DropIdenticalValues)); | 326 return cssValuePool().createValue(Pair::create(horizontalRepeat.release(), v
erticalRepeat.release(), Pair::DropIdenticalValues)); |
| 327 } | 327 } |
| 328 | 328 |
| 329 static PassRefPtrWillBeRawPtr<CSSValue> valueForNinePieceImage(const NinePieceIm
age& image, const ComputedStyle& style) | 329 static PassRefPtr<CSSValue> valueForNinePieceImage(const NinePieceImage& image,
const ComputedStyle& style) |
| 330 { | 330 { |
| 331 if (!image.hasImage()) | 331 if (!image.hasImage()) |
| 332 return cssValuePool().createIdentifierValue(CSSValueNone); | 332 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 333 | 333 |
| 334 // Image first. | 334 // Image first. |
| 335 RefPtrWillBeRawPtr<CSSValue> imageValue = nullptr; | 335 RefPtr<CSSValue> imageValue = nullptr; |
| 336 if (image.image()) | 336 if (image.image()) |
| 337 imageValue = image.image()->cssValue(); | 337 imageValue = image.image()->cssValue(); |
| 338 | 338 |
| 339 // Create the image slice. | 339 // Create the image slice. |
| 340 RefPtrWillBeRawPtr<CSSBorderImageSliceValue> imageSlices = valueForNinePiece
ImageSlice(image); | 340 RefPtr<CSSBorderImageSliceValue> imageSlices = valueForNinePieceImageSlice(i
mage); |
| 341 | 341 |
| 342 // Create the border area slices. | 342 // Create the border area slices. |
| 343 RefPtrWillBeRawPtr<CSSValue> borderSlices = valueForNinePieceImageQuad(image
.borderSlices(), style); | 343 RefPtr<CSSValue> borderSlices = valueForNinePieceImageQuad(image.borderSlice
s(), style); |
| 344 | 344 |
| 345 // Create the border outset. | 345 // Create the border outset. |
| 346 RefPtrWillBeRawPtr<CSSValue> outset = valueForNinePieceImageQuad(image.outse
t(), style); | 346 RefPtr<CSSValue> outset = valueForNinePieceImageQuad(image.outset(), style); |
| 347 | 347 |
| 348 // Create the repeat rules. | 348 // Create the repeat rules. |
| 349 RefPtrWillBeRawPtr<CSSValue> repeat = valueForNinePieceImageRepeat(image); | 349 RefPtr<CSSValue> repeat = valueForNinePieceImageRepeat(image); |
| 350 | 350 |
| 351 return createBorderImageValue(imageValue.release(), imageSlices.release(), b
orderSlices.release(), outset.release(), repeat.release()); | 351 return createBorderImageValue(imageValue.release(), imageSlices.release(), b
orderSlices.release(), outset.release(), repeat.release()); |
| 352 } | 352 } |
| 353 | 353 |
| 354 static PassRefPtrWillBeRawPtr<CSSValue> valueForReflection(const StyleReflection
* reflection, const ComputedStyle& style) | 354 static PassRefPtr<CSSValue> valueForReflection(const StyleReflection* reflection
, const ComputedStyle& style) |
| 355 { | 355 { |
| 356 if (!reflection) | 356 if (!reflection) |
| 357 return cssValuePool().createIdentifierValue(CSSValueNone); | 357 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 358 | 358 |
| 359 RefPtrWillBeRawPtr<CSSPrimitiveValue> offset = nullptr; | 359 RefPtr<CSSPrimitiveValue> offset = nullptr; |
| 360 // TODO(alancutter): Make this work correctly for calc lengths. | 360 // TODO(alancutter): Make this work correctly for calc lengths. |
| 361 if (reflection->offset().hasPercent()) | 361 if (reflection->offset().hasPercent()) |
| 362 offset = cssValuePool().createValue(reflection->offset().percent(), CSSP
rimitiveValue::UnitType::Percentage); | 362 offset = cssValuePool().createValue(reflection->offset().percent(), CSSP
rimitiveValue::UnitType::Percentage); |
| 363 else | 363 else |
| 364 offset = zoomAdjustedPixelValue(reflection->offset().value(), style); | 364 offset = zoomAdjustedPixelValue(reflection->offset().value(), style); |
| 365 | 365 |
| 366 RefPtrWillBeRawPtr<CSSPrimitiveValue> direction = nullptr; | 366 RefPtr<CSSPrimitiveValue> direction = nullptr; |
| 367 switch (reflection->direction()) { | 367 switch (reflection->direction()) { |
| 368 case ReflectionBelow: | 368 case ReflectionBelow: |
| 369 direction = cssValuePool().createIdentifierValue(CSSValueBelow); | 369 direction = cssValuePool().createIdentifierValue(CSSValueBelow); |
| 370 break; | 370 break; |
| 371 case ReflectionAbove: | 371 case ReflectionAbove: |
| 372 direction = cssValuePool().createIdentifierValue(CSSValueAbove); | 372 direction = cssValuePool().createIdentifierValue(CSSValueAbove); |
| 373 break; | 373 break; |
| 374 case ReflectionLeft: | 374 case ReflectionLeft: |
| 375 direction = cssValuePool().createIdentifierValue(CSSValueLeft); | 375 direction = cssValuePool().createIdentifierValue(CSSValueLeft); |
| 376 break; | 376 break; |
| 377 case ReflectionRight: | 377 case ReflectionRight: |
| 378 direction = cssValuePool().createIdentifierValue(CSSValueRight); | 378 direction = cssValuePool().createIdentifierValue(CSSValueRight); |
| 379 break; | 379 break; |
| 380 } | 380 } |
| 381 | 381 |
| 382 return CSSReflectValue::create(direction.release(), offset.release(), valueF
orNinePieceImage(reflection->mask(), style)); | 382 return CSSReflectValue::create(direction.release(), offset.release(), valueF
orNinePieceImage(reflection->mask(), style)); |
| 383 } | 383 } |
| 384 | 384 |
| 385 static ItemPosition resolveAlignmentAuto(ItemPosition position, Node* element) | 385 static ItemPosition resolveAlignmentAuto(ItemPosition position, Node* element) |
| 386 { | 386 { |
| 387 if (position != ItemPositionAuto) | 387 if (position != ItemPositionAuto) |
| 388 return position; | 388 return position; |
| 389 | 389 |
| 390 return isFlexOrGrid(element) ? ItemPositionStretch : ItemPositionStart; | 390 return isFlexOrGrid(element) ? ItemPositionStretch : ItemPositionStart; |
| 391 } | 391 } |
| 392 | 392 |
| 393 static PassRefPtrWillBeRawPtr<CSSValueList> valueForItemPositionWithOverflowAlig
nment(ItemPosition itemPosition, OverflowAlignment overflowAlignment, ItemPositi
onType positionType) | 393 static PassRefPtr<CSSValueList> valueForItemPositionWithOverflowAlignment(ItemPo
sition itemPosition, OverflowAlignment overflowAlignment, ItemPositionType posit
ionType) |
| 394 { | 394 { |
| 395 RefPtrWillBeRawPtr<CSSValueList> result = CSSValueList::createSpaceSeparated
(); | 395 RefPtr<CSSValueList> result = CSSValueList::createSpaceSeparated(); |
| 396 if (positionType == LegacyPosition) | 396 if (positionType == LegacyPosition) |
| 397 result->append(CSSPrimitiveValue::createIdentifier(CSSValueLegacy)); | 397 result->append(CSSPrimitiveValue::createIdentifier(CSSValueLegacy)); |
| 398 result->append(CSSPrimitiveValue::create(itemPosition)); | 398 result->append(CSSPrimitiveValue::create(itemPosition)); |
| 399 if (itemPosition >= ItemPositionCenter && overflowAlignment != OverflowAlign
mentDefault) | 399 if (itemPosition >= ItemPositionCenter && overflowAlignment != OverflowAlign
mentDefault) |
| 400 result->append(CSSPrimitiveValue::create(overflowAlignment)); | 400 result->append(CSSPrimitiveValue::create(overflowAlignment)); |
| 401 ASSERT(result->length() <= 2); | 401 ASSERT(result->length() <= 2); |
| 402 return result.release(); | 402 return result.release(); |
| 403 } | 403 } |
| 404 | 404 |
| 405 static PassRefPtrWillBeRawPtr<CSSValueList> valuesForGridShorthand(const StylePr
opertyShorthand& shorthand, const ComputedStyle& style, const LayoutObject* layo
utObject, Node* styledNode, bool allowVisitedStyle) | 405 static PassRefPtr<CSSValueList> valuesForGridShorthand(const StylePropertyShorth
and& shorthand, const ComputedStyle& style, const LayoutObject* layoutObject, No
de* styledNode, bool allowVisitedStyle) |
| 406 { | 406 { |
| 407 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSlashSeparated()
; | 407 RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); |
| 408 for (size_t i = 0; i < shorthand.length(); ++i) { | 408 for (size_t i = 0; i < shorthand.length(); ++i) { |
| 409 RefPtrWillBeRawPtr<CSSValue> value = ComputedStyleCSSValueMapping::get(s
horthand.properties()[i], style, layoutObject, styledNode, allowVisitedStyle); | 409 RefPtr<CSSValue> value = ComputedStyleCSSValueMapping::get(shorthand.pro
perties()[i], style, layoutObject, styledNode, allowVisitedStyle); |
| 410 ASSERT(value); | 410 ASSERT(value); |
| 411 list->append(value.release()); | 411 list->append(value.release()); |
| 412 } | 412 } |
| 413 return list.release(); | 413 return list.release(); |
| 414 } | 414 } |
| 415 | 415 |
| 416 static PassRefPtrWillBeRawPtr<CSSValueList> valuesForShorthandProperty(const Sty
lePropertyShorthand& shorthand, const ComputedStyle& style, const LayoutObject*
layoutObject, Node* styledNode, bool allowVisitedStyle) | 416 static PassRefPtr<CSSValueList> valuesForShorthandProperty(const StylePropertySh
orthand& shorthand, const ComputedStyle& style, const LayoutObject* layoutObject
, Node* styledNode, bool allowVisitedStyle) |
| 417 { | 417 { |
| 418 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 418 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 419 for (size_t i = 0; i < shorthand.length(); ++i) { | 419 for (size_t i = 0; i < shorthand.length(); ++i) { |
| 420 RefPtrWillBeRawPtr<CSSValue> value = ComputedStyleCSSValueMapping::get(s
horthand.properties()[i], style, layoutObject, styledNode, allowVisitedStyle); | 420 RefPtr<CSSValue> value = ComputedStyleCSSValueMapping::get(shorthand.pro
perties()[i], style, layoutObject, styledNode, allowVisitedStyle); |
| 421 ASSERT(value); | 421 ASSERT(value); |
| 422 list->append(value); | 422 list->append(value); |
| 423 } | 423 } |
| 424 return list.release(); | 424 return list.release(); |
| 425 } | 425 } |
| 426 | 426 |
| 427 static PassRefPtrWillBeRawPtr<CSSValueList> valuesForBackgroundShorthand(const C
omputedStyle& style, const LayoutObject* layoutObject, Node* styledNode, bool al
lowVisitedStyle) | 427 static PassRefPtr<CSSValueList> valuesForBackgroundShorthand(const ComputedStyle
& style, const LayoutObject* layoutObject, Node* styledNode, bool allowVisitedSt
yle) |
| 428 { | 428 { |
| 429 RefPtrWillBeRawPtr<CSSValueList> ret = CSSValueList::createCommaSeparated(); | 429 RefPtr<CSSValueList> ret = CSSValueList::createCommaSeparated(); |
| 430 const FillLayer* currLayer = &style.backgroundLayers(); | 430 const FillLayer* currLayer = &style.backgroundLayers(); |
| 431 for (; currLayer; currLayer = currLayer->next()) { | 431 for (; currLayer; currLayer = currLayer->next()) { |
| 432 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSlashSeparat
ed(); | 432 RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); |
| 433 RefPtrWillBeRawPtr<CSSValueList> beforeSlash = CSSValueList::createSpace
Separated(); | 433 RefPtr<CSSValueList> beforeSlash = CSSValueList::createSpaceSeparated(); |
| 434 if (!currLayer->next()) { // color only for final layer | 434 if (!currLayer->next()) { // color only for final layer |
| 435 RefPtrWillBeRawPtr<CSSValue> value = ComputedStyleCSSValueMapping::g
et(CSSPropertyBackgroundColor, style, layoutObject, styledNode, allowVisitedStyl
e); | 435 RefPtr<CSSValue> value = ComputedStyleCSSValueMapping::get(CSSProper
tyBackgroundColor, style, layoutObject, styledNode, allowVisitedStyle); |
| 436 ASSERT(value); | 436 ASSERT(value); |
| 437 beforeSlash->append(value); | 437 beforeSlash->append(value); |
| 438 } | 438 } |
| 439 beforeSlash->append(currLayer->image() ? currLayer->image()->cssValue()
: cssValuePool().createIdentifierValue(CSSValueNone)); | 439 beforeSlash->append(currLayer->image() ? currLayer->image()->cssValue()
: cssValuePool().createIdentifierValue(CSSValueNone)); |
| 440 beforeSlash->append(valueForFillRepeat(currLayer->repeatX(), currLayer->
repeatY())); | 440 beforeSlash->append(valueForFillRepeat(currLayer->repeatX(), currLayer->
repeatY())); |
| 441 beforeSlash->append(cssValuePool().createValue(currLayer->attachment()))
; | 441 beforeSlash->append(cssValuePool().createValue(currLayer->attachment()))
; |
| 442 beforeSlash->append(createPositionListForLayer(CSSPropertyBackgroundPosi
tion, *currLayer, style)); | 442 beforeSlash->append(createPositionListForLayer(CSSPropertyBackgroundPosi
tion, *currLayer, style)); |
| 443 list->append(beforeSlash); | 443 list->append(beforeSlash); |
| 444 RefPtrWillBeRawPtr<CSSValueList> afterSlash = CSSValueList::createSpaceS
eparated(); | 444 RefPtr<CSSValueList> afterSlash = CSSValueList::createSpaceSeparated(); |
| 445 afterSlash->append(valueForFillSize(currLayer->size(), style)); | 445 afterSlash->append(valueForFillSize(currLayer->size(), style)); |
| 446 afterSlash->append(cssValuePool().createValue(currLayer->origin())); | 446 afterSlash->append(cssValuePool().createValue(currLayer->origin())); |
| 447 afterSlash->append(cssValuePool().createValue(currLayer->clip())); | 447 afterSlash->append(cssValuePool().createValue(currLayer->clip())); |
| 448 list->append(afterSlash); | 448 list->append(afterSlash); |
| 449 ret->append(list); | 449 ret->append(list); |
| 450 } | 450 } |
| 451 return ret.release(); | 451 return ret.release(); |
| 452 } | 452 } |
| 453 | 453 |
| 454 static ContentPosition resolveContentAlignmentAuto(ContentPosition position, Con
tentDistributionType distribution, Node* element) | 454 static ContentPosition resolveContentAlignmentAuto(ContentPosition position, Con
tentDistributionType distribution, Node* element) |
| 455 { | 455 { |
| 456 if (position != ContentPositionAuto || distribution != ContentDistributionDe
fault) | 456 if (position != ContentPositionAuto || distribution != ContentDistributionDe
fault) |
| 457 return position; | 457 return position; |
| 458 | 458 |
| 459 bool isFlex = element && element->ensureComputedStyle() | 459 bool isFlex = element && element->ensureComputedStyle() |
| 460 && element->ensureComputedStyle()->isDisplayFlexibleBox(); | 460 && element->ensureComputedStyle()->isDisplayFlexibleBox(); |
| 461 | 461 |
| 462 return isFlex ? ContentPositionFlexStart : ContentPositionStart; | 462 return isFlex ? ContentPositionFlexStart : ContentPositionStart; |
| 463 } | 463 } |
| 464 | 464 |
| 465 static PassRefPtrWillBeRawPtr<CSSValueList> valueForContentPositionAndDistributi
onWithOverflowAlignment(ContentPosition position, OverflowAlignment overflowAlig
nment, ContentDistributionType distribution) | 465 static PassRefPtr<CSSValueList> valueForContentPositionAndDistributionWithOverfl
owAlignment(ContentPosition position, OverflowAlignment overflowAlignment, Conte
ntDistributionType distribution) |
| 466 { | 466 { |
| 467 RefPtrWillBeRawPtr<CSSValueList> result = CSSValueList::createSpaceSeparated
(); | 467 RefPtr<CSSValueList> result = CSSValueList::createSpaceSeparated(); |
| 468 if (distribution != ContentDistributionDefault) | 468 if (distribution != ContentDistributionDefault) |
| 469 result->append(CSSPrimitiveValue::create(distribution)); | 469 result->append(CSSPrimitiveValue::create(distribution)); |
| 470 if (distribution == ContentDistributionDefault || position != ContentPositio
nAuto) | 470 if (distribution == ContentDistributionDefault || position != ContentPositio
nAuto) |
| 471 result->append(CSSPrimitiveValue::create(position)); | 471 result->append(CSSPrimitiveValue::create(position)); |
| 472 if ((position >= ContentPositionCenter || distribution != ContentDistributio
nDefault) && overflowAlignment != OverflowAlignmentDefault) | 472 if ((position >= ContentPositionCenter || distribution != ContentDistributio
nDefault) && overflowAlignment != OverflowAlignmentDefault) |
| 473 result->append(CSSPrimitiveValue::create(overflowAlignment)); | 473 result->append(CSSPrimitiveValue::create(overflowAlignment)); |
| 474 ASSERT(result->length() > 0); | 474 ASSERT(result->length() > 0); |
| 475 ASSERT(result->length() <= 3); | 475 ASSERT(result->length() <= 3); |
| 476 return result.release(); | 476 return result.release(); |
| 477 } | 477 } |
| 478 | 478 |
| 479 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForLineHeight(const Comput
edStyle& style) | 479 static PassRefPtr<CSSPrimitiveValue> valueForLineHeight(const ComputedStyle& sty
le) |
| 480 { | 480 { |
| 481 Length length = style.lineHeight(); | 481 Length length = style.lineHeight(); |
| 482 if (length.isNegative()) | 482 if (length.isNegative()) |
| 483 return cssValuePool().createIdentifierValue(CSSValueNormal); | 483 return cssValuePool().createIdentifierValue(CSSValueNormal); |
| 484 | 484 |
| 485 return zoomAdjustedPixelValue(floatValueForLength(length, style.fontDescript
ion().specifiedSize()), style); | 485 return zoomAdjustedPixelValue(floatValueForLength(length, style.fontDescript
ion().specifiedSize()), style); |
| 486 } | 486 } |
| 487 | 487 |
| 488 static CSSValueID identifierForFamily(const AtomicString& family) | 488 static CSSValueID identifierForFamily(const AtomicString& family) |
| 489 { | 489 { |
| 490 if (family == FontFamilyNames::webkit_cursive) | 490 if (family == FontFamilyNames::webkit_cursive) |
| 491 return CSSValueCursive; | 491 return CSSValueCursive; |
| 492 if (family == FontFamilyNames::webkit_fantasy) | 492 if (family == FontFamilyNames::webkit_fantasy) |
| 493 return CSSValueFantasy; | 493 return CSSValueFantasy; |
| 494 if (family == FontFamilyNames::webkit_monospace) | 494 if (family == FontFamilyNames::webkit_monospace) |
| 495 return CSSValueMonospace; | 495 return CSSValueMonospace; |
| 496 if (family == FontFamilyNames::webkit_pictograph) | 496 if (family == FontFamilyNames::webkit_pictograph) |
| 497 return CSSValueWebkitPictograph; | 497 return CSSValueWebkitPictograph; |
| 498 if (family == FontFamilyNames::webkit_sans_serif) | 498 if (family == FontFamilyNames::webkit_sans_serif) |
| 499 return CSSValueSansSerif; | 499 return CSSValueSansSerif; |
| 500 if (family == FontFamilyNames::webkit_serif) | 500 if (family == FontFamilyNames::webkit_serif) |
| 501 return CSSValueSerif; | 501 return CSSValueSerif; |
| 502 return CSSValueInvalid; | 502 return CSSValueInvalid; |
| 503 } | 503 } |
| 504 | 504 |
| 505 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForFamily(const AtomicStri
ng& family) | 505 static PassRefPtr<CSSPrimitiveValue> valueForFamily(const AtomicString& family) |
| 506 { | 506 { |
| 507 if (CSSValueID familyIdentifier = identifierForFamily(family)) | 507 if (CSSValueID familyIdentifier = identifierForFamily(family)) |
| 508 return cssValuePool().createIdentifierValue(familyIdentifier); | 508 return cssValuePool().createIdentifierValue(familyIdentifier); |
| 509 return cssValuePool().createValue(family.string(), CSSPrimitiveValue::UnitTy
pe::CustomIdentifier); | 509 return cssValuePool().createValue(family.string(), CSSPrimitiveValue::UnitTy
pe::CustomIdentifier); |
| 510 } | 510 } |
| 511 | 511 |
| 512 static PassRefPtrWillBeRawPtr<CSSValueList> valueForFontFamily(const ComputedSty
le& style) | 512 static PassRefPtr<CSSValueList> valueForFontFamily(const ComputedStyle& style) |
| 513 { | 513 { |
| 514 const FontFamily& firstFamily = style.fontDescription().family(); | 514 const FontFamily& firstFamily = style.fontDescription().family(); |
| 515 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated()
; | 515 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 516 for (const FontFamily* family = &firstFamily; family; family = family->next(
)) | 516 for (const FontFamily* family = &firstFamily; family; family = family->next(
)) |
| 517 list->append(valueForFamily(family->family())); | 517 list->append(valueForFamily(family->family())); |
| 518 return list.release(); | 518 return list.release(); |
| 519 } | 519 } |
| 520 | 520 |
| 521 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForFontSize(const Computed
Style& style) | 521 static PassRefPtr<CSSPrimitiveValue> valueForFontSize(const ComputedStyle& style
) |
| 522 { | 522 { |
| 523 return zoomAdjustedPixelValue(style.fontDescription().computedSize(), style)
; | 523 return zoomAdjustedPixelValue(style.fontDescription().computedSize(), style)
; |
| 524 } | 524 } |
| 525 | 525 |
| 526 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForFontStretch(const Compu
tedStyle& style) | 526 static PassRefPtr<CSSPrimitiveValue> valueForFontStretch(const ComputedStyle& st
yle) |
| 527 { | 527 { |
| 528 return cssValuePool().createValue(style.fontDescription().stretch()); | 528 return cssValuePool().createValue(style.fontDescription().stretch()); |
| 529 } | 529 } |
| 530 | 530 |
| 531 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForFontStyle(const Compute
dStyle& style) | 531 static PassRefPtr<CSSPrimitiveValue> valueForFontStyle(const ComputedStyle& styl
e) |
| 532 { | 532 { |
| 533 return cssValuePool().createValue(style.fontDescription().style()); | 533 return cssValuePool().createValue(style.fontDescription().style()); |
| 534 } | 534 } |
| 535 | 535 |
| 536 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForFontVariant(const Compu
tedStyle& style) | 536 static PassRefPtr<CSSPrimitiveValue> valueForFontVariant(const ComputedStyle& st
yle) |
| 537 { | 537 { |
| 538 return cssValuePool().createValue(style.fontDescription().variant()); | 538 return cssValuePool().createValue(style.fontDescription().variant()); |
| 539 } | 539 } |
| 540 | 540 |
| 541 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForFontWeight(const Comput
edStyle& style) | 541 static PassRefPtr<CSSPrimitiveValue> valueForFontWeight(const ComputedStyle& sty
le) |
| 542 { | 542 { |
| 543 return cssValuePool().createValue(style.fontDescription().weight()); | 543 return cssValuePool().createValue(style.fontDescription().weight()); |
| 544 } | 544 } |
| 545 | 545 |
| 546 static PassRefPtrWillBeRawPtr<CSSValue> specifiedValueForGridTrackBreadth(const
GridLength& trackBreadth, const ComputedStyle& style) | 546 static PassRefPtr<CSSValue> specifiedValueForGridTrackBreadth(const GridLength&
trackBreadth, const ComputedStyle& style) |
| 547 { | 547 { |
| 548 if (!trackBreadth.isLength()) | 548 if (!trackBreadth.isLength()) |
| 549 return cssValuePool().createValue(trackBreadth.flex(), CSSPrimitiveValue
::UnitType::Fraction); | 549 return cssValuePool().createValue(trackBreadth.flex(), CSSPrimitiveValue
::UnitType::Fraction); |
| 550 | 550 |
| 551 const Length& trackBreadthLength = trackBreadth.length(); | 551 const Length& trackBreadthLength = trackBreadth.length(); |
| 552 if (trackBreadthLength.isAuto()) | 552 if (trackBreadthLength.isAuto()) |
| 553 return cssValuePool().createIdentifierValue(CSSValueAuto); | 553 return cssValuePool().createIdentifierValue(CSSValueAuto); |
| 554 return zoomAdjustedPixelValueForLength(trackBreadthLength, style); | 554 return zoomAdjustedPixelValueForLength(trackBreadthLength, style); |
| 555 } | 555 } |
| 556 | 556 |
| 557 static PassRefPtrWillBeRawPtr<CSSValue> specifiedValueForGridTrackSize(const Gri
dTrackSize& trackSize, const ComputedStyle& style) | 557 static PassRefPtr<CSSValue> specifiedValueForGridTrackSize(const GridTrackSize&
trackSize, const ComputedStyle& style) |
| 558 { | 558 { |
| 559 switch (trackSize.type()) { | 559 switch (trackSize.type()) { |
| 560 case LengthTrackSizing: | 560 case LengthTrackSizing: |
| 561 return specifiedValueForGridTrackBreadth(trackSize.length(), style); | 561 return specifiedValueForGridTrackBreadth(trackSize.length(), style); |
| 562 case MinMaxTrackSizing: | 562 case MinMaxTrackSizing: |
| 563 RefPtrWillBeRawPtr<CSSFunctionValue> minMaxTrackBreadths = CSSFunctionVa
lue::create(CSSValueMinmax); | 563 RefPtr<CSSFunctionValue> minMaxTrackBreadths = CSSFunctionValue::create(
CSSValueMinmax); |
| 564 minMaxTrackBreadths->append(specifiedValueForGridTrackBreadth(trackSize.
minTrackBreadth(), style)); | 564 minMaxTrackBreadths->append(specifiedValueForGridTrackBreadth(trackSize.
minTrackBreadth(), style)); |
| 565 minMaxTrackBreadths->append(specifiedValueForGridTrackBreadth(trackSize.
maxTrackBreadth(), style)); | 565 minMaxTrackBreadths->append(specifiedValueForGridTrackBreadth(trackSize.
maxTrackBreadth(), style)); |
| 566 return minMaxTrackBreadths.release(); | 566 return minMaxTrackBreadths.release(); |
| 567 } | 567 } |
| 568 ASSERT_NOT_REACHED(); | 568 ASSERT_NOT_REACHED(); |
| 569 return nullptr; | 569 return nullptr; |
| 570 } | 570 } |
| 571 | 571 |
| 572 static void addValuesForNamedGridLinesAtIndex(const OrderedNamedGridLines& order
edNamedGridLines, size_t i, CSSValueList& list) | 572 static void addValuesForNamedGridLinesAtIndex(const OrderedNamedGridLines& order
edNamedGridLines, size_t i, CSSValueList& list) |
| 573 { | 573 { |
| 574 const Vector<String>& namedGridLines = orderedNamedGridLines.get(i); | 574 const Vector<String>& namedGridLines = orderedNamedGridLines.get(i); |
| 575 if (namedGridLines.isEmpty()) | 575 if (namedGridLines.isEmpty()) |
| 576 return; | 576 return; |
| 577 | 577 |
| 578 RefPtrWillBeRawPtr<CSSGridLineNamesValue> lineNames = CSSGridLineNamesValue:
:create(); | 578 RefPtr<CSSGridLineNamesValue> lineNames = CSSGridLineNamesValue::create(); |
| 579 for (size_t j = 0; j < namedGridLines.size(); ++j) | 579 for (size_t j = 0; j < namedGridLines.size(); ++j) |
| 580 lineNames->append(cssValuePool().createValue(namedGridLines[j], CSSPrimi
tiveValue::UnitType::CustomIdentifier)); | 580 lineNames->append(cssValuePool().createValue(namedGridLines[j], CSSPrimi
tiveValue::UnitType::CustomIdentifier)); |
| 581 list.append(lineNames.release()); | 581 list.append(lineNames.release()); |
| 582 } | 582 } |
| 583 | 583 |
| 584 static PassRefPtrWillBeRawPtr<CSSValue> valueForGridTrackList(GridTrackSizingDir
ection direction, const LayoutObject* layoutObject, const ComputedStyle& style) | 584 static PassRefPtr<CSSValue> valueForGridTrackList(GridTrackSizingDirection direc
tion, const LayoutObject* layoutObject, const ComputedStyle& style) |
| 585 { | 585 { |
| 586 const Vector<GridTrackSize>& trackSizes = direction == ForColumns ? style.gr
idTemplateColumns() : style.gridTemplateRows(); | 586 const Vector<GridTrackSize>& trackSizes = direction == ForColumns ? style.gr
idTemplateColumns() : style.gridTemplateRows(); |
| 587 const OrderedNamedGridLines& orderedNamedGridLines = direction == ForColumns
? style.orderedNamedGridColumnLines() : style.orderedNamedGridRowLines(); | 587 const OrderedNamedGridLines& orderedNamedGridLines = direction == ForColumns
? style.orderedNamedGridColumnLines() : style.orderedNamedGridRowLines(); |
| 588 bool isLayoutGrid = layoutObject && layoutObject->isLayoutGrid(); | 588 bool isLayoutGrid = layoutObject && layoutObject->isLayoutGrid(); |
| 589 | 589 |
| 590 // Handle the 'none' case. | 590 // Handle the 'none' case. |
| 591 bool trackListIsEmpty = trackSizes.isEmpty(); | 591 bool trackListIsEmpty = trackSizes.isEmpty(); |
| 592 if (isLayoutGrid && trackListIsEmpty) { | 592 if (isLayoutGrid && trackListIsEmpty) { |
| 593 // For grids we should consider every listed track, whether implicitly o
r explicitly created. If we don't have | 593 // For grids we should consider every listed track, whether implicitly o
r explicitly created. If we don't have |
| 594 // any explicit track and there are no children then there are no implic
it tracks. We cannot simply check the | 594 // any explicit track and there are no children then there are no implic
it tracks. We cannot simply check the |
| 595 // number of rows/columns in our internal grid representation because it
's always at least 1x1 (see r143331). | 595 // number of rows/columns in our internal grid representation because it
's always at least 1x1 (see r143331). |
| 596 trackListIsEmpty = !toLayoutBlock(layoutObject)->firstChild(); | 596 trackListIsEmpty = !toLayoutBlock(layoutObject)->firstChild(); |
| 597 } | 597 } |
| 598 | 598 |
| 599 if (trackListIsEmpty) { | 599 if (trackListIsEmpty) { |
| 600 ASSERT(orderedNamedGridLines.isEmpty()); | 600 ASSERT(orderedNamedGridLines.isEmpty()); |
| 601 return cssValuePool().createIdentifierValue(CSSValueNone); | 601 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 602 } | 602 } |
| 603 | 603 |
| 604 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 604 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 605 size_t insertionIndex; | 605 size_t insertionIndex; |
| 606 if (isLayoutGrid) { | 606 if (isLayoutGrid) { |
| 607 const Vector<LayoutUnit>& trackPositions = direction == ForColumns ? toL
ayoutGrid(layoutObject)->columnPositions() : toLayoutGrid(layoutObject)->rowPosi
tions(); | 607 const Vector<LayoutUnit>& trackPositions = direction == ForColumns ? toL
ayoutGrid(layoutObject)->columnPositions() : toLayoutGrid(layoutObject)->rowPosi
tions(); |
| 608 // There are at least #tracks + 1 grid lines (trackPositions). Apart fro
m that, the grid container can generate implicit grid tracks, | 608 // There are at least #tracks + 1 grid lines (trackPositions). Apart fro
m that, the grid container can generate implicit grid tracks, |
| 609 // so we'll have more trackPositions than trackSizes as the latter only
contain the explicit grid. | 609 // so we'll have more trackPositions than trackSizes as the latter only
contain the explicit grid. |
| 610 ASSERT(trackPositions.size() - 1 >= trackSizes.size()); | 610 ASSERT(trackPositions.size() - 1 >= trackSizes.size()); |
| 611 | 611 |
| 612 for (size_t i = 0; i < trackPositions.size() - 1; ++i) { | 612 for (size_t i = 0; i < trackPositions.size() - 1; ++i) { |
| 613 addValuesForNamedGridLinesAtIndex(orderedNamedGridLines, i, *list); | 613 addValuesForNamedGridLinesAtIndex(orderedNamedGridLines, i, *list); |
| 614 list->append(zoomAdjustedPixelValue(trackPositions[i + 1] - trackPos
itions[i], style)); | 614 list->append(zoomAdjustedPixelValue(trackPositions[i + 1] - trackPos
itions[i], style)); |
| 615 } | 615 } |
| 616 insertionIndex = trackPositions.size() - 1; | 616 insertionIndex = trackPositions.size() - 1; |
| 617 } else { | 617 } else { |
| 618 for (size_t i = 0; i < trackSizes.size(); ++i) { | 618 for (size_t i = 0; i < trackSizes.size(); ++i) { |
| 619 addValuesForNamedGridLinesAtIndex(orderedNamedGridLines, i, *list); | 619 addValuesForNamedGridLinesAtIndex(orderedNamedGridLines, i, *list); |
| 620 list->append(specifiedValueForGridTrackSize(trackSizes[i], style)); | 620 list->append(specifiedValueForGridTrackSize(trackSizes[i], style)); |
| 621 } | 621 } |
| 622 insertionIndex = trackSizes.size(); | 622 insertionIndex = trackSizes.size(); |
| 623 } | 623 } |
| 624 // Those are the trailing <string>* allowed in the syntax. | 624 // Those are the trailing <string>* allowed in the syntax. |
| 625 addValuesForNamedGridLinesAtIndex(orderedNamedGridLines, insertionIndex, *li
st); | 625 addValuesForNamedGridLinesAtIndex(orderedNamedGridLines, insertionIndex, *li
st); |
| 626 return list.release(); | 626 return list.release(); |
| 627 } | 627 } |
| 628 | 628 |
| 629 static PassRefPtrWillBeRawPtr<CSSValue> valueForGridPosition(const GridPosition&
position) | 629 static PassRefPtr<CSSValue> valueForGridPosition(const GridPosition& position) |
| 630 { | 630 { |
| 631 if (position.isAuto()) | 631 if (position.isAuto()) |
| 632 return cssValuePool().createIdentifierValue(CSSValueAuto); | 632 return cssValuePool().createIdentifierValue(CSSValueAuto); |
| 633 | 633 |
| 634 if (position.isNamedGridArea()) | 634 if (position.isNamedGridArea()) |
| 635 return cssValuePool().createValue(position.namedGridLine(), CSSPrimitive
Value::UnitType::CustomIdentifier); | 635 return cssValuePool().createValue(position.namedGridLine(), CSSPrimitive
Value::UnitType::CustomIdentifier); |
| 636 | 636 |
| 637 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 637 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 638 if (position.isSpan()) { | 638 if (position.isSpan()) { |
| 639 list->append(cssValuePool().createIdentifierValue(CSSValueSpan)); | 639 list->append(cssValuePool().createIdentifierValue(CSSValueSpan)); |
| 640 list->append(cssValuePool().createValue(position.spanPosition(), CSSPrim
itiveValue::UnitType::Number)); | 640 list->append(cssValuePool().createValue(position.spanPosition(), CSSPrim
itiveValue::UnitType::Number)); |
| 641 } else { | 641 } else { |
| 642 list->append(cssValuePool().createValue(position.integerPosition(), CSSP
rimitiveValue::UnitType::Number)); | 642 list->append(cssValuePool().createValue(position.integerPosition(), CSSP
rimitiveValue::UnitType::Number)); |
| 643 } | 643 } |
| 644 | 644 |
| 645 if (!position.namedGridLine().isNull()) | 645 if (!position.namedGridLine().isNull()) |
| 646 list->append(cssValuePool().createValue(position.namedGridLine(), CSSPri
mitiveValue::UnitType::CustomIdentifier)); | 646 list->append(cssValuePool().createValue(position.namedGridLine(), CSSPri
mitiveValue::UnitType::CustomIdentifier)); |
| 647 return list; | 647 return list; |
| 648 } | 648 } |
| 649 | 649 |
| 650 static LayoutRect sizingBox(const LayoutObject* layoutObject) | 650 static LayoutRect sizingBox(const LayoutObject* layoutObject) |
| 651 { | 651 { |
| 652 if (!layoutObject->isBox()) | 652 if (!layoutObject->isBox()) |
| 653 return LayoutRect(); | 653 return LayoutRect(); |
| 654 | 654 |
| 655 const LayoutBox* box = toLayoutBox(layoutObject); | 655 const LayoutBox* box = toLayoutBox(layoutObject); |
| 656 return box->style()->boxSizing() == BORDER_BOX ? box->borderBoxRect() : box-
>computedCSSContentBoxRect(); | 656 return box->style()->boxSizing() == BORDER_BOX ? box->borderBoxRect() : box-
>computedCSSContentBoxRect(); |
| 657 } | 657 } |
| 658 | 658 |
| 659 static PassRefPtrWillBeRawPtr<CSSValue> renderTextDecorationFlagsToCSSValue(int
textDecoration) | 659 static PassRefPtr<CSSValue> renderTextDecorationFlagsToCSSValue(int textDecorati
on) |
| 660 { | 660 { |
| 661 // Blink value is ignored. | 661 // Blink value is ignored. |
| 662 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 662 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 663 if (textDecoration & TextDecorationUnderline) | 663 if (textDecoration & TextDecorationUnderline) |
| 664 list->append(cssValuePool().createIdentifierValue(CSSValueUnderline)); | 664 list->append(cssValuePool().createIdentifierValue(CSSValueUnderline)); |
| 665 if (textDecoration & TextDecorationOverline) | 665 if (textDecoration & TextDecorationOverline) |
| 666 list->append(cssValuePool().createIdentifierValue(CSSValueOverline)); | 666 list->append(cssValuePool().createIdentifierValue(CSSValueOverline)); |
| 667 if (textDecoration & TextDecorationLineThrough) | 667 if (textDecoration & TextDecorationLineThrough) |
| 668 list->append(cssValuePool().createIdentifierValue(CSSValueLineThrough)); | 668 list->append(cssValuePool().createIdentifierValue(CSSValueLineThrough)); |
| 669 | 669 |
| 670 if (!list->length()) | 670 if (!list->length()) |
| 671 return cssValuePool().createIdentifierValue(CSSValueNone); | 671 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 672 return list.release(); | 672 return list.release(); |
| 673 } | 673 } |
| 674 | 674 |
| 675 static PassRefPtrWillBeRawPtr<CSSValue> valueForTextDecorationStyle(TextDecorati
onStyle textDecorationStyle) | 675 static PassRefPtr<CSSValue> valueForTextDecorationStyle(TextDecorationStyle text
DecorationStyle) |
| 676 { | 676 { |
| 677 switch (textDecorationStyle) { | 677 switch (textDecorationStyle) { |
| 678 case TextDecorationStyleSolid: | 678 case TextDecorationStyleSolid: |
| 679 return cssValuePool().createIdentifierValue(CSSValueSolid); | 679 return cssValuePool().createIdentifierValue(CSSValueSolid); |
| 680 case TextDecorationStyleDouble: | 680 case TextDecorationStyleDouble: |
| 681 return cssValuePool().createIdentifierValue(CSSValueDouble); | 681 return cssValuePool().createIdentifierValue(CSSValueDouble); |
| 682 case TextDecorationStyleDotted: | 682 case TextDecorationStyleDotted: |
| 683 return cssValuePool().createIdentifierValue(CSSValueDotted); | 683 return cssValuePool().createIdentifierValue(CSSValueDotted); |
| 684 case TextDecorationStyleDashed: | 684 case TextDecorationStyleDashed: |
| 685 return cssValuePool().createIdentifierValue(CSSValueDashed); | 685 return cssValuePool().createIdentifierValue(CSSValueDashed); |
| 686 case TextDecorationStyleWavy: | 686 case TextDecorationStyleWavy: |
| 687 return cssValuePool().createIdentifierValue(CSSValueWavy); | 687 return cssValuePool().createIdentifierValue(CSSValueWavy); |
| 688 } | 688 } |
| 689 | 689 |
| 690 ASSERT_NOT_REACHED(); | 690 ASSERT_NOT_REACHED(); |
| 691 return cssValuePool().createExplicitInitialValue(); | 691 return cssValuePool().createExplicitInitialValue(); |
| 692 } | 692 } |
| 693 | 693 |
| 694 static PassRefPtrWillBeRawPtr<CSSValue> touchActionFlagsToCSSValue(TouchAction t
ouchAction) | 694 static PassRefPtr<CSSValue> touchActionFlagsToCSSValue(TouchAction touchAction) |
| 695 { | 695 { |
| 696 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 696 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 697 if (touchAction == TouchActionAuto) | 697 if (touchAction == TouchActionAuto) |
| 698 list->append(cssValuePool().createIdentifierValue(CSSValueAuto)); | 698 list->append(cssValuePool().createIdentifierValue(CSSValueAuto)); |
| 699 if (touchAction & TouchActionNone) { | 699 if (touchAction & TouchActionNone) { |
| 700 ASSERT(touchAction == TouchActionNone); | 700 ASSERT(touchAction == TouchActionNone); |
| 701 list->append(cssValuePool().createIdentifierValue(CSSValueNone)); | 701 list->append(cssValuePool().createIdentifierValue(CSSValueNone)); |
| 702 } | 702 } |
| 703 if (touchAction == (TouchActionPanX | TouchActionPanY | TouchActionPinchZoom
)) { | 703 if (touchAction == (TouchActionPanX | TouchActionPanY | TouchActionPinchZoom
)) { |
| 704 list->append(cssValuePool().createIdentifierValue(CSSValueManipulation))
; | 704 list->append(cssValuePool().createIdentifierValue(CSSValueManipulation))
; |
| 705 } else { | 705 } else { |
| 706 if ((touchAction & TouchActionPanX) == TouchActionPanX) | 706 if ((touchAction & TouchActionPanX) == TouchActionPanX) |
| 707 list->append(cssValuePool().createIdentifierValue(CSSValuePanX)); | 707 list->append(cssValuePool().createIdentifierValue(CSSValuePanX)); |
| 708 else if (touchAction & TouchActionPanLeft) | 708 else if (touchAction & TouchActionPanLeft) |
| 709 list->append(cssValuePool().createIdentifierValue(CSSValuePanLeft)); | 709 list->append(cssValuePool().createIdentifierValue(CSSValuePanLeft)); |
| 710 else if (touchAction & TouchActionPanRight) | 710 else if (touchAction & TouchActionPanRight) |
| 711 list->append(cssValuePool().createIdentifierValue(CSSValuePanRight))
; | 711 list->append(cssValuePool().createIdentifierValue(CSSValuePanRight))
; |
| 712 | 712 |
| 713 if ((touchAction & TouchActionPanY) == TouchActionPanY) | 713 if ((touchAction & TouchActionPanY) == TouchActionPanY) |
| 714 list->append(cssValuePool().createIdentifierValue(CSSValuePanY)); | 714 list->append(cssValuePool().createIdentifierValue(CSSValuePanY)); |
| 715 else if (touchAction & TouchActionPanUp) | 715 else if (touchAction & TouchActionPanUp) |
| 716 list->append(cssValuePool().createIdentifierValue(CSSValuePanUp)); | 716 list->append(cssValuePool().createIdentifierValue(CSSValuePanUp)); |
| 717 else if (touchAction & TouchActionPanDown) | 717 else if (touchAction & TouchActionPanDown) |
| 718 list->append(cssValuePool().createIdentifierValue(CSSValuePanDown)); | 718 list->append(cssValuePool().createIdentifierValue(CSSValuePanDown)); |
| 719 } | 719 } |
| 720 ASSERT(list->length()); | 720 ASSERT(list->length()); |
| 721 return list.release(); | 721 return list.release(); |
| 722 } | 722 } |
| 723 | 723 |
| 724 static PassRefPtrWillBeRawPtr<CSSValue> valueForWillChange(const Vector<CSSPrope
rtyID>& willChangeProperties, bool willChangeContents, bool willChangeScrollPosi
tion) | 724 static PassRefPtr<CSSValue> valueForWillChange(const Vector<CSSPropertyID>& will
ChangeProperties, bool willChangeContents, bool willChangeScrollPosition) |
| 725 { | 725 { |
| 726 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated()
; | 726 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 727 if (willChangeContents) | 727 if (willChangeContents) |
| 728 list->append(cssValuePool().createIdentifierValue(CSSValueContents)); | 728 list->append(cssValuePool().createIdentifierValue(CSSValueContents)); |
| 729 if (willChangeScrollPosition) | 729 if (willChangeScrollPosition) |
| 730 list->append(cssValuePool().createIdentifierValue(CSSValueScrollPosition
)); | 730 list->append(cssValuePool().createIdentifierValue(CSSValueScrollPosition
)); |
| 731 for (size_t i = 0; i < willChangeProperties.size(); ++i) | 731 for (size_t i = 0; i < willChangeProperties.size(); ++i) |
| 732 list->append(cssValuePool().createIdentifierValue(willChangeProperties[i
])); | 732 list->append(cssValuePool().createIdentifierValue(willChangeProperties[i
])); |
| 733 if (!list->length()) | 733 if (!list->length()) |
| 734 list->append(cssValuePool().createIdentifierValue(CSSValueAuto)); | 734 list->append(cssValuePool().createIdentifierValue(CSSValueAuto)); |
| 735 return list.release(); | 735 return list.release(); |
| 736 } | 736 } |
| 737 | 737 |
| 738 static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationDelay(const CSSTimingDa
ta* timingData) | 738 static PassRefPtr<CSSValue> valueForAnimationDelay(const CSSTimingData* timingDa
ta) |
| 739 { | 739 { |
| 740 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated()
; | 740 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 741 if (timingData) { | 741 if (timingData) { |
| 742 for (size_t i = 0; i < timingData->delayList().size(); ++i) | 742 for (size_t i = 0; i < timingData->delayList().size(); ++i) |
| 743 list->append(cssValuePool().createValue(timingData->delayList()[i],
CSSPrimitiveValue::UnitType::Seconds)); | 743 list->append(cssValuePool().createValue(timingData->delayList()[i],
CSSPrimitiveValue::UnitType::Seconds)); |
| 744 } else { | 744 } else { |
| 745 list->append(cssValuePool().createValue(CSSTimingData::initialDelay(), C
SSPrimitiveValue::UnitType::Seconds)); | 745 list->append(cssValuePool().createValue(CSSTimingData::initialDelay(), C
SSPrimitiveValue::UnitType::Seconds)); |
| 746 } | 746 } |
| 747 return list.release(); | 747 return list.release(); |
| 748 } | 748 } |
| 749 | 749 |
| 750 static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationDirection(Timing::Playb
ackDirection direction) | 750 static PassRefPtr<CSSValue> valueForAnimationDirection(Timing::PlaybackDirection
direction) |
| 751 { | 751 { |
| 752 switch (direction) { | 752 switch (direction) { |
| 753 case Timing::PlaybackDirectionNormal: | 753 case Timing::PlaybackDirectionNormal: |
| 754 return cssValuePool().createIdentifierValue(CSSValueNormal); | 754 return cssValuePool().createIdentifierValue(CSSValueNormal); |
| 755 case Timing::PlaybackDirectionAlternate: | 755 case Timing::PlaybackDirectionAlternate: |
| 756 return cssValuePool().createIdentifierValue(CSSValueAlternate); | 756 return cssValuePool().createIdentifierValue(CSSValueAlternate); |
| 757 case Timing::PlaybackDirectionReverse: | 757 case Timing::PlaybackDirectionReverse: |
| 758 return cssValuePool().createIdentifierValue(CSSValueReverse); | 758 return cssValuePool().createIdentifierValue(CSSValueReverse); |
| 759 case Timing::PlaybackDirectionAlternateReverse: | 759 case Timing::PlaybackDirectionAlternateReverse: |
| 760 return cssValuePool().createIdentifierValue(CSSValueAlternateReverse); | 760 return cssValuePool().createIdentifierValue(CSSValueAlternateReverse); |
| 761 default: | 761 default: |
| 762 ASSERT_NOT_REACHED(); | 762 ASSERT_NOT_REACHED(); |
| 763 return nullptr; | 763 return nullptr; |
| 764 } | 764 } |
| 765 } | 765 } |
| 766 | 766 |
| 767 static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationDuration(const CSSTimin
gData* timingData) | 767 static PassRefPtr<CSSValue> valueForAnimationDuration(const CSSTimingData* timin
gData) |
| 768 { | 768 { |
| 769 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated()
; | 769 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 770 if (timingData) { | 770 if (timingData) { |
| 771 for (size_t i = 0; i < timingData->durationList().size(); ++i) | 771 for (size_t i = 0; i < timingData->durationList().size(); ++i) |
| 772 list->append(cssValuePool().createValue(timingData->durationList()[i
], CSSPrimitiveValue::UnitType::Seconds)); | 772 list->append(cssValuePool().createValue(timingData->durationList()[i
], CSSPrimitiveValue::UnitType::Seconds)); |
| 773 } else { | 773 } else { |
| 774 list->append(cssValuePool().createValue(CSSTimingData::initialDuration()
, CSSPrimitiveValue::UnitType::Seconds)); | 774 list->append(cssValuePool().createValue(CSSTimingData::initialDuration()
, CSSPrimitiveValue::UnitType::Seconds)); |
| 775 } | 775 } |
| 776 return list.release(); | 776 return list.release(); |
| 777 } | 777 } |
| 778 | 778 |
| 779 static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationFillMode(Timing::FillMo
de fillMode) | 779 static PassRefPtr<CSSValue> valueForAnimationFillMode(Timing::FillMode fillMode) |
| 780 { | 780 { |
| 781 switch (fillMode) { | 781 switch (fillMode) { |
| 782 case Timing::FillModeNone: | 782 case Timing::FillModeNone: |
| 783 return cssValuePool().createIdentifierValue(CSSValueNone); | 783 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 784 case Timing::FillModeForwards: | 784 case Timing::FillModeForwards: |
| 785 return cssValuePool().createIdentifierValue(CSSValueForwards); | 785 return cssValuePool().createIdentifierValue(CSSValueForwards); |
| 786 case Timing::FillModeBackwards: | 786 case Timing::FillModeBackwards: |
| 787 return cssValuePool().createIdentifierValue(CSSValueBackwards); | 787 return cssValuePool().createIdentifierValue(CSSValueBackwards); |
| 788 case Timing::FillModeBoth: | 788 case Timing::FillModeBoth: |
| 789 return cssValuePool().createIdentifierValue(CSSValueBoth); | 789 return cssValuePool().createIdentifierValue(CSSValueBoth); |
| 790 default: | 790 default: |
| 791 ASSERT_NOT_REACHED(); | 791 ASSERT_NOT_REACHED(); |
| 792 return nullptr; | 792 return nullptr; |
| 793 } | 793 } |
| 794 } | 794 } |
| 795 | 795 |
| 796 static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationIterationCount(double i
terationCount) | 796 static PassRefPtr<CSSValue> valueForAnimationIterationCount(double iterationCoun
t) |
| 797 { | 797 { |
| 798 if (iterationCount == std::numeric_limits<double>::infinity()) | 798 if (iterationCount == std::numeric_limits<double>::infinity()) |
| 799 return cssValuePool().createIdentifierValue(CSSValueInfinite); | 799 return cssValuePool().createIdentifierValue(CSSValueInfinite); |
| 800 return cssValuePool().createValue(iterationCount, CSSPrimitiveValue::UnitTyp
e::Number); | 800 return cssValuePool().createValue(iterationCount, CSSPrimitiveValue::UnitTyp
e::Number); |
| 801 } | 801 } |
| 802 | 802 |
| 803 static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationPlayState(EAnimPlayStat
e playState) | 803 static PassRefPtr<CSSValue> valueForAnimationPlayState(EAnimPlayState playState) |
| 804 { | 804 { |
| 805 if (playState == AnimPlayStatePlaying) | 805 if (playState == AnimPlayStatePlaying) |
| 806 return cssValuePool().createIdentifierValue(CSSValueRunning); | 806 return cssValuePool().createIdentifierValue(CSSValueRunning); |
| 807 ASSERT(playState == AnimPlayStatePaused); | 807 ASSERT(playState == AnimPlayStatePaused); |
| 808 return cssValuePool().createIdentifierValue(CSSValuePaused); | 808 return cssValuePool().createIdentifierValue(CSSValuePaused); |
| 809 } | 809 } |
| 810 | 810 |
| 811 static PassRefPtrWillBeRawPtr<CSSValue> createTimingFunctionValue(const TimingFu
nction* timingFunction) | 811 static PassRefPtr<CSSValue> createTimingFunctionValue(const TimingFunction* timi
ngFunction) |
| 812 { | 812 { |
| 813 switch (timingFunction->type()) { | 813 switch (timingFunction->type()) { |
| 814 case TimingFunction::CubicBezierFunction: | 814 case TimingFunction::CubicBezierFunction: |
| 815 { | 815 { |
| 816 const CubicBezierTimingFunction* bezierTimingFunction = toCubicBezie
rTimingFunction(timingFunction); | 816 const CubicBezierTimingFunction* bezierTimingFunction = toCubicBezie
rTimingFunction(timingFunction); |
| 817 if (bezierTimingFunction->subType() != CubicBezierTimingFunction::Cu
stom) { | 817 if (bezierTimingFunction->subType() != CubicBezierTimingFunction::Cu
stom) { |
| 818 CSSValueID valueId = CSSValueInvalid; | 818 CSSValueID valueId = CSSValueInvalid; |
| 819 switch (bezierTimingFunction->subType()) { | 819 switch (bezierTimingFunction->subType()) { |
| 820 case CubicBezierTimingFunction::Ease: | 820 case CubicBezierTimingFunction::Ease: |
| 821 valueId = CSSValueEase; | 821 valueId = CSSValueEase; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 849 return CSSStepsTimingFunctionValue::create(steps, position); | 849 return CSSStepsTimingFunctionValue::create(steps, position); |
| 850 CSSValueID valueId = position == StepsTimingFunction::Start ? CSSVal
ueStepStart : CSSValueStepEnd; | 850 CSSValueID valueId = position == StepsTimingFunction::Start ? CSSVal
ueStepStart : CSSValueStepEnd; |
| 851 return cssValuePool().createIdentifierValue(valueId); | 851 return cssValuePool().createIdentifierValue(valueId); |
| 852 } | 852 } |
| 853 | 853 |
| 854 default: | 854 default: |
| 855 return cssValuePool().createIdentifierValue(CSSValueLinear); | 855 return cssValuePool().createIdentifierValue(CSSValueLinear); |
| 856 } | 856 } |
| 857 } | 857 } |
| 858 | 858 |
| 859 static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationTimingFunction(const CS
STimingData* timingData) | 859 static PassRefPtr<CSSValue> valueForAnimationTimingFunction(const CSSTimingData*
timingData) |
| 860 { | 860 { |
| 861 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated()
; | 861 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 862 if (timingData) { | 862 if (timingData) { |
| 863 for (size_t i = 0; i < timingData->timingFunctionList().size(); ++i) | 863 for (size_t i = 0; i < timingData->timingFunctionList().size(); ++i) |
| 864 list->append(createTimingFunctionValue(timingData->timingFunctionLis
t()[i].get())); | 864 list->append(createTimingFunctionValue(timingData->timingFunctionLis
t()[i].get())); |
| 865 } else { | 865 } else { |
| 866 list->append(createTimingFunctionValue(CSSTimingData::initialTimingFunct
ion().get())); | 866 list->append(createTimingFunctionValue(CSSTimingData::initialTimingFunct
ion().get())); |
| 867 } | 867 } |
| 868 return list.release(); | 868 return list.release(); |
| 869 } | 869 } |
| 870 | 870 |
| 871 static PassRefPtrWillBeRawPtr<CSSValueList> valuesForBorderRadiusCorner(LengthSi
ze radius, const ComputedStyle& style) | 871 static PassRefPtr<CSSValueList> valuesForBorderRadiusCorner(LengthSize radius, c
onst ComputedStyle& style) |
| 872 { | 872 { |
| 873 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 873 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 874 if (radius.width().type() == Percent) | 874 if (radius.width().type() == Percent) |
| 875 list->append(cssValuePool().createValue(radius.width().percent(), CSSPri
mitiveValue::UnitType::Percentage)); | 875 list->append(cssValuePool().createValue(radius.width().percent(), CSSPri
mitiveValue::UnitType::Percentage)); |
| 876 else | 876 else |
| 877 list->append(zoomAdjustedPixelValueForLength(radius.width(), style)); | 877 list->append(zoomAdjustedPixelValueForLength(radius.width(), style)); |
| 878 if (radius.height().type() == Percent) | 878 if (radius.height().type() == Percent) |
| 879 list->append(cssValuePool().createValue(radius.height().percent(), CSSPr
imitiveValue::UnitType::Percentage)); | 879 list->append(cssValuePool().createValue(radius.height().percent(), CSSPr
imitiveValue::UnitType::Percentage)); |
| 880 else | 880 else |
| 881 list->append(zoomAdjustedPixelValueForLength(radius.height(), style)); | 881 list->append(zoomAdjustedPixelValueForLength(radius.height(), style)); |
| 882 return list.release(); | 882 return list.release(); |
| 883 } | 883 } |
| 884 | 884 |
| 885 static PassRefPtrWillBeRawPtr<CSSValue> valueForBorderRadiusCorner(LengthSize ra
dius, const ComputedStyle& style) | 885 static PassRefPtr<CSSValue> valueForBorderRadiusCorner(LengthSize radius, const
ComputedStyle& style) |
| 886 { | 886 { |
| 887 RefPtrWillBeRawPtr<CSSValueList> list = valuesForBorderRadiusCorner(radius,
style); | 887 RefPtr<CSSValueList> list = valuesForBorderRadiusCorner(radius, style); |
| 888 if (list->item(0)->equals(*list->item(1))) | 888 if (list->item(0)->equals(*list->item(1))) |
| 889 return list->item(0); | 889 return list->item(0); |
| 890 return list.release(); | 890 return list.release(); |
| 891 } | 891 } |
| 892 | 892 |
| 893 static PassRefPtrWillBeRawPtr<CSSFunctionValue> valueForMatrixTransform(const Tr
ansformationMatrix& transform, const ComputedStyle& style) | 893 static PassRefPtr<CSSFunctionValue> valueForMatrixTransform(const Transformation
Matrix& transform, const ComputedStyle& style) |
| 894 { | 894 { |
| 895 RefPtrWillBeRawPtr<CSSFunctionValue> transformValue = nullptr; | 895 RefPtr<CSSFunctionValue> transformValue = nullptr; |
| 896 if (transform.isAffine()) { | 896 if (transform.isAffine()) { |
| 897 transformValue = CSSFunctionValue::create(CSSValueMatrix); | 897 transformValue = CSSFunctionValue::create(CSSValueMatrix); |
| 898 | 898 |
| 899 transformValue->append(cssValuePool().createValue(transform.a(), CSSPrim
itiveValue::UnitType::Number)); | 899 transformValue->append(cssValuePool().createValue(transform.a(), CSSPrim
itiveValue::UnitType::Number)); |
| 900 transformValue->append(cssValuePool().createValue(transform.b(), CSSPrim
itiveValue::UnitType::Number)); | 900 transformValue->append(cssValuePool().createValue(transform.b(), CSSPrim
itiveValue::UnitType::Number)); |
| 901 transformValue->append(cssValuePool().createValue(transform.c(), CSSPrim
itiveValue::UnitType::Number)); | 901 transformValue->append(cssValuePool().createValue(transform.c(), CSSPrim
itiveValue::UnitType::Number)); |
| 902 transformValue->append(cssValuePool().createValue(transform.d(), CSSPrim
itiveValue::UnitType::Number)); | 902 transformValue->append(cssValuePool().createValue(transform.d(), CSSPrim
itiveValue::UnitType::Number)); |
| 903 transformValue->append(zoomAdjustedNumberValue(transform.e(), style)); | 903 transformValue->append(zoomAdjustedNumberValue(transform.e(), style)); |
| 904 transformValue->append(zoomAdjustedNumberValue(transform.f(), style)); | 904 transformValue->append(zoomAdjustedNumberValue(transform.f(), style)); |
| 905 } else { | 905 } else { |
| (...skipping 16 matching lines...) Expand all Loading... |
| 922 | 922 |
| 923 transformValue->append(zoomAdjustedNumberValue(transform.m41(), style)); | 923 transformValue->append(zoomAdjustedNumberValue(transform.m41(), style)); |
| 924 transformValue->append(zoomAdjustedNumberValue(transform.m42(), style)); | 924 transformValue->append(zoomAdjustedNumberValue(transform.m42(), style)); |
| 925 transformValue->append(zoomAdjustedNumberValue(transform.m43(), style)); | 925 transformValue->append(zoomAdjustedNumberValue(transform.m43(), style)); |
| 926 transformValue->append(cssValuePool().createValue(transform.m44(), CSSPr
imitiveValue::UnitType::Number)); | 926 transformValue->append(cssValuePool().createValue(transform.m44(), CSSPr
imitiveValue::UnitType::Number)); |
| 927 } | 927 } |
| 928 | 928 |
| 929 return transformValue.release(); | 929 return transformValue.release(); |
| 930 } | 930 } |
| 931 | 931 |
| 932 static PassRefPtrWillBeRawPtr<CSSValue> computedTransform(const LayoutObject* la
youtObject, const ComputedStyle& style) | 932 static PassRefPtr<CSSValue> computedTransform(const LayoutObject* layoutObject,
const ComputedStyle& style) |
| 933 { | 933 { |
| 934 if (!layoutObject || !style.hasTransform()) | 934 if (!layoutObject || !style.hasTransform()) |
| 935 return cssValuePool().createIdentifierValue(CSSValueNone); | 935 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 936 | 936 |
| 937 IntRect box; | 937 IntRect box; |
| 938 if (layoutObject->isBox()) | 938 if (layoutObject->isBox()) |
| 939 box = pixelSnappedIntRect(toLayoutBox(layoutObject)->borderBoxRect()); | 939 box = pixelSnappedIntRect(toLayoutBox(layoutObject)->borderBoxRect()); |
| 940 | 940 |
| 941 TransformationMatrix transform; | 941 TransformationMatrix transform; |
| 942 style.applyTransform(transform, LayoutSize(box.size()), ComputedStyle::Exclu
deTransformOrigin, ComputedStyle::ExcludeMotionPath, ComputedStyle::ExcludeIndep
endentTransformProperties); | 942 style.applyTransform(transform, LayoutSize(box.size()), ComputedStyle::Exclu
deTransformOrigin, ComputedStyle::ExcludeMotionPath, ComputedStyle::ExcludeIndep
endentTransformProperties); |
| 943 | 943 |
| 944 // FIXME: Need to print out individual functions (https://bugs.webkit.org/sh
ow_bug.cgi?id=23924) | 944 // FIXME: Need to print out individual functions (https://bugs.webkit.org/sh
ow_bug.cgi?id=23924) |
| 945 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 945 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 946 list->append(valueForMatrixTransform(transform, style)); | 946 list->append(valueForMatrixTransform(transform, style)); |
| 947 | 947 |
| 948 return list.release(); | 948 return list.release(); |
| 949 } | 949 } |
| 950 | 950 |
| 951 static PassRefPtrWillBeRawPtr<CSSValue> createTransitionPropertyValue(const CSST
ransitionData::TransitionProperty& property) | 951 static PassRefPtr<CSSValue> createTransitionPropertyValue(const CSSTransitionDat
a::TransitionProperty& property) |
| 952 { | 952 { |
| 953 if (property.propertyType == CSSTransitionData::TransitionNone) | 953 if (property.propertyType == CSSTransitionData::TransitionNone) |
| 954 return cssValuePool().createIdentifierValue(CSSValueNone); | 954 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 955 if (property.propertyType == CSSTransitionData::TransitionUnknownProperty) | 955 if (property.propertyType == CSSTransitionData::TransitionUnknownProperty) |
| 956 return cssValuePool().createValue(property.propertyString, CSSPrimitiveV
alue::UnitType::CustomIdentifier); | 956 return cssValuePool().createValue(property.propertyString, CSSPrimitiveV
alue::UnitType::CustomIdentifier); |
| 957 ASSERT(property.propertyType == CSSTransitionData::TransitionKnownProperty); | 957 ASSERT(property.propertyType == CSSTransitionData::TransitionKnownProperty); |
| 958 return cssValuePool().createValue(getPropertyNameString(property.unresolvedP
roperty), CSSPrimitiveValue::UnitType::CustomIdentifier); | 958 return cssValuePool().createValue(getPropertyNameString(property.unresolvedP
roperty), CSSPrimitiveValue::UnitType::CustomIdentifier); |
| 959 } | 959 } |
| 960 | 960 |
| 961 static PassRefPtrWillBeRawPtr<CSSValue> valueForTransitionProperty(const CSSTran
sitionData* transitionData) | 961 static PassRefPtr<CSSValue> valueForTransitionProperty(const CSSTransitionData*
transitionData) |
| 962 { | 962 { |
| 963 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated()
; | 963 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 964 if (transitionData) { | 964 if (transitionData) { |
| 965 for (size_t i = 0; i < transitionData->propertyList().size(); ++i) | 965 for (size_t i = 0; i < transitionData->propertyList().size(); ++i) |
| 966 list->append(createTransitionPropertyValue(transitionData->propertyL
ist()[i])); | 966 list->append(createTransitionPropertyValue(transitionData->propertyL
ist()[i])); |
| 967 } else { | 967 } else { |
| 968 list->append(cssValuePool().createIdentifierValue(CSSValueAll)); | 968 list->append(cssValuePool().createIdentifierValue(CSSValueAll)); |
| 969 } | 969 } |
| 970 return list.release(); | 970 return list.release(); |
| 971 } | 971 } |
| 972 | 972 |
| 973 static PassRefPtrWillBeRawPtr<CSSValue> createLineBoxContainValue(unsigned lineB
oxContain) | 973 static PassRefPtr<CSSValue> createLineBoxContainValue(unsigned lineBoxContain) |
| 974 { | 974 { |
| 975 if (!lineBoxContain) | 975 if (!lineBoxContain) |
| 976 return cssValuePool().createIdentifierValue(CSSValueNone); | 976 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 977 return CSSLineBoxContainValue::create(lineBoxContain); | 977 return CSSLineBoxContainValue::create(lineBoxContain); |
| 978 } | 978 } |
| 979 | 979 |
| 980 CSSValueID valueForQuoteType(const QuoteType quoteType) | 980 CSSValueID valueForQuoteType(const QuoteType quoteType) |
| 981 { | 981 { |
| 982 switch (quoteType) { | 982 switch (quoteType) { |
| 983 case NO_OPEN_QUOTE: | 983 case NO_OPEN_QUOTE: |
| 984 return CSSValueNoOpenQuote; | 984 return CSSValueNoOpenQuote; |
| 985 case NO_CLOSE_QUOTE: | 985 case NO_CLOSE_QUOTE: |
| 986 return CSSValueNoCloseQuote; | 986 return CSSValueNoCloseQuote; |
| 987 case CLOSE_QUOTE: | 987 case CLOSE_QUOTE: |
| 988 return CSSValueCloseQuote; | 988 return CSSValueCloseQuote; |
| 989 case OPEN_QUOTE: | 989 case OPEN_QUOTE: |
| 990 return CSSValueOpenQuote; | 990 return CSSValueOpenQuote; |
| 991 } | 991 } |
| 992 ASSERT_NOT_REACHED(); | 992 ASSERT_NOT_REACHED(); |
| 993 return CSSValueInvalid; | 993 return CSSValueInvalid; |
| 994 } | 994 } |
| 995 | 995 |
| 996 static PassRefPtrWillBeRawPtr<CSSValue> valueForContentData(const ComputedStyle&
style) | 996 static PassRefPtr<CSSValue> valueForContentData(const ComputedStyle& style) |
| 997 { | 997 { |
| 998 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 998 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 999 for (const ContentData* contentData = style.contentData(); contentData; cont
entData = contentData->next()) { | 999 for (const ContentData* contentData = style.contentData(); contentData; cont
entData = contentData->next()) { |
| 1000 if (contentData->isCounter()) { | 1000 if (contentData->isCounter()) { |
| 1001 const CounterContent* counter = toCounterContentData(contentData)->c
ounter(); | 1001 const CounterContent* counter = toCounterContentData(contentData)->c
ounter(); |
| 1002 ASSERT(counter); | 1002 ASSERT(counter); |
| 1003 RefPtrWillBeRawPtr<CSSPrimitiveValue> identifier = cssValuePool().cr
eateValue(counter->identifier(), CSSPrimitiveValue::UnitType::CustomIdentifier); | 1003 RefPtr<CSSPrimitiveValue> identifier = cssValuePool().createValue(co
unter->identifier(), CSSPrimitiveValue::UnitType::CustomIdentifier); |
| 1004 RefPtrWillBeRawPtr<CSSPrimitiveValue> separator = cssValuePool().cre
ateValue(counter->separator(), CSSPrimitiveValue::UnitType::CustomIdentifier); | 1004 RefPtr<CSSPrimitiveValue> separator = cssValuePool().createValue(cou
nter->separator(), CSSPrimitiveValue::UnitType::CustomIdentifier); |
| 1005 CSSValueID listStyleIdent = CSSValueNone; | 1005 CSSValueID listStyleIdent = CSSValueNone; |
| 1006 if (counter->listStyle() != NoneListStyle) | 1006 if (counter->listStyle() != NoneListStyle) |
| 1007 listStyleIdent = static_cast<CSSValueID>(CSSValueDisc + counter-
>listStyle()); | 1007 listStyleIdent = static_cast<CSSValueID>(CSSValueDisc + counter-
>listStyle()); |
| 1008 RefPtrWillBeRawPtr<CSSPrimitiveValue> listStyle = cssValuePool().cre
ateIdentifierValue(listStyleIdent); | 1008 RefPtr<CSSPrimitiveValue> listStyle = cssValuePool().createIdentifie
rValue(listStyleIdent); |
| 1009 list->append(CSSCounterValue::create(identifier.release(), listStyle
.release(), separator.release())); | 1009 list->append(CSSCounterValue::create(identifier.release(), listStyle
.release(), separator.release())); |
| 1010 } else if (contentData->isImage()) { | 1010 } else if (contentData->isImage()) { |
| 1011 const StyleImage* image = toImageContentData(contentData)->image(); | 1011 const StyleImage* image = toImageContentData(contentData)->image(); |
| 1012 ASSERT(image); | 1012 ASSERT(image); |
| 1013 list->append(image->cssValue()); | 1013 list->append(image->cssValue()); |
| 1014 } else if (contentData->isText()) { | 1014 } else if (contentData->isText()) { |
| 1015 list->append(cssValuePool().createValue(toTextContentData(contentDat
a)->text(), CSSPrimitiveValue::UnitType::String)); | 1015 list->append(cssValuePool().createValue(toTextContentData(contentDat
a)->text(), CSSPrimitiveValue::UnitType::String)); |
| 1016 } else if (contentData->isQuote()) { | 1016 } else if (contentData->isQuote()) { |
| 1017 const QuoteType quoteType = toQuoteContentData(contentData)->quote()
; | 1017 const QuoteType quoteType = toQuoteContentData(contentData)->quote()
; |
| 1018 list->append(cssValuePool().createIdentifierValue(valueForQuoteType(
quoteType))); | 1018 list->append(cssValuePool().createIdentifierValue(valueForQuoteType(
quoteType))); |
| 1019 } else { | 1019 } else { |
| 1020 ASSERT_NOT_REACHED(); | 1020 ASSERT_NOT_REACHED(); |
| 1021 } | 1021 } |
| 1022 } | 1022 } |
| 1023 return list.release(); | 1023 return list.release(); |
| 1024 } | 1024 } |
| 1025 | 1025 |
| 1026 static PassRefPtrWillBeRawPtr<CSSValue> valueForCounterDirectives(const Computed
Style& style, CSSPropertyID propertyID) | 1026 static PassRefPtr<CSSValue> valueForCounterDirectives(const ComputedStyle& style
, CSSPropertyID propertyID) |
| 1027 { | 1027 { |
| 1028 const CounterDirectiveMap* map = style.counterDirectives(); | 1028 const CounterDirectiveMap* map = style.counterDirectives(); |
| 1029 if (!map) | 1029 if (!map) |
| 1030 return cssValuePool().createIdentifierValue(CSSValueNone); | 1030 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 1031 | 1031 |
| 1032 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 1032 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 1033 for (const auto& item : *map) { | 1033 for (const auto& item : *map) { |
| 1034 bool isValidCounterValue = propertyID == CSSPropertyCounterIncrement ? i
tem.value.isIncrement() : item.value.isReset(); | 1034 bool isValidCounterValue = propertyID == CSSPropertyCounterIncrement ? i
tem.value.isIncrement() : item.value.isReset(); |
| 1035 if (!isValidCounterValue) | 1035 if (!isValidCounterValue) |
| 1036 continue; | 1036 continue; |
| 1037 | 1037 |
| 1038 list->append(cssValuePool().createValue(item.key, CSSPrimitiveValue::Uni
tType::CustomIdentifier)); | 1038 list->append(cssValuePool().createValue(item.key, CSSPrimitiveValue::Uni
tType::CustomIdentifier)); |
| 1039 short number = propertyID == CSSPropertyCounterIncrement ? item.value.in
crementValue() : item.value.resetValue(); | 1039 short number = propertyID == CSSPropertyCounterIncrement ? item.value.in
crementValue() : item.value.resetValue(); |
| 1040 list->append(cssValuePool().createValue((double)number, CSSPrimitiveValu
e::UnitType::Number)); | 1040 list->append(cssValuePool().createValue((double)number, CSSPrimitiveValu
e::UnitType::Number)); |
| 1041 } | 1041 } |
| 1042 | 1042 |
| 1043 if (!list->length()) | 1043 if (!list->length()) |
| 1044 return cssValuePool().createIdentifierValue(CSSValueNone); | 1044 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 1045 | 1045 |
| 1046 return list.release(); | 1046 return list.release(); |
| 1047 } | 1047 } |
| 1048 | 1048 |
| 1049 static PassRefPtrWillBeRawPtr<CSSValue> valueForShape(const ComputedStyle& style
, ShapeValue* shapeValue) | 1049 static PassRefPtr<CSSValue> valueForShape(const ComputedStyle& style, ShapeValue
* shapeValue) |
| 1050 { | 1050 { |
| 1051 if (!shapeValue) | 1051 if (!shapeValue) |
| 1052 return cssValuePool().createIdentifierValue(CSSValueNone); | 1052 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 1053 if (shapeValue->type() == ShapeValue::Box) | 1053 if (shapeValue->type() == ShapeValue::Box) |
| 1054 return cssValuePool().createValue(shapeValue->cssBox()); | 1054 return cssValuePool().createValue(shapeValue->cssBox()); |
| 1055 if (shapeValue->type() == ShapeValue::Image) { | 1055 if (shapeValue->type() == ShapeValue::Image) { |
| 1056 if (shapeValue->image()) | 1056 if (shapeValue->image()) |
| 1057 return shapeValue->image()->cssValue(); | 1057 return shapeValue->image()->cssValue(); |
| 1058 return cssValuePool().createIdentifierValue(CSSValueNone); | 1058 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 1059 } | 1059 } |
| 1060 | 1060 |
| 1061 ASSERT(shapeValue->type() == ShapeValue::Shape); | 1061 ASSERT(shapeValue->type() == ShapeValue::Shape); |
| 1062 | 1062 |
| 1063 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 1063 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 1064 list->append(valueForBasicShape(style, shapeValue->shape())); | 1064 list->append(valueForBasicShape(style, shapeValue->shape())); |
| 1065 if (shapeValue->cssBox() != BoxMissing) | 1065 if (shapeValue->cssBox() != BoxMissing) |
| 1066 list->append(cssValuePool().createValue(shapeValue->cssBox())); | 1066 list->append(cssValuePool().createValue(shapeValue->cssBox())); |
| 1067 return list.release(); | 1067 return list.release(); |
| 1068 } | 1068 } |
| 1069 | 1069 |
| 1070 static PassRefPtrWillBeRawPtr<CSSValueList> valuesForSidesShorthand(const StyleP
ropertyShorthand& shorthand, const ComputedStyle& style, const LayoutObject* lay
outObject, Node* styledNode, bool allowVisitedStyle) | 1070 static PassRefPtr<CSSValueList> valuesForSidesShorthand(const StylePropertyShort
hand& shorthand, const ComputedStyle& style, const LayoutObject* layoutObject, N
ode* styledNode, bool allowVisitedStyle) |
| 1071 { | 1071 { |
| 1072 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 1072 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 1073 // Assume the properties are in the usual order top, right, bottom, left. | 1073 // Assume the properties are in the usual order top, right, bottom, left. |
| 1074 RefPtrWillBeRawPtr<CSSValue> topValue = ComputedStyleCSSValueMapping::get(sh
orthand.properties()[0], style, layoutObject, styledNode, allowVisitedStyle); | 1074 RefPtr<CSSValue> topValue = ComputedStyleCSSValueMapping::get(shorthand.prop
erties()[0], style, layoutObject, styledNode, allowVisitedStyle); |
| 1075 RefPtrWillBeRawPtr<CSSValue> rightValue = ComputedStyleCSSValueMapping::get(
shorthand.properties()[1], style, layoutObject, styledNode, allowVisitedStyle); | 1075 RefPtr<CSSValue> rightValue = ComputedStyleCSSValueMapping::get(shorthand.pr
operties()[1], style, layoutObject, styledNode, allowVisitedStyle); |
| 1076 RefPtrWillBeRawPtr<CSSValue> bottomValue = ComputedStyleCSSValueMapping::get
(shorthand.properties()[2], style, layoutObject, styledNode, allowVisitedStyle); | 1076 RefPtr<CSSValue> bottomValue = ComputedStyleCSSValueMapping::get(shorthand.p
roperties()[2], style, layoutObject, styledNode, allowVisitedStyle); |
| 1077 RefPtrWillBeRawPtr<CSSValue> leftValue = ComputedStyleCSSValueMapping::get(s
horthand.properties()[3], style, layoutObject, styledNode, allowVisitedStyle); | 1077 RefPtr<CSSValue> leftValue = ComputedStyleCSSValueMapping::get(shorthand.pro
perties()[3], style, layoutObject, styledNode, allowVisitedStyle); |
| 1078 | 1078 |
| 1079 // All 4 properties must be specified. | 1079 // All 4 properties must be specified. |
| 1080 if (!topValue || !rightValue || !bottomValue || !leftValue) | 1080 if (!topValue || !rightValue || !bottomValue || !leftValue) |
| 1081 return nullptr; | 1081 return nullptr; |
| 1082 | 1082 |
| 1083 bool showLeft = !compareCSSValuePtr(rightValue, leftValue); | 1083 bool showLeft = !compareCSSValuePtr(rightValue, leftValue); |
| 1084 bool showBottom = !compareCSSValuePtr(topValue, bottomValue) || showLeft; | 1084 bool showBottom = !compareCSSValuePtr(topValue, bottomValue) || showLeft; |
| 1085 bool showRight = !compareCSSValuePtr(topValue, rightValue) || showBottom; | 1085 bool showRight = !compareCSSValuePtr(topValue, rightValue) || showBottom; |
| 1086 | 1086 |
| 1087 list->append(topValue.release()); | 1087 list->append(topValue.release()); |
| 1088 if (showRight) | 1088 if (showRight) |
| 1089 list->append(rightValue.release()); | 1089 list->append(rightValue.release()); |
| 1090 if (showBottom) | 1090 if (showBottom) |
| 1091 list->append(bottomValue.release()); | 1091 list->append(bottomValue.release()); |
| 1092 if (showLeft) | 1092 if (showLeft) |
| 1093 list->append(leftValue.release()); | 1093 list->append(leftValue.release()); |
| 1094 | 1094 |
| 1095 return list.release(); | 1095 return list.release(); |
| 1096 } | 1096 } |
| 1097 | 1097 |
| 1098 static PassRefPtrWillBeRawPtr<CSSValueList> valueForBorderRadiusShorthand(const
ComputedStyle& style) | 1098 static PassRefPtr<CSSValueList> valueForBorderRadiusShorthand(const ComputedStyl
e& style) |
| 1099 { | 1099 { |
| 1100 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSlashSeparated()
; | 1100 RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); |
| 1101 | 1101 |
| 1102 bool showHorizontalBottomLeft = style.borderTopRightRadius().width() != styl
e.borderBottomLeftRadius().width(); | 1102 bool showHorizontalBottomLeft = style.borderTopRightRadius().width() != styl
e.borderBottomLeftRadius().width(); |
| 1103 bool showHorizontalBottomRight = showHorizontalBottomLeft || (style.borderBo
ttomRightRadius().width() != style.borderTopLeftRadius().width()); | 1103 bool showHorizontalBottomRight = showHorizontalBottomLeft || (style.borderBo
ttomRightRadius().width() != style.borderTopLeftRadius().width()); |
| 1104 bool showHorizontalTopRight = showHorizontalBottomRight || (style.borderTopR
ightRadius().width() != style.borderTopLeftRadius().width()); | 1104 bool showHorizontalTopRight = showHorizontalBottomRight || (style.borderTopR
ightRadius().width() != style.borderTopLeftRadius().width()); |
| 1105 | 1105 |
| 1106 bool showVerticalBottomLeft = style.borderTopRightRadius().height() != style
.borderBottomLeftRadius().height(); | 1106 bool showVerticalBottomLeft = style.borderTopRightRadius().height() != style
.borderBottomLeftRadius().height(); |
| 1107 bool showVerticalBottomRight = showVerticalBottomLeft || (style.borderBottom
RightRadius().height() != style.borderTopLeftRadius().height()); | 1107 bool showVerticalBottomRight = showVerticalBottomLeft || (style.borderBottom
RightRadius().height() != style.borderTopLeftRadius().height()); |
| 1108 bool showVerticalTopRight = showVerticalBottomRight || (style.borderTopRight
Radius().height() != style.borderTopLeftRadius().height()); | 1108 bool showVerticalTopRight = showVerticalBottomRight || (style.borderTopRight
Radius().height() != style.borderTopLeftRadius().height()); |
| 1109 | 1109 |
| 1110 RefPtrWillBeRawPtr<CSSValueList> topLeftRadius = valuesForBorderRadiusCorner
(style.borderTopLeftRadius(), style); | 1110 RefPtr<CSSValueList> topLeftRadius = valuesForBorderRadiusCorner(style.borde
rTopLeftRadius(), style); |
| 1111 RefPtrWillBeRawPtr<CSSValueList> topRightRadius = valuesForBorderRadiusCorne
r(style.borderTopRightRadius(), style); | 1111 RefPtr<CSSValueList> topRightRadius = valuesForBorderRadiusCorner(style.bord
erTopRightRadius(), style); |
| 1112 RefPtrWillBeRawPtr<CSSValueList> bottomRightRadius = valuesForBorderRadiusCo
rner(style.borderBottomRightRadius(), style); | 1112 RefPtr<CSSValueList> bottomRightRadius = valuesForBorderRadiusCorner(style.b
orderBottomRightRadius(), style); |
| 1113 RefPtrWillBeRawPtr<CSSValueList> bottomLeftRadius = valuesForBorderRadiusCor
ner(style.borderBottomLeftRadius(), style); | 1113 RefPtr<CSSValueList> bottomLeftRadius = valuesForBorderRadiusCorner(style.bo
rderBottomLeftRadius(), style); |
| 1114 | 1114 |
| 1115 RefPtrWillBeRawPtr<CSSValueList> horizontalRadii = CSSValueList::createSpace
Separated(); | 1115 RefPtr<CSSValueList> horizontalRadii = CSSValueList::createSpaceSeparated(); |
| 1116 horizontalRadii->append(topLeftRadius->item(0)); | 1116 horizontalRadii->append(topLeftRadius->item(0)); |
| 1117 if (showHorizontalTopRight) | 1117 if (showHorizontalTopRight) |
| 1118 horizontalRadii->append(topRightRadius->item(0)); | 1118 horizontalRadii->append(topRightRadius->item(0)); |
| 1119 if (showHorizontalBottomRight) | 1119 if (showHorizontalBottomRight) |
| 1120 horizontalRadii->append(bottomRightRadius->item(0)); | 1120 horizontalRadii->append(bottomRightRadius->item(0)); |
| 1121 if (showHorizontalBottomLeft) | 1121 if (showHorizontalBottomLeft) |
| 1122 horizontalRadii->append(bottomLeftRadius->item(0)); | 1122 horizontalRadii->append(bottomLeftRadius->item(0)); |
| 1123 | 1123 |
| 1124 list->append(horizontalRadii.release()); | 1124 list->append(horizontalRadii.release()); |
| 1125 | 1125 |
| 1126 RefPtrWillBeRawPtr<CSSValueList> verticalRadii = CSSValueList::createSpaceSe
parated(); | 1126 RefPtr<CSSValueList> verticalRadii = CSSValueList::createSpaceSeparated(); |
| 1127 verticalRadii->append(topLeftRadius->item(1)); | 1127 verticalRadii->append(topLeftRadius->item(1)); |
| 1128 if (showVerticalTopRight) | 1128 if (showVerticalTopRight) |
| 1129 verticalRadii->append(topRightRadius->item(1)); | 1129 verticalRadii->append(topRightRadius->item(1)); |
| 1130 if (showVerticalBottomRight) | 1130 if (showVerticalBottomRight) |
| 1131 verticalRadii->append(bottomRightRadius->item(1)); | 1131 verticalRadii->append(bottomRightRadius->item(1)); |
| 1132 if (showVerticalBottomLeft) | 1132 if (showVerticalBottomLeft) |
| 1133 verticalRadii->append(bottomLeftRadius->item(1)); | 1133 verticalRadii->append(bottomLeftRadius->item(1)); |
| 1134 | 1134 |
| 1135 if (!verticalRadii->equals(*toCSSValueList(list->item(0)))) | 1135 if (!verticalRadii->equals(*toCSSValueList(list->item(0)))) |
| 1136 list->append(verticalRadii.release()); | 1136 list->append(verticalRadii.release()); |
| 1137 | 1137 |
| 1138 return list.release(); | 1138 return list.release(); |
| 1139 } | 1139 } |
| 1140 | 1140 |
| 1141 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> glyphOrientationToCSSPrimitiveV
alue(EGlyphOrientation orientation) | 1141 static PassRefPtr<CSSPrimitiveValue> glyphOrientationToCSSPrimitiveValue(EGlyphO
rientation orientation) |
| 1142 { | 1142 { |
| 1143 switch (orientation) { | 1143 switch (orientation) { |
| 1144 case GO_0DEG: | 1144 case GO_0DEG: |
| 1145 return CSSPrimitiveValue::create(0.0f, CSSPrimitiveValue::UnitType::Degr
ees); | 1145 return CSSPrimitiveValue::create(0.0f, CSSPrimitiveValue::UnitType::Degr
ees); |
| 1146 case GO_90DEG: | 1146 case GO_90DEG: |
| 1147 return CSSPrimitiveValue::create(90.0f, CSSPrimitiveValue::UnitType::Deg
rees); | 1147 return CSSPrimitiveValue::create(90.0f, CSSPrimitiveValue::UnitType::Deg
rees); |
| 1148 case GO_180DEG: | 1148 case GO_180DEG: |
| 1149 return CSSPrimitiveValue::create(180.0f, CSSPrimitiveValue::UnitType::De
grees); | 1149 return CSSPrimitiveValue::create(180.0f, CSSPrimitiveValue::UnitType::De
grees); |
| 1150 case GO_270DEG: | 1150 case GO_270DEG: |
| 1151 return CSSPrimitiveValue::create(270.0f, CSSPrimitiveValue::UnitType::De
grees); | 1151 return CSSPrimitiveValue::create(270.0f, CSSPrimitiveValue::UnitType::De
grees); |
| 1152 default: | 1152 default: |
| 1153 return nullptr; | 1153 return nullptr; |
| 1154 } | 1154 } |
| 1155 } | 1155 } |
| 1156 | 1156 |
| 1157 static PassRefPtrWillBeRawPtr<CSSValue> strokeDashArrayToCSSValueList(const SVGD
ashArray& dashes, const ComputedStyle& style) | 1157 static PassRefPtr<CSSValue> strokeDashArrayToCSSValueList(const SVGDashArray& da
shes, const ComputedStyle& style) |
| 1158 { | 1158 { |
| 1159 if (dashes.isEmpty()) | 1159 if (dashes.isEmpty()) |
| 1160 return CSSPrimitiveValue::createIdentifier(CSSValueNone); | 1160 return CSSPrimitiveValue::createIdentifier(CSSValueNone); |
| 1161 | 1161 |
| 1162 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated()
; | 1162 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1163 for (const Length& dashLength : dashes.vector()) | 1163 for (const Length& dashLength : dashes.vector()) |
| 1164 list->append(zoomAdjustedPixelValueForLength(dashLength, style)); | 1164 list->append(zoomAdjustedPixelValueForLength(dashLength, style)); |
| 1165 | 1165 |
| 1166 return list.release(); | 1166 return list.release(); |
| 1167 } | 1167 } |
| 1168 | 1168 |
| 1169 static PassRefPtrWillBeRawPtr<CSSValue> paintOrderToCSSValueList(const SVGComput
edStyle& svgStyle) | 1169 static PassRefPtr<CSSValue> paintOrderToCSSValueList(const SVGComputedStyle& svg
Style) |
| 1170 { | 1170 { |
| 1171 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 1171 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 1172 for (int i = 0; i < 3; i++) { | 1172 for (int i = 0; i < 3; i++) { |
| 1173 EPaintOrderType paintOrderType = svgStyle.paintOrderType(i); | 1173 EPaintOrderType paintOrderType = svgStyle.paintOrderType(i); |
| 1174 switch (paintOrderType) { | 1174 switch (paintOrderType) { |
| 1175 case PT_FILL: | 1175 case PT_FILL: |
| 1176 case PT_STROKE: | 1176 case PT_STROKE: |
| 1177 case PT_MARKERS: | 1177 case PT_MARKERS: |
| 1178 list->append(CSSPrimitiveValue::create(paintOrderType)); | 1178 list->append(CSSPrimitiveValue::create(paintOrderType)); |
| 1179 break; | 1179 break; |
| 1180 case PT_NONE: | 1180 case PT_NONE: |
| 1181 default: | 1181 default: |
| 1182 ASSERT_NOT_REACHED(); | 1182 ASSERT_NOT_REACHED(); |
| 1183 break; | 1183 break; |
| 1184 } | 1184 } |
| 1185 } | 1185 } |
| 1186 | 1186 |
| 1187 return list.release(); | 1187 return list.release(); |
| 1188 } | 1188 } |
| 1189 | 1189 |
| 1190 static PassRefPtrWillBeRawPtr<CSSValue> adjustSVGPaintForCurrentColor(SVGPaintTy
pe paintType, const String& url, const Color& color, const Color& currentColor) | 1190 static PassRefPtr<CSSValue> adjustSVGPaintForCurrentColor(SVGPaintType paintType
, const String& url, const Color& color, const Color& currentColor) |
| 1191 { | 1191 { |
| 1192 if (paintType >= SVG_PAINTTYPE_URI_NONE) { | 1192 if (paintType >= SVG_PAINTTYPE_URI_NONE) { |
| 1193 RefPtrWillBeRawPtr<CSSValueList> values = CSSValueList::createSpaceSepar
ated(); | 1193 RefPtr<CSSValueList> values = CSSValueList::createSpaceSeparated(); |
| 1194 values->append(CSSPrimitiveValue::create(url, CSSPrimitiveValue::UnitTyp
e::URI)); | 1194 values->append(CSSPrimitiveValue::create(url, CSSPrimitiveValue::UnitTyp
e::URI)); |
| 1195 if (paintType == SVG_PAINTTYPE_URI_NONE) | 1195 if (paintType == SVG_PAINTTYPE_URI_NONE) |
| 1196 values->append(CSSPrimitiveValue::create(CSSValueNone)); | 1196 values->append(CSSPrimitiveValue::create(CSSValueNone)); |
| 1197 else if (paintType == SVG_PAINTTYPE_URI_CURRENTCOLOR) | 1197 else if (paintType == SVG_PAINTTYPE_URI_CURRENTCOLOR) |
| 1198 values->append(CSSPrimitiveValue::createColor(currentColor.rgb())); | 1198 values->append(CSSPrimitiveValue::createColor(currentColor.rgb())); |
| 1199 else if (paintType == SVG_PAINTTYPE_URI_RGBCOLOR) | 1199 else if (paintType == SVG_PAINTTYPE_URI_RGBCOLOR) |
| 1200 values->append(CSSPrimitiveValue::createColor(color.rgb())); | 1200 values->append(CSSPrimitiveValue::createColor(color.rgb())); |
| 1201 return values.release(); | 1201 return values.release(); |
| 1202 } | 1202 } |
| 1203 if (paintType == SVG_PAINTTYPE_NONE) | 1203 if (paintType == SVG_PAINTTYPE_NONE) |
| 1204 return CSSPrimitiveValue::create(CSSValueNone); | 1204 return CSSPrimitiveValue::create(CSSValueNone); |
| 1205 if (paintType == SVG_PAINTTYPE_CURRENTCOLOR) | 1205 if (paintType == SVG_PAINTTYPE_CURRENTCOLOR) |
| 1206 return CSSPrimitiveValue::createColor(currentColor.rgb()); | 1206 return CSSPrimitiveValue::createColor(currentColor.rgb()); |
| 1207 | 1207 |
| 1208 return CSSPrimitiveValue::createColor(color.rgb()); | 1208 return CSSPrimitiveValue::createColor(color.rgb()); |
| 1209 } | 1209 } |
| 1210 | 1210 |
| 1211 static inline String serializeAsFragmentIdentifier(const AtomicString& resource) | 1211 static inline String serializeAsFragmentIdentifier(const AtomicString& resource) |
| 1212 { | 1212 { |
| 1213 return "#" + resource; | 1213 return "#" + resource; |
| 1214 } | 1214 } |
| 1215 | 1215 |
| 1216 PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::valueForShadowDat
a(const ShadowData& shadow, const ComputedStyle& style, bool useSpread) | 1216 PassRefPtr<CSSValue> ComputedStyleCSSValueMapping::valueForShadowData(const Shad
owData& shadow, const ComputedStyle& style, bool useSpread) |
| 1217 { | 1217 { |
| 1218 RefPtrWillBeRawPtr<CSSPrimitiveValue> x = zoomAdjustedPixelValue(shadow.x(),
style); | 1218 RefPtr<CSSPrimitiveValue> x = zoomAdjustedPixelValue(shadow.x(), style); |
| 1219 RefPtrWillBeRawPtr<CSSPrimitiveValue> y = zoomAdjustedPixelValue(shadow.y(),
style); | 1219 RefPtr<CSSPrimitiveValue> y = zoomAdjustedPixelValue(shadow.y(), style); |
| 1220 RefPtrWillBeRawPtr<CSSPrimitiveValue> blur = zoomAdjustedPixelValue(shadow.b
lur(), style); | 1220 RefPtr<CSSPrimitiveValue> blur = zoomAdjustedPixelValue(shadow.blur(), style
); |
| 1221 RefPtrWillBeRawPtr<CSSPrimitiveValue> spread = useSpread ? zoomAdjustedPixel
Value(shadow.spread(), style) : PassRefPtrWillBeRawPtr<CSSPrimitiveValue>(nullpt
r); | 1221 RefPtr<CSSPrimitiveValue> spread = useSpread ? zoomAdjustedPixelValue(shadow
.spread(), style) : PassRefPtr<CSSPrimitiveValue>(nullptr); |
| 1222 RefPtrWillBeRawPtr<CSSPrimitiveValue> shadowStyle = shadow.style() == Normal
? PassRefPtrWillBeRawPtr<CSSPrimitiveValue>(nullptr) : cssValuePool().createIde
ntifierValue(CSSValueInset); | 1222 RefPtr<CSSPrimitiveValue> shadowStyle = shadow.style() == Normal ? PassRefPt
r<CSSPrimitiveValue>(nullptr) : cssValuePool().createIdentifierValue(CSSValueIns
et); |
| 1223 RefPtrWillBeRawPtr<CSSPrimitiveValue> color = currentColorOrValidColor(style
, shadow.color()); | 1223 RefPtr<CSSPrimitiveValue> color = currentColorOrValidColor(style, shadow.col
or()); |
| 1224 return CSSShadowValue::create(x.release(), y.release(), blur.release(), spre
ad.release(), shadowStyle.release(), color.release()); | 1224 return CSSShadowValue::create(x.release(), y.release(), blur.release(), spre
ad.release(), shadowStyle.release(), color.release()); |
| 1225 } | 1225 } |
| 1226 | 1226 |
| 1227 PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::valueForShadowLis
t(const ShadowList* shadowList, const ComputedStyle& style, bool useSpread) | 1227 PassRefPtr<CSSValue> ComputedStyleCSSValueMapping::valueForShadowList(const Shad
owList* shadowList, const ComputedStyle& style, bool useSpread) |
| 1228 { | 1228 { |
| 1229 if (!shadowList) | 1229 if (!shadowList) |
| 1230 return cssValuePool().createIdentifierValue(CSSValueNone); | 1230 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 1231 | 1231 |
| 1232 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated()
; | 1232 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1233 size_t shadowCount = shadowList->shadows().size(); | 1233 size_t shadowCount = shadowList->shadows().size(); |
| 1234 for (size_t i = 0; i < shadowCount; ++i) | 1234 for (size_t i = 0; i < shadowCount; ++i) |
| 1235 list->append(valueForShadowData(shadowList->shadows()[i], style, useSpre
ad)); | 1235 list->append(valueForShadowData(shadowList->shadows()[i], style, useSpre
ad)); |
| 1236 return list.release(); | 1236 return list.release(); |
| 1237 } | 1237 } |
| 1238 | 1238 |
| 1239 PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::valueForFilter(co
nst ComputedStyle& style) | 1239 PassRefPtr<CSSValue> ComputedStyleCSSValueMapping::valueForFilter(const Computed
Style& style) |
| 1240 { | 1240 { |
| 1241 if (style.filter().operations().isEmpty()) | 1241 if (style.filter().operations().isEmpty()) |
| 1242 return cssValuePool().createIdentifierValue(CSSValueNone); | 1242 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 1243 | 1243 |
| 1244 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 1244 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 1245 | 1245 |
| 1246 RefPtrWillBeRawPtr<CSSFunctionValue> filterValue = nullptr; | 1246 RefPtr<CSSFunctionValue> filterValue = nullptr; |
| 1247 | 1247 |
| 1248 for (const auto& operation : style.filter().operations()) { | 1248 for (const auto& operation : style.filter().operations()) { |
| 1249 FilterOperation* filterOperation = operation.get(); | 1249 FilterOperation* filterOperation = operation.get(); |
| 1250 switch (filterOperation->type()) { | 1250 switch (filterOperation->type()) { |
| 1251 case FilterOperation::REFERENCE: | 1251 case FilterOperation::REFERENCE: |
| 1252 filterValue = CSSFunctionValue::create(CSSValueUrl); | 1252 filterValue = CSSFunctionValue::create(CSSValueUrl); |
| 1253 filterValue->append(cssValuePool().createValue(toReferenceFilterOper
ation(filterOperation)->url(), CSSPrimitiveValue::UnitType::CustomIdentifier)); | 1253 filterValue->append(cssValuePool().createValue(toReferenceFilterOper
ation(filterOperation)->url(), CSSPrimitiveValue::UnitType::CustomIdentifier)); |
| 1254 break; | 1254 break; |
| 1255 case FilterOperation::GRAYSCALE: | 1255 case FilterOperation::GRAYSCALE: |
| 1256 filterValue = CSSFunctionValue::create(CSSValueGrayscale); | 1256 filterValue = CSSFunctionValue::create(CSSValueGrayscale); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1299 default: | 1299 default: |
| 1300 ASSERT_NOT_REACHED(); | 1300 ASSERT_NOT_REACHED(); |
| 1301 break; | 1301 break; |
| 1302 } | 1302 } |
| 1303 list->append(filterValue.release()); | 1303 list->append(filterValue.release()); |
| 1304 } | 1304 } |
| 1305 | 1305 |
| 1306 return list.release(); | 1306 return list.release(); |
| 1307 } | 1307 } |
| 1308 | 1308 |
| 1309 PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::valueForFont(cons
t ComputedStyle& style) | 1309 PassRefPtr<CSSValue> ComputedStyleCSSValueMapping::valueForFont(const ComputedSt
yle& style) |
| 1310 { | 1310 { |
| 1311 // Add a slash between size and line-height. | 1311 // Add a slash between size and line-height. |
| 1312 RefPtrWillBeRawPtr<CSSValueList> sizeAndLineHeight = CSSValueList::createSla
shSeparated(); | 1312 RefPtr<CSSValueList> sizeAndLineHeight = CSSValueList::createSlashSeparated(
); |
| 1313 sizeAndLineHeight->append(valueForFontSize(style)); | 1313 sizeAndLineHeight->append(valueForFontSize(style)); |
| 1314 sizeAndLineHeight->append(valueForLineHeight(style)); | 1314 sizeAndLineHeight->append(valueForLineHeight(style)); |
| 1315 | 1315 |
| 1316 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 1316 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 1317 list->append(valueForFontStyle(style)); | 1317 list->append(valueForFontStyle(style)); |
| 1318 list->append(valueForFontVariant(style)); | 1318 list->append(valueForFontVariant(style)); |
| 1319 list->append(valueForFontWeight(style)); | 1319 list->append(valueForFontWeight(style)); |
| 1320 list->append(valueForFontStretch(style)); | 1320 list->append(valueForFontStretch(style)); |
| 1321 list->append(sizeAndLineHeight.release()); | 1321 list->append(sizeAndLineHeight.release()); |
| 1322 list->append(valueForFontFamily(style)); | 1322 list->append(valueForFontFamily(style)); |
| 1323 | 1323 |
| 1324 return list.release(); | 1324 return list.release(); |
| 1325 } | 1325 } |
| 1326 | 1326 |
| 1327 static PassRefPtrWillBeRawPtr<CSSValue> valueForScrollSnapDestination(const Leng
thPoint& destination, const ComputedStyle& style) | 1327 static PassRefPtr<CSSValue> valueForScrollSnapDestination(const LengthPoint& des
tination, const ComputedStyle& style) |
| 1328 { | 1328 { |
| 1329 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; | 1329 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 1330 list->append(zoomAdjustedPixelValueForLength(destination.x(), style)); | 1330 list->append(zoomAdjustedPixelValueForLength(destination.x(), style)); |
| 1331 list->append(zoomAdjustedPixelValueForLength(destination.y(), style)); | 1331 list->append(zoomAdjustedPixelValueForLength(destination.y(), style)); |
| 1332 return list.release(); | 1332 return list.release(); |
| 1333 } | 1333 } |
| 1334 | 1334 |
| 1335 static PassRefPtrWillBeRawPtr<CSSValue> valueForScrollSnapPoints(const ScrollSna
pPoints& points, const ComputedStyle& style) | 1335 static PassRefPtr<CSSValue> valueForScrollSnapPoints(const ScrollSnapPoints& poi
nts, const ComputedStyle& style) |
| 1336 { | 1336 { |
| 1337 if (points.hasRepeat) { | 1337 if (points.hasRepeat) { |
| 1338 RefPtrWillBeRawPtr<CSSFunctionValue> repeat = CSSFunctionValue::create(C
SSValueRepeat); | 1338 RefPtr<CSSFunctionValue> repeat = CSSFunctionValue::create(CSSValueRepea
t); |
| 1339 repeat->append(zoomAdjustedPixelValueForLength(points.repeatOffset, styl
e)); | 1339 repeat->append(zoomAdjustedPixelValueForLength(points.repeatOffset, styl
e)); |
| 1340 return repeat.release(); | 1340 return repeat.release(); |
| 1341 } | 1341 } |
| 1342 | 1342 |
| 1343 return cssValuePool().createIdentifierValue(CSSValueNone); | 1343 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 1344 } | 1344 } |
| 1345 | 1345 |
| 1346 static PassRefPtrWillBeRawPtr<CSSValue> valueForScrollSnapCoordinate(const Vecto
r<LengthPoint>& coordinates, const ComputedStyle& style) | 1346 static PassRefPtr<CSSValue> valueForScrollSnapCoordinate(const Vector<LengthPoin
t>& coordinates, const ComputedStyle& style) |
| 1347 { | 1347 { |
| 1348 if (coordinates.isEmpty()) | 1348 if (coordinates.isEmpty()) |
| 1349 return cssValuePool().createIdentifierValue(CSSValueNone); | 1349 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 1350 | 1350 |
| 1351 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated()
; | 1351 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1352 | 1352 |
| 1353 for (auto& coordinate : coordinates) { | 1353 for (auto& coordinate : coordinates) { |
| 1354 auto pair = CSSValueList::createSpaceSeparated(); | 1354 auto pair = CSSValueList::createSpaceSeparated(); |
| 1355 pair->append(zoomAdjustedPixelValueForLength(coordinate.x(), style)); | 1355 pair->append(zoomAdjustedPixelValueForLength(coordinate.x(), style)); |
| 1356 pair->append(zoomAdjustedPixelValueForLength(coordinate.y(), style)); | 1356 pair->append(zoomAdjustedPixelValueForLength(coordinate.y(), style)); |
| 1357 list->append(pair); | 1357 list->append(pair); |
| 1358 } | 1358 } |
| 1359 | 1359 |
| 1360 return list.release(); | 1360 return list.release(); |
| 1361 } | 1361 } |
| 1362 | 1362 |
| 1363 PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::get(CSSPropertyID
propertyID, const ComputedStyle& style, const LayoutObject* layoutObject, Node*
styledNode, bool allowVisitedStyle) | 1363 PassRefPtr<CSSValue> ComputedStyleCSSValueMapping::get(CSSPropertyID propertyID,
const ComputedStyle& style, const LayoutObject* layoutObject, Node* styledNode,
bool allowVisitedStyle) |
| 1364 { | 1364 { |
| 1365 const SVGComputedStyle& svgStyle = style.svgStyle(); | 1365 const SVGComputedStyle& svgStyle = style.svgStyle(); |
| 1366 propertyID = CSSProperty::resolveDirectionAwareProperty(propertyID, style.di
rection(), style.writingMode()); | 1366 propertyID = CSSProperty::resolveDirectionAwareProperty(propertyID, style.di
rection(), style.writingMode()); |
| 1367 switch (propertyID) { | 1367 switch (propertyID) { |
| 1368 case CSSPropertyInvalid: | 1368 case CSSPropertyInvalid: |
| 1369 return nullptr; | 1369 return nullptr; |
| 1370 | 1370 |
| 1371 case CSSPropertyBackgroundColor: | 1371 case CSSPropertyBackgroundColor: |
| 1372 return allowVisitedStyle ? cssValuePool().createColorValue(style.visited
DependentColor(CSSPropertyBackgroundColor).rgb()) : currentColorOrValidColor(sty
le, style.backgroundColor()); | 1372 return allowVisitedStyle ? cssValuePool().createColorValue(style.visited
DependentColor(CSSPropertyBackgroundColor).rgb()) : currentColorOrValidColor(sty
le, style.backgroundColor()); |
| 1373 case CSSPropertyBackgroundImage: | 1373 case CSSPropertyBackgroundImage: |
| 1374 case CSSPropertyWebkitMaskImage: { | 1374 case CSSPropertyWebkitMaskImage: { |
| 1375 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 1375 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1376 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskImage ?
&style.maskLayers() : &style.backgroundLayers(); | 1376 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskImage ?
&style.maskLayers() : &style.backgroundLayers(); |
| 1377 for (; currLayer; currLayer = currLayer->next()) { | 1377 for (; currLayer; currLayer = currLayer->next()) { |
| 1378 if (currLayer->image()) | 1378 if (currLayer->image()) |
| 1379 list->append(currLayer->image()->cssValue()); | 1379 list->append(currLayer->image()->cssValue()); |
| 1380 else | 1380 else |
| 1381 list->append(cssValuePool().createIdentifierValue(CSSValueNone))
; | 1381 list->append(cssValuePool().createIdentifierValue(CSSValueNone))
; |
| 1382 } | 1382 } |
| 1383 return list.release(); | 1383 return list.release(); |
| 1384 } | 1384 } |
| 1385 case CSSPropertyBackgroundSize: | 1385 case CSSPropertyBackgroundSize: |
| 1386 case CSSPropertyWebkitMaskSize: { | 1386 case CSSPropertyWebkitMaskSize: { |
| 1387 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 1387 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1388 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskSize ? &
style.maskLayers() : &style.backgroundLayers(); | 1388 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskSize ? &
style.maskLayers() : &style.backgroundLayers(); |
| 1389 for (; currLayer; currLayer = currLayer->next()) | 1389 for (; currLayer; currLayer = currLayer->next()) |
| 1390 list->append(valueForFillSize(currLayer->size(), style)); | 1390 list->append(valueForFillSize(currLayer->size(), style)); |
| 1391 return list.release(); | 1391 return list.release(); |
| 1392 } | 1392 } |
| 1393 case CSSPropertyBackgroundRepeat: | 1393 case CSSPropertyBackgroundRepeat: |
| 1394 case CSSPropertyWebkitMaskRepeat: { | 1394 case CSSPropertyWebkitMaskRepeat: { |
| 1395 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 1395 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1396 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskRepeat ?
&style.maskLayers() : &style.backgroundLayers(); | 1396 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskRepeat ?
&style.maskLayers() : &style.backgroundLayers(); |
| 1397 for (; currLayer; currLayer = currLayer->next()) | 1397 for (; currLayer; currLayer = currLayer->next()) |
| 1398 list->append(valueForFillRepeat(currLayer->repeatX(), currLayer->rep
eatY())); | 1398 list->append(valueForFillRepeat(currLayer->repeatX(), currLayer->rep
eatY())); |
| 1399 return list.release(); | 1399 return list.release(); |
| 1400 } | 1400 } |
| 1401 case CSSPropertyMaskSourceType: { | 1401 case CSSPropertyMaskSourceType: { |
| 1402 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 1402 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1403 for (const FillLayer* currLayer = &style.maskLayers(); currLayer; currLa
yer = currLayer->next()) | 1403 for (const FillLayer* currLayer = &style.maskLayers(); currLayer; currLa
yer = currLayer->next()) |
| 1404 list->append(valueForFillSourceType(currLayer->maskSourceType())); | 1404 list->append(valueForFillSourceType(currLayer->maskSourceType())); |
| 1405 return list.release(); | 1405 return list.release(); |
| 1406 } | 1406 } |
| 1407 case CSSPropertyWebkitBackgroundComposite: | 1407 case CSSPropertyWebkitBackgroundComposite: |
| 1408 case CSSPropertyWebkitMaskComposite: { | 1408 case CSSPropertyWebkitMaskComposite: { |
| 1409 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 1409 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1410 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskComposit
e ? &style.maskLayers() : &style.backgroundLayers(); | 1410 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskComposit
e ? &style.maskLayers() : &style.backgroundLayers(); |
| 1411 for (; currLayer; currLayer = currLayer->next()) | 1411 for (; currLayer; currLayer = currLayer->next()) |
| 1412 list->append(cssValuePool().createValue(currLayer->composite())); | 1412 list->append(cssValuePool().createValue(currLayer->composite())); |
| 1413 return list.release(); | 1413 return list.release(); |
| 1414 } | 1414 } |
| 1415 case CSSPropertyBackgroundAttachment: { | 1415 case CSSPropertyBackgroundAttachment: { |
| 1416 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 1416 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1417 for (const FillLayer* currLayer = &style.backgroundLayers(); currLayer;
currLayer = currLayer->next()) | 1417 for (const FillLayer* currLayer = &style.backgroundLayers(); currLayer;
currLayer = currLayer->next()) |
| 1418 list->append(cssValuePool().createValue(currLayer->attachment())); | 1418 list->append(cssValuePool().createValue(currLayer->attachment())); |
| 1419 return list.release(); | 1419 return list.release(); |
| 1420 } | 1420 } |
| 1421 case CSSPropertyBackgroundClip: | 1421 case CSSPropertyBackgroundClip: |
| 1422 case CSSPropertyBackgroundOrigin: | 1422 case CSSPropertyBackgroundOrigin: |
| 1423 case CSSPropertyWebkitBackgroundClip: | 1423 case CSSPropertyWebkitBackgroundClip: |
| 1424 case CSSPropertyWebkitBackgroundOrigin: | 1424 case CSSPropertyWebkitBackgroundOrigin: |
| 1425 case CSSPropertyWebkitMaskClip: | 1425 case CSSPropertyWebkitMaskClip: |
| 1426 case CSSPropertyWebkitMaskOrigin: { | 1426 case CSSPropertyWebkitMaskOrigin: { |
| 1427 bool isClip = propertyID == CSSPropertyBackgroundClip || propertyID == C
SSPropertyWebkitBackgroundClip || propertyID == CSSPropertyWebkitMaskClip; | 1427 bool isClip = propertyID == CSSPropertyBackgroundClip || propertyID == C
SSPropertyWebkitBackgroundClip || propertyID == CSSPropertyWebkitMaskClip; |
| 1428 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 1428 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1429 const FillLayer* currLayer = (propertyID == CSSPropertyWebkitMaskClip ||
propertyID == CSSPropertyWebkitMaskOrigin) ? &style.maskLayers() : &style.backg
roundLayers(); | 1429 const FillLayer* currLayer = (propertyID == CSSPropertyWebkitMaskClip ||
propertyID == CSSPropertyWebkitMaskOrigin) ? &style.maskLayers() : &style.backg
roundLayers(); |
| 1430 for (; currLayer; currLayer = currLayer->next()) { | 1430 for (; currLayer; currLayer = currLayer->next()) { |
| 1431 EFillBox box = isClip ? currLayer->clip() : currLayer->origin(); | 1431 EFillBox box = isClip ? currLayer->clip() : currLayer->origin(); |
| 1432 list->append(cssValuePool().createValue(box)); | 1432 list->append(cssValuePool().createValue(box)); |
| 1433 } | 1433 } |
| 1434 return list.release(); | 1434 return list.release(); |
| 1435 } | 1435 } |
| 1436 case CSSPropertyBackgroundPosition: | 1436 case CSSPropertyBackgroundPosition: |
| 1437 case CSSPropertyWebkitMaskPosition: { | 1437 case CSSPropertyWebkitMaskPosition: { |
| 1438 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 1438 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1439 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskPosition
? &style.maskLayers() : &style.backgroundLayers(); | 1439 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskPosition
? &style.maskLayers() : &style.backgroundLayers(); |
| 1440 for (; currLayer; currLayer = currLayer->next()) | 1440 for (; currLayer; currLayer = currLayer->next()) |
| 1441 list->append(createPositionListForLayer(propertyID, *currLayer, styl
e)); | 1441 list->append(createPositionListForLayer(propertyID, *currLayer, styl
e)); |
| 1442 return list.release(); | 1442 return list.release(); |
| 1443 } | 1443 } |
| 1444 case CSSPropertyBackgroundPositionX: | 1444 case CSSPropertyBackgroundPositionX: |
| 1445 case CSSPropertyWebkitMaskPositionX: { | 1445 case CSSPropertyWebkitMaskPositionX: { |
| 1446 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 1446 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1447 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskPosition
X ? &style.maskLayers() : &style.backgroundLayers(); | 1447 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskPosition
X ? &style.maskLayers() : &style.backgroundLayers(); |
| 1448 for (; currLayer; currLayer = currLayer->next()) | 1448 for (; currLayer; currLayer = currLayer->next()) |
| 1449 list->append(zoomAdjustedPixelValueForLength(currLayer->xPosition(),
style)); | 1449 list->append(zoomAdjustedPixelValueForLength(currLayer->xPosition(),
style)); |
| 1450 return list.release(); | 1450 return list.release(); |
| 1451 } | 1451 } |
| 1452 case CSSPropertyBackgroundPositionY: | 1452 case CSSPropertyBackgroundPositionY: |
| 1453 case CSSPropertyWebkitMaskPositionY: { | 1453 case CSSPropertyWebkitMaskPositionY: { |
| 1454 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 1454 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1455 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskPosition
Y ? &style.maskLayers() : &style.backgroundLayers(); | 1455 const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskPosition
Y ? &style.maskLayers() : &style.backgroundLayers(); |
| 1456 for (; currLayer; currLayer = currLayer->next()) | 1456 for (; currLayer; currLayer = currLayer->next()) |
| 1457 list->append(zoomAdjustedPixelValueForLength(currLayer->yPosition(),
style)); | 1457 list->append(zoomAdjustedPixelValueForLength(currLayer->yPosition(),
style)); |
| 1458 return list.release(); | 1458 return list.release(); |
| 1459 } | 1459 } |
| 1460 case CSSPropertyBorderCollapse: | 1460 case CSSPropertyBorderCollapse: |
| 1461 if (style.borderCollapse()) | 1461 if (style.borderCollapse()) |
| 1462 return cssValuePool().createIdentifierValue(CSSValueCollapse); | 1462 return cssValuePool().createIdentifierValue(CSSValueCollapse); |
| 1463 return cssValuePool().createIdentifierValue(CSSValueSeparate); | 1463 return cssValuePool().createIdentifierValue(CSSValueSeparate); |
| 1464 case CSSPropertyBorderSpacing: { | 1464 case CSSPropertyBorderSpacing: { |
| 1465 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparat
ed(); | 1465 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 1466 list->append(zoomAdjustedPixelValue(style.horizontalBorderSpacing(), sty
le)); | 1466 list->append(zoomAdjustedPixelValue(style.horizontalBorderSpacing(), sty
le)); |
| 1467 list->append(zoomAdjustedPixelValue(style.verticalBorderSpacing(), style
)); | 1467 list->append(zoomAdjustedPixelValue(style.verticalBorderSpacing(), style
)); |
| 1468 return list.release(); | 1468 return list.release(); |
| 1469 } | 1469 } |
| 1470 case CSSPropertyWebkitBorderHorizontalSpacing: | 1470 case CSSPropertyWebkitBorderHorizontalSpacing: |
| 1471 return zoomAdjustedPixelValue(style.horizontalBorderSpacing(), style); | 1471 return zoomAdjustedPixelValue(style.horizontalBorderSpacing(), style); |
| 1472 case CSSPropertyWebkitBorderVerticalSpacing: | 1472 case CSSPropertyWebkitBorderVerticalSpacing: |
| 1473 return zoomAdjustedPixelValue(style.verticalBorderSpacing(), style); | 1473 return zoomAdjustedPixelValue(style.verticalBorderSpacing(), style); |
| 1474 case CSSPropertyBorderImageSource: | 1474 case CSSPropertyBorderImageSource: |
| 1475 if (style.borderImageSource()) | 1475 if (style.borderImageSource()) |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1559 case CSSPropertyWebkitColumnBreakInside: | 1559 case CSSPropertyWebkitColumnBreakInside: |
| 1560 return cssValuePool().createValue(style.columnBreakInside()); | 1560 return cssValuePool().createValue(style.columnBreakInside()); |
| 1561 case CSSPropertyWebkitColumnWidth: | 1561 case CSSPropertyWebkitColumnWidth: |
| 1562 if (style.hasAutoColumnWidth()) | 1562 if (style.hasAutoColumnWidth()) |
| 1563 return cssValuePool().createIdentifierValue(CSSValueAuto); | 1563 return cssValuePool().createIdentifierValue(CSSValueAuto); |
| 1564 return zoomAdjustedPixelValue(style.columnWidth(), style); | 1564 return zoomAdjustedPixelValue(style.columnWidth(), style); |
| 1565 case CSSPropertyTabSize: | 1565 case CSSPropertyTabSize: |
| 1566 return cssValuePool().createValue( | 1566 return cssValuePool().createValue( |
| 1567 style.tabSize().getPixelSize(1.0), style.tabSize().isSpaces() ? CSSP
rimitiveValue::UnitType::Number : CSSPrimitiveValue::UnitType::Pixels); | 1567 style.tabSize().getPixelSize(1.0), style.tabSize().isSpaces() ? CSSP
rimitiveValue::UnitType::Number : CSSPrimitiveValue::UnitType::Pixels); |
| 1568 case CSSPropertyCursor: { | 1568 case CSSPropertyCursor: { |
| 1569 RefPtrWillBeRawPtr<CSSValueList> list = nullptr; | 1569 RefPtr<CSSValueList> list = nullptr; |
| 1570 CursorList* cursors = style.cursors(); | 1570 CursorList* cursors = style.cursors(); |
| 1571 if (cursors && cursors->size() > 0) { | 1571 if (cursors && cursors->size() > 0) { |
| 1572 list = CSSValueList::createCommaSeparated(); | 1572 list = CSSValueList::createCommaSeparated(); |
| 1573 for (unsigned i = 0; i < cursors->size(); ++i) { | 1573 for (unsigned i = 0; i < cursors->size(); ++i) { |
| 1574 if (StyleImage* image = cursors->at(i).image()) | 1574 if (StyleImage* image = cursors->at(i).image()) |
| 1575 list->append(image->cssValue()); | 1575 list->append(image->cssValue()); |
| 1576 } | 1576 } |
| 1577 } | 1577 } |
| 1578 RefPtrWillBeRawPtr<CSSValue> value = cssValuePool().createValue(style.cu
rsor()); | 1578 RefPtr<CSSValue> value = cssValuePool().createValue(style.cursor()); |
| 1579 if (list) { | 1579 if (list) { |
| 1580 list->append(value.release()); | 1580 list->append(value.release()); |
| 1581 return list.release(); | 1581 return list.release(); |
| 1582 } | 1582 } |
| 1583 return value.release(); | 1583 return value.release(); |
| 1584 } | 1584 } |
| 1585 case CSSPropertyDirection: | 1585 case CSSPropertyDirection: |
| 1586 return cssValuePool().createValue(style.direction()); | 1586 return cssValuePool().createValue(style.direction()); |
| 1587 case CSSPropertyDisplay: | 1587 case CSSPropertyDisplay: |
| 1588 return cssValuePool().createValue(style.display()); | 1588 return cssValuePool().createValue(style.display()); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1631 case CSSPropertyFontStyle: | 1631 case CSSPropertyFontStyle: |
| 1632 return valueForFontStyle(style); | 1632 return valueForFontStyle(style); |
| 1633 case CSSPropertyFontVariant: | 1633 case CSSPropertyFontVariant: |
| 1634 return valueForFontVariant(style); | 1634 return valueForFontVariant(style); |
| 1635 case CSSPropertyFontWeight: | 1635 case CSSPropertyFontWeight: |
| 1636 return valueForFontWeight(style); | 1636 return valueForFontWeight(style); |
| 1637 case CSSPropertyWebkitFontFeatureSettings: { | 1637 case CSSPropertyWebkitFontFeatureSettings: { |
| 1638 const FontFeatureSettings* featureSettings = style.fontDescription().fea
tureSettings(); | 1638 const FontFeatureSettings* featureSettings = style.fontDescription().fea
tureSettings(); |
| 1639 if (!featureSettings || !featureSettings->size()) | 1639 if (!featureSettings || !featureSettings->size()) |
| 1640 return cssValuePool().createIdentifierValue(CSSValueNormal); | 1640 return cssValuePool().createIdentifierValue(CSSValueNormal); |
| 1641 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 1641 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 1642 for (unsigned i = 0; i < featureSettings->size(); ++i) { | 1642 for (unsigned i = 0; i < featureSettings->size(); ++i) { |
| 1643 const FontFeature& feature = featureSettings->at(i); | 1643 const FontFeature& feature = featureSettings->at(i); |
| 1644 RefPtrWillBeRawPtr<CSSFontFeatureValue> featureValue = CSSFontFeatur
eValue::create(feature.tag(), feature.value()); | 1644 RefPtr<CSSFontFeatureValue> featureValue = CSSFontFeatureValue::crea
te(feature.tag(), feature.value()); |
| 1645 list->append(featureValue.release()); | 1645 list->append(featureValue.release()); |
| 1646 } | 1646 } |
| 1647 return list.release(); | 1647 return list.release(); |
| 1648 } | 1648 } |
| 1649 case CSSPropertyGridAutoFlow: { | 1649 case CSSPropertyGridAutoFlow: { |
| 1650 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparat
ed(); | 1650 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 1651 switch (style.gridAutoFlow()) { | 1651 switch (style.gridAutoFlow()) { |
| 1652 case AutoFlowRow: | 1652 case AutoFlowRow: |
| 1653 case AutoFlowRowDense: | 1653 case AutoFlowRowDense: |
| 1654 list->append(cssValuePool().createIdentifierValue(CSSValueRow)); | 1654 list->append(cssValuePool().createIdentifierValue(CSSValueRow)); |
| 1655 break; | 1655 break; |
| 1656 case AutoFlowColumn: | 1656 case AutoFlowColumn: |
| 1657 case AutoFlowColumnDense: | 1657 case AutoFlowColumnDense: |
| 1658 list->append(cssValuePool().createIdentifierValue(CSSValueColumn)); | 1658 list->append(cssValuePool().createIdentifierValue(CSSValueColumn)); |
| 1659 break; | 1659 break; |
| 1660 default: | 1660 default: |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1896 return cssValuePool().createValue(style.pageBreakInside()); | 1896 return cssValuePool().createValue(style.pageBreakInside()); |
| 1897 } | 1897 } |
| 1898 case CSSPropertyPosition: | 1898 case CSSPropertyPosition: |
| 1899 return cssValuePool().createValue(style.position()); | 1899 return cssValuePool().createValue(style.position()); |
| 1900 case CSSPropertyQuotes: | 1900 case CSSPropertyQuotes: |
| 1901 if (!style.quotes()) { | 1901 if (!style.quotes()) { |
| 1902 // TODO(ramya.v): We should return the quote values that we're actua
lly using. | 1902 // TODO(ramya.v): We should return the quote values that we're actua
lly using. |
| 1903 return nullptr; | 1903 return nullptr; |
| 1904 } | 1904 } |
| 1905 if (style.quotes()->size()) { | 1905 if (style.quotes()->size()) { |
| 1906 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSep
arated(); | 1906 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 1907 for (int i = 0; i < style.quotes()->size(); i++) { | 1907 for (int i = 0; i < style.quotes()->size(); i++) { |
| 1908 list->append(cssValuePool().createValue(style.quotes()->getOpenQ
uote(i), CSSPrimitiveValue::UnitType::String)); | 1908 list->append(cssValuePool().createValue(style.quotes()->getOpenQ
uote(i), CSSPrimitiveValue::UnitType::String)); |
| 1909 list->append(cssValuePool().createValue(style.quotes()->getClose
Quote(i), CSSPrimitiveValue::UnitType::String)); | 1909 list->append(cssValuePool().createValue(style.quotes()->getClose
Quote(i), CSSPrimitiveValue::UnitType::String)); |
| 1910 } | 1910 } |
| 1911 return list.release(); | 1911 return list.release(); |
| 1912 } | 1912 } |
| 1913 return cssValuePool().createIdentifierValue(CSSValueNone); | 1913 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 1914 case CSSPropertyRight: | 1914 case CSSPropertyRight: |
| 1915 return valueForPositionOffset(style, CSSPropertyRight, layoutObject); | 1915 return valueForPositionOffset(style, CSSPropertyRight, layoutObject); |
| 1916 case CSSPropertyWebkitRubyPosition: | 1916 case CSSPropertyWebkitRubyPosition: |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1952 case TextEmphasisMarkCustom: | 1952 case TextEmphasisMarkCustom: |
| 1953 return cssValuePool().createValue(style.textEmphasisCustomMark(), CS
SPrimitiveValue::UnitType::String); | 1953 return cssValuePool().createValue(style.textEmphasisCustomMark(), CS
SPrimitiveValue::UnitType::String); |
| 1954 case TextEmphasisMarkAuto: | 1954 case TextEmphasisMarkAuto: |
| 1955 ASSERT_NOT_REACHED(); | 1955 ASSERT_NOT_REACHED(); |
| 1956 // Fall through | 1956 // Fall through |
| 1957 case TextEmphasisMarkDot: | 1957 case TextEmphasisMarkDot: |
| 1958 case TextEmphasisMarkCircle: | 1958 case TextEmphasisMarkCircle: |
| 1959 case TextEmphasisMarkDoubleCircle: | 1959 case TextEmphasisMarkDoubleCircle: |
| 1960 case TextEmphasisMarkTriangle: | 1960 case TextEmphasisMarkTriangle: |
| 1961 case TextEmphasisMarkSesame: { | 1961 case TextEmphasisMarkSesame: { |
| 1962 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSep
arated(); | 1962 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 1963 list->append(cssValuePool().createValue(style.textEmphasisFill())); | 1963 list->append(cssValuePool().createValue(style.textEmphasisFill())); |
| 1964 list->append(cssValuePool().createValue(style.textEmphasisMark())); | 1964 list->append(cssValuePool().createValue(style.textEmphasisMark())); |
| 1965 return list.release(); | 1965 return list.release(); |
| 1966 } | 1966 } |
| 1967 } | 1967 } |
| 1968 case CSSPropertyTextIndent: { | 1968 case CSSPropertyTextIndent: { |
| 1969 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparat
ed(); | 1969 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 1970 list->append(zoomAdjustedPixelValueForLength(style.textIndent(), style))
; | 1970 list->append(zoomAdjustedPixelValueForLength(style.textIndent(), style))
; |
| 1971 if (RuntimeEnabledFeatures::css3TextEnabled() && (style.textIndentLine()
== TextIndentEachLine || style.textIndentType() == TextIndentHanging)) { | 1971 if (RuntimeEnabledFeatures::css3TextEnabled() && (style.textIndentLine()
== TextIndentEachLine || style.textIndentType() == TextIndentHanging)) { |
| 1972 if (style.textIndentLine() == TextIndentEachLine) | 1972 if (style.textIndentLine() == TextIndentEachLine) |
| 1973 list->append(cssValuePool().createIdentifierValue(CSSValueEachLi
ne)); | 1973 list->append(cssValuePool().createIdentifierValue(CSSValueEachLi
ne)); |
| 1974 if (style.textIndentType() == TextIndentHanging) | 1974 if (style.textIndentType() == TextIndentHanging) |
| 1975 list->append(cssValuePool().createIdentifierValue(CSSValueHangin
g)); | 1975 list->append(cssValuePool().createIdentifierValue(CSSValueHangin
g)); |
| 1976 } | 1976 } |
| 1977 return list.release(); | 1977 return list.release(); |
| 1978 } | 1978 } |
| 1979 case CSSPropertyTextShadow: | 1979 case CSSPropertyTextShadow: |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2056 return cssValuePool().createValue(style.fontDescription().fontSmoothing(
)); | 2056 return cssValuePool().createValue(style.fontDescription().fontSmoothing(
)); |
| 2057 case CSSPropertyFontVariantLigatures: { | 2057 case CSSPropertyFontVariantLigatures: { |
| 2058 FontDescription::LigaturesState commonLigaturesState = style.fontDescrip
tion().commonLigaturesState(); | 2058 FontDescription::LigaturesState commonLigaturesState = style.fontDescrip
tion().commonLigaturesState(); |
| 2059 FontDescription::LigaturesState discretionaryLigaturesState = style.font
Description().discretionaryLigaturesState(); | 2059 FontDescription::LigaturesState discretionaryLigaturesState = style.font
Description().discretionaryLigaturesState(); |
| 2060 FontDescription::LigaturesState historicalLigaturesState = style.fontDes
cription().historicalLigaturesState(); | 2060 FontDescription::LigaturesState historicalLigaturesState = style.fontDes
cription().historicalLigaturesState(); |
| 2061 FontDescription::LigaturesState contextualLigaturesState = style.fontDes
cription().contextualLigaturesState(); | 2061 FontDescription::LigaturesState contextualLigaturesState = style.fontDes
cription().contextualLigaturesState(); |
| 2062 if (commonLigaturesState == FontDescription::NormalLigaturesState && dis
cretionaryLigaturesState == FontDescription::NormalLigaturesState | 2062 if (commonLigaturesState == FontDescription::NormalLigaturesState && dis
cretionaryLigaturesState == FontDescription::NormalLigaturesState |
| 2063 && historicalLigaturesState == FontDescription::NormalLigaturesState
&& contextualLigaturesState == FontDescription::NormalLigaturesState) | 2063 && historicalLigaturesState == FontDescription::NormalLigaturesState
&& contextualLigaturesState == FontDescription::NormalLigaturesState) |
| 2064 return cssValuePool().createIdentifierValue(CSSValueNormal); | 2064 return cssValuePool().createIdentifierValue(CSSValueNormal); |
| 2065 | 2065 |
| 2066 RefPtrWillBeRawPtr<CSSValueList> valueList = CSSValueList::createSpaceSe
parated(); | 2066 RefPtr<CSSValueList> valueList = CSSValueList::createSpaceSeparated(); |
| 2067 if (commonLigaturesState != FontDescription::NormalLigaturesState) | 2067 if (commonLigaturesState != FontDescription::NormalLigaturesState) |
| 2068 valueList->append(cssValuePool().createIdentifierValue(commonLigatur
esState == FontDescription::DisabledLigaturesState ? CSSValueNoCommonLigatures :
CSSValueCommonLigatures)); | 2068 valueList->append(cssValuePool().createIdentifierValue(commonLigatur
esState == FontDescription::DisabledLigaturesState ? CSSValueNoCommonLigatures :
CSSValueCommonLigatures)); |
| 2069 if (discretionaryLigaturesState != FontDescription::NormalLigaturesState
) | 2069 if (discretionaryLigaturesState != FontDescription::NormalLigaturesState
) |
| 2070 valueList->append(cssValuePool().createIdentifierValue(discretionary
LigaturesState == FontDescription::DisabledLigaturesState ? CSSValueNoDiscretion
aryLigatures : CSSValueDiscretionaryLigatures)); | 2070 valueList->append(cssValuePool().createIdentifierValue(discretionary
LigaturesState == FontDescription::DisabledLigaturesState ? CSSValueNoDiscretion
aryLigatures : CSSValueDiscretionaryLigatures)); |
| 2071 if (historicalLigaturesState != FontDescription::NormalLigaturesState) | 2071 if (historicalLigaturesState != FontDescription::NormalLigaturesState) |
| 2072 valueList->append(cssValuePool().createIdentifierValue(historicalLig
aturesState == FontDescription::DisabledLigaturesState ? CSSValueNoHistoricalLig
atures : CSSValueHistoricalLigatures)); | 2072 valueList->append(cssValuePool().createIdentifierValue(historicalLig
aturesState == FontDescription::DisabledLigaturesState ? CSSValueNoHistoricalLig
atures : CSSValueHistoricalLigatures)); |
| 2073 if (contextualLigaturesState != FontDescription::NormalLigaturesState) | 2073 if (contextualLigaturesState != FontDescription::NormalLigaturesState) |
| 2074 valueList->append(cssValuePool().createIdentifierValue(contextualLig
aturesState == FontDescription::DisabledLigaturesState ? CSSValueNoContextual :
CSSValueContextual)); | 2074 valueList->append(cssValuePool().createIdentifierValue(contextualLig
aturesState == FontDescription::DisabledLigaturesState ? CSSValueNoContextual :
CSSValueContextual)); |
| 2075 return valueList; | 2075 return valueList; |
| 2076 } | 2076 } |
| 2077 case CSSPropertyZIndex: | 2077 case CSSPropertyZIndex: |
| 2078 if (style.hasAutoZIndex()) | 2078 if (style.hasAutoZIndex()) |
| 2079 return cssValuePool().createIdentifierValue(CSSValueAuto); | 2079 return cssValuePool().createIdentifierValue(CSSValueAuto); |
| 2080 return cssValuePool().createValue(style.zIndex(), CSSPrimitiveValue::Uni
tType::Integer); | 2080 return cssValuePool().createValue(style.zIndex(), CSSPrimitiveValue::Uni
tType::Integer); |
| 2081 case CSSPropertyZoom: | 2081 case CSSPropertyZoom: |
| 2082 return cssValuePool().createValue(style.zoom(), CSSPrimitiveValue::UnitT
ype::Number); | 2082 return cssValuePool().createValue(style.zoom(), CSSPrimitiveValue::UnitT
ype::Number); |
| 2083 case CSSPropertyBoxSizing: | 2083 case CSSPropertyBoxSizing: |
| 2084 if (style.boxSizing() == CONTENT_BOX) | 2084 if (style.boxSizing() == CONTENT_BOX) |
| 2085 return cssValuePool().createIdentifierValue(CSSValueContentBox); | 2085 return cssValuePool().createIdentifierValue(CSSValueContentBox); |
| 2086 return cssValuePool().createIdentifierValue(CSSValueBorderBox); | 2086 return cssValuePool().createIdentifierValue(CSSValueBorderBox); |
| 2087 case CSSPropertyWebkitAppRegion: | 2087 case CSSPropertyWebkitAppRegion: |
| 2088 return cssValuePool().createIdentifierValue(style.getDraggableRegionMode
() == DraggableRegionDrag ? CSSValueDrag : CSSValueNoDrag); | 2088 return cssValuePool().createIdentifierValue(style.getDraggableRegionMode
() == DraggableRegionDrag ? CSSValueDrag : CSSValueNoDrag); |
| 2089 case CSSPropertyAnimationDelay: | 2089 case CSSPropertyAnimationDelay: |
| 2090 return valueForAnimationDelay(style.animations()); | 2090 return valueForAnimationDelay(style.animations()); |
| 2091 case CSSPropertyAnimationDirection: { | 2091 case CSSPropertyAnimationDirection: { |
| 2092 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 2092 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 2093 const CSSAnimationData* animationData = style.animations(); | 2093 const CSSAnimationData* animationData = style.animations(); |
| 2094 if (animationData) { | 2094 if (animationData) { |
| 2095 for (size_t i = 0; i < animationData->directionList().size(); ++i) | 2095 for (size_t i = 0; i < animationData->directionList().size(); ++i) |
| 2096 list->append(valueForAnimationDirection(animationData->direction
List()[i])); | 2096 list->append(valueForAnimationDirection(animationData->direction
List()[i])); |
| 2097 } else { | 2097 } else { |
| 2098 list->append(cssValuePool().createIdentifierValue(CSSValueNormal)); | 2098 list->append(cssValuePool().createIdentifierValue(CSSValueNormal)); |
| 2099 } | 2099 } |
| 2100 return list.release(); | 2100 return list.release(); |
| 2101 } | 2101 } |
| 2102 case CSSPropertyAnimationDuration: | 2102 case CSSPropertyAnimationDuration: |
| 2103 return valueForAnimationDuration(style.animations()); | 2103 return valueForAnimationDuration(style.animations()); |
| 2104 case CSSPropertyAnimationFillMode: { | 2104 case CSSPropertyAnimationFillMode: { |
| 2105 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 2105 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 2106 const CSSAnimationData* animationData = style.animations(); | 2106 const CSSAnimationData* animationData = style.animations(); |
| 2107 if (animationData) { | 2107 if (animationData) { |
| 2108 for (size_t i = 0; i < animationData->fillModeList().size(); ++i) | 2108 for (size_t i = 0; i < animationData->fillModeList().size(); ++i) |
| 2109 list->append(valueForAnimationFillMode(animationData->fillModeLi
st()[i])); | 2109 list->append(valueForAnimationFillMode(animationData->fillModeLi
st()[i])); |
| 2110 } else { | 2110 } else { |
| 2111 list->append(cssValuePool().createIdentifierValue(CSSValueNone)); | 2111 list->append(cssValuePool().createIdentifierValue(CSSValueNone)); |
| 2112 } | 2112 } |
| 2113 return list.release(); | 2113 return list.release(); |
| 2114 } | 2114 } |
| 2115 case CSSPropertyAnimationIterationCount: { | 2115 case CSSPropertyAnimationIterationCount: { |
| 2116 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 2116 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 2117 const CSSAnimationData* animationData = style.animations(); | 2117 const CSSAnimationData* animationData = style.animations(); |
| 2118 if (animationData) { | 2118 if (animationData) { |
| 2119 for (size_t i = 0; i < animationData->iterationCountList().size(); +
+i) | 2119 for (size_t i = 0; i < animationData->iterationCountList().size(); +
+i) |
| 2120 list->append(valueForAnimationIterationCount(animationData->iter
ationCountList()[i])); | 2120 list->append(valueForAnimationIterationCount(animationData->iter
ationCountList()[i])); |
| 2121 } else { | 2121 } else { |
| 2122 list->append(cssValuePool().createValue(CSSAnimationData::initialIte
rationCount(), CSSPrimitiveValue::UnitType::Number)); | 2122 list->append(cssValuePool().createValue(CSSAnimationData::initialIte
rationCount(), CSSPrimitiveValue::UnitType::Number)); |
| 2123 } | 2123 } |
| 2124 return list.release(); | 2124 return list.release(); |
| 2125 } | 2125 } |
| 2126 case CSSPropertyAnimationName: { | 2126 case CSSPropertyAnimationName: { |
| 2127 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 2127 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 2128 const CSSAnimationData* animationData = style.animations(); | 2128 const CSSAnimationData* animationData = style.animations(); |
| 2129 if (animationData) { | 2129 if (animationData) { |
| 2130 for (size_t i = 0; i < animationData->nameList().size(); ++i) | 2130 for (size_t i = 0; i < animationData->nameList().size(); ++i) |
| 2131 list->append(cssValuePool().createValue(animationData->nameList(
)[i], CSSPrimitiveValue::UnitType::CustomIdentifier)); | 2131 list->append(cssValuePool().createValue(animationData->nameList(
)[i], CSSPrimitiveValue::UnitType::CustomIdentifier)); |
| 2132 } else { | 2132 } else { |
| 2133 list->append(cssValuePool().createIdentifierValue(CSSValueNone)); | 2133 list->append(cssValuePool().createIdentifierValue(CSSValueNone)); |
| 2134 } | 2134 } |
| 2135 return list.release(); | 2135 return list.release(); |
| 2136 } | 2136 } |
| 2137 case CSSPropertyAnimationPlayState: { | 2137 case CSSPropertyAnimationPlayState: { |
| 2138 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 2138 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 2139 const CSSAnimationData* animationData = style.animations(); | 2139 const CSSAnimationData* animationData = style.animations(); |
| 2140 if (animationData) { | 2140 if (animationData) { |
| 2141 for (size_t i = 0; i < animationData->playStateList().size(); ++i) | 2141 for (size_t i = 0; i < animationData->playStateList().size(); ++i) |
| 2142 list->append(valueForAnimationPlayState(animationData->playState
List()[i])); | 2142 list->append(valueForAnimationPlayState(animationData->playState
List()[i])); |
| 2143 } else { | 2143 } else { |
| 2144 list->append(cssValuePool().createIdentifierValue(CSSValueRunning)); | 2144 list->append(cssValuePool().createIdentifierValue(CSSValueRunning)); |
| 2145 } | 2145 } |
| 2146 return list.release(); | 2146 return list.release(); |
| 2147 } | 2147 } |
| 2148 case CSSPropertyAnimationTimingFunction: | 2148 case CSSPropertyAnimationTimingFunction: |
| 2149 return valueForAnimationTimingFunction(style.animations()); | 2149 return valueForAnimationTimingFunction(style.animations()); |
| 2150 case CSSPropertyAnimation: { | 2150 case CSSPropertyAnimation: { |
| 2151 const CSSAnimationData* animationData = style.animations(); | 2151 const CSSAnimationData* animationData = style.animations(); |
| 2152 if (animationData) { | 2152 if (animationData) { |
| 2153 RefPtrWillBeRawPtr<CSSValueList> animationsList = CSSValueList::crea
teCommaSeparated(); | 2153 RefPtr<CSSValueList> animationsList = CSSValueList::createCommaSepar
ated(); |
| 2154 for (size_t i = 0; i < animationData->nameList().size(); ++i) { | 2154 for (size_t i = 0; i < animationData->nameList().size(); ++i) { |
| 2155 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpac
eSeparated(); | 2155 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; |
| 2156 list->append(cssValuePool().createValue(animationData->nameList(
)[i], CSSPrimitiveValue::UnitType::CustomIdentifier)); | 2156 list->append(cssValuePool().createValue(animationData->nameList(
)[i], CSSPrimitiveValue::UnitType::CustomIdentifier)); |
| 2157 list->append(cssValuePool().createValue(CSSTimingData::getRepeat
ed(animationData->durationList(), i), CSSPrimitiveValue::UnitType::Seconds)); | 2157 list->append(cssValuePool().createValue(CSSTimingData::getRepeat
ed(animationData->durationList(), i), CSSPrimitiveValue::UnitType::Seconds)); |
| 2158 list->append(createTimingFunctionValue(CSSTimingData::getRepeate
d(animationData->timingFunctionList(), i).get())); | 2158 list->append(createTimingFunctionValue(CSSTimingData::getRepeate
d(animationData->timingFunctionList(), i).get())); |
| 2159 list->append(cssValuePool().createValue(CSSTimingData::getRepeat
ed(animationData->delayList(), i), CSSPrimitiveValue::UnitType::Seconds)); | 2159 list->append(cssValuePool().createValue(CSSTimingData::getRepeat
ed(animationData->delayList(), i), CSSPrimitiveValue::UnitType::Seconds)); |
| 2160 list->append(valueForAnimationIterationCount(CSSTimingData::getR
epeated(animationData->iterationCountList(), i))); | 2160 list->append(valueForAnimationIterationCount(CSSTimingData::getR
epeated(animationData->iterationCountList(), i))); |
| 2161 list->append(valueForAnimationDirection(CSSTimingData::getRepeat
ed(animationData->directionList(), i))); | 2161 list->append(valueForAnimationDirection(CSSTimingData::getRepeat
ed(animationData->directionList(), i))); |
| 2162 list->append(valueForAnimationFillMode(CSSTimingData::getRepeate
d(animationData->fillModeList(), i))); | 2162 list->append(valueForAnimationFillMode(CSSTimingData::getRepeate
d(animationData->fillModeList(), i))); |
| 2163 list->append(valueForAnimationPlayState(CSSTimingData::getRepeat
ed(animationData->playStateList(), i))); | 2163 list->append(valueForAnimationPlayState(CSSTimingData::getRepeat
ed(animationData->playStateList(), i))); |
| 2164 animationsList->append(list); | 2164 animationsList->append(list); |
| 2165 } | 2165 } |
| 2166 return animationsList.release(); | 2166 return animationsList.release(); |
| 2167 } | 2167 } |
| 2168 | 2168 |
| 2169 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparat
ed(); | 2169 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 2170 // animation-name default value. | 2170 // animation-name default value. |
| 2171 list->append(cssValuePool().createIdentifierValue(CSSValueNone)); | 2171 list->append(cssValuePool().createIdentifierValue(CSSValueNone)); |
| 2172 list->append(cssValuePool().createValue(CSSAnimationData::initialDuratio
n(), CSSPrimitiveValue::UnitType::Seconds)); | 2172 list->append(cssValuePool().createValue(CSSAnimationData::initialDuratio
n(), CSSPrimitiveValue::UnitType::Seconds)); |
| 2173 list->append(createTimingFunctionValue(CSSAnimationData::initialTimingFu
nction().get())); | 2173 list->append(createTimingFunctionValue(CSSAnimationData::initialTimingFu
nction().get())); |
| 2174 list->append(cssValuePool().createValue(CSSAnimationData::initialDelay()
, CSSPrimitiveValue::UnitType::Seconds)); | 2174 list->append(cssValuePool().createValue(CSSAnimationData::initialDelay()
, CSSPrimitiveValue::UnitType::Seconds)); |
| 2175 list->append(cssValuePool().createValue(CSSAnimationData::initialIterati
onCount(), CSSPrimitiveValue::UnitType::Number)); | 2175 list->append(cssValuePool().createValue(CSSAnimationData::initialIterati
onCount(), CSSPrimitiveValue::UnitType::Number)); |
| 2176 list->append(valueForAnimationDirection(CSSAnimationData::initialDirecti
on())); | 2176 list->append(valueForAnimationDirection(CSSAnimationData::initialDirecti
on())); |
| 2177 list->append(valueForAnimationFillMode(CSSAnimationData::initialFillMode
())); | 2177 list->append(valueForAnimationFillMode(CSSAnimationData::initialFillMode
())); |
| 2178 // Initial animation-play-state. | 2178 // Initial animation-play-state. |
| 2179 list->append(cssValuePool().createIdentifierValue(CSSValueRunning)); | 2179 list->append(cssValuePool().createIdentifierValue(CSSValueRunning)); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2214 case CSSPropertyWebkitMarginAfterCollapse: | 2214 case CSSPropertyWebkitMarginAfterCollapse: |
| 2215 return cssValuePool().createValue(style.marginAfterCollapse()); | 2215 return cssValuePool().createValue(style.marginAfterCollapse()); |
| 2216 case CSSPropertyWebkitMarginTopCollapse: | 2216 case CSSPropertyWebkitMarginTopCollapse: |
| 2217 case CSSPropertyWebkitMarginBeforeCollapse: | 2217 case CSSPropertyWebkitMarginBeforeCollapse: |
| 2218 return cssValuePool().createValue(style.marginBeforeCollapse()); | 2218 return cssValuePool().createValue(style.marginBeforeCollapse()); |
| 2219 case CSSPropertyPerspective: | 2219 case CSSPropertyPerspective: |
| 2220 if (!style.hasPerspective()) | 2220 if (!style.hasPerspective()) |
| 2221 return cssValuePool().createIdentifierValue(CSSValueNone); | 2221 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 2222 return zoomAdjustedPixelValue(style.perspective(), style); | 2222 return zoomAdjustedPixelValue(style.perspective(), style); |
| 2223 case CSSPropertyPerspectiveOrigin: { | 2223 case CSSPropertyPerspectiveOrigin: { |
| 2224 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparat
ed(); | 2224 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 2225 if (layoutObject) { | 2225 if (layoutObject) { |
| 2226 LayoutRect box; | 2226 LayoutRect box; |
| 2227 if (layoutObject->isBox()) | 2227 if (layoutObject->isBox()) |
| 2228 box = toLayoutBox(layoutObject)->borderBoxRect(); | 2228 box = toLayoutBox(layoutObject)->borderBoxRect(); |
| 2229 | 2229 |
| 2230 list->append(zoomAdjustedPixelValue(minimumValueForLength(style.pers
pectiveOriginX(), box.width()), style)); | 2230 list->append(zoomAdjustedPixelValue(minimumValueForLength(style.pers
pectiveOriginX(), box.width()), style)); |
| 2231 list->append(zoomAdjustedPixelValue(minimumValueForLength(style.pers
pectiveOriginY(), box.height()), style)); | 2231 list->append(zoomAdjustedPixelValue(minimumValueForLength(style.pers
pectiveOriginY(), box.height()), style)); |
| 2232 } else { | 2232 } else { |
| 2233 list->append(zoomAdjustedPixelValueForLength(style.perspectiveOrigin
X(), style)); | 2233 list->append(zoomAdjustedPixelValueForLength(style.perspectiveOrigin
X(), style)); |
| 2234 list->append(zoomAdjustedPixelValueForLength(style.perspectiveOrigin
Y(), style)); | 2234 list->append(zoomAdjustedPixelValueForLength(style.perspectiveOrigin
Y(), style)); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 2247 return valueForBorderRadiusCorner(style.borderBottomLeftRadius(), style)
; | 2247 return valueForBorderRadiusCorner(style.borderBottomLeftRadius(), style)
; |
| 2248 case CSSPropertyBorderBottomRightRadius: | 2248 case CSSPropertyBorderBottomRightRadius: |
| 2249 return valueForBorderRadiusCorner(style.borderBottomRightRadius(), style
); | 2249 return valueForBorderRadiusCorner(style.borderBottomRightRadius(), style
); |
| 2250 case CSSPropertyBorderTopLeftRadius: | 2250 case CSSPropertyBorderTopLeftRadius: |
| 2251 return valueForBorderRadiusCorner(style.borderTopLeftRadius(), style); | 2251 return valueForBorderRadiusCorner(style.borderTopLeftRadius(), style); |
| 2252 case CSSPropertyBorderTopRightRadius: | 2252 case CSSPropertyBorderTopRightRadius: |
| 2253 return valueForBorderRadiusCorner(style.borderTopRightRadius(), style); | 2253 return valueForBorderRadiusCorner(style.borderTopRightRadius(), style); |
| 2254 case CSSPropertyClip: { | 2254 case CSSPropertyClip: { |
| 2255 if (style.hasAutoClip()) | 2255 if (style.hasAutoClip()) |
| 2256 return cssValuePool().createIdentifierValue(CSSValueAuto); | 2256 return cssValuePool().createIdentifierValue(CSSValueAuto); |
| 2257 RefPtrWillBeRawPtr<Rect> rect = Rect::create(); | 2257 RefPtr<Rect> rect = Rect::create(); |
| 2258 rect->setTop(zoomAdjustedPixelValue(style.clip().top().value(), style)); | 2258 rect->setTop(zoomAdjustedPixelValue(style.clip().top().value(), style)); |
| 2259 rect->setRight(zoomAdjustedPixelValue(style.clip().right().value(), styl
e)); | 2259 rect->setRight(zoomAdjustedPixelValue(style.clip().right().value(), styl
e)); |
| 2260 rect->setBottom(zoomAdjustedPixelValue(style.clip().bottom().value(), st
yle)); | 2260 rect->setBottom(zoomAdjustedPixelValue(style.clip().bottom().value(), st
yle)); |
| 2261 rect->setLeft(zoomAdjustedPixelValue(style.clip().left().value(), style)
); | 2261 rect->setLeft(zoomAdjustedPixelValue(style.clip().left().value(), style)
); |
| 2262 return cssValuePool().createValue(rect.release()); | 2262 return cssValuePool().createValue(rect.release()); |
| 2263 } | 2263 } |
| 2264 case CSSPropertySpeak: | 2264 case CSSPropertySpeak: |
| 2265 return cssValuePool().createValue(style.speak()); | 2265 return cssValuePool().createValue(style.speak()); |
| 2266 case CSSPropertyTransform: | 2266 case CSSPropertyTransform: |
| 2267 return computedTransform(layoutObject, style); | 2267 return computedTransform(layoutObject, style); |
| 2268 case CSSPropertyTransformOrigin: { | 2268 case CSSPropertyTransformOrigin: { |
| 2269 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparat
ed(); | 2269 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 2270 if (layoutObject) { | 2270 if (layoutObject) { |
| 2271 LayoutRect box; | 2271 LayoutRect box; |
| 2272 if (layoutObject->isBox()) | 2272 if (layoutObject->isBox()) |
| 2273 box = toLayoutBox(layoutObject)->borderBoxRect(); | 2273 box = toLayoutBox(layoutObject)->borderBoxRect(); |
| 2274 | 2274 |
| 2275 list->append(zoomAdjustedPixelValue(minimumValueForLength(style.tran
sformOriginX(), box.width()), style)); | 2275 list->append(zoomAdjustedPixelValue(minimumValueForLength(style.tran
sformOriginX(), box.width()), style)); |
| 2276 list->append(zoomAdjustedPixelValue(minimumValueForLength(style.tran
sformOriginY(), box.height()), style)); | 2276 list->append(zoomAdjustedPixelValue(minimumValueForLength(style.tran
sformOriginY(), box.height()), style)); |
| 2277 if (style.transformOriginZ() != 0) | 2277 if (style.transformOriginZ() != 0) |
| 2278 list->append(zoomAdjustedPixelValue(style.transformOriginZ(), st
yle)); | 2278 list->append(zoomAdjustedPixelValue(style.transformOriginZ(), st
yle)); |
| 2279 } else { | 2279 } else { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 2290 return valueForAnimationDelay(style.transitions()); | 2290 return valueForAnimationDelay(style.transitions()); |
| 2291 case CSSPropertyTransitionDuration: | 2291 case CSSPropertyTransitionDuration: |
| 2292 return valueForAnimationDuration(style.transitions()); | 2292 return valueForAnimationDuration(style.transitions()); |
| 2293 case CSSPropertyTransitionProperty: | 2293 case CSSPropertyTransitionProperty: |
| 2294 return valueForTransitionProperty(style.transitions()); | 2294 return valueForTransitionProperty(style.transitions()); |
| 2295 case CSSPropertyTransitionTimingFunction: | 2295 case CSSPropertyTransitionTimingFunction: |
| 2296 return valueForAnimationTimingFunction(style.transitions()); | 2296 return valueForAnimationTimingFunction(style.transitions()); |
| 2297 case CSSPropertyTransition: { | 2297 case CSSPropertyTransition: { |
| 2298 const CSSTransitionData* transitionData = style.transitions(); | 2298 const CSSTransitionData* transitionData = style.transitions(); |
| 2299 if (transitionData) { | 2299 if (transitionData) { |
| 2300 RefPtrWillBeRawPtr<CSSValueList> transitionsList = CSSValueList::cre
ateCommaSeparated(); | 2300 RefPtr<CSSValueList> transitionsList = CSSValueList::createCommaSepa
rated(); |
| 2301 for (size_t i = 0; i < transitionData->propertyList().size(); ++i) { | 2301 for (size_t i = 0; i < transitionData->propertyList().size(); ++i) { |
| 2302 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpac
eSeparated(); | 2302 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; |
| 2303 list->append(createTransitionPropertyValue(transitionData->prope
rtyList()[i])); | 2303 list->append(createTransitionPropertyValue(transitionData->prope
rtyList()[i])); |
| 2304 list->append(cssValuePool().createValue(CSSTimingData::getRepeat
ed(transitionData->durationList(), i), CSSPrimitiveValue::UnitType::Seconds)); | 2304 list->append(cssValuePool().createValue(CSSTimingData::getRepeat
ed(transitionData->durationList(), i), CSSPrimitiveValue::UnitType::Seconds)); |
| 2305 list->append(createTimingFunctionValue(CSSTimingData::getRepeate
d(transitionData->timingFunctionList(), i).get())); | 2305 list->append(createTimingFunctionValue(CSSTimingData::getRepeate
d(transitionData->timingFunctionList(), i).get())); |
| 2306 list->append(cssValuePool().createValue(CSSTimingData::getRepeat
ed(transitionData->delayList(), i), CSSPrimitiveValue::UnitType::Seconds)); | 2306 list->append(cssValuePool().createValue(CSSTimingData::getRepeat
ed(transitionData->delayList(), i), CSSPrimitiveValue::UnitType::Seconds)); |
| 2307 transitionsList->append(list); | 2307 transitionsList->append(list); |
| 2308 } | 2308 } |
| 2309 return transitionsList.release(); | 2309 return transitionsList.release(); |
| 2310 } | 2310 } |
| 2311 | 2311 |
| 2312 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparat
ed(); | 2312 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 2313 // transition-property default value. | 2313 // transition-property default value. |
| 2314 list->append(cssValuePool().createIdentifierValue(CSSValueAll)); | 2314 list->append(cssValuePool().createIdentifierValue(CSSValueAll)); |
| 2315 list->append(cssValuePool().createValue(CSSTransitionData::initialDurati
on(), CSSPrimitiveValue::UnitType::Seconds)); | 2315 list->append(cssValuePool().createValue(CSSTransitionData::initialDurati
on(), CSSPrimitiveValue::UnitType::Seconds)); |
| 2316 list->append(createTimingFunctionValue(CSSTransitionData::initialTimingF
unction().get())); | 2316 list->append(createTimingFunctionValue(CSSTransitionData::initialTimingF
unction().get())); |
| 2317 list->append(cssValuePool().createValue(CSSTransitionData::initialDelay(
), CSSPrimitiveValue::UnitType::Seconds)); | 2317 list->append(cssValuePool().createValue(CSSTransitionData::initialDelay(
), CSSPrimitiveValue::UnitType::Seconds)); |
| 2318 return list.release(); | 2318 return list.release(); |
| 2319 } | 2319 } |
| 2320 case CSSPropertyPointerEvents: | 2320 case CSSPropertyPointerEvents: |
| 2321 return cssValuePool().createValue(style.pointerEvents()); | 2321 return cssValuePool().createValue(style.pointerEvents()); |
| 2322 case CSSPropertyWebkitWritingMode: | 2322 case CSSPropertyWebkitWritingMode: |
| (...skipping 23 matching lines...) Expand all Loading... |
| 2346 case CSSPropertyShapeImageThreshold: | 2346 case CSSPropertyShapeImageThreshold: |
| 2347 return cssValuePool().createValue(style.shapeImageThreshold(), CSSPrimit
iveValue::UnitType::Number); | 2347 return cssValuePool().createValue(style.shapeImageThreshold(), CSSPrimit
iveValue::UnitType::Number); |
| 2348 case CSSPropertyShapeOutside: | 2348 case CSSPropertyShapeOutside: |
| 2349 return valueForShape(style, style.shapeOutside()); | 2349 return valueForShape(style, style.shapeOutside()); |
| 2350 case CSSPropertyWebkitFilter: | 2350 case CSSPropertyWebkitFilter: |
| 2351 return valueForFilter(style); | 2351 return valueForFilter(style); |
| 2352 case CSSPropertyMixBlendMode: | 2352 case CSSPropertyMixBlendMode: |
| 2353 return cssValuePool().createValue(style.blendMode()); | 2353 return cssValuePool().createValue(style.blendMode()); |
| 2354 | 2354 |
| 2355 case CSSPropertyBackgroundBlendMode: { | 2355 case CSSPropertyBackgroundBlendMode: { |
| 2356 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparat
ed(); | 2356 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); |
| 2357 for (const FillLayer* currLayer = &style.backgroundLayers(); currLayer;
currLayer = currLayer->next()) | 2357 for (const FillLayer* currLayer = &style.backgroundLayers(); currLayer;
currLayer = currLayer->next()) |
| 2358 list->append(cssValuePool().createValue(currLayer->blendMode())); | 2358 list->append(cssValuePool().createValue(currLayer->blendMode())); |
| 2359 return list.release(); | 2359 return list.release(); |
| 2360 } | 2360 } |
| 2361 case CSSPropertyBackground: | 2361 case CSSPropertyBackground: |
| 2362 return valuesForBackgroundShorthand(style, layoutObject, styledNode, all
owVisitedStyle); | 2362 return valuesForBackgroundShorthand(style, layoutObject, styledNode, all
owVisitedStyle); |
| 2363 case CSSPropertyBorder: { | 2363 case CSSPropertyBorder: { |
| 2364 RefPtrWillBeRawPtr<CSSValue> value = get(CSSPropertyBorderTop, style, la
youtObject, styledNode, allowVisitedStyle); | 2364 RefPtr<CSSValue> value = get(CSSPropertyBorderTop, style, layoutObject,
styledNode, allowVisitedStyle); |
| 2365 const CSSPropertyID properties[] = { | 2365 const CSSPropertyID properties[] = { |
| 2366 CSSPropertyBorderRight, | 2366 CSSPropertyBorderRight, |
| 2367 CSSPropertyBorderBottom, | 2367 CSSPropertyBorderBottom, |
| 2368 CSSPropertyBorderLeft | 2368 CSSPropertyBorderLeft |
| 2369 }; | 2369 }; |
| 2370 for (size_t i = 0; i < WTF_ARRAY_LENGTH(properties); ++i) { | 2370 for (size_t i = 0; i < WTF_ARRAY_LENGTH(properties); ++i) { |
| 2371 if (!compareCSSValuePtr<CSSValue>(value, get(properties[i], style, l
ayoutObject, styledNode, allowVisitedStyle))) | 2371 if (!compareCSSValuePtr<CSSValue>(value, get(properties[i], style, l
ayoutObject, styledNode, allowVisitedStyle))) |
| 2372 return nullptr; | 2372 return nullptr; |
| 2373 } | 2373 } |
| 2374 return value.release(); | 2374 return value.release(); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2421 ASSERT(styleMotionPath->isPathStyleMotionPath()); | 2421 ASSERT(styleMotionPath->isPathStyleMotionPath()); |
| 2422 return CSSPathValue::create(toPathStyleMotionPath(styleMotionPath)->path
String()); | 2422 return CSSPathValue::create(toPathStyleMotionPath(styleMotionPath)->path
String()); |
| 2423 } | 2423 } |
| 2424 | 2424 |
| 2425 case CSSPropertyMotionOffset: | 2425 case CSSPropertyMotionOffset: |
| 2426 ASSERT(RuntimeEnabledFeatures::cssMotionPathEnabled()); | 2426 ASSERT(RuntimeEnabledFeatures::cssMotionPathEnabled()); |
| 2427 return zoomAdjustedPixelValueForLength(style.motionOffset(), style); | 2427 return zoomAdjustedPixelValueForLength(style.motionOffset(), style); |
| 2428 | 2428 |
| 2429 case CSSPropertyMotionRotation: { | 2429 case CSSPropertyMotionRotation: { |
| 2430 ASSERT(RuntimeEnabledFeatures::cssMotionPathEnabled()); | 2430 ASSERT(RuntimeEnabledFeatures::cssMotionPathEnabled()); |
| 2431 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparat
ed(); | 2431 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 2432 if (style.motionRotationType() == MotionRotationAuto) | 2432 if (style.motionRotationType() == MotionRotationAuto) |
| 2433 list->append(cssValuePool().createIdentifierValue(CSSValueAuto)); | 2433 list->append(cssValuePool().createIdentifierValue(CSSValueAuto)); |
| 2434 list->append(cssValuePool().createValue(style.motionRotation(), CSSPrimi
tiveValue::UnitType::Degrees)); | 2434 list->append(cssValuePool().createValue(style.motionRotation(), CSSPrimi
tiveValue::UnitType::Degrees)); |
| 2435 return list.release(); | 2435 return list.release(); |
| 2436 } | 2436 } |
| 2437 | 2437 |
| 2438 // Unimplemented CSS 3 properties (including CSS3 shorthand properties). | 2438 // Unimplemented CSS 3 properties (including CSS3 shorthand properties). |
| 2439 case CSSPropertyWebkitTextEmphasis: | 2439 case CSSPropertyWebkitTextEmphasis: |
| 2440 return nullptr; | 2440 return nullptr; |
| 2441 | 2441 |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2588 return zoomAdjustedPixelValueForLength(svgStyle.baselineShiftValue()
, style); | 2588 return zoomAdjustedPixelValueForLength(svgStyle.baselineShiftValue()
, style); |
| 2589 } | 2589 } |
| 2590 ASSERT_NOT_REACHED(); | 2590 ASSERT_NOT_REACHED(); |
| 2591 return nullptr; | 2591 return nullptr; |
| 2592 } | 2592 } |
| 2593 case CSSPropertyBufferedRendering: | 2593 case CSSPropertyBufferedRendering: |
| 2594 return CSSPrimitiveValue::create(svgStyle.bufferedRendering()); | 2594 return CSSPrimitiveValue::create(svgStyle.bufferedRendering()); |
| 2595 case CSSPropertyGlyphOrientationHorizontal: | 2595 case CSSPropertyGlyphOrientationHorizontal: |
| 2596 return glyphOrientationToCSSPrimitiveValue(svgStyle.glyphOrientationHori
zontal()); | 2596 return glyphOrientationToCSSPrimitiveValue(svgStyle.glyphOrientationHori
zontal()); |
| 2597 case CSSPropertyGlyphOrientationVertical: { | 2597 case CSSPropertyGlyphOrientationVertical: { |
| 2598 if (RefPtrWillBeRawPtr<CSSPrimitiveValue> value = glyphOrientationToCSSP
rimitiveValue(svgStyle.glyphOrientationVertical())) | 2598 if (RefPtr<CSSPrimitiveValue> value = glyphOrientationToCSSPrimitiveValu
e(svgStyle.glyphOrientationVertical())) |
| 2599 return value.release(); | 2599 return value.release(); |
| 2600 if (svgStyle.glyphOrientationVertical() == GO_AUTO) | 2600 if (svgStyle.glyphOrientationVertical() == GO_AUTO) |
| 2601 return CSSPrimitiveValue::createIdentifier(CSSValueAuto); | 2601 return CSSPrimitiveValue::createIdentifier(CSSValueAuto); |
| 2602 return nullptr; | 2602 return nullptr; |
| 2603 } | 2603 } |
| 2604 case CSSPropertyPaintOrder: | 2604 case CSSPropertyPaintOrder: |
| 2605 return paintOrderToCSSValueList(svgStyle); | 2605 return paintOrderToCSSValueList(svgStyle); |
| 2606 case CSSPropertyVectorEffect: | 2606 case CSSPropertyVectorEffect: |
| 2607 return CSSPrimitiveValue::create(svgStyle.vectorEffect()); | 2607 return CSSPrimitiveValue::create(svgStyle.vectorEffect()); |
| 2608 case CSSPropertyMaskType: | 2608 case CSSPropertyMaskType: |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2631 case CSSPropertyScrollSnapPointsY: | 2631 case CSSPropertyScrollSnapPointsY: |
| 2632 return valueForScrollSnapPoints(style.scrollSnapPointsY(), style); | 2632 return valueForScrollSnapPoints(style.scrollSnapPointsY(), style); |
| 2633 case CSSPropertyScrollSnapCoordinate: | 2633 case CSSPropertyScrollSnapCoordinate: |
| 2634 return valueForScrollSnapCoordinate(style.scrollSnapCoordinate(), style)
; | 2634 return valueForScrollSnapCoordinate(style.scrollSnapCoordinate(), style)
; |
| 2635 case CSSPropertyScrollSnapDestination: | 2635 case CSSPropertyScrollSnapDestination: |
| 2636 return valueForScrollSnapDestination(style.scrollSnapDestination(), styl
e); | 2636 return valueForScrollSnapDestination(style.scrollSnapDestination(), styl
e); |
| 2637 case CSSPropertyTranslate: { | 2637 case CSSPropertyTranslate: { |
| 2638 if (!style.translate()) | 2638 if (!style.translate()) |
| 2639 return cssValuePool().createValue(0, CSSPrimitiveValue::UnitType::Pi
xels); | 2639 return cssValuePool().createValue(0, CSSPrimitiveValue::UnitType::Pi
xels); |
| 2640 | 2640 |
| 2641 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparat
ed(); | 2641 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 2642 if (layoutObject && layoutObject->isBox()) { | 2642 if (layoutObject && layoutObject->isBox()) { |
| 2643 LayoutRect box = toLayoutBox(layoutObject)->borderBoxRect(); | 2643 LayoutRect box = toLayoutBox(layoutObject)->borderBoxRect(); |
| 2644 list->append(zoomAdjustedPixelValue(floatValueForLength(style.transl
ate()->x(), box.width().toFloat()), style)); | 2644 list->append(zoomAdjustedPixelValue(floatValueForLength(style.transl
ate()->x(), box.width().toFloat()), style)); |
| 2645 | 2645 |
| 2646 if (!style.translate()->y().isZero() || style.translate()->z() != 0) | 2646 if (!style.translate()->y().isZero() || style.translate()->z() != 0) |
| 2647 list->append(zoomAdjustedPixelValue(floatValueForLength(style.tr
anslate()->y(), box.height().toFloat()), style)); | 2647 list->append(zoomAdjustedPixelValue(floatValueForLength(style.tr
anslate()->y(), box.height().toFloat()), style)); |
| 2648 | 2648 |
| 2649 } else { | 2649 } else { |
| 2650 // No box to resolve the percentage values | 2650 // No box to resolve the percentage values |
| 2651 list->append(zoomAdjustedPixelValueForLength(style.translate()->x(),
style)); | 2651 list->append(zoomAdjustedPixelValueForLength(style.translate()->x(),
style)); |
| 2652 | 2652 |
| 2653 if (!style.translate()->y().isZero() || style.translate()->z() != 0) | 2653 if (!style.translate()->y().isZero() || style.translate()->z() != 0) |
| 2654 list->append(zoomAdjustedPixelValueForLength(style.translate()->
y(), style)); | 2654 list->append(zoomAdjustedPixelValueForLength(style.translate()->
y(), style)); |
| 2655 } | 2655 } |
| 2656 | 2656 |
| 2657 if (style.translate()->z() != 0) | 2657 if (style.translate()->z() != 0) |
| 2658 list->append(zoomAdjustedPixelValue(style.translate()->z(), style)); | 2658 list->append(zoomAdjustedPixelValue(style.translate()->z(), style)); |
| 2659 | 2659 |
| 2660 return list.release(); | 2660 return list.release(); |
| 2661 } | 2661 } |
| 2662 case CSSPropertyRotate: { | 2662 case CSSPropertyRotate: { |
| 2663 if (!style.rotate()) | 2663 if (!style.rotate()) |
| 2664 return cssValuePool().createValue(0, CSSPrimitiveValue::UnitType::De
grees); | 2664 return cssValuePool().createValue(0, CSSPrimitiveValue::UnitType::De
grees); |
| 2665 | 2665 |
| 2666 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparat
ed(); | 2666 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 2667 list->append(cssValuePool().createValue(style.rotate()->angle(), CSSPrim
itiveValue::UnitType::Degrees)); | 2667 list->append(cssValuePool().createValue(style.rotate()->angle(), CSSPrim
itiveValue::UnitType::Degrees)); |
| 2668 if (style.rotate()->x() != 0 || style.rotate()->y() != 0 || style.rotate
()->z() != 1) { | 2668 if (style.rotate()->x() != 0 || style.rotate()->y() != 0 || style.rotate
()->z() != 1) { |
| 2669 list->append(cssValuePool().createValue(style.rotate()->x(), CSSPrim
itiveValue::UnitType::Number)); | 2669 list->append(cssValuePool().createValue(style.rotate()->x(), CSSPrim
itiveValue::UnitType::Number)); |
| 2670 list->append(cssValuePool().createValue(style.rotate()->y(), CSSPrim
itiveValue::UnitType::Number)); | 2670 list->append(cssValuePool().createValue(style.rotate()->y(), CSSPrim
itiveValue::UnitType::Number)); |
| 2671 list->append(cssValuePool().createValue(style.rotate()->z(), CSSPrim
itiveValue::UnitType::Number)); | 2671 list->append(cssValuePool().createValue(style.rotate()->z(), CSSPrim
itiveValue::UnitType::Number)); |
| 2672 } | 2672 } |
| 2673 return list.release(); | 2673 return list.release(); |
| 2674 } | 2674 } |
| 2675 case CSSPropertyScale: { | 2675 case CSSPropertyScale: { |
| 2676 if (!style.scale()) | 2676 if (!style.scale()) |
| 2677 return cssValuePool().createValue(1, CSSPrimitiveValue::UnitType::Nu
mber); | 2677 return cssValuePool().createValue(1, CSSPrimitiveValue::UnitType::Nu
mber); |
| 2678 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparat
ed(); | 2678 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
| 2679 list->append(cssValuePool().createValue(style.scale()->x(), CSSPrimitive
Value::UnitType::Number)); | 2679 list->append(cssValuePool().createValue(style.scale()->x(), CSSPrimitive
Value::UnitType::Number)); |
| 2680 if (style.scale()->y() == 1 && style.scale()->z() == 1) | 2680 if (style.scale()->y() == 1 && style.scale()->z() == 1) |
| 2681 return list.release(); | 2681 return list.release(); |
| 2682 list->append(cssValuePool().createValue(style.scale()->y(), CSSPrimitive
Value::UnitType::Number)); | 2682 list->append(cssValuePool().createValue(style.scale()->y(), CSSPrimitive
Value::UnitType::Number)); |
| 2683 if (style.scale()->z() != 1) | 2683 if (style.scale()->z() != 1) |
| 2684 list->append(cssValuePool().createValue(style.scale()->z(), CSSPrimi
tiveValue::UnitType::Number)); | 2684 list->append(cssValuePool().createValue(style.scale()->z(), CSSPrimi
tiveValue::UnitType::Number)); |
| 2685 return list.release(); | 2685 return list.release(); |
| 2686 } | 2686 } |
| 2687 case CSSPropertyAll: | 2687 case CSSPropertyAll: |
| 2688 return nullptr; | 2688 return nullptr; |
| 2689 default: | 2689 default: |
| 2690 break; | 2690 break; |
| 2691 } | 2691 } |
| 2692 ASSERT_NOT_REACHED(); | 2692 ASSERT_NOT_REACHED(); |
| 2693 return nullptr; | 2693 return nullptr; |
| 2694 } | 2694 } |
| 2695 | 2695 |
| 2696 } | 2696 } |
| OLD | NEW |