| Index: Source/core/css/LayoutStyleCSSValueMapping.cpp
|
| diff --git a/Source/core/css/LayoutStyleCSSValueMapping.cpp b/Source/core/css/LayoutStyleCSSValueMapping.cpp
|
| deleted file mode 100644
|
| index c47287c7fdc23ba411d88908a809859cb0015e4c..0000000000000000000000000000000000000000
|
| --- a/Source/core/css/LayoutStyleCSSValueMapping.cpp
|
| +++ /dev/null
|
| @@ -1,2581 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2004 Zack Rusin <zack@kde.org>
|
| - * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
|
| - * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
|
| - * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
|
| - * Copyright (C) 2011 Sencha, Inc. All rights reserved.
|
| - * Copyright (C) 2015 Google Inc. All rights reserved.
|
| - *
|
| - * This library is free software; you can redistribute it and/or
|
| - * modify it under the terms of the GNU Lesser General Public
|
| - * License as published by the Free Software Foundation; either
|
| - * version 2 of the License, or (at your option) any later version.
|
| - *
|
| - * This library is distributed in the hope that it will be useful,
|
| - * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| - * Lesser General Public License for more details.
|
| - *
|
| - * You should have received a copy of the GNU Lesser General Public
|
| - * License along with this library; if not, write to the Free Software
|
| - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
| - * 02110-1301 USA
|
| - */
|
| -
|
| -#include "config.h"
|
| -#include "core/css/LayoutStyleCSSValueMapping.h"
|
| -
|
| -#include "core/StylePropertyShorthand.h"
|
| -#include "core/css/BasicShapeFunctions.h"
|
| -#include "core/css/CSSBorderImage.h"
|
| -#include "core/css/CSSBorderImageSliceValue.h"
|
| -#include "core/css/CSSFontFeatureValue.h"
|
| -#include "core/css/CSSFontValue.h"
|
| -#include "core/css/CSSFunctionValue.h"
|
| -#include "core/css/CSSGridLineNamesValue.h"
|
| -#include "core/css/CSSGridTemplateAreasValue.h"
|
| -#include "core/css/CSSPathValue.h"
|
| -#include "core/css/CSSPrimitiveValueMappings.h"
|
| -#include "core/css/CSSReflectValue.h"
|
| -#include "core/css/CSSShadowValue.h"
|
| -#include "core/css/CSSTimingFunctionValue.h"
|
| -#include "core/css/CSSValueList.h"
|
| -#include "core/css/CSSValuePool.h"
|
| -#include "core/css/Pair.h"
|
| -#include "core/css/Rect.h"
|
| -#include "core/layout/LayoutBlock.h"
|
| -#include "core/layout/LayoutBox.h"
|
| -#include "core/layout/LayoutGrid.h"
|
| -#include "core/layout/LayoutObject.h"
|
| -#include "core/layout/style/ContentData.h"
|
| -#include "core/layout/style/LayoutStyle.h"
|
| -#include "core/layout/style/PathStyleMotionPath.h"
|
| -#include "core/layout/style/ShadowList.h"
|
| -#include "platform/LengthFunctions.h"
|
| -
|
| -namespace blink {
|
| -
|
| -inline static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> zoomAdjustedPixelValue(double value, const LayoutStyle& style)
|
| -{
|
| - return cssValuePool().createValue(adjustFloatForAbsoluteZoom(value, style), CSSPrimitiveValue::CSS_PX);
|
| -}
|
| -
|
| -inline static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> zoomAdjustedNumberValue(double value, const LayoutStyle& style)
|
| -{
|
| - return cssValuePool().createValue(value / style.effectiveZoom(), CSSPrimitiveValue::CSS_NUMBER);
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> zoomAdjustedPixelValueForLength(const Length& length, const LayoutStyle& style)
|
| -{
|
| - if (length.isFixed())
|
| - return zoomAdjustedPixelValue(length.value(), style);
|
| - return cssValuePool().createValue(length, style);
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> pixelValueForUnzoomedLength(const UnzoomedLength& unzoomedLength, const LayoutStyle& style)
|
| -{
|
| - const Length& length = unzoomedLength.length();
|
| - if (length.isFixed())
|
| - return cssValuePool().createValue(length.value(), CSSPrimitiveValue::CSS_PX);
|
| - return cssValuePool().createValue(length, style);
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValueList> createPositionListForLayer(CSSPropertyID propertyID, const FillLayer& layer, const LayoutStyle& style)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> positionList = CSSValueList::createSpaceSeparated();
|
| - if (layer.isBackgroundXOriginSet()) {
|
| - ASSERT_UNUSED(propertyID, propertyID == CSSPropertyBackgroundPosition || propertyID == CSSPropertyWebkitMaskPosition);
|
| - positionList->append(cssValuePool().createValue(layer.backgroundXOrigin()));
|
| - }
|
| - positionList->append(zoomAdjustedPixelValueForLength(layer.xPosition(), style));
|
| - if (layer.isBackgroundYOriginSet()) {
|
| - ASSERT(propertyID == CSSPropertyBackgroundPosition || propertyID == CSSPropertyWebkitMaskPosition);
|
| - positionList->append(cssValuePool().createValue(layer.backgroundYOrigin()));
|
| - }
|
| - positionList->append(zoomAdjustedPixelValueForLength(layer.yPosition(), style));
|
| - return positionList.release();
|
| -}
|
| -
|
| -PassRefPtrWillBeRawPtr<CSSPrimitiveValue> LayoutStyleCSSValueMapping::currentColorOrValidColor(const LayoutStyle& style, const StyleColor& color)
|
| -{
|
| - // This function does NOT look at visited information, so that computed style doesn't expose that.
|
| - return cssValuePool().createColorValue(color.resolve(style.color()).rgb());
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForFillSize(const FillSize& fillSize, const LayoutStyle& style)
|
| -{
|
| - if (fillSize.type == Contain)
|
| - return cssValuePool().createIdentifierValue(CSSValueContain);
|
| -
|
| - if (fillSize.type == Cover)
|
| - return cssValuePool().createIdentifierValue(CSSValueCover);
|
| -
|
| - if (fillSize.size.height().isAuto())
|
| - return zoomAdjustedPixelValueForLength(fillSize.size.width(), style);
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - list->append(zoomAdjustedPixelValueForLength(fillSize.size.width(), style));
|
| - list->append(zoomAdjustedPixelValueForLength(fillSize.size.height(), style));
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForFillRepeat(EFillRepeat xRepeat, EFillRepeat yRepeat)
|
| -{
|
| - // For backwards compatibility, if both values are equal, just return one of them. And
|
| - // if the two values are equivalent to repeat-x or repeat-y, just return the shorthand.
|
| - if (xRepeat == yRepeat)
|
| - return cssValuePool().createValue(xRepeat);
|
| - if (xRepeat == RepeatFill && yRepeat == NoRepeatFill)
|
| - return cssValuePool().createIdentifierValue(CSSValueRepeatX);
|
| - if (xRepeat == NoRepeatFill && yRepeat == RepeatFill)
|
| - return cssValuePool().createIdentifierValue(CSSValueRepeatY);
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - list->append(cssValuePool().createValue(xRepeat));
|
| - list->append(cssValuePool().createValue(yRepeat));
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForFillSourceType(EMaskSourceType type)
|
| -{
|
| - switch (type) {
|
| - case MaskAlpha:
|
| - return cssValuePool().createValue(CSSValueAlpha);
|
| - case MaskLuminance:
|
| - return cssValuePool().createValue(CSSValueLuminance);
|
| - }
|
| -
|
| - ASSERT_NOT_REACHED();
|
| -
|
| - return nullptr;
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForPositionOffset(const LayoutStyle& style, CSSPropertyID propertyID, const LayoutObject* renderer)
|
| -{
|
| - Length offset;
|
| - switch (propertyID) {
|
| - case CSSPropertyLeft:
|
| - offset = style.left();
|
| - break;
|
| - case CSSPropertyRight:
|
| - offset = style.right();
|
| - break;
|
| - case CSSPropertyTop:
|
| - offset = style.top();
|
| - break;
|
| - case CSSPropertyBottom:
|
| - offset = style.bottom();
|
| - break;
|
| - default:
|
| - return nullptr;
|
| - }
|
| -
|
| - if (offset.isPercent() && renderer && renderer->isBox()) {
|
| - LayoutUnit containingBlockSize = (propertyID == CSSPropertyLeft || propertyID == CSSPropertyRight) ?
|
| - toLayoutBox(renderer)->containingBlockLogicalWidthForContent() :
|
| - toLayoutBox(renderer)->containingBlockLogicalHeightForContent(ExcludeMarginBorderPadding);
|
| - return zoomAdjustedPixelValue(valueForLength(offset, containingBlockSize), style);
|
| - }
|
| - if (offset.isAuto()) {
|
| - // FIXME: It's not enough to simply return "auto" values for one offset if the other side is defined.
|
| - // In other words if left is auto and right is not auto, then left's computed value is negative right().
|
| - // So we should get the opposite length unit and see if it is auto.
|
| - return cssValuePool().createIdentifierValue(CSSValueAuto);
|
| - }
|
| -
|
| - return zoomAdjustedPixelValueForLength(offset, style);
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSBorderImageSliceValue> valueForNinePieceImageSlice(const NinePieceImage& image)
|
| -{
|
| - // Create the slices.
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> top = nullptr;
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> right = nullptr;
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> bottom = nullptr;
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> left = nullptr;
|
| -
|
| - if (image.imageSlices().top().isPercent())
|
| - top = cssValuePool().createValue(image.imageSlices().top().value(), CSSPrimitiveValue::CSS_PERCENTAGE);
|
| - else
|
| - top = cssValuePool().createValue(image.imageSlices().top().value(), CSSPrimitiveValue::CSS_NUMBER);
|
| -
|
| - if (image.imageSlices().right() == image.imageSlices().top() && image.imageSlices().bottom() == image.imageSlices().top()
|
| - && image.imageSlices().left() == image.imageSlices().top()) {
|
| - right = top;
|
| - bottom = top;
|
| - left = top;
|
| - } else {
|
| - if (image.imageSlices().right().isPercent())
|
| - right = cssValuePool().createValue(image.imageSlices().right().value(), CSSPrimitiveValue::CSS_PERCENTAGE);
|
| - else
|
| - right = cssValuePool().createValue(image.imageSlices().right().value(), CSSPrimitiveValue::CSS_NUMBER);
|
| -
|
| - if (image.imageSlices().bottom() == image.imageSlices().top() && image.imageSlices().right() == image.imageSlices().left()) {
|
| - bottom = top;
|
| - left = right;
|
| - } else {
|
| - if (image.imageSlices().bottom().isPercent())
|
| - bottom = cssValuePool().createValue(image.imageSlices().bottom().value(), CSSPrimitiveValue::CSS_PERCENTAGE);
|
| - else
|
| - bottom = cssValuePool().createValue(image.imageSlices().bottom().value(), CSSPrimitiveValue::CSS_NUMBER);
|
| -
|
| - if (image.imageSlices().left() == image.imageSlices().right()) {
|
| - left = right;
|
| - } else {
|
| - if (image.imageSlices().left().isPercent())
|
| - left = cssValuePool().createValue(image.imageSlices().left().value(), CSSPrimitiveValue::CSS_PERCENTAGE);
|
| - else
|
| - left = cssValuePool().createValue(image.imageSlices().left().value(), CSSPrimitiveValue::CSS_NUMBER);
|
| - }
|
| - }
|
| - }
|
| -
|
| - RefPtrWillBeRawPtr<Quad> quad = Quad::create();
|
| - quad->setTop(top);
|
| - quad->setRight(right);
|
| - quad->setBottom(bottom);
|
| - quad->setLeft(left);
|
| -
|
| - return CSSBorderImageSliceValue::create(cssValuePool().createValue(quad.release()), image.fill());
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForNinePieceImageQuad(const BorderImageLengthBox& box, const LayoutStyle& style)
|
| -{
|
| - // Create the slices.
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> top = nullptr;
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> right = nullptr;
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> bottom = nullptr;
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> left = nullptr;
|
| -
|
| - if (box.top().isNumber())
|
| - top = cssValuePool().createValue(box.top().number(), CSSPrimitiveValue::CSS_NUMBER);
|
| - else
|
| - top = cssValuePool().createValue(box.top().length(), style);
|
| -
|
| - if (box.right() == box.top() && box.bottom() == box.top() && box.left() == box.top()) {
|
| - right = top;
|
| - bottom = top;
|
| - left = top;
|
| - } else {
|
| - if (box.right().isNumber())
|
| - right = cssValuePool().createValue(box.right().number(), CSSPrimitiveValue::CSS_NUMBER);
|
| - else
|
| - right = cssValuePool().createValue(box.right().length(), style);
|
| -
|
| - if (box.bottom() == box.top() && box.right() == box.left()) {
|
| - bottom = top;
|
| - left = right;
|
| - } else {
|
| - if (box.bottom().isNumber())
|
| - bottom = cssValuePool().createValue(box.bottom().number(), CSSPrimitiveValue::CSS_NUMBER);
|
| - else
|
| - bottom = cssValuePool().createValue(box.bottom().length(), style);
|
| -
|
| - if (box.left() == box.right()) {
|
| - left = right;
|
| - } else {
|
| - if (box.left().isNumber())
|
| - left = cssValuePool().createValue(box.left().number(), CSSPrimitiveValue::CSS_NUMBER);
|
| - else
|
| - left = cssValuePool().createValue(box.left().length(), style);
|
| - }
|
| - }
|
| - }
|
| -
|
| - RefPtrWillBeRawPtr<Quad> quad = Quad::create();
|
| - quad->setTop(top);
|
| - quad->setRight(right);
|
| - quad->setBottom(bottom);
|
| - quad->setLeft(left);
|
| -
|
| - return cssValuePool().createValue(quad.release());
|
| -}
|
| -
|
| -static CSSValueID valueForRepeatRule(int rule)
|
| -{
|
| - switch (rule) {
|
| - case RepeatImageRule:
|
| - return CSSValueRepeat;
|
| - case RoundImageRule:
|
| - return CSSValueRound;
|
| - case SpaceImageRule:
|
| - return CSSValueSpace;
|
| - default:
|
| - return CSSValueStretch;
|
| - }
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForNinePieceImageRepeat(const NinePieceImage& image)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> horizontalRepeat = nullptr;
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> verticalRepeat = nullptr;
|
| -
|
| - horizontalRepeat = cssValuePool().createIdentifierValue(valueForRepeatRule(image.horizontalRule()));
|
| - if (image.horizontalRule() == image.verticalRule())
|
| - verticalRepeat = horizontalRepeat;
|
| - else
|
| - verticalRepeat = cssValuePool().createIdentifierValue(valueForRepeatRule(image.verticalRule()));
|
| - return cssValuePool().createValue(Pair::create(horizontalRepeat.release(), verticalRepeat.release(), Pair::DropIdenticalValues));
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForNinePieceImage(const NinePieceImage& image, const LayoutStyle& style)
|
| -{
|
| - if (!image.hasImage())
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| -
|
| - // Image first.
|
| - RefPtrWillBeRawPtr<CSSValue> imageValue = nullptr;
|
| - if (image.image())
|
| - imageValue = image.image()->cssValue();
|
| -
|
| - // Create the image slice.
|
| - RefPtrWillBeRawPtr<CSSBorderImageSliceValue> imageSlices = valueForNinePieceImageSlice(image);
|
| -
|
| - // Create the border area slices.
|
| - RefPtrWillBeRawPtr<CSSValue> borderSlices = valueForNinePieceImageQuad(image.borderSlices(), style);
|
| -
|
| - // Create the border outset.
|
| - RefPtrWillBeRawPtr<CSSValue> outset = valueForNinePieceImageQuad(image.outset(), style);
|
| -
|
| - // Create the repeat rules.
|
| - RefPtrWillBeRawPtr<CSSValue> repeat = valueForNinePieceImageRepeat(image);
|
| -
|
| - return createBorderImageValue(imageValue.release(), imageSlices.release(), borderSlices.release(), outset.release(), repeat.release());
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForReflection(const StyleReflection* reflection, const LayoutStyle& style)
|
| -{
|
| - if (!reflection)
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| -
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> offset = nullptr;
|
| - if (reflection->offset().isPercent())
|
| - offset = cssValuePool().createValue(reflection->offset().percent(), CSSPrimitiveValue::CSS_PERCENTAGE);
|
| - else
|
| - offset = zoomAdjustedPixelValue(reflection->offset().value(), style);
|
| -
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> direction = nullptr;
|
| - switch (reflection->direction()) {
|
| - case ReflectionBelow:
|
| - direction = cssValuePool().createIdentifierValue(CSSValueBelow);
|
| - break;
|
| - case ReflectionAbove:
|
| - direction = cssValuePool().createIdentifierValue(CSSValueAbove);
|
| - break;
|
| - case ReflectionLeft:
|
| - direction = cssValuePool().createIdentifierValue(CSSValueLeft);
|
| - break;
|
| - case ReflectionRight:
|
| - direction = cssValuePool().createIdentifierValue(CSSValueRight);
|
| - break;
|
| - }
|
| -
|
| - return CSSReflectValue::create(direction.release(), offset.release(), valueForNinePieceImage(reflection->mask(), style));
|
| -}
|
| -
|
| -static ItemPosition resolveAlignmentAuto(ItemPosition position, Node* element)
|
| -{
|
| - if (position != ItemPositionAuto)
|
| - return position;
|
| -
|
| - bool isFlexOrGrid = element && element->computedStyle()
|
| - && element->computedStyle()->isDisplayFlexibleOrGridBox();
|
| -
|
| - return isFlexOrGrid ? ItemPositionStretch : ItemPositionStart;
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValueList> valueForItemPositionWithOverflowAlignment(ItemPosition itemPosition, OverflowAlignment overflowAlignment, ItemPositionType positionType)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> result = CSSValueList::createSpaceSeparated();
|
| - if (positionType == LegacyPosition)
|
| - result->append(CSSPrimitiveValue::createIdentifier(CSSValueLegacy));
|
| - result->append(CSSPrimitiveValue::create(itemPosition));
|
| - if (itemPosition >= ItemPositionCenter && overflowAlignment != OverflowAlignmentDefault)
|
| - result->append(CSSPrimitiveValue::create(overflowAlignment));
|
| - ASSERT(result->length() <= 2);
|
| - return result.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValueList> valuesForGridShorthand(const StylePropertyShorthand& shorthand, const LayoutStyle& style, const LayoutObject* renderer, Node* styledNode, bool allowVisitedStyle)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSlashSeparated();
|
| - for (size_t i = 0; i < shorthand.length(); ++i) {
|
| - RefPtrWillBeRawPtr<CSSValue> value = LayoutStyleCSSValueMapping::get(shorthand.properties()[i], style, renderer, styledNode, allowVisitedStyle);
|
| - ASSERT(value);
|
| - list->append(value.release());
|
| - }
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValueList> valuesForShorthandProperty(const StylePropertyShorthand& shorthand, const LayoutStyle& style, const LayoutObject* renderer, Node* styledNode, bool allowVisitedStyle)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - for (size_t i = 0; i < shorthand.length(); ++i) {
|
| - RefPtrWillBeRawPtr<CSSValue> value = LayoutStyleCSSValueMapping::get(shorthand.properties()[i], style, renderer, styledNode, allowVisitedStyle);
|
| - ASSERT(value);
|
| - list->append(value);
|
| - }
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValueList> valuesForBackgroundShorthand(const LayoutStyle& style, const LayoutObject* renderer, Node* styledNode, bool allowVisitedStyle)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> ret = CSSValueList::createCommaSeparated();
|
| - const FillLayer* currLayer = &style.backgroundLayers();
|
| - for (; currLayer; currLayer = currLayer->next()) {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSlashSeparated();
|
| - RefPtrWillBeRawPtr<CSSValueList> beforeSlash = CSSValueList::createSpaceSeparated();
|
| - if (!currLayer->next()) { // color only for final layer
|
| - RefPtrWillBeRawPtr<CSSValue> value = LayoutStyleCSSValueMapping::get(CSSPropertyBackgroundColor, style, renderer, styledNode, allowVisitedStyle);
|
| - ASSERT(value);
|
| - beforeSlash->append(value);
|
| - }
|
| - beforeSlash->append(currLayer->image() ? currLayer->image()->cssValue() : cssValuePool().createIdentifierValue(CSSValueNone));
|
| - beforeSlash->append(valueForFillRepeat(currLayer->repeatX(), currLayer->repeatY()));
|
| - beforeSlash->append(cssValuePool().createValue(currLayer->attachment()));
|
| - beforeSlash->append(createPositionListForLayer(CSSPropertyBackgroundPosition, *currLayer, style));
|
| - list->append(beforeSlash);
|
| - RefPtrWillBeRawPtr<CSSValueList> afterSlash = CSSValueList::createSpaceSeparated();
|
| - afterSlash->append(valueForFillSize(currLayer->size(), style));
|
| - afterSlash->append(cssValuePool().createValue(currLayer->origin()));
|
| - afterSlash->append(cssValuePool().createValue(currLayer->clip()));
|
| - list->append(afterSlash);
|
| - ret->append(list);
|
| - }
|
| - return ret.release();
|
| -}
|
| -
|
| -static ContentPosition resolveContentAlignmentAuto(ContentPosition position, ContentDistributionType distribution, Node* element)
|
| -{
|
| - if (position != ContentPositionAuto || distribution != ContentDistributionDefault)
|
| - return position;
|
| -
|
| - bool isFlex = element && element->computedStyle()
|
| - && element->computedStyle()->isDisplayFlexibleBox();
|
| -
|
| - return isFlex ? ContentPositionFlexStart : ContentPositionStart;
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValueList> valueForContentPositionAndDistributionWithOverflowAlignment(ContentPosition position, OverflowAlignment overflowAlignment, ContentDistributionType distribution)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> result = CSSValueList::createSpaceSeparated();
|
| - if (distribution != ContentDistributionDefault)
|
| - result->append(CSSPrimitiveValue::create(distribution));
|
| - if (distribution == ContentDistributionDefault || position != ContentPositionAuto)
|
| - result->append(CSSPrimitiveValue::create(position));
|
| - if ((position >= ContentPositionCenter || distribution != ContentDistributionDefault) && overflowAlignment != OverflowAlignmentDefault)
|
| - result->append(CSSPrimitiveValue::create(overflowAlignment));
|
| - ASSERT(result->length() > 0);
|
| - ASSERT(result->length() <= 3);
|
| - return result.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForLineHeight(const LayoutStyle& style)
|
| -{
|
| - Length length = style.lineHeight();
|
| - if (length.isNegative())
|
| - return cssValuePool().createIdentifierValue(CSSValueNormal);
|
| -
|
| - float floatValue = floatValueForLength(length, style.fontDescription().specifiedSize());
|
| - if (length.isPercent())
|
| - return cssValuePool().createValue(floatValue, CSSPrimitiveValue::CSS_PX);
|
| -
|
| - return zoomAdjustedPixelValue(floatValue, style);
|
| -}
|
| -
|
| -static CSSValueID identifierForFamily(const AtomicString& family)
|
| -{
|
| - if (family == FontFamilyNames::webkit_cursive)
|
| - return CSSValueCursive;
|
| - if (family == FontFamilyNames::webkit_fantasy)
|
| - return CSSValueFantasy;
|
| - if (family == FontFamilyNames::webkit_monospace)
|
| - return CSSValueMonospace;
|
| - if (family == FontFamilyNames::webkit_pictograph)
|
| - return CSSValueWebkitPictograph;
|
| - if (family == FontFamilyNames::webkit_sans_serif)
|
| - return CSSValueSansSerif;
|
| - if (family == FontFamilyNames::webkit_serif)
|
| - return CSSValueSerif;
|
| - return CSSValueInvalid;
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForFamily(const AtomicString& family)
|
| -{
|
| - if (CSSValueID familyIdentifier = identifierForFamily(family))
|
| - return cssValuePool().createIdentifierValue(familyIdentifier);
|
| - return cssValuePool().createValue(family.string(), CSSPrimitiveValue::CSS_CUSTOM_IDENT);
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValueList> valueForFontFamily(const LayoutStyle& style)
|
| -{
|
| - const FontFamily& firstFamily = style.fontDescription().family();
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - for (const FontFamily* family = &firstFamily; family; family = family->next())
|
| - list->append(valueForFamily(family->family()));
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForFontSize(const LayoutStyle& style)
|
| -{
|
| - return zoomAdjustedPixelValue(style.fontDescription().computedSize(), style);
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForFontStretch(const LayoutStyle& style)
|
| -{
|
| - return cssValuePool().createValue(style.fontDescription().stretch());
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForFontStyle(const LayoutStyle& style)
|
| -{
|
| - return cssValuePool().createValue(style.fontDescription().style());
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForFontVariant(const LayoutStyle& style)
|
| -{
|
| - return cssValuePool().createValue(style.fontDescription().variant());
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> valueForFontWeight(const LayoutStyle& style)
|
| -{
|
| - return cssValuePool().createValue(style.fontDescription().weight());
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> specifiedValueForGridTrackBreadth(const GridLength& trackBreadth, const LayoutStyle& style)
|
| -{
|
| - if (!trackBreadth.isLength())
|
| - return cssValuePool().createValue(trackBreadth.flex(), CSSPrimitiveValue::CSS_FR);
|
| -
|
| - const Length& trackBreadthLength = trackBreadth.length();
|
| - if (trackBreadthLength.isAuto())
|
| - return cssValuePool().createIdentifierValue(CSSValueAuto);
|
| - return zoomAdjustedPixelValueForLength(trackBreadthLength, style);
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> specifiedValueForGridTrackSize(const GridTrackSize& trackSize, const LayoutStyle& style)
|
| -{
|
| - switch (trackSize.type()) {
|
| - case LengthTrackSizing:
|
| - return specifiedValueForGridTrackBreadth(trackSize.length(), style);
|
| - case MinMaxTrackSizing:
|
| - RefPtrWillBeRawPtr<CSSFunctionValue> minMaxTrackBreadths = CSSFunctionValue::create(CSSValueMinmax);
|
| - minMaxTrackBreadths->append(specifiedValueForGridTrackBreadth(trackSize.minTrackBreadth(), style));
|
| - minMaxTrackBreadths->append(specifiedValueForGridTrackBreadth(trackSize.maxTrackBreadth(), style));
|
| - return minMaxTrackBreadths.release();
|
| - }
|
| - ASSERT_NOT_REACHED();
|
| - return nullptr;
|
| -}
|
| -
|
| -static void addValuesForNamedGridLinesAtIndex(const OrderedNamedGridLines& orderedNamedGridLines, size_t i, CSSValueList& list)
|
| -{
|
| - const Vector<String>& namedGridLines = orderedNamedGridLines.get(i);
|
| - if (namedGridLines.isEmpty())
|
| - return;
|
| -
|
| - RefPtrWillBeRawPtr<CSSGridLineNamesValue> lineNames = CSSGridLineNamesValue::create();
|
| - for (size_t j = 0; j < namedGridLines.size(); ++j)
|
| - lineNames->append(cssValuePool().createValue(namedGridLines[j], CSSPrimitiveValue::CSS_CUSTOM_IDENT));
|
| - list.append(lineNames.release());
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForGridTrackList(GridTrackSizingDirection direction, const LayoutObject* renderer, const LayoutStyle& style)
|
| -{
|
| - const Vector<GridTrackSize>& trackSizes = direction == ForColumns ? style.gridTemplateColumns() : style.gridTemplateRows();
|
| - const OrderedNamedGridLines& orderedNamedGridLines = direction == ForColumns ? style.orderedNamedGridColumnLines() : style.orderedNamedGridRowLines();
|
| - bool isLayoutGrid = renderer && renderer->isLayoutGrid();
|
| -
|
| - // Handle the 'none' case.
|
| - bool trackListIsEmpty = trackSizes.isEmpty();
|
| - if (isLayoutGrid && trackListIsEmpty) {
|
| - // For grids we should consider every listed track, whether implicitly or explicitly created. If we don't have
|
| - // any explicit track and there are no children then there are no implicit tracks. We cannot simply check the
|
| - // number of rows/columns in our internal grid representation because it's always at least 1x1 (see r143331).
|
| - trackListIsEmpty = !toLayoutBlock(renderer)->firstChild();
|
| - }
|
| -
|
| - if (trackListIsEmpty) {
|
| - ASSERT(orderedNamedGridLines.isEmpty());
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - }
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - if (isLayoutGrid) {
|
| - const Vector<LayoutUnit>& trackPositions = direction == ForColumns ? toLayoutGrid(renderer)->columnPositions() : toLayoutGrid(renderer)->rowPositions();
|
| - // There are at least #tracks + 1 grid lines (trackPositions). Apart from that, the grid container can generate implicit grid tracks,
|
| - // so we'll have more trackPositions than trackSizes as the latter only contain the explicit grid.
|
| - ASSERT(trackPositions.size() - 1 >= trackSizes.size());
|
| -
|
| - for (size_t i = 0; i < trackPositions.size() - 1; ++i) {
|
| - addValuesForNamedGridLinesAtIndex(orderedNamedGridLines, i, *list);
|
| - list->append(zoomAdjustedPixelValue(trackPositions[i + 1] - trackPositions[i], style));
|
| - }
|
| - } else {
|
| - for (size_t i = 0; i < trackSizes.size(); ++i) {
|
| - addValuesForNamedGridLinesAtIndex(orderedNamedGridLines, i, *list);
|
| - list->append(specifiedValueForGridTrackSize(trackSizes[i], style));
|
| - }
|
| - }
|
| - // Those are the trailing <string>* allowed in the syntax.
|
| - addValuesForNamedGridLinesAtIndex(orderedNamedGridLines, trackSizes.size(), *list);
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForGridPosition(const GridPosition& position)
|
| -{
|
| - if (position.isAuto())
|
| - return cssValuePool().createIdentifierValue(CSSValueAuto);
|
| -
|
| - if (position.isNamedGridArea())
|
| - return cssValuePool().createValue(position.namedGridLine(), CSSPrimitiveValue::CSS_CUSTOM_IDENT);
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - if (position.isSpan()) {
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueSpan));
|
| - list->append(cssValuePool().createValue(position.spanPosition(), CSSPrimitiveValue::CSS_NUMBER));
|
| - } else {
|
| - list->append(cssValuePool().createValue(position.integerPosition(), CSSPrimitiveValue::CSS_NUMBER));
|
| - }
|
| -
|
| - if (!position.namedGridLine().isNull())
|
| - list->append(cssValuePool().createValue(position.namedGridLine(), CSSPrimitiveValue::CSS_CUSTOM_IDENT));
|
| - return list;
|
| -}
|
| -
|
| -static LayoutRect sizingBox(const LayoutObject* renderer)
|
| -{
|
| - if (!renderer->isBox())
|
| - return LayoutRect();
|
| -
|
| - const LayoutBox* box = toLayoutBox(renderer);
|
| - return box->style()->boxSizing() == BORDER_BOX ? box->borderBoxRect() : box->computedCSSContentBoxRect();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> scrollBlocksOnFlagsToCSSValue(WebScrollBlocksOn scrollBlocksOn)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| -
|
| - if (scrollBlocksOn == WebScrollBlocksOnNone)
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| -
|
| - if (scrollBlocksOn & WebScrollBlocksOnStartTouch)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueStartTouch));
|
| - if (scrollBlocksOn & WebScrollBlocksOnWheelEvent)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueWheelEvent));
|
| - if (scrollBlocksOn & WebScrollBlocksOnScrollEvent)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueScrollEvent));
|
| - ASSERT(list->length());
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> renderTextDecorationFlagsToCSSValue(int textDecoration)
|
| -{
|
| - // Blink value is ignored.
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - if (textDecoration & TextDecorationUnderline)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueUnderline));
|
| - if (textDecoration & TextDecorationOverline)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueOverline));
|
| - if (textDecoration & TextDecorationLineThrough)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueLineThrough));
|
| -
|
| - if (!list->length())
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForTextDecorationStyle(TextDecorationStyle textDecorationStyle)
|
| -{
|
| - switch (textDecorationStyle) {
|
| - case TextDecorationStyleSolid:
|
| - return cssValuePool().createIdentifierValue(CSSValueSolid);
|
| - case TextDecorationStyleDouble:
|
| - return cssValuePool().createIdentifierValue(CSSValueDouble);
|
| - case TextDecorationStyleDotted:
|
| - return cssValuePool().createIdentifierValue(CSSValueDotted);
|
| - case TextDecorationStyleDashed:
|
| - return cssValuePool().createIdentifierValue(CSSValueDashed);
|
| - case TextDecorationStyleWavy:
|
| - return cssValuePool().createIdentifierValue(CSSValueWavy);
|
| - }
|
| -
|
| - ASSERT_NOT_REACHED();
|
| - return cssValuePool().createExplicitInitialValue();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> touchActionFlagsToCSSValue(TouchAction touchAction)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - if (touchAction == TouchActionAuto)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueAuto));
|
| - if (touchAction & TouchActionNone) {
|
| - ASSERT(touchAction == TouchActionNone);
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueNone));
|
| - }
|
| - if (touchAction == (TouchActionPanX | TouchActionPanY | TouchActionPinchZoom)) {
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueManipulation));
|
| - } else {
|
| - if (touchAction & TouchActionPanX)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValuePanX));
|
| - if (touchAction & TouchActionPanY)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValuePanY));
|
| - }
|
| - ASSERT(list->length());
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForWillChange(const Vector<CSSPropertyID>& willChangeProperties, bool willChangeContents, bool willChangeScrollPosition)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - if (willChangeContents)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueContents));
|
| - if (willChangeScrollPosition)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueScrollPosition));
|
| - for (size_t i = 0; i < willChangeProperties.size(); ++i)
|
| - list->append(cssValuePool().createIdentifierValue(willChangeProperties[i]));
|
| - if (!list->length())
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueAuto));
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationDelay(const CSSTimingData* timingData)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - if (timingData) {
|
| - for (size_t i = 0; i < timingData->delayList().size(); ++i)
|
| - list->append(cssValuePool().createValue(timingData->delayList()[i], CSSPrimitiveValue::CSS_S));
|
| - } else {
|
| - list->append(cssValuePool().createValue(CSSTimingData::initialDelay(), CSSPrimitiveValue::CSS_S));
|
| - }
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationDirection(Timing::PlaybackDirection direction)
|
| -{
|
| - switch (direction) {
|
| - case Timing::PlaybackDirectionNormal:
|
| - return cssValuePool().createIdentifierValue(CSSValueNormal);
|
| - case Timing::PlaybackDirectionAlternate:
|
| - return cssValuePool().createIdentifierValue(CSSValueAlternate);
|
| - case Timing::PlaybackDirectionReverse:
|
| - return cssValuePool().createIdentifierValue(CSSValueReverse);
|
| - case Timing::PlaybackDirectionAlternateReverse:
|
| - return cssValuePool().createIdentifierValue(CSSValueAlternateReverse);
|
| - default:
|
| - ASSERT_NOT_REACHED();
|
| - return nullptr;
|
| - }
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationDuration(const CSSTimingData* timingData)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - if (timingData) {
|
| - for (size_t i = 0; i < timingData->durationList().size(); ++i)
|
| - list->append(cssValuePool().createValue(timingData->durationList()[i], CSSPrimitiveValue::CSS_S));
|
| - } else {
|
| - list->append(cssValuePool().createValue(CSSTimingData::initialDuration(), CSSPrimitiveValue::CSS_S));
|
| - }
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationFillMode(Timing::FillMode fillMode)
|
| -{
|
| - switch (fillMode) {
|
| - case Timing::FillModeNone:
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - case Timing::FillModeForwards:
|
| - return cssValuePool().createIdentifierValue(CSSValueForwards);
|
| - case Timing::FillModeBackwards:
|
| - return cssValuePool().createIdentifierValue(CSSValueBackwards);
|
| - case Timing::FillModeBoth:
|
| - return cssValuePool().createIdentifierValue(CSSValueBoth);
|
| - default:
|
| - ASSERT_NOT_REACHED();
|
| - return nullptr;
|
| - }
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationIterationCount(double iterationCount)
|
| -{
|
| - if (iterationCount == std::numeric_limits<double>::infinity())
|
| - return cssValuePool().createIdentifierValue(CSSValueInfinite);
|
| - return cssValuePool().createValue(iterationCount, CSSPrimitiveValue::CSS_NUMBER);
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationPlayState(EAnimPlayState playState)
|
| -{
|
| - if (playState == AnimPlayStatePlaying)
|
| - return cssValuePool().createIdentifierValue(CSSValueRunning);
|
| - ASSERT(playState == AnimPlayStatePaused);
|
| - return cssValuePool().createIdentifierValue(CSSValuePaused);
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> createTimingFunctionValue(const TimingFunction* timingFunction)
|
| -{
|
| - switch (timingFunction->type()) {
|
| - case TimingFunction::CubicBezierFunction:
|
| - {
|
| - const CubicBezierTimingFunction* bezierTimingFunction = toCubicBezierTimingFunction(timingFunction);
|
| - if (bezierTimingFunction->subType() != CubicBezierTimingFunction::Custom) {
|
| - CSSValueID valueId = CSSValueInvalid;
|
| - switch (bezierTimingFunction->subType()) {
|
| - case CubicBezierTimingFunction::Ease:
|
| - valueId = CSSValueEase;
|
| - break;
|
| - case CubicBezierTimingFunction::EaseIn:
|
| - valueId = CSSValueEaseIn;
|
| - break;
|
| - case CubicBezierTimingFunction::EaseOut:
|
| - valueId = CSSValueEaseOut;
|
| - break;
|
| - case CubicBezierTimingFunction::EaseInOut:
|
| - valueId = CSSValueEaseInOut;
|
| - break;
|
| - default:
|
| - ASSERT_NOT_REACHED();
|
| - return nullptr;
|
| - }
|
| - return cssValuePool().createIdentifierValue(valueId);
|
| - }
|
| - return CSSCubicBezierTimingFunctionValue::create(bezierTimingFunction->x1(), bezierTimingFunction->y1(), bezierTimingFunction->x2(), bezierTimingFunction->y2());
|
| - }
|
| -
|
| - case TimingFunction::StepsFunction:
|
| - {
|
| - const StepsTimingFunction* stepsTimingFunction = toStepsTimingFunction(timingFunction);
|
| - StepsTimingFunction::StepAtPosition position = stepsTimingFunction->stepAtPosition();
|
| - int steps = stepsTimingFunction->numberOfSteps();
|
| - ASSERT(position == StepsTimingFunction::Start || position == StepsTimingFunction::End);
|
| -
|
| - if (steps > 1)
|
| - return CSSStepsTimingFunctionValue::create(steps, position);
|
| - CSSValueID valueId = position == StepsTimingFunction::Start ? CSSValueStepStart : CSSValueStepEnd;
|
| - return cssValuePool().createIdentifierValue(valueId);
|
| - }
|
| -
|
| - default:
|
| - return cssValuePool().createIdentifierValue(CSSValueLinear);
|
| - }
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForAnimationTimingFunction(const CSSTimingData* timingData)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - if (timingData) {
|
| - for (size_t i = 0; i < timingData->timingFunctionList().size(); ++i)
|
| - list->append(createTimingFunctionValue(timingData->timingFunctionList()[i].get()));
|
| - } else {
|
| - list->append(createTimingFunctionValue(CSSTimingData::initialTimingFunction().get()));
|
| - }
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValueList> valuesForBorderRadiusCorner(LengthSize radius, const LayoutStyle& style)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - if (radius.width().type() == Percent)
|
| - list->append(cssValuePool().createValue(radius.width().percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
|
| - else
|
| - list->append(zoomAdjustedPixelValueForLength(radius.width(), style));
|
| - if (radius.height().type() == Percent)
|
| - list->append(cssValuePool().createValue(radius.height().percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
|
| - else
|
| - list->append(zoomAdjustedPixelValueForLength(radius.height(), style));
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForBorderRadiusCorner(LengthSize radius, const LayoutStyle& style)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = valuesForBorderRadiusCorner(radius, style);
|
| - if (list->item(0)->equals(*list->item(1)))
|
| - return list->item(0);
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSFunctionValue> valueForMatrixTransform(const TransformationMatrix& transform, const LayoutStyle& style)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSFunctionValue> transformValue = nullptr;
|
| - if (transform.isAffine()) {
|
| - transformValue = CSSFunctionValue::create(CSSValueMatrix);
|
| -
|
| - transformValue->append(cssValuePool().createValue(transform.a(), CSSPrimitiveValue::CSS_NUMBER));
|
| - transformValue->append(cssValuePool().createValue(transform.b(), CSSPrimitiveValue::CSS_NUMBER));
|
| - transformValue->append(cssValuePool().createValue(transform.c(), CSSPrimitiveValue::CSS_NUMBER));
|
| - transformValue->append(cssValuePool().createValue(transform.d(), CSSPrimitiveValue::CSS_NUMBER));
|
| - transformValue->append(zoomAdjustedNumberValue(transform.e(), style));
|
| - transformValue->append(zoomAdjustedNumberValue(transform.f(), style));
|
| - } else {
|
| - transformValue = CSSFunctionValue::create(CSSValueMatrix3d);
|
| -
|
| - transformValue->append(cssValuePool().createValue(transform.m11(), CSSPrimitiveValue::CSS_NUMBER));
|
| - transformValue->append(cssValuePool().createValue(transform.m12(), CSSPrimitiveValue::CSS_NUMBER));
|
| - transformValue->append(cssValuePool().createValue(transform.m13(), CSSPrimitiveValue::CSS_NUMBER));
|
| - transformValue->append(cssValuePool().createValue(transform.m14(), CSSPrimitiveValue::CSS_NUMBER));
|
| -
|
| - transformValue->append(cssValuePool().createValue(transform.m21(), CSSPrimitiveValue::CSS_NUMBER));
|
| - transformValue->append(cssValuePool().createValue(transform.m22(), CSSPrimitiveValue::CSS_NUMBER));
|
| - transformValue->append(cssValuePool().createValue(transform.m23(), CSSPrimitiveValue::CSS_NUMBER));
|
| - transformValue->append(cssValuePool().createValue(transform.m24(), CSSPrimitiveValue::CSS_NUMBER));
|
| -
|
| - transformValue->append(cssValuePool().createValue(transform.m31(), CSSPrimitiveValue::CSS_NUMBER));
|
| - transformValue->append(cssValuePool().createValue(transform.m32(), CSSPrimitiveValue::CSS_NUMBER));
|
| - transformValue->append(cssValuePool().createValue(transform.m33(), CSSPrimitiveValue::CSS_NUMBER));
|
| - transformValue->append(cssValuePool().createValue(transform.m34(), CSSPrimitiveValue::CSS_NUMBER));
|
| -
|
| - transformValue->append(zoomAdjustedNumberValue(transform.m41(), style));
|
| - transformValue->append(zoomAdjustedNumberValue(transform.m42(), style));
|
| - transformValue->append(zoomAdjustedNumberValue(transform.m43(), style));
|
| - transformValue->append(cssValuePool().createValue(transform.m44(), CSSPrimitiveValue::CSS_NUMBER));
|
| - }
|
| -
|
| - return transformValue.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> computedTransform(const LayoutObject* renderer, const LayoutStyle& style)
|
| -{
|
| - if (!renderer || !renderer->hasTransformRelatedProperty() || !style.hasTransform())
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| -
|
| - IntRect box;
|
| - if (renderer->isBox())
|
| - box = pixelSnappedIntRect(toLayoutBox(renderer)->borderBoxRect());
|
| -
|
| - TransformationMatrix transform;
|
| - style.applyTransform(transform, LayoutSize(box.size()), LayoutStyle::ExcludeTransformOrigin, LayoutStyle::ExcludeMotionPath);
|
| -
|
| - // FIXME: Need to print out individual functions (https://bugs.webkit.org/show_bug.cgi?id=23924)
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - list->append(valueForMatrixTransform(transform, style));
|
| -
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> createTransitionPropertyValue(const CSSTransitionData::TransitionProperty& property)
|
| -{
|
| - if (property.propertyType == CSSTransitionData::TransitionNone)
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - if (property.propertyType == CSSTransitionData::TransitionAll)
|
| - return cssValuePool().createIdentifierValue(CSSValueAll);
|
| - if (property.propertyType == CSSTransitionData::TransitionUnknown)
|
| - return cssValuePool().createValue(property.propertyString, CSSPrimitiveValue::CSS_CUSTOM_IDENT);
|
| - ASSERT(property.propertyType == CSSTransitionData::TransitionSingleProperty);
|
| - return cssValuePool().createValue(getPropertyNameString(property.propertyId), CSSPrimitiveValue::CSS_CUSTOM_IDENT);
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForTransitionProperty(const CSSTransitionData* transitionData)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - if (transitionData) {
|
| - for (size_t i = 0; i < transitionData->propertyList().size(); ++i)
|
| - list->append(createTransitionPropertyValue(transitionData->propertyList()[i]));
|
| - } else {
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueAll));
|
| - }
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> createLineBoxContainValue(unsigned lineBoxContain)
|
| -{
|
| - if (!lineBoxContain)
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - return CSSLineBoxContainValue::create(lineBoxContain);
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForContentData(const LayoutStyle& style)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - for (const ContentData* contentData = style.contentData(); contentData; contentData = contentData->next()) {
|
| - if (contentData->isCounter()) {
|
| - const CounterContent* counter = toCounterContentData(contentData)->counter();
|
| - ASSERT(counter);
|
| - list->append(cssValuePool().createValue(counter->identifier(), CSSPrimitiveValue::CSS_COUNTER_NAME));
|
| - } else if (contentData->isImage()) {
|
| - const StyleImage* image = toImageContentData(contentData)->image();
|
| - ASSERT(image);
|
| - list->append(image->cssValue());
|
| - } else if (contentData->isText()) {
|
| - list->append(cssValuePool().createValue(toTextContentData(contentData)->text(), CSSPrimitiveValue::CSS_STRING));
|
| - }
|
| - }
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForCounterDirectives(const LayoutStyle& style, CSSPropertyID propertyID)
|
| -{
|
| - const CounterDirectiveMap* map = style.counterDirectives();
|
| - if (!map)
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - for (const auto& item : *map) {
|
| - bool isValidCounterValue = propertyID == CSSPropertyCounterIncrement ? item.value.isIncrement() : item.value.isReset();
|
| - if (!isValidCounterValue)
|
| - continue;
|
| -
|
| - list->append(cssValuePool().createValue(item.key, CSSPrimitiveValue::CSS_CUSTOM_IDENT));
|
| - short number = propertyID == CSSPropertyCounterIncrement ? item.value.incrementValue() : item.value.resetValue();
|
| - list->append(cssValuePool().createValue((double)number, CSSPrimitiveValue::CSS_NUMBER));
|
| - }
|
| -
|
| - if (!list->length())
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| -
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> valueForShape(const LayoutStyle& style, ShapeValue* shapeValue)
|
| -{
|
| - if (!shapeValue)
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - if (shapeValue->type() == ShapeValue::Box)
|
| - return cssValuePool().createValue(shapeValue->cssBox());
|
| - if (shapeValue->type() == ShapeValue::Image) {
|
| - if (shapeValue->image())
|
| - return shapeValue->image()->cssValue();
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - }
|
| -
|
| - ASSERT(shapeValue->type() == ShapeValue::Shape);
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - list->append(valueForBasicShape(style, shapeValue->shape()));
|
| - if (shapeValue->cssBox() != BoxMissing)
|
| - list->append(cssValuePool().createValue(shapeValue->cssBox()));
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValueList> valuesForSidesShorthand(const StylePropertyShorthand& shorthand, const LayoutStyle& style, const LayoutObject* renderer, Node* styledNode, bool allowVisitedStyle)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - // Assume the properties are in the usual order top, right, bottom, left.
|
| - RefPtrWillBeRawPtr<CSSValue> topValue = LayoutStyleCSSValueMapping::get(shorthand.properties()[0], style, renderer, styledNode, allowVisitedStyle);
|
| - RefPtrWillBeRawPtr<CSSValue> rightValue = LayoutStyleCSSValueMapping::get(shorthand.properties()[1], style, renderer, styledNode, allowVisitedStyle);
|
| - RefPtrWillBeRawPtr<CSSValue> bottomValue = LayoutStyleCSSValueMapping::get(shorthand.properties()[2], style, renderer, styledNode, allowVisitedStyle);
|
| - RefPtrWillBeRawPtr<CSSValue> leftValue = LayoutStyleCSSValueMapping::get(shorthand.properties()[3], style, renderer, styledNode, allowVisitedStyle);
|
| -
|
| - // All 4 properties must be specified.
|
| - if (!topValue || !rightValue || !bottomValue || !leftValue)
|
| - return nullptr;
|
| -
|
| - bool showLeft = !compareCSSValuePtr(rightValue, leftValue);
|
| - bool showBottom = !compareCSSValuePtr(topValue, bottomValue) || showLeft;
|
| - bool showRight = !compareCSSValuePtr(topValue, rightValue) || showBottom;
|
| -
|
| - list->append(topValue.release());
|
| - if (showRight)
|
| - list->append(rightValue.release());
|
| - if (showBottom)
|
| - list->append(bottomValue.release());
|
| - if (showLeft)
|
| - list->append(leftValue.release());
|
| -
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValueList> valueForBorderRadiusShorthand(const LayoutStyle& style)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSlashSeparated();
|
| -
|
| - bool showHorizontalBottomLeft = style.borderTopRightRadius().width() != style.borderBottomLeftRadius().width();
|
| - bool showHorizontalBottomRight = showHorizontalBottomLeft || (style.borderBottomRightRadius().width() != style.borderTopLeftRadius().width());
|
| - bool showHorizontalTopRight = showHorizontalBottomRight || (style.borderTopRightRadius().width() != style.borderTopLeftRadius().width());
|
| -
|
| - bool showVerticalBottomLeft = style.borderTopRightRadius().height() != style.borderBottomLeftRadius().height();
|
| - bool showVerticalBottomRight = showVerticalBottomLeft || (style.borderBottomRightRadius().height() != style.borderTopLeftRadius().height());
|
| - bool showVerticalTopRight = showVerticalBottomRight || (style.borderTopRightRadius().height() != style.borderTopLeftRadius().height());
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> topLeftRadius = valuesForBorderRadiusCorner(style.borderTopLeftRadius(), style);
|
| - RefPtrWillBeRawPtr<CSSValueList> topRightRadius = valuesForBorderRadiusCorner(style.borderTopRightRadius(), style);
|
| - RefPtrWillBeRawPtr<CSSValueList> bottomRightRadius = valuesForBorderRadiusCorner(style.borderBottomRightRadius(), style);
|
| - RefPtrWillBeRawPtr<CSSValueList> bottomLeftRadius = valuesForBorderRadiusCorner(style.borderBottomLeftRadius(), style);
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> horizontalRadii = CSSValueList::createSpaceSeparated();
|
| - horizontalRadii->append(topLeftRadius->item(0));
|
| - if (showHorizontalTopRight)
|
| - horizontalRadii->append(topRightRadius->item(0));
|
| - if (showHorizontalBottomRight)
|
| - horizontalRadii->append(bottomRightRadius->item(0));
|
| - if (showHorizontalBottomLeft)
|
| - horizontalRadii->append(bottomLeftRadius->item(0));
|
| -
|
| - list->append(horizontalRadii.release());
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> verticalRadii = CSSValueList::createSpaceSeparated();
|
| - verticalRadii->append(topLeftRadius->item(1));
|
| - if (showVerticalTopRight)
|
| - verticalRadii->append(topRightRadius->item(1));
|
| - if (showVerticalBottomRight)
|
| - verticalRadii->append(bottomRightRadius->item(1));
|
| - if (showVerticalBottomLeft)
|
| - verticalRadii->append(bottomLeftRadius->item(1));
|
| -
|
| - if (!verticalRadii->equals(*toCSSValueList(list->item(0))))
|
| - list->append(verticalRadii.release());
|
| -
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> glyphOrientationToCSSPrimitiveValue(EGlyphOrientation orientation)
|
| -{
|
| - switch (orientation) {
|
| - case GO_0DEG:
|
| - return CSSPrimitiveValue::create(0.0f, CSSPrimitiveValue::CSS_DEG);
|
| - case GO_90DEG:
|
| - return CSSPrimitiveValue::create(90.0f, CSSPrimitiveValue::CSS_DEG);
|
| - case GO_180DEG:
|
| - return CSSPrimitiveValue::create(180.0f, CSSPrimitiveValue::CSS_DEG);
|
| - case GO_270DEG:
|
| - return CSSPrimitiveValue::create(270.0f, CSSPrimitiveValue::CSS_DEG);
|
| - default:
|
| - return nullptr;
|
| - }
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> strokeDashArrayToCSSValueList(const SVGDashArray& dashes, const LayoutStyle& style)
|
| -{
|
| - if (dashes.isEmpty())
|
| - return CSSPrimitiveValue::createIdentifier(CSSValueNone);
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - for (const Length& dashLength : dashes.vector())
|
| - list->append(zoomAdjustedPixelValueForLength(dashLength, style));
|
| -
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> paintOrderToCSSValueList(EPaintOrder paintorder)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - do {
|
| - EPaintOrderType paintOrderType = (EPaintOrderType)(paintorder & ((1 << kPaintOrderBitwidth) - 1));
|
| - switch (paintOrderType) {
|
| - case PT_FILL:
|
| - case PT_STROKE:
|
| - case PT_MARKERS:
|
| - list->append(CSSPrimitiveValue::create(paintOrderType));
|
| - break;
|
| - case PT_NONE:
|
| - default:
|
| - ASSERT_NOT_REACHED();
|
| - break;
|
| - }
|
| - } while (paintorder >>= kPaintOrderBitwidth);
|
| -
|
| - return list.release();
|
| -}
|
| -
|
| -static PassRefPtrWillBeRawPtr<CSSValue> adjustSVGPaintForCurrentColor(SVGPaintType paintType, const String& url, const Color& color, const Color& currentColor)
|
| -{
|
| - if (paintType >= SVG_PAINTTYPE_URI_NONE) {
|
| - RefPtrWillBeRawPtr<CSSValueList> values = CSSValueList::createSpaceSeparated();
|
| - values->append(CSSPrimitiveValue::create(url, CSSPrimitiveValue::CSS_URI));
|
| - if (paintType == SVG_PAINTTYPE_URI_NONE)
|
| - values->append(CSSPrimitiveValue::create(CSSValueNone));
|
| - else if (paintType == SVG_PAINTTYPE_URI_CURRENTCOLOR)
|
| - values->append(CSSPrimitiveValue::createColor(currentColor.rgb()));
|
| - else if (paintType == SVG_PAINTTYPE_URI_RGBCOLOR)
|
| - values->append(CSSPrimitiveValue::createColor(color.rgb()));
|
| - return values.release();
|
| - }
|
| - if (paintType == SVG_PAINTTYPE_NONE)
|
| - return CSSPrimitiveValue::create(CSSValueNone);
|
| - if (paintType == SVG_PAINTTYPE_CURRENTCOLOR)
|
| - return CSSPrimitiveValue::createColor(currentColor.rgb());
|
| -
|
| - return CSSPrimitiveValue::createColor(color.rgb());
|
| -}
|
| -
|
| -static inline String serializeAsFragmentIdentifier(const AtomicString& resource)
|
| -{
|
| - return "#" + resource;
|
| -}
|
| -
|
| -PassRefPtrWillBeRawPtr<CSSValue> LayoutStyleCSSValueMapping::valueForShadowData(const ShadowData& shadow, const LayoutStyle& style, bool useSpread)
|
| -{
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> x = zoomAdjustedPixelValue(shadow.x(), style);
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> y = zoomAdjustedPixelValue(shadow.y(), style);
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> blur = zoomAdjustedPixelValue(shadow.blur(), style);
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> spread = useSpread ? zoomAdjustedPixelValue(shadow.spread(), style) : PassRefPtrWillBeRawPtr<CSSPrimitiveValue>(nullptr);
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> shadowStyle = shadow.style() == Normal ? PassRefPtrWillBeRawPtr<CSSPrimitiveValue>(nullptr) : cssValuePool().createIdentifierValue(CSSValueInset);
|
| - RefPtrWillBeRawPtr<CSSPrimitiveValue> color = currentColorOrValidColor(style, shadow.color());
|
| - return CSSShadowValue::create(x.release(), y.release(), blur.release(), spread.release(), shadowStyle.release(), color.release());
|
| -}
|
| -
|
| -PassRefPtrWillBeRawPtr<CSSValue> LayoutStyleCSSValueMapping::valueForShadowList(const ShadowList* shadowList, const LayoutStyle& style, bool useSpread)
|
| -{
|
| - if (!shadowList)
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - size_t shadowCount = shadowList->shadows().size();
|
| - for (size_t i = 0; i < shadowCount; ++i)
|
| - list->append(valueForShadowData(shadowList->shadows()[i], style, useSpread));
|
| - return list.release();
|
| -}
|
| -
|
| -PassRefPtrWillBeRawPtr<CSSValue> LayoutStyleCSSValueMapping::valueForFilter(const LayoutStyle& style)
|
| -{
|
| - if (style.filter().operations().isEmpty())
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| -
|
| - RefPtrWillBeRawPtr<CSSFunctionValue> filterValue = nullptr;
|
| -
|
| - for (const auto& operation : style.filter().operations()) {
|
| - FilterOperation* filterOperation = operation.get();
|
| - switch (filterOperation->type()) {
|
| - case FilterOperation::REFERENCE:
|
| - filterValue = CSSFunctionValue::create(CSSValueUrl);
|
| - filterValue->append(cssValuePool().createValue(toReferenceFilterOperation(filterOperation)->url(), CSSPrimitiveValue::CSS_CUSTOM_IDENT));
|
| - break;
|
| - case FilterOperation::GRAYSCALE:
|
| - filterValue = CSSFunctionValue::create(CSSValueGrayscale);
|
| - filterValue->append(cssValuePool().createValue(toBasicColorMatrixFilterOperation(filterOperation)->amount(), CSSPrimitiveValue::CSS_NUMBER));
|
| - break;
|
| - case FilterOperation::SEPIA:
|
| - filterValue = CSSFunctionValue::create(CSSValueSepia);
|
| - filterValue->append(cssValuePool().createValue(toBasicColorMatrixFilterOperation(filterOperation)->amount(), CSSPrimitiveValue::CSS_NUMBER));
|
| - break;
|
| - case FilterOperation::SATURATE:
|
| - filterValue = CSSFunctionValue::create(CSSValueSaturate);
|
| - filterValue->append(cssValuePool().createValue(toBasicColorMatrixFilterOperation(filterOperation)->amount(), CSSPrimitiveValue::CSS_NUMBER));
|
| - break;
|
| - case FilterOperation::HUE_ROTATE:
|
| - filterValue = CSSFunctionValue::create(CSSValueHueRotate);
|
| - filterValue->append(cssValuePool().createValue(toBasicColorMatrixFilterOperation(filterOperation)->amount(), CSSPrimitiveValue::CSS_DEG));
|
| - break;
|
| - case FilterOperation::INVERT:
|
| - filterValue = CSSFunctionValue::create(CSSValueInvert);
|
| - filterValue->append(cssValuePool().createValue(toBasicComponentTransferFilterOperation(filterOperation)->amount(), CSSPrimitiveValue::CSS_NUMBER));
|
| - break;
|
| - case FilterOperation::OPACITY:
|
| - filterValue = CSSFunctionValue::create(CSSValueOpacity);
|
| - filterValue->append(cssValuePool().createValue(toBasicComponentTransferFilterOperation(filterOperation)->amount(), CSSPrimitiveValue::CSS_NUMBER));
|
| - break;
|
| - case FilterOperation::BRIGHTNESS:
|
| - filterValue = CSSFunctionValue::create(CSSValueBrightness);
|
| - filterValue->append(cssValuePool().createValue(toBasicComponentTransferFilterOperation(filterOperation)->amount(), CSSPrimitiveValue::CSS_NUMBER));
|
| - break;
|
| - case FilterOperation::CONTRAST:
|
| - filterValue = CSSFunctionValue::create(CSSValueContrast);
|
| - filterValue->append(cssValuePool().createValue(toBasicComponentTransferFilterOperation(filterOperation)->amount(), CSSPrimitiveValue::CSS_NUMBER));
|
| - break;
|
| - case FilterOperation::BLUR:
|
| - filterValue = CSSFunctionValue::create(CSSValueBlur);
|
| - filterValue->append(zoomAdjustedPixelValue(toBlurFilterOperation(filterOperation)->stdDeviation().value(), style));
|
| - break;
|
| - case FilterOperation::DROP_SHADOW: {
|
| - DropShadowFilterOperation* dropShadowOperation = toDropShadowFilterOperation(filterOperation);
|
| - filterValue = CSSFunctionValue::create(CSSValueDropShadow);
|
| - // We want our computed style to look like that of a text shadow (has neither spread nor inset style).
|
| - ShadowData shadow(dropShadowOperation->location(), dropShadowOperation->stdDeviation(), 0, Normal, dropShadowOperation->color());
|
| - filterValue->append(valueForShadowData(shadow, style, false));
|
| - break;
|
| - }
|
| - default:
|
| - ASSERT_NOT_REACHED();
|
| - break;
|
| - }
|
| - list->append(filterValue.release());
|
| - }
|
| -
|
| - return list.release();
|
| -}
|
| -
|
| -PassRefPtrWillBeRawPtr<CSSValue> LayoutStyleCSSValueMapping::get(CSSPropertyID propertyID, const LayoutStyle& style, const LayoutObject* renderer, Node* styledNode, bool allowVisitedStyle)
|
| -{
|
| - const SVGLayoutStyle& svgStyle = style.svgStyle();
|
| - propertyID = CSSProperty::resolveDirectionAwareProperty(propertyID, style.direction(), style.writingMode());
|
| - switch (propertyID) {
|
| - case CSSPropertyInvalid:
|
| - return nullptr;
|
| -
|
| - case CSSPropertyBackgroundColor:
|
| - return allowVisitedStyle ? cssValuePool().createColorValue(style.visitedDependentColor(CSSPropertyBackgroundColor).rgb()) : currentColorOrValidColor(style, style.backgroundColor());
|
| - case CSSPropertyBackgroundImage:
|
| - case CSSPropertyWebkitMaskImage: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskImage ? &style.maskLayers() : &style.backgroundLayers();
|
| - for (; currLayer; currLayer = currLayer->next()) {
|
| - if (currLayer->image())
|
| - list->append(currLayer->image()->cssValue());
|
| - else
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueNone));
|
| - }
|
| - return list.release();
|
| - }
|
| - case CSSPropertyBackgroundSize:
|
| - case CSSPropertyWebkitBackgroundSize:
|
| - case CSSPropertyWebkitMaskSize: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskSize ? &style.maskLayers() : &style.backgroundLayers();
|
| - for (; currLayer; currLayer = currLayer->next())
|
| - list->append(valueForFillSize(currLayer->size(), style));
|
| - return list.release();
|
| - }
|
| - case CSSPropertyBackgroundRepeat:
|
| - case CSSPropertyWebkitMaskRepeat: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskRepeat ? &style.maskLayers() : &style.backgroundLayers();
|
| - for (; currLayer; currLayer = currLayer->next())
|
| - list->append(valueForFillRepeat(currLayer->repeatX(), currLayer->repeatY()));
|
| - return list.release();
|
| - }
|
| - case CSSPropertyMaskSourceType: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - for (const FillLayer* currLayer = &style.maskLayers(); currLayer; currLayer = currLayer->next())
|
| - list->append(valueForFillSourceType(currLayer->maskSourceType()));
|
| - return list.release();
|
| - }
|
| - case CSSPropertyWebkitBackgroundComposite:
|
| - case CSSPropertyWebkitMaskComposite: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskComposite ? &style.maskLayers() : &style.backgroundLayers();
|
| - for (; currLayer; currLayer = currLayer->next())
|
| - list->append(cssValuePool().createValue(currLayer->composite()));
|
| - return list.release();
|
| - }
|
| - case CSSPropertyBackgroundAttachment: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - for (const FillLayer* currLayer = &style.backgroundLayers(); currLayer; currLayer = currLayer->next())
|
| - list->append(cssValuePool().createValue(currLayer->attachment()));
|
| - return list.release();
|
| - }
|
| - case CSSPropertyBackgroundClip:
|
| - case CSSPropertyBackgroundOrigin:
|
| - case CSSPropertyWebkitBackgroundClip:
|
| - case CSSPropertyWebkitBackgroundOrigin:
|
| - case CSSPropertyWebkitMaskClip:
|
| - case CSSPropertyWebkitMaskOrigin: {
|
| - bool isClip = propertyID == CSSPropertyBackgroundClip || propertyID == CSSPropertyWebkitBackgroundClip || propertyID == CSSPropertyWebkitMaskClip;
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - const FillLayer* currLayer = (propertyID == CSSPropertyWebkitMaskClip || propertyID == CSSPropertyWebkitMaskOrigin) ? &style.maskLayers() : &style.backgroundLayers();
|
| - for (; currLayer; currLayer = currLayer->next()) {
|
| - EFillBox box = isClip ? currLayer->clip() : currLayer->origin();
|
| - list->append(cssValuePool().createValue(box));
|
| - }
|
| - return list.release();
|
| - }
|
| - case CSSPropertyBackgroundPosition:
|
| - case CSSPropertyWebkitMaskPosition: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskPosition ? &style.maskLayers() : &style.backgroundLayers();
|
| - for (; currLayer; currLayer = currLayer->next())
|
| - list->append(createPositionListForLayer(propertyID, *currLayer, style));
|
| - return list.release();
|
| - }
|
| - case CSSPropertyBackgroundPositionX:
|
| - case CSSPropertyWebkitMaskPositionX: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskPositionX ? &style.maskLayers() : &style.backgroundLayers();
|
| - for (; currLayer; currLayer = currLayer->next())
|
| - list->append(zoomAdjustedPixelValueForLength(currLayer->xPosition(), style));
|
| - return list.release();
|
| - }
|
| - case CSSPropertyBackgroundPositionY:
|
| - case CSSPropertyWebkitMaskPositionY: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - const FillLayer* currLayer = propertyID == CSSPropertyWebkitMaskPositionY ? &style.maskLayers() : &style.backgroundLayers();
|
| - for (; currLayer; currLayer = currLayer->next())
|
| - list->append(zoomAdjustedPixelValueForLength(currLayer->yPosition(), style));
|
| - return list.release();
|
| - }
|
| - case CSSPropertyBorderCollapse:
|
| - if (style.borderCollapse())
|
| - return cssValuePool().createIdentifierValue(CSSValueCollapse);
|
| - return cssValuePool().createIdentifierValue(CSSValueSeparate);
|
| - case CSSPropertyBorderSpacing: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - list->append(zoomAdjustedPixelValue(style.horizontalBorderSpacing(), style));
|
| - list->append(zoomAdjustedPixelValue(style.verticalBorderSpacing(), style));
|
| - return list.release();
|
| - }
|
| - case CSSPropertyWebkitBorderHorizontalSpacing:
|
| - return zoomAdjustedPixelValue(style.horizontalBorderSpacing(), style);
|
| - case CSSPropertyWebkitBorderVerticalSpacing:
|
| - return zoomAdjustedPixelValue(style.verticalBorderSpacing(), style);
|
| - case CSSPropertyBorderImageSource:
|
| - if (style.borderImageSource())
|
| - return style.borderImageSource()->cssValue();
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - case CSSPropertyBorderTopColor:
|
| - return allowVisitedStyle ? cssValuePool().createColorValue(style.visitedDependentColor(CSSPropertyBorderTopColor).rgb()) : currentColorOrValidColor(style, style.borderTopColor());
|
| - case CSSPropertyBorderRightColor:
|
| - return allowVisitedStyle ? cssValuePool().createColorValue(style.visitedDependentColor(CSSPropertyBorderRightColor).rgb()) : currentColorOrValidColor(style, style.borderRightColor());
|
| - case CSSPropertyBorderBottomColor:
|
| - return allowVisitedStyle ? cssValuePool().createColorValue(style.visitedDependentColor(CSSPropertyBorderBottomColor).rgb()) : currentColorOrValidColor(style, style.borderBottomColor());
|
| - case CSSPropertyBorderLeftColor:
|
| - return allowVisitedStyle ? cssValuePool().createColorValue(style.visitedDependentColor(CSSPropertyBorderLeftColor).rgb()) : currentColorOrValidColor(style, style.borderLeftColor());
|
| - case CSSPropertyBorderTopStyle:
|
| - return cssValuePool().createValue(style.borderTopStyle());
|
| - case CSSPropertyBorderRightStyle:
|
| - return cssValuePool().createValue(style.borderRightStyle());
|
| - case CSSPropertyBorderBottomStyle:
|
| - return cssValuePool().createValue(style.borderBottomStyle());
|
| - case CSSPropertyBorderLeftStyle:
|
| - return cssValuePool().createValue(style.borderLeftStyle());
|
| - case CSSPropertyBorderTopWidth:
|
| - return zoomAdjustedPixelValue(style.borderTopWidth(), style);
|
| - case CSSPropertyBorderRightWidth:
|
| - return zoomAdjustedPixelValue(style.borderRightWidth(), style);
|
| - case CSSPropertyBorderBottomWidth:
|
| - return zoomAdjustedPixelValue(style.borderBottomWidth(), style);
|
| - case CSSPropertyBorderLeftWidth:
|
| - return zoomAdjustedPixelValue(style.borderLeftWidth(), style);
|
| - case CSSPropertyBottom:
|
| - return valueForPositionOffset(style, CSSPropertyBottom, renderer);
|
| - case CSSPropertyWebkitBoxAlign:
|
| - return cssValuePool().createValue(style.boxAlign());
|
| - case CSSPropertyWebkitBoxDecorationBreak:
|
| - if (style.boxDecorationBreak() == DSLICE)
|
| - return cssValuePool().createIdentifierValue(CSSValueSlice);
|
| - return cssValuePool().createIdentifierValue(CSSValueClone);
|
| - case CSSPropertyWebkitBoxDirection:
|
| - return cssValuePool().createValue(style.boxDirection());
|
| - case CSSPropertyWebkitBoxFlex:
|
| - return cssValuePool().createValue(style.boxFlex(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyWebkitBoxFlexGroup:
|
| - return cssValuePool().createValue(style.boxFlexGroup(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyWebkitBoxLines:
|
| - return cssValuePool().createValue(style.boxLines());
|
| - case CSSPropertyWebkitBoxOrdinalGroup:
|
| - return cssValuePool().createValue(style.boxOrdinalGroup(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyWebkitBoxOrient:
|
| - return cssValuePool().createValue(style.boxOrient());
|
| - case CSSPropertyWebkitBoxPack:
|
| - return cssValuePool().createValue(style.boxPack());
|
| - case CSSPropertyWebkitBoxReflect:
|
| - return valueForReflection(style.boxReflect(), style);
|
| - case CSSPropertyBoxShadow:
|
| - case CSSPropertyWebkitBoxShadow:
|
| - return valueForShadowList(style.boxShadow(), style, true);
|
| - case CSSPropertyCaptionSide:
|
| - return cssValuePool().createValue(style.captionSide());
|
| - case CSSPropertyClear:
|
| - return cssValuePool().createValue(style.clear());
|
| - case CSSPropertyColor:
|
| - return cssValuePool().createColorValue(allowVisitedStyle ? style.visitedDependentColor(CSSPropertyColor).rgb() : style.color().rgb());
|
| - case CSSPropertyWebkitPrintColorAdjust:
|
| - return cssValuePool().createValue(style.printColorAdjust());
|
| - case CSSPropertyWebkitColumnCount:
|
| - if (style.hasAutoColumnCount())
|
| - return cssValuePool().createIdentifierValue(CSSValueAuto);
|
| - return cssValuePool().createValue(style.columnCount(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyColumnFill:
|
| - ASSERT(RuntimeEnabledFeatures::regionBasedColumnsEnabled());
|
| - return cssValuePool().createValue(style.columnFill());
|
| - case CSSPropertyWebkitColumnGap:
|
| - if (style.hasNormalColumnGap())
|
| - return cssValuePool().createIdentifierValue(CSSValueNormal);
|
| - return zoomAdjustedPixelValue(style.columnGap(), style);
|
| - case CSSPropertyWebkitColumnRuleColor:
|
| - return allowVisitedStyle ? cssValuePool().createColorValue(style.visitedDependentColor(CSSPropertyOutlineColor).rgb()) : currentColorOrValidColor(style, style.columnRuleColor());
|
| - case CSSPropertyWebkitColumnRuleStyle:
|
| - return cssValuePool().createValue(style.columnRuleStyle());
|
| - case CSSPropertyWebkitColumnRuleWidth:
|
| - return zoomAdjustedPixelValue(style.columnRuleWidth(), style);
|
| - case CSSPropertyWebkitColumnSpan:
|
| - return cssValuePool().createIdentifierValue(style.columnSpan() ? CSSValueAll : CSSValueNone);
|
| - case CSSPropertyWebkitColumnBreakAfter:
|
| - return cssValuePool().createValue(style.columnBreakAfter());
|
| - case CSSPropertyWebkitColumnBreakBefore:
|
| - return cssValuePool().createValue(style.columnBreakBefore());
|
| - case CSSPropertyWebkitColumnBreakInside:
|
| - return cssValuePool().createValue(style.columnBreakInside());
|
| - case CSSPropertyWebkitColumnWidth:
|
| - if (style.hasAutoColumnWidth())
|
| - return cssValuePool().createIdentifierValue(CSSValueAuto);
|
| - return zoomAdjustedPixelValue(style.columnWidth(), style);
|
| - case CSSPropertyTabSize:
|
| - return cssValuePool().createValue(
|
| - style.tabSize().getPixelSize(1.0), style.tabSize().isSpaces() ? CSSPrimitiveValue::CSS_NUMBER : CSSPrimitiveValue::CSS_PX);
|
| - case CSSPropertyCursor: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = nullptr;
|
| - CursorList* cursors = style.cursors();
|
| - if (cursors && cursors->size() > 0) {
|
| - list = CSSValueList::createCommaSeparated();
|
| - for (unsigned i = 0; i < cursors->size(); ++i) {
|
| - if (StyleImage* image = cursors->at(i).image())
|
| - list->append(image->cssValue());
|
| - }
|
| - }
|
| - RefPtrWillBeRawPtr<CSSValue> value = cssValuePool().createValue(style.cursor());
|
| - if (list) {
|
| - list->append(value.release());
|
| - return list.release();
|
| - }
|
| - return value.release();
|
| - }
|
| - case CSSPropertyDirection:
|
| - return cssValuePool().createValue(style.direction());
|
| - case CSSPropertyDisplay:
|
| - return cssValuePool().createValue(style.display());
|
| - case CSSPropertyEmptyCells:
|
| - return cssValuePool().createValue(style.emptyCells());
|
| - case CSSPropertyAlignContent:
|
| - return valueForContentPositionAndDistributionWithOverflowAlignment(resolveContentAlignmentAuto(style.alignContent(), style.alignContentDistribution(), styledNode), style.alignContentOverflowAlignment(), style.alignContentDistribution());
|
| - case CSSPropertyAlignItems:
|
| - return valueForItemPositionWithOverflowAlignment(resolveAlignmentAuto(style.alignItems(), styledNode), style.alignItemsOverflowAlignment(), NonLegacyPosition);
|
| - case CSSPropertyAlignSelf:
|
| - return valueForItemPositionWithOverflowAlignment(resolveAlignmentAuto(style.alignSelf(), styledNode->parentNode()), style.alignSelfOverflowAlignment(), NonLegacyPosition);
|
| - case CSSPropertyFlex:
|
| - return valuesForShorthandProperty(flexShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyFlexBasis:
|
| - return zoomAdjustedPixelValueForLength(style.flexBasis(), style);
|
| - case CSSPropertyFlexDirection:
|
| - return cssValuePool().createValue(style.flexDirection());
|
| - case CSSPropertyFlexFlow:
|
| - return valuesForShorthandProperty(flexFlowShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyFlexGrow:
|
| - return cssValuePool().createValue(style.flexGrow());
|
| - case CSSPropertyFlexShrink:
|
| - return cssValuePool().createValue(style.flexShrink());
|
| - case CSSPropertyFlexWrap:
|
| - return cssValuePool().createValue(style.flexWrap());
|
| - case CSSPropertyJustifyContent:
|
| - return valueForContentPositionAndDistributionWithOverflowAlignment(resolveContentAlignmentAuto(style.justifyContent(), style.justifyContentDistribution(), styledNode), style.justifyContentOverflowAlignment(), style.justifyContentDistribution());
|
| - case CSSPropertyOrder:
|
| - return cssValuePool().createValue(style.order(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyFloat:
|
| - if (style.display() != NONE && style.hasOutOfFlowPosition())
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - return cssValuePool().createValue(style.floating());
|
| - case CSSPropertyFont: {
|
| - RefPtrWillBeRawPtr<CSSFontValue> computedFont = CSSFontValue::create();
|
| - computedFont->style = valueForFontStyle(style);
|
| - computedFont->variant = valueForFontVariant(style);
|
| - computedFont->weight = valueForFontWeight(style);
|
| - computedFont->stretch = valueForFontStretch(style);
|
| - computedFont->size = valueForFontSize(style);
|
| - computedFont->lineHeight = valueForLineHeight(style);
|
| - computedFont->family = valueForFontFamily(style);
|
| - return computedFont.release();
|
| - }
|
| - case CSSPropertyFontFamily:
|
| - return valueForFontFamily(style);
|
| - case CSSPropertyFontSize:
|
| - return valueForFontSize(style);
|
| - case CSSPropertyFontSizeAdjust:
|
| - if (style.hasFontSizeAdjust())
|
| - return cssValuePool().createValue(style.fontSizeAdjust(), CSSPrimitiveValue::CSS_NUMBER);
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - case CSSPropertyFontStretch:
|
| - return valueForFontStretch(style);
|
| - case CSSPropertyFontStyle:
|
| - return valueForFontStyle(style);
|
| - case CSSPropertyFontVariant:
|
| - return valueForFontVariant(style);
|
| - case CSSPropertyFontWeight:
|
| - return valueForFontWeight(style);
|
| - case CSSPropertyWebkitFontFeatureSettings: {
|
| - const FontFeatureSettings* featureSettings = style.fontDescription().featureSettings();
|
| - if (!featureSettings || !featureSettings->size())
|
| - return cssValuePool().createIdentifierValue(CSSValueNormal);
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - for (unsigned i = 0; i < featureSettings->size(); ++i) {
|
| - const FontFeature& feature = featureSettings->at(i);
|
| - RefPtrWillBeRawPtr<CSSFontFeatureValue> featureValue = CSSFontFeatureValue::create(feature.tag(), feature.value());
|
| - list->append(featureValue.release());
|
| - }
|
| - return list.release();
|
| - }
|
| - case CSSPropertyGridAutoFlow: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - switch (style.gridAutoFlow()) {
|
| - case AutoFlowRow:
|
| - case AutoFlowRowDense:
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueRow));
|
| - break;
|
| - case AutoFlowColumn:
|
| - case AutoFlowColumnDense:
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueColumn));
|
| - break;
|
| - default:
|
| - ASSERT_NOT_REACHED();
|
| - }
|
| -
|
| - switch (style.gridAutoFlow()) {
|
| - case AutoFlowRowDense:
|
| - case AutoFlowColumnDense:
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueDense));
|
| - break;
|
| - default:
|
| - // Do nothing.
|
| - break;
|
| - }
|
| -
|
| - return list.release();
|
| - }
|
| - // Specs mention that getComputedStyle() should return the used value of the property instead of the computed
|
| - // one for grid-definition-{rows|columns} but not for the grid-auto-{rows|columns} as things like
|
| - // grid-auto-columns: 2fr; cannot be resolved to a value in pixels as the '2fr' means very different things
|
| - // depending on the size of the explicit grid or the number of implicit tracks added to the grid. See
|
| - // http://lists.w3.org/Archives/Public/www-style/2013Nov/0014.html
|
| - case CSSPropertyGridAutoColumns:
|
| - return specifiedValueForGridTrackSize(style.gridAutoColumns(), style);
|
| - case CSSPropertyGridAutoRows:
|
| - return specifiedValueForGridTrackSize(style.gridAutoRows(), style);
|
| -
|
| - case CSSPropertyGridTemplateColumns:
|
| - return valueForGridTrackList(ForColumns, renderer, style);
|
| - case CSSPropertyGridTemplateRows:
|
| - return valueForGridTrackList(ForRows, renderer, style);
|
| -
|
| - case CSSPropertyGridColumnStart:
|
| - return valueForGridPosition(style.gridColumnStart());
|
| - case CSSPropertyGridColumnEnd:
|
| - return valueForGridPosition(style.gridColumnEnd());
|
| - case CSSPropertyGridRowStart:
|
| - return valueForGridPosition(style.gridRowStart());
|
| - case CSSPropertyGridRowEnd:
|
| - return valueForGridPosition(style.gridRowEnd());
|
| - case CSSPropertyGridColumn:
|
| - return valuesForGridShorthand(gridColumnShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyGridRow:
|
| - return valuesForGridShorthand(gridRowShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyGridArea:
|
| - return valuesForGridShorthand(gridAreaShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyGridTemplate:
|
| - return valuesForGridShorthand(gridTemplateShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyGrid:
|
| - return valuesForGridShorthand(gridShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyGridTemplateAreas:
|
| - if (!style.namedGridAreaRowCount()) {
|
| - ASSERT(!style.namedGridAreaColumnCount());
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - }
|
| -
|
| - return CSSGridTemplateAreasValue::create(style.namedGridArea(), style.namedGridAreaRowCount(), style.namedGridAreaColumnCount());
|
| -
|
| - case CSSPropertyHeight:
|
| - if (renderer) {
|
| - // According to http://www.w3.org/TR/CSS2/visudet.html#the-height-property,
|
| - // the "height" property does not apply for non-replaced inline elements.
|
| - if (!renderer->isReplaced() && renderer->isInline())
|
| - return cssValuePool().createIdentifierValue(CSSValueAuto);
|
| - return zoomAdjustedPixelValue(sizingBox(renderer).height(), style);
|
| - }
|
| - return zoomAdjustedPixelValueForLength(style.height(), style);
|
| - case CSSPropertyWebkitHighlight:
|
| - if (style.highlight() == nullAtom)
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - return cssValuePool().createValue(style.highlight(), CSSPrimitiveValue::CSS_STRING);
|
| - case CSSPropertyWebkitHyphenateCharacter:
|
| - if (style.hyphenationString().isNull())
|
| - return cssValuePool().createIdentifierValue(CSSValueAuto);
|
| - return cssValuePool().createValue(style.hyphenationString(), CSSPrimitiveValue::CSS_STRING);
|
| - case CSSPropertyImageRendering:
|
| - return CSSPrimitiveValue::create(style.imageRendering());
|
| - case CSSPropertyIsolation:
|
| - return cssValuePool().createValue(style.isolation());
|
| - case CSSPropertyJustifyItems:
|
| - return valueForItemPositionWithOverflowAlignment(resolveAlignmentAuto(style.justifyItems(), styledNode), style.justifyItemsOverflowAlignment(), style.justifyItemsPositionType());
|
| - case CSSPropertyJustifySelf:
|
| - return valueForItemPositionWithOverflowAlignment(resolveAlignmentAuto(style.justifySelf(), styledNode->parentNode()), style.justifySelfOverflowAlignment(), NonLegacyPosition);
|
| - case CSSPropertyLeft:
|
| - return valueForPositionOffset(style, CSSPropertyLeft, renderer);
|
| - case CSSPropertyLetterSpacing:
|
| - if (!style.letterSpacing())
|
| - return cssValuePool().createIdentifierValue(CSSValueNormal);
|
| - return zoomAdjustedPixelValue(style.letterSpacing(), style);
|
| - case CSSPropertyWebkitLineClamp:
|
| - if (style.lineClamp().isNone())
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - return cssValuePool().createValue(style.lineClamp().value(), style.lineClamp().isPercentage() ? CSSPrimitiveValue::CSS_PERCENTAGE : CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyLineHeight:
|
| - return valueForLineHeight(style);
|
| - case CSSPropertyListStyleImage:
|
| - if (style.listStyleImage())
|
| - return style.listStyleImage()->cssValue();
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - case CSSPropertyListStylePosition:
|
| - return cssValuePool().createValue(style.listStylePosition());
|
| - case CSSPropertyListStyleType:
|
| - return cssValuePool().createValue(style.listStyleType());
|
| - case CSSPropertyWebkitLocale:
|
| - if (style.locale().isNull())
|
| - return cssValuePool().createIdentifierValue(CSSValueAuto);
|
| - return cssValuePool().createValue(style.locale(), CSSPrimitiveValue::CSS_STRING);
|
| - case CSSPropertyMarginTop: {
|
| - Length marginTop = style.marginTop();
|
| - if (marginTop.isFixed() || !renderer || !renderer->isBox())
|
| - return zoomAdjustedPixelValueForLength(marginTop, style);
|
| - return zoomAdjustedPixelValue(toLayoutBox(renderer)->marginTop(), style);
|
| - }
|
| - case CSSPropertyMarginRight: {
|
| - Length marginRight = style.marginRight();
|
| - if (marginRight.isFixed() || !renderer || !renderer->isBox())
|
| - return zoomAdjustedPixelValueForLength(marginRight, style);
|
| - float value;
|
| - if (marginRight.isPercent()) {
|
| - // LayoutBox gives a marginRight() that is the distance between the right-edge of the child box
|
| - // and the right-edge of the containing box, when display == BLOCK. Let's calculate the absolute
|
| - // value of the specified margin-right % instead of relying on LayoutBox's marginRight() value.
|
| - value = minimumValueForLength(marginRight, toLayoutBox(renderer)->containingBlockLogicalWidthForContent()).toFloat();
|
| - } else {
|
| - value = toLayoutBox(renderer)->marginRight().toFloat();
|
| - }
|
| - return zoomAdjustedPixelValue(value, style);
|
| - }
|
| - case CSSPropertyMarginBottom: {
|
| - Length marginBottom = style.marginBottom();
|
| - if (marginBottom.isFixed() || !renderer || !renderer->isBox())
|
| - return zoomAdjustedPixelValueForLength(marginBottom, style);
|
| - return zoomAdjustedPixelValue(toLayoutBox(renderer)->marginBottom(), style);
|
| - }
|
| - case CSSPropertyMarginLeft: {
|
| - Length marginLeft = style.marginLeft();
|
| - if (marginLeft.isFixed() || !renderer || !renderer->isBox())
|
| - return zoomAdjustedPixelValueForLength(marginLeft, style);
|
| - return zoomAdjustedPixelValue(toLayoutBox(renderer)->marginLeft(), style);
|
| - }
|
| - case CSSPropertyWebkitUserModify:
|
| - return cssValuePool().createValue(style.userModify());
|
| - case CSSPropertyMaxHeight: {
|
| - const Length& maxHeight = style.maxHeight();
|
| - if (maxHeight.isMaxSizeNone())
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - return zoomAdjustedPixelValueForLength(maxHeight, style);
|
| - }
|
| - case CSSPropertyMaxWidth: {
|
| - const Length& maxWidth = style.maxWidth();
|
| - if (maxWidth.isMaxSizeNone())
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - return zoomAdjustedPixelValueForLength(maxWidth, style);
|
| - }
|
| - case CSSPropertyMinHeight:
|
| - // FIXME: For flex-items, min-height:auto should compute to min-content.
|
| - if (style.minHeight().isAuto())
|
| - return zoomAdjustedPixelValue(0, style);
|
| - return zoomAdjustedPixelValueForLength(style.minHeight(), style);
|
| - case CSSPropertyMinWidth:
|
| - // FIXME: For flex-items, min-width:auto should compute to min-content.
|
| - if (style.minWidth().isAuto())
|
| - return zoomAdjustedPixelValue(0, style);
|
| - return zoomAdjustedPixelValueForLength(style.minWidth(), style);
|
| - case CSSPropertyObjectFit:
|
| - return cssValuePool().createValue(style.objectFit());
|
| - case CSSPropertyObjectPosition:
|
| - return cssValuePool().createValue(
|
| - Pair::create(
|
| - zoomAdjustedPixelValueForLength(style.objectPosition().x(), style),
|
| - zoomAdjustedPixelValueForLength(style.objectPosition().y(), style),
|
| - Pair::KeepIdenticalValues));
|
| - case CSSPropertyOpacity:
|
| - return cssValuePool().createValue(style.opacity(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyOrphans:
|
| - if (style.hasAutoOrphans())
|
| - return cssValuePool().createIdentifierValue(CSSValueAuto);
|
| - return cssValuePool().createValue(style.orphans(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyOutlineColor:
|
| - return allowVisitedStyle ? cssValuePool().createColorValue(style.visitedDependentColor(CSSPropertyOutlineColor).rgb()) : currentColorOrValidColor(style, style.outlineColor());
|
| - case CSSPropertyOutlineOffset:
|
| - return zoomAdjustedPixelValue(style.outlineOffset(), style);
|
| - case CSSPropertyOutlineStyle:
|
| - if (style.outlineStyleIsAuto())
|
| - return cssValuePool().createIdentifierValue(CSSValueAuto);
|
| - return cssValuePool().createValue(style.outlineStyle());
|
| - case CSSPropertyOutlineWidth:
|
| - return zoomAdjustedPixelValue(style.outlineWidth(), style);
|
| - case CSSPropertyOverflow:
|
| - return cssValuePool().createValue(max(style.overflowX(), style.overflowY()));
|
| - case CSSPropertyOverflowWrap:
|
| - return cssValuePool().createValue(style.overflowWrap());
|
| - case CSSPropertyOverflowX:
|
| - return cssValuePool().createValue(style.overflowX());
|
| - case CSSPropertyOverflowY:
|
| - return cssValuePool().createValue(style.overflowY());
|
| - case CSSPropertyPaddingTop: {
|
| - Length paddingTop = style.paddingTop();
|
| - if (paddingTop.isFixed() || !renderer || !renderer->isBox())
|
| - return zoomAdjustedPixelValueForLength(paddingTop, style);
|
| - return zoomAdjustedPixelValue(toLayoutBox(renderer)->computedCSSPaddingTop(), style);
|
| - }
|
| - case CSSPropertyPaddingRight: {
|
| - Length paddingRight = style.paddingRight();
|
| - if (paddingRight.isFixed() || !renderer || !renderer->isBox())
|
| - return zoomAdjustedPixelValueForLength(paddingRight, style);
|
| - return zoomAdjustedPixelValue(toLayoutBox(renderer)->computedCSSPaddingRight(), style);
|
| - }
|
| - case CSSPropertyPaddingBottom: {
|
| - Length paddingBottom = style.paddingBottom();
|
| - if (paddingBottom.isFixed() || !renderer || !renderer->isBox())
|
| - return zoomAdjustedPixelValueForLength(paddingBottom, style);
|
| - return zoomAdjustedPixelValue(toLayoutBox(renderer)->computedCSSPaddingBottom(), style);
|
| - }
|
| - case CSSPropertyPaddingLeft: {
|
| - Length paddingLeft = style.paddingLeft();
|
| - if (paddingLeft.isFixed() || !renderer || !renderer->isBox())
|
| - return zoomAdjustedPixelValueForLength(paddingLeft, style);
|
| - return zoomAdjustedPixelValue(toLayoutBox(renderer)->computedCSSPaddingLeft(), style);
|
| - }
|
| - case CSSPropertyPageBreakAfter:
|
| - return cssValuePool().createValue(style.pageBreakAfter());
|
| - case CSSPropertyPageBreakBefore:
|
| - return cssValuePool().createValue(style.pageBreakBefore());
|
| - case CSSPropertyPageBreakInside: {
|
| - EPageBreak pageBreak = style.pageBreakInside();
|
| - ASSERT(pageBreak != PBALWAYS);
|
| - if (pageBreak == PBALWAYS)
|
| - return nullptr;
|
| - return cssValuePool().createValue(style.pageBreakInside());
|
| - }
|
| - case CSSPropertyPosition:
|
| - return cssValuePool().createValue(style.position());
|
| - case CSSPropertyRight:
|
| - return valueForPositionOffset(style, CSSPropertyRight, renderer);
|
| - case CSSPropertyWebkitRubyPosition:
|
| - return cssValuePool().createValue(style.rubyPosition());
|
| - case CSSPropertyScrollBehavior:
|
| - return cssValuePool().createValue(style.scrollBehavior());
|
| - case CSSPropertyScrollBlocksOn:
|
| - return scrollBlocksOnFlagsToCSSValue(style.scrollBlocksOn());
|
| - case CSSPropertyTableLayout:
|
| - return cssValuePool().createValue(style.tableLayout());
|
| - case CSSPropertyTextAlign:
|
| - return cssValuePool().createValue(style.textAlign());
|
| - case CSSPropertyTextAlignLast:
|
| - return cssValuePool().createValue(style.textAlignLast());
|
| - case CSSPropertyTextDecoration:
|
| - if (RuntimeEnabledFeatures::css3TextDecorationsEnabled())
|
| - return valuesForShorthandProperty(textDecorationShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - // Fall through.
|
| - case CSSPropertyTextDecorationLine:
|
| - return renderTextDecorationFlagsToCSSValue(style.textDecoration());
|
| - case CSSPropertyTextDecorationStyle:
|
| - return valueForTextDecorationStyle(style.textDecorationStyle());
|
| - case CSSPropertyTextDecorationColor:
|
| - return currentColorOrValidColor(style, style.textDecorationColor());
|
| - case CSSPropertyTextJustify:
|
| - return cssValuePool().createValue(style.textJustify());
|
| - case CSSPropertyTextUnderlinePosition:
|
| - return cssValuePool().createValue(style.textUnderlinePosition());
|
| - case CSSPropertyWebkitTextDecorationsInEffect:
|
| - return renderTextDecorationFlagsToCSSValue(style.textDecorationsInEffect());
|
| - case CSSPropertyWebkitTextFillColor:
|
| - return currentColorOrValidColor(style, style.textFillColor());
|
| - case CSSPropertyWebkitTextEmphasisColor:
|
| - return currentColorOrValidColor(style, style.textEmphasisColor());
|
| - case CSSPropertyWebkitTextEmphasisPosition:
|
| - return cssValuePool().createValue(style.textEmphasisPosition());
|
| - case CSSPropertyWebkitTextEmphasisStyle:
|
| - switch (style.textEmphasisMark()) {
|
| - case TextEmphasisMarkNone:
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - case TextEmphasisMarkCustom:
|
| - return cssValuePool().createValue(style.textEmphasisCustomMark(), CSSPrimitiveValue::CSS_STRING);
|
| - case TextEmphasisMarkAuto:
|
| - ASSERT_NOT_REACHED();
|
| - // Fall through
|
| - case TextEmphasisMarkDot:
|
| - case TextEmphasisMarkCircle:
|
| - case TextEmphasisMarkDoubleCircle:
|
| - case TextEmphasisMarkTriangle:
|
| - case TextEmphasisMarkSesame: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - list->append(cssValuePool().createValue(style.textEmphasisFill()));
|
| - list->append(cssValuePool().createValue(style.textEmphasisMark()));
|
| - return list.release();
|
| - }
|
| - }
|
| - case CSSPropertyTextIndent: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - list->append(zoomAdjustedPixelValueForLength(style.textIndent(), style));
|
| - if (RuntimeEnabledFeatures::css3TextEnabled() && (style.textIndentLine() == TextIndentEachLine || style.textIndentType() == TextIndentHanging)) {
|
| - if (style.textIndentLine() == TextIndentEachLine)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueEachLine));
|
| - if (style.textIndentType() == TextIndentHanging)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueHanging));
|
| - }
|
| - return list.release();
|
| - }
|
| - case CSSPropertyTextShadow:
|
| - return valueForShadowList(style.textShadow(), style, false);
|
| - case CSSPropertyTextRendering:
|
| - return cssValuePool().createValue(style.fontDescription().textRendering());
|
| - case CSSPropertyTextOverflow:
|
| - if (style.textOverflow())
|
| - return cssValuePool().createIdentifierValue(CSSValueEllipsis);
|
| - return cssValuePool().createIdentifierValue(CSSValueClip);
|
| - case CSSPropertyWebkitTextSecurity:
|
| - return cssValuePool().createValue(style.textSecurity());
|
| - case CSSPropertyWebkitTextStrokeColor:
|
| - return currentColorOrValidColor(style, style.textStrokeColor());
|
| - case CSSPropertyWebkitTextStrokeWidth:
|
| - return zoomAdjustedPixelValue(style.textStrokeWidth(), style);
|
| - case CSSPropertyTextTransform:
|
| - return cssValuePool().createValue(style.textTransform());
|
| - case CSSPropertyTop:
|
| - return valueForPositionOffset(style, CSSPropertyTop, renderer);
|
| - case CSSPropertyTouchAction:
|
| - return touchActionFlagsToCSSValue(style.touchAction());
|
| - case CSSPropertyUnicodeBidi:
|
| - return cssValuePool().createValue(style.unicodeBidi());
|
| - case CSSPropertyVerticalAlign:
|
| - switch (style.verticalAlign()) {
|
| - case BASELINE:
|
| - return cssValuePool().createIdentifierValue(CSSValueBaseline);
|
| - case MIDDLE:
|
| - return cssValuePool().createIdentifierValue(CSSValueMiddle);
|
| - case SUB:
|
| - return cssValuePool().createIdentifierValue(CSSValueSub);
|
| - case SUPER:
|
| - return cssValuePool().createIdentifierValue(CSSValueSuper);
|
| - case TEXT_TOP:
|
| - return cssValuePool().createIdentifierValue(CSSValueTextTop);
|
| - case TEXT_BOTTOM:
|
| - return cssValuePool().createIdentifierValue(CSSValueTextBottom);
|
| - case TOP:
|
| - return cssValuePool().createIdentifierValue(CSSValueTop);
|
| - case BOTTOM:
|
| - return cssValuePool().createIdentifierValue(CSSValueBottom);
|
| - case BASELINE_MIDDLE:
|
| - return cssValuePool().createIdentifierValue(CSSValueWebkitBaselineMiddle);
|
| - case LENGTH:
|
| - return zoomAdjustedPixelValueForLength(style.verticalAlignLength(), style);
|
| - }
|
| - ASSERT_NOT_REACHED();
|
| - return nullptr;
|
| - case CSSPropertyVisibility:
|
| - return cssValuePool().createValue(style.visibility());
|
| - case CSSPropertyWhiteSpace:
|
| - return cssValuePool().createValue(style.whiteSpace());
|
| - case CSSPropertyWidows:
|
| - return cssValuePool().createValue(style.widows(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyWidth:
|
| - if (renderer) {
|
| - // According to http://www.w3.org/TR/CSS2/visudet.html#the-width-property,
|
| - // the "width" property does not apply for non-replaced inline elements.
|
| - if (!renderer->isReplaced() && renderer->isInline())
|
| - return cssValuePool().createIdentifierValue(CSSValueAuto);
|
| - return zoomAdjustedPixelValue(sizingBox(renderer).width(), style);
|
| - }
|
| - return zoomAdjustedPixelValueForLength(style.width(), style);
|
| - case CSSPropertyWillChange:
|
| - return valueForWillChange(style.willChangeProperties(), style.willChangeContents(), style.willChangeScrollPosition());
|
| - case CSSPropertyWordBreak:
|
| - return cssValuePool().createValue(style.wordBreak());
|
| - case CSSPropertyWordSpacing:
|
| - return zoomAdjustedPixelValue(style.wordSpacing(), style);
|
| - case CSSPropertyWordWrap:
|
| - return cssValuePool().createValue(style.overflowWrap());
|
| - case CSSPropertyWebkitLineBreak:
|
| - return cssValuePool().createValue(style.lineBreak());
|
| - case CSSPropertyResize:
|
| - return cssValuePool().createValue(style.resize());
|
| - case CSSPropertyFontKerning:
|
| - return cssValuePool().createValue(style.fontDescription().kerning());
|
| - case CSSPropertyWebkitFontSmoothing:
|
| - return cssValuePool().createValue(style.fontDescription().fontSmoothing());
|
| - case CSSPropertyFontVariantLigatures: {
|
| - FontDescription::LigaturesState commonLigaturesState = style.fontDescription().commonLigaturesState();
|
| - FontDescription::LigaturesState discretionaryLigaturesState = style.fontDescription().discretionaryLigaturesState();
|
| - FontDescription::LigaturesState historicalLigaturesState = style.fontDescription().historicalLigaturesState();
|
| - FontDescription::LigaturesState contextualLigaturesState = style.fontDescription().contextualLigaturesState();
|
| - if (commonLigaturesState == FontDescription::NormalLigaturesState && discretionaryLigaturesState == FontDescription::NormalLigaturesState
|
| - && historicalLigaturesState == FontDescription::NormalLigaturesState && contextualLigaturesState == FontDescription::NormalLigaturesState)
|
| - return cssValuePool().createIdentifierValue(CSSValueNormal);
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> valueList = CSSValueList::createSpaceSeparated();
|
| - if (commonLigaturesState != FontDescription::NormalLigaturesState)
|
| - valueList->append(cssValuePool().createIdentifierValue(commonLigaturesState == FontDescription::DisabledLigaturesState ? CSSValueNoCommonLigatures : CSSValueCommonLigatures));
|
| - if (discretionaryLigaturesState != FontDescription::NormalLigaturesState)
|
| - valueList->append(cssValuePool().createIdentifierValue(discretionaryLigaturesState == FontDescription::DisabledLigaturesState ? CSSValueNoDiscretionaryLigatures : CSSValueDiscretionaryLigatures));
|
| - if (historicalLigaturesState != FontDescription::NormalLigaturesState)
|
| - valueList->append(cssValuePool().createIdentifierValue(historicalLigaturesState == FontDescription::DisabledLigaturesState ? CSSValueNoHistoricalLigatures : CSSValueHistoricalLigatures));
|
| - if (contextualLigaturesState != FontDescription::NormalLigaturesState)
|
| - valueList->append(cssValuePool().createIdentifierValue(contextualLigaturesState == FontDescription::DisabledLigaturesState ? CSSValueNoContextual : CSSValueContextual));
|
| - return valueList;
|
| - }
|
| - case CSSPropertyZIndex:
|
| - if (style.hasAutoZIndex())
|
| - return cssValuePool().createIdentifierValue(CSSValueAuto);
|
| - return cssValuePool().createValue(style.zIndex(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyZoom:
|
| - return cssValuePool().createValue(style.zoom(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyBoxSizing:
|
| - if (style.boxSizing() == CONTENT_BOX)
|
| - return cssValuePool().createIdentifierValue(CSSValueContentBox);
|
| - return cssValuePool().createIdentifierValue(CSSValueBorderBox);
|
| - case CSSPropertyWebkitAppRegion:
|
| - return cssValuePool().createIdentifierValue(style.getDraggableRegionMode() == DraggableRegionDrag ? CSSValueDrag : CSSValueNoDrag);
|
| - case CSSPropertyAnimationDelay:
|
| - ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
|
| - case CSSPropertyWebkitAnimationDelay:
|
| - return valueForAnimationDelay(style.animations());
|
| - case CSSPropertyAnimationDirection:
|
| - ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
|
| - case CSSPropertyWebkitAnimationDirection: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - const CSSAnimationData* animationData = style.animations();
|
| - if (animationData) {
|
| - for (size_t i = 0; i < animationData->directionList().size(); ++i)
|
| - list->append(valueForAnimationDirection(animationData->directionList()[i]));
|
| - } else {
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueNormal));
|
| - }
|
| - return list.release();
|
| - }
|
| - case CSSPropertyAnimationDuration:
|
| - ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
|
| - case CSSPropertyWebkitAnimationDuration:
|
| - return valueForAnimationDuration(style.animations());
|
| - case CSSPropertyAnimationFillMode:
|
| - ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
|
| - case CSSPropertyWebkitAnimationFillMode: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - const CSSAnimationData* animationData = style.animations();
|
| - if (animationData) {
|
| - for (size_t i = 0; i < animationData->fillModeList().size(); ++i)
|
| - list->append(valueForAnimationFillMode(animationData->fillModeList()[i]));
|
| - } else {
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueNone));
|
| - }
|
| - return list.release();
|
| - }
|
| - case CSSPropertyAnimationIterationCount:
|
| - ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
|
| - case CSSPropertyWebkitAnimationIterationCount: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - const CSSAnimationData* animationData = style.animations();
|
| - if (animationData) {
|
| - for (size_t i = 0; i < animationData->iterationCountList().size(); ++i)
|
| - list->append(valueForAnimationIterationCount(animationData->iterationCountList()[i]));
|
| - } else {
|
| - list->append(cssValuePool().createValue(CSSAnimationData::initialIterationCount(), CSSPrimitiveValue::CSS_NUMBER));
|
| - }
|
| - return list.release();
|
| - }
|
| - case CSSPropertyAnimationName:
|
| - ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
|
| - case CSSPropertyWebkitAnimationName: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - const CSSAnimationData* animationData = style.animations();
|
| - if (animationData) {
|
| - for (size_t i = 0; i < animationData->nameList().size(); ++i)
|
| - list->append(cssValuePool().createValue(animationData->nameList()[i], CSSPrimitiveValue::CSS_CUSTOM_IDENT));
|
| - } else {
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueNone));
|
| - }
|
| - return list.release();
|
| - }
|
| - case CSSPropertyAnimationPlayState:
|
| - ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
|
| - case CSSPropertyWebkitAnimationPlayState: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - const CSSAnimationData* animationData = style.animations();
|
| - if (animationData) {
|
| - for (size_t i = 0; i < animationData->playStateList().size(); ++i)
|
| - list->append(valueForAnimationPlayState(animationData->playStateList()[i]));
|
| - } else {
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueRunning));
|
| - }
|
| - return list.release();
|
| - }
|
| - case CSSPropertyAnimationTimingFunction:
|
| - ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
|
| - case CSSPropertyWebkitAnimationTimingFunction:
|
| - return valueForAnimationTimingFunction(style.animations());
|
| - case CSSPropertyAnimation:
|
| - case CSSPropertyWebkitAnimation: {
|
| - const CSSAnimationData* animationData = style.animations();
|
| - if (animationData) {
|
| - RefPtrWillBeRawPtr<CSSValueList> animationsList = CSSValueList::createCommaSeparated();
|
| - for (size_t i = 0; i < animationData->nameList().size(); ++i) {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - list->append(cssValuePool().createValue(animationData->nameList()[i], CSSPrimitiveValue::CSS_CUSTOM_IDENT));
|
| - list->append(cssValuePool().createValue(CSSTimingData::getRepeated(animationData->durationList(), i), CSSPrimitiveValue::CSS_S));
|
| - list->append(createTimingFunctionValue(CSSTimingData::getRepeated(animationData->timingFunctionList(), i).get()));
|
| - list->append(cssValuePool().createValue(CSSTimingData::getRepeated(animationData->delayList(), i), CSSPrimitiveValue::CSS_S));
|
| - list->append(valueForAnimationIterationCount(CSSTimingData::getRepeated(animationData->iterationCountList(), i)));
|
| - list->append(valueForAnimationDirection(CSSTimingData::getRepeated(animationData->directionList(), i)));
|
| - list->append(valueForAnimationFillMode(CSSTimingData::getRepeated(animationData->fillModeList(), i)));
|
| - list->append(valueForAnimationPlayState(CSSTimingData::getRepeated(animationData->playStateList(), i)));
|
| - animationsList->append(list);
|
| - }
|
| - return animationsList.release();
|
| - }
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - // animation-name default value.
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueNone));
|
| - list->append(cssValuePool().createValue(CSSAnimationData::initialDuration(), CSSPrimitiveValue::CSS_S));
|
| - list->append(createTimingFunctionValue(CSSAnimationData::initialTimingFunction().get()));
|
| - list->append(cssValuePool().createValue(CSSAnimationData::initialDelay(), CSSPrimitiveValue::CSS_S));
|
| - list->append(cssValuePool().createValue(CSSAnimationData::initialIterationCount(), CSSPrimitiveValue::CSS_NUMBER));
|
| - list->append(valueForAnimationDirection(CSSAnimationData::initialDirection()));
|
| - list->append(valueForAnimationFillMode(CSSAnimationData::initialFillMode()));
|
| - // Initial animation-play-state.
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueRunning));
|
| - return list.release();
|
| - }
|
| - case CSSPropertyWebkitAppearance:
|
| - return cssValuePool().createValue(style.appearance());
|
| - case CSSPropertyBackfaceVisibility:
|
| - case CSSPropertyWebkitBackfaceVisibility:
|
| - return cssValuePool().createIdentifierValue((style.backfaceVisibility() == BackfaceVisibilityHidden) ? CSSValueHidden : CSSValueVisible);
|
| - case CSSPropertyWebkitBorderImage:
|
| - return valueForNinePieceImage(style.borderImage(), style);
|
| - case CSSPropertyBorderImageOutset:
|
| - return valueForNinePieceImageQuad(style.borderImage().outset(), style);
|
| - case CSSPropertyBorderImageRepeat:
|
| - return valueForNinePieceImageRepeat(style.borderImage());
|
| - case CSSPropertyBorderImageSlice:
|
| - return valueForNinePieceImageSlice(style.borderImage());
|
| - case CSSPropertyBorderImageWidth:
|
| - return valueForNinePieceImageQuad(style.borderImage().borderSlices(), style);
|
| - case CSSPropertyWebkitMaskBoxImage:
|
| - return valueForNinePieceImage(style.maskBoxImage(), style);
|
| - case CSSPropertyWebkitMaskBoxImageOutset:
|
| - return valueForNinePieceImageQuad(style.maskBoxImage().outset(), style);
|
| - case CSSPropertyWebkitMaskBoxImageRepeat:
|
| - return valueForNinePieceImageRepeat(style.maskBoxImage());
|
| - case CSSPropertyWebkitMaskBoxImageSlice:
|
| - return valueForNinePieceImageSlice(style.maskBoxImage());
|
| - case CSSPropertyWebkitMaskBoxImageWidth:
|
| - return valueForNinePieceImageQuad(style.maskBoxImage().borderSlices(), style);
|
| - case CSSPropertyWebkitMaskBoxImageSource:
|
| - if (style.maskBoxImageSource())
|
| - return style.maskBoxImageSource()->cssValue();
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - case CSSPropertyWebkitFontSizeDelta:
|
| - // Not a real style property -- used by the editing engine -- so has no computed value.
|
| - return nullptr;
|
| - case CSSPropertyWebkitMarginBottomCollapse:
|
| - case CSSPropertyWebkitMarginAfterCollapse:
|
| - return cssValuePool().createValue(style.marginAfterCollapse());
|
| - case CSSPropertyWebkitMarginTopCollapse:
|
| - case CSSPropertyWebkitMarginBeforeCollapse:
|
| - return cssValuePool().createValue(style.marginBeforeCollapse());
|
| - case CSSPropertyPerspective:
|
| - case CSSPropertyWebkitPerspective:
|
| - if (!style.hasPerspective())
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - return zoomAdjustedPixelValue(style.perspective(), style);
|
| - case CSSPropertyPerspectiveOrigin:
|
| - case CSSPropertyWebkitPerspectiveOrigin: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - if (renderer) {
|
| - LayoutRect box;
|
| - if (renderer->isBox())
|
| - box = toLayoutBox(renderer)->borderBoxRect();
|
| -
|
| - list->append(zoomAdjustedPixelValue(minimumValueForLength(style.perspectiveOriginX(), box.width()), style));
|
| - list->append(zoomAdjustedPixelValue(minimumValueForLength(style.perspectiveOriginY(), box.height()), style));
|
| - } else {
|
| - list->append(zoomAdjustedPixelValueForLength(style.perspectiveOriginX(), style));
|
| - list->append(zoomAdjustedPixelValueForLength(style.perspectiveOriginY(), style));
|
| - }
|
| - return list.release();
|
| - }
|
| - case CSSPropertyWebkitRtlOrdering:
|
| - return cssValuePool().createIdentifierValue(style.rtlOrdering() ? CSSValueVisual : CSSValueLogical);
|
| - case CSSPropertyWebkitTapHighlightColor:
|
| - return currentColorOrValidColor(style, style.tapHighlightColor());
|
| - case CSSPropertyWebkitUserDrag:
|
| - return cssValuePool().createValue(style.userDrag());
|
| - case CSSPropertyWebkitUserSelect:
|
| - return cssValuePool().createValue(style.userSelect());
|
| - case CSSPropertyBorderBottomLeftRadius:
|
| - return valueForBorderRadiusCorner(style.borderBottomLeftRadius(), style);
|
| - case CSSPropertyBorderBottomRightRadius:
|
| - return valueForBorderRadiusCorner(style.borderBottomRightRadius(), style);
|
| - case CSSPropertyBorderTopLeftRadius:
|
| - return valueForBorderRadiusCorner(style.borderTopLeftRadius(), style);
|
| - case CSSPropertyBorderTopRightRadius:
|
| - return valueForBorderRadiusCorner(style.borderTopRightRadius(), style);
|
| - case CSSPropertyClip: {
|
| - if (style.hasAutoClip())
|
| - return cssValuePool().createIdentifierValue(CSSValueAuto);
|
| - RefPtrWillBeRawPtr<Rect> rect = Rect::create();
|
| - rect->setTop(zoomAdjustedPixelValue(style.clip().top().value(), style));
|
| - rect->setRight(zoomAdjustedPixelValue(style.clip().right().value(), style));
|
| - rect->setBottom(zoomAdjustedPixelValue(style.clip().bottom().value(), style));
|
| - rect->setLeft(zoomAdjustedPixelValue(style.clip().left().value(), style));
|
| - return cssValuePool().createValue(rect.release());
|
| - }
|
| - case CSSPropertySpeak:
|
| - return cssValuePool().createValue(style.speak());
|
| - case CSSPropertyTransform:
|
| - case CSSPropertyWebkitTransform:
|
| - return computedTransform(renderer, style);
|
| - case CSSPropertyTransformOrigin:
|
| - case CSSPropertyWebkitTransformOrigin: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - if (renderer) {
|
| - LayoutRect box;
|
| - if (renderer->isBox())
|
| - box = toLayoutBox(renderer)->borderBoxRect();
|
| -
|
| - list->append(zoomAdjustedPixelValue(minimumValueForLength(style.transformOriginX(), box.width()), style));
|
| - list->append(zoomAdjustedPixelValue(minimumValueForLength(style.transformOriginY(), box.height()), style));
|
| - if (style.transformOriginZ() != 0)
|
| - list->append(zoomAdjustedPixelValue(style.transformOriginZ(), style));
|
| - } else {
|
| - list->append(zoomAdjustedPixelValueForLength(style.transformOriginX(), style));
|
| - list->append(zoomAdjustedPixelValueForLength(style.transformOriginY(), style));
|
| - if (style.transformOriginZ() != 0)
|
| - list->append(zoomAdjustedPixelValue(style.transformOriginZ(), style));
|
| - }
|
| - return list.release();
|
| - }
|
| - case CSSPropertyTransformStyle:
|
| - case CSSPropertyWebkitTransformStyle:
|
| - return cssValuePool().createIdentifierValue((style.transformStyle3D() == TransformStyle3DPreserve3D) ? CSSValuePreserve3d : CSSValueFlat);
|
| - case CSSPropertyTransitionDelay:
|
| - case CSSPropertyWebkitTransitionDelay:
|
| - return valueForAnimationDelay(style.transitions());
|
| - case CSSPropertyTransitionDuration:
|
| - case CSSPropertyWebkitTransitionDuration:
|
| - return valueForAnimationDuration(style.transitions());
|
| - case CSSPropertyTransitionProperty:
|
| - case CSSPropertyWebkitTransitionProperty:
|
| - return valueForTransitionProperty(style.transitions());
|
| - case CSSPropertyTransitionTimingFunction:
|
| - case CSSPropertyWebkitTransitionTimingFunction:
|
| - return valueForAnimationTimingFunction(style.transitions());
|
| - case CSSPropertyTransition:
|
| - case CSSPropertyWebkitTransition: {
|
| - const CSSTransitionData* transitionData = style.transitions();
|
| - if (transitionData) {
|
| - RefPtrWillBeRawPtr<CSSValueList> transitionsList = CSSValueList::createCommaSeparated();
|
| - for (size_t i = 0; i < transitionData->propertyList().size(); ++i) {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - list->append(createTransitionPropertyValue(transitionData->propertyList()[i]));
|
| - list->append(cssValuePool().createValue(CSSTimingData::getRepeated(transitionData->durationList(), i), CSSPrimitiveValue::CSS_S));
|
| - list->append(createTimingFunctionValue(CSSTimingData::getRepeated(transitionData->timingFunctionList(), i).get()));
|
| - list->append(cssValuePool().createValue(CSSTimingData::getRepeated(transitionData->delayList(), i), CSSPrimitiveValue::CSS_S));
|
| - transitionsList->append(list);
|
| - }
|
| - return transitionsList.release();
|
| - }
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - // transition-property default value.
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueAll));
|
| - list->append(cssValuePool().createValue(CSSTransitionData::initialDuration(), CSSPrimitiveValue::CSS_S));
|
| - list->append(createTimingFunctionValue(CSSTransitionData::initialTimingFunction().get()));
|
| - list->append(cssValuePool().createValue(CSSTransitionData::initialDelay(), CSSPrimitiveValue::CSS_S));
|
| - return list.release();
|
| - }
|
| - case CSSPropertyPointerEvents:
|
| - return cssValuePool().createValue(style.pointerEvents());
|
| - case CSSPropertyWebkitWritingMode:
|
| - return cssValuePool().createValue(style.writingMode());
|
| - case CSSPropertyWebkitTextCombine:
|
| - return cssValuePool().createValue(style.textCombine());
|
| - case CSSPropertyWebkitTextOrientation:
|
| - return CSSPrimitiveValue::create(style.textOrientation());
|
| - case CSSPropertyWebkitLineBoxContain:
|
| - return createLineBoxContainValue(style.lineBoxContain());
|
| - case CSSPropertyContent:
|
| - return valueForContentData(style);
|
| - case CSSPropertyCounterIncrement:
|
| - return valueForCounterDirectives(style, propertyID);
|
| - case CSSPropertyCounterReset:
|
| - return valueForCounterDirectives(style, propertyID);
|
| - case CSSPropertyWebkitClipPath:
|
| - if (ClipPathOperation* operation = style.clipPath()) {
|
| - if (operation->type() == ClipPathOperation::SHAPE)
|
| - return valueForBasicShape(style, toShapeClipPathOperation(operation)->basicShape());
|
| - if (operation->type() == ClipPathOperation::REFERENCE)
|
| - return CSSPrimitiveValue::create(toReferenceClipPathOperation(operation)->url(), CSSPrimitiveValue::CSS_URI);
|
| - }
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| - case CSSPropertyShapeMargin:
|
| - return cssValuePool().createValue(style.shapeMargin(), style);
|
| - case CSSPropertyShapeImageThreshold:
|
| - return cssValuePool().createValue(style.shapeImageThreshold(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyShapeOutside:
|
| - return valueForShape(style, style.shapeOutside());
|
| - case CSSPropertyWebkitFilter:
|
| - return valueForFilter(style);
|
| - case CSSPropertyMixBlendMode:
|
| - return cssValuePool().createValue(style.blendMode());
|
| -
|
| - case CSSPropertyBackgroundBlendMode: {
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
|
| - for (const FillLayer* currLayer = &style.backgroundLayers(); currLayer; currLayer = currLayer->next())
|
| - list->append(cssValuePool().createValue(currLayer->blendMode()));
|
| - return list.release();
|
| - }
|
| - case CSSPropertyBackground:
|
| - return valuesForBackgroundShorthand(style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyBorder: {
|
| - RefPtrWillBeRawPtr<CSSValue> value = get(CSSPropertyBorderTop, style, renderer, styledNode, allowVisitedStyle);
|
| - const CSSPropertyID properties[] = {
|
| - CSSPropertyBorderRight,
|
| - CSSPropertyBorderBottom,
|
| - CSSPropertyBorderLeft
|
| - };
|
| - for (size_t i = 0; i < WTF_ARRAY_LENGTH(properties); ++i) {
|
| - if (!compareCSSValuePtr<CSSValue>(value, get(properties[i], style, renderer, styledNode, allowVisitedStyle)))
|
| - return nullptr;
|
| - }
|
| - return value.release();
|
| - }
|
| - case CSSPropertyBorderBottom:
|
| - return valuesForShorthandProperty(borderBottomShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyBorderColor:
|
| - return valuesForSidesShorthand(borderColorShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyBorderLeft:
|
| - return valuesForShorthandProperty(borderLeftShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyBorderImage:
|
| - return valueForNinePieceImage(style.borderImage(), style);
|
| - case CSSPropertyBorderRadius:
|
| - return valueForBorderRadiusShorthand(style);
|
| - case CSSPropertyBorderRight:
|
| - return valuesForShorthandProperty(borderRightShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyBorderStyle:
|
| - return valuesForSidesShorthand(borderStyleShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyBorderTop:
|
| - return valuesForShorthandProperty(borderTopShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyBorderWidth:
|
| - return valuesForSidesShorthand(borderWidthShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyWebkitColumnRule:
|
| - return valuesForShorthandProperty(webkitColumnRuleShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyWebkitColumns:
|
| - return valuesForShorthandProperty(webkitColumnsShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyListStyle:
|
| - return valuesForShorthandProperty(listStyleShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyMargin:
|
| - return valuesForSidesShorthand(marginShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyOutline:
|
| - return valuesForShorthandProperty(outlineShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - case CSSPropertyPadding:
|
| - return valuesForSidesShorthand(paddingShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| - // Individual properties not part of the spec.
|
| - case CSSPropertyBackgroundRepeatX:
|
| - case CSSPropertyBackgroundRepeatY:
|
| - return nullptr;
|
| -
|
| - case CSSPropertyMotion:
|
| - ASSERT(RuntimeEnabledFeatures::cssMotionPathEnabled());
|
| - return valuesForShorthandProperty(motionShorthand(), style, renderer, styledNode, allowVisitedStyle);
|
| -
|
| - case CSSPropertyMotionPath: {
|
| - ASSERT(RuntimeEnabledFeatures::cssMotionPathEnabled());
|
| - const StyleMotionPath* styleMotionPath = style.motionPath();
|
| - if (!styleMotionPath)
|
| - return cssValuePool().createIdentifierValue(CSSValueNone);
|
| -
|
| - ASSERT(styleMotionPath->isPathStyleMotionPath());
|
| - return CSSPathValue::create(toPathStyleMotionPath(styleMotionPath)->pathString());
|
| - }
|
| -
|
| - case CSSPropertyMotionOffset:
|
| - ASSERT(RuntimeEnabledFeatures::cssMotionPathEnabled());
|
| - return zoomAdjustedPixelValueForLength(style.motionOffset(), style);
|
| -
|
| - case CSSPropertyMotionRotation: {
|
| - ASSERT(RuntimeEnabledFeatures::cssMotionPathEnabled());
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - if (style.motionRotationType() == MotionRotationAuto)
|
| - list->append(cssValuePool().createIdentifierValue(CSSValueAuto));
|
| - list->append(cssValuePool().createValue(style.motionRotation(), CSSPrimitiveValue::CSS_DEG));
|
| - return list.release();
|
| - }
|
| -
|
| - // Unimplemented CSS 3 properties (including CSS3 shorthand properties).
|
| - case CSSPropertyWebkitTextEmphasis:
|
| - return nullptr;
|
| -
|
| - // Directional properties are resolved by resolveDirectionAwareProperty() before the switch.
|
| - case CSSPropertyWebkitBorderEnd:
|
| - case CSSPropertyWebkitBorderEndColor:
|
| - case CSSPropertyWebkitBorderEndStyle:
|
| - case CSSPropertyWebkitBorderEndWidth:
|
| - case CSSPropertyWebkitBorderStart:
|
| - case CSSPropertyWebkitBorderStartColor:
|
| - case CSSPropertyWebkitBorderStartStyle:
|
| - case CSSPropertyWebkitBorderStartWidth:
|
| - case CSSPropertyWebkitBorderAfter:
|
| - case CSSPropertyWebkitBorderAfterColor:
|
| - case CSSPropertyWebkitBorderAfterStyle:
|
| - case CSSPropertyWebkitBorderAfterWidth:
|
| - case CSSPropertyWebkitBorderBefore:
|
| - case CSSPropertyWebkitBorderBeforeColor:
|
| - case CSSPropertyWebkitBorderBeforeStyle:
|
| - case CSSPropertyWebkitBorderBeforeWidth:
|
| - case CSSPropertyWebkitMarginEnd:
|
| - case CSSPropertyWebkitMarginStart:
|
| - case CSSPropertyWebkitMarginAfter:
|
| - case CSSPropertyWebkitMarginBefore:
|
| - case CSSPropertyWebkitPaddingEnd:
|
| - case CSSPropertyWebkitPaddingStart:
|
| - case CSSPropertyWebkitPaddingAfter:
|
| - case CSSPropertyWebkitPaddingBefore:
|
| - case CSSPropertyWebkitLogicalWidth:
|
| - case CSSPropertyWebkitLogicalHeight:
|
| - case CSSPropertyWebkitMinLogicalWidth:
|
| - case CSSPropertyWebkitMinLogicalHeight:
|
| - case CSSPropertyWebkitMaxLogicalWidth:
|
| - case CSSPropertyWebkitMaxLogicalHeight:
|
| - ASSERT_NOT_REACHED();
|
| - return nullptr;
|
| -
|
| - // Unimplemented @font-face properties.
|
| - case CSSPropertySrc:
|
| - case CSSPropertyUnicodeRange:
|
| - return nullptr;
|
| -
|
| - // Other unimplemented properties.
|
| - case CSSPropertyPage: // for @page
|
| - case CSSPropertyQuotes: // FIXME: needs implementation
|
| - case CSSPropertySize: // for @page
|
| - return nullptr;
|
| -
|
| - // Unimplemented -webkit- properties.
|
| - case CSSPropertyWebkitBorderRadius:
|
| - case CSSPropertyWebkitMarginCollapse:
|
| - case CSSPropertyWebkitMask:
|
| - case CSSPropertyWebkitMaskRepeatX:
|
| - case CSSPropertyWebkitMaskRepeatY:
|
| - case CSSPropertyWebkitPerspectiveOriginX:
|
| - case CSSPropertyWebkitPerspectiveOriginY:
|
| - case CSSPropertyWebkitTextStroke:
|
| - case CSSPropertyWebkitTransformOriginX:
|
| - case CSSPropertyWebkitTransformOriginY:
|
| - case CSSPropertyWebkitTransformOriginZ:
|
| - return nullptr;
|
| -
|
| - // @viewport rule properties.
|
| - case CSSPropertyMaxZoom:
|
| - case CSSPropertyMinZoom:
|
| - case CSSPropertyOrientation:
|
| - case CSSPropertyUserZoom:
|
| - return nullptr;
|
| -
|
| - // SVG properties.
|
| - case CSSPropertyClipRule:
|
| - return CSSPrimitiveValue::create(svgStyle.clipRule());
|
| - case CSSPropertyFloodOpacity:
|
| - return CSSPrimitiveValue::create(svgStyle.floodOpacity(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyStopOpacity:
|
| - return CSSPrimitiveValue::create(svgStyle.stopOpacity(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyColorInterpolation:
|
| - return CSSPrimitiveValue::create(svgStyle.colorInterpolation());
|
| - case CSSPropertyColorInterpolationFilters:
|
| - return CSSPrimitiveValue::create(svgStyle.colorInterpolationFilters());
|
| - case CSSPropertyFillOpacity:
|
| - return CSSPrimitiveValue::create(svgStyle.fillOpacity(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyFillRule:
|
| - return CSSPrimitiveValue::create(svgStyle.fillRule());
|
| - case CSSPropertyColorRendering:
|
| - return CSSPrimitiveValue::create(svgStyle.colorRendering());
|
| - case CSSPropertyShapeRendering:
|
| - return CSSPrimitiveValue::create(svgStyle.shapeRendering());
|
| - case CSSPropertyStrokeLinecap:
|
| - return CSSPrimitiveValue::create(svgStyle.capStyle());
|
| - case CSSPropertyStrokeLinejoin:
|
| - return CSSPrimitiveValue::create(svgStyle.joinStyle());
|
| - case CSSPropertyStrokeMiterlimit:
|
| - return CSSPrimitiveValue::create(svgStyle.strokeMiterLimit(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyStrokeOpacity:
|
| - return CSSPrimitiveValue::create(svgStyle.strokeOpacity(), CSSPrimitiveValue::CSS_NUMBER);
|
| - case CSSPropertyAlignmentBaseline:
|
| - return CSSPrimitiveValue::create(svgStyle.alignmentBaseline());
|
| - case CSSPropertyDominantBaseline:
|
| - return CSSPrimitiveValue::create(svgStyle.dominantBaseline());
|
| - case CSSPropertyTextAnchor:
|
| - return CSSPrimitiveValue::create(svgStyle.textAnchor());
|
| - case CSSPropertyWritingMode:
|
| - return CSSPrimitiveValue::create(svgStyle.writingMode());
|
| - case CSSPropertyClipPath:
|
| - if (!svgStyle.clipperResource().isEmpty())
|
| - return CSSPrimitiveValue::create(serializeAsFragmentIdentifier(svgStyle.clipperResource()), CSSPrimitiveValue::CSS_URI);
|
| - return CSSPrimitiveValue::createIdentifier(CSSValueNone);
|
| - case CSSPropertyMask:
|
| - if (!svgStyle.maskerResource().isEmpty())
|
| - return CSSPrimitiveValue::create(serializeAsFragmentIdentifier(svgStyle.maskerResource()), CSSPrimitiveValue::CSS_URI);
|
| - return CSSPrimitiveValue::createIdentifier(CSSValueNone);
|
| - case CSSPropertyFilter:
|
| - if (!svgStyle.filterResource().isEmpty())
|
| - return CSSPrimitiveValue::create(serializeAsFragmentIdentifier(svgStyle.filterResource()), CSSPrimitiveValue::CSS_URI);
|
| - return CSSPrimitiveValue::createIdentifier(CSSValueNone);
|
| - case CSSPropertyFloodColor:
|
| - return currentColorOrValidColor(style, svgStyle.floodColor());
|
| - case CSSPropertyLightingColor:
|
| - return currentColorOrValidColor(style, svgStyle.lightingColor());
|
| - case CSSPropertyStopColor:
|
| - return currentColorOrValidColor(style, svgStyle.stopColor());
|
| - case CSSPropertyFill:
|
| - return adjustSVGPaintForCurrentColor(svgStyle.fillPaintType(), svgStyle.fillPaintUri(), svgStyle.fillPaintColor(), style.color());
|
| - case CSSPropertyMarkerEnd:
|
| - if (!svgStyle.markerEndResource().isEmpty())
|
| - return CSSPrimitiveValue::create(serializeAsFragmentIdentifier(svgStyle.markerEndResource()), CSSPrimitiveValue::CSS_URI);
|
| - return CSSPrimitiveValue::createIdentifier(CSSValueNone);
|
| - case CSSPropertyMarkerMid:
|
| - if (!svgStyle.markerMidResource().isEmpty())
|
| - return CSSPrimitiveValue::create(serializeAsFragmentIdentifier(svgStyle.markerMidResource()), CSSPrimitiveValue::CSS_URI);
|
| - return CSSPrimitiveValue::createIdentifier(CSSValueNone);
|
| - case CSSPropertyMarkerStart:
|
| - if (!svgStyle.markerStartResource().isEmpty())
|
| - return CSSPrimitiveValue::create(serializeAsFragmentIdentifier(svgStyle.markerStartResource()), CSSPrimitiveValue::CSS_URI);
|
| - return CSSPrimitiveValue::createIdentifier(CSSValueNone);
|
| - case CSSPropertyStroke:
|
| - return adjustSVGPaintForCurrentColor(svgStyle.strokePaintType(), svgStyle.strokePaintUri(), svgStyle.strokePaintColor(), style.color());
|
| - case CSSPropertyStrokeDasharray:
|
| - return strokeDashArrayToCSSValueList(*svgStyle.strokeDashArray(), style);
|
| - case CSSPropertyStrokeDashoffset:
|
| - return zoomAdjustedPixelValueForLength(svgStyle.strokeDashOffset(), style);
|
| - case CSSPropertyStrokeWidth:
|
| - return pixelValueForUnzoomedLength(svgStyle.strokeWidth(), style);
|
| - case CSSPropertyBaselineShift: {
|
| - switch (svgStyle.baselineShift()) {
|
| - case BS_SUPER:
|
| - return CSSPrimitiveValue::createIdentifier(CSSValueSuper);
|
| - case BS_SUB:
|
| - return CSSPrimitiveValue::createIdentifier(CSSValueSub);
|
| - case BS_LENGTH:
|
| - return zoomAdjustedPixelValueForLength(svgStyle.baselineShiftValue(), style);
|
| - }
|
| - ASSERT_NOT_REACHED();
|
| - return nullptr;
|
| - }
|
| - case CSSPropertyBufferedRendering:
|
| - return CSSPrimitiveValue::create(svgStyle.bufferedRendering());
|
| - case CSSPropertyGlyphOrientationHorizontal:
|
| - return glyphOrientationToCSSPrimitiveValue(svgStyle.glyphOrientationHorizontal());
|
| - case CSSPropertyGlyphOrientationVertical: {
|
| - if (RefPtrWillBeRawPtr<CSSPrimitiveValue> value = glyphOrientationToCSSPrimitiveValue(svgStyle.glyphOrientationVertical()))
|
| - return value.release();
|
| - if (svgStyle.glyphOrientationVertical() == GO_AUTO)
|
| - return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
|
| - return nullptr;
|
| - }
|
| - case CSSPropertyPaintOrder:
|
| - return paintOrderToCSSValueList(svgStyle.paintOrder());
|
| - case CSSPropertyVectorEffect:
|
| - return CSSPrimitiveValue::create(svgStyle.vectorEffect());
|
| - case CSSPropertyMaskType:
|
| - return CSSPrimitiveValue::create(svgStyle.maskType());
|
| - case CSSPropertyMarker:
|
| - case CSSPropertyEnableBackground:
|
| - // the above properties are not yet implemented in the engine
|
| - return nullptr;
|
| - case CSSPropertyCx:
|
| - return zoomAdjustedPixelValueForLength(svgStyle.cx(), style);
|
| - case CSSPropertyCy:
|
| - return zoomAdjustedPixelValueForLength(svgStyle.cy(), style);
|
| - case CSSPropertyX:
|
| - return zoomAdjustedPixelValueForLength(svgStyle.x(), style);
|
| - case CSSPropertyY:
|
| - return zoomAdjustedPixelValueForLength(svgStyle.y(), style);
|
| - case CSSPropertyR:
|
| - return zoomAdjustedPixelValueForLength(svgStyle.r(), style);
|
| - case CSSPropertyRx:
|
| - return zoomAdjustedPixelValueForLength(svgStyle.rx(), style);
|
| - case CSSPropertyRy:
|
| - return zoomAdjustedPixelValueForLength(svgStyle.ry(), style);
|
| -
|
| - case CSSPropertyAll:
|
| - return nullptr;
|
| - }
|
| - ASSERT_NOT_REACHED();
|
| - return nullptr;
|
| -}
|
| -
|
| -}
|
|
|