summaryrefslogtreecommitdiffstats
path: root/WebCore/css/CSSComputedStyleDeclaration.cpp
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:41 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:41 -0800
commit648161bb0edfc3d43db63caed5cc5213bc6cb78f (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /WebCore/css/CSSComputedStyleDeclaration.cpp
parenta65af38181ac7d34544586bdb5cd004de93897ad (diff)
downloadexternal_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.zip
external_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.tar.gz
external_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'WebCore/css/CSSComputedStyleDeclaration.cpp')
-rw-r--r--WebCore/css/CSSComputedStyleDeclaration.cpp1362
1 files changed, 0 insertions, 1362 deletions
diff --git a/WebCore/css/CSSComputedStyleDeclaration.cpp b/WebCore/css/CSSComputedStyleDeclaration.cpp
deleted file mode 100644
index 83d662a..0000000
--- a/WebCore/css/CSSComputedStyleDeclaration.cpp
+++ /dev/null
@@ -1,1362 +0,0 @@
-/*
- * Copyright (C) 2004 Zack Rusin <zack@kde.org>
- * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
- * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
- *
- * 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 "CSSComputedStyleDeclaration.h"
-
-#include "CSSBorderImageValue.h"
-#include "CSSMutableStyleDeclaration.h"
-#include "CSSPrimitiveValue.h"
-#include "CSSPrimitiveValueMappings.h"
-#include "CSSPropertyNames.h"
-#include "CSSReflectValue.h"
-#include "CSSTimingFunctionValue.h"
-#include "CSSValueList.h"
-#include "CachedImage.h"
-#include "Document.h"
-#include "ExceptionCode.h"
-#include "Pair.h"
-#include "Rect.h"
-#include "RenderObject.h"
-#include "ShadowValue.h"
-#ifdef ANDROID_LAYOUT
-#include "Frame.h"
-#include "Settings.h"
-#endif
-#include "WebKitCSSTransformValue.h"
-
-#if ENABLE(DASHBOARD_SUPPORT)
-#include "DashboardRegion.h"
-#endif
-
-namespace WebCore {
-
-// List of all properties we know how to compute, omitting shorthands.
-static const int computedProperties[] = {
- CSSPropertyBackgroundAttachment,
- CSSPropertyBackgroundColor,
- CSSPropertyBackgroundImage,
- // more specific background-position-x/y are non-standard
- CSSPropertyBackgroundPosition,
- CSSPropertyBackgroundRepeat,
- CSSPropertyBorderBottomColor,
- CSSPropertyBorderBottomStyle,
- CSSPropertyBorderBottomWidth,
- CSSPropertyBorderCollapse,
- CSSPropertyBorderLeftColor,
- CSSPropertyBorderLeftStyle,
- CSSPropertyBorderLeftWidth,
- CSSPropertyBorderRightColor,
- CSSPropertyBorderRightStyle,
- CSSPropertyBorderRightWidth,
- CSSPropertyBorderTopColor,
- CSSPropertyBorderTopStyle,
- CSSPropertyBorderTopWidth,
- CSSPropertyBottom,
- CSSPropertyCaptionSide,
- CSSPropertyClear,
- CSSPropertyColor,
- CSSPropertyCursor,
- CSSPropertyDirection,
- CSSPropertyDisplay,
- CSSPropertyEmptyCells,
- CSSPropertyFloat,
- CSSPropertyFontFamily,
- CSSPropertyFontSize,
- CSSPropertyFontStyle,
- CSSPropertyFontVariant,
- CSSPropertyFontWeight,
- CSSPropertyHeight,
- CSSPropertyLeft,
- CSSPropertyLetterSpacing,
- CSSPropertyLineHeight,
- CSSPropertyListStyleImage,
- CSSPropertyListStylePosition,
- CSSPropertyListStyleType,
- CSSPropertyMarginBottom,
- CSSPropertyMarginLeft,
- CSSPropertyMarginRight,
- CSSPropertyMarginTop,
- CSSPropertyMaxHeight,
- CSSPropertyMaxWidth,
- CSSPropertyMinHeight,
- CSSPropertyMinWidth,
- CSSPropertyOpacity,
- CSSPropertyOrphans,
- CSSPropertyOutlineColor,
- CSSPropertyOutlineStyle,
- CSSPropertyOutlineWidth,
- CSSPropertyOverflowX,
- CSSPropertyOverflowY,
- CSSPropertyPaddingBottom,
- CSSPropertyPaddingLeft,
- CSSPropertyPaddingRight,
- CSSPropertyPaddingTop,
- CSSPropertyPageBreakAfter,
- CSSPropertyPageBreakBefore,
- CSSPropertyPageBreakInside,
- CSSPropertyPosition,
- CSSPropertyResize,
- CSSPropertyRight,
- CSSPropertyTableLayout,
- CSSPropertyTextAlign,
- CSSPropertyTextDecoration,
- CSSPropertyTextIndent,
- CSSPropertyTextShadow,
- CSSPropertyTextTransform,
- CSSPropertyTop,
- CSSPropertyUnicodeBidi,
- CSSPropertyVerticalAlign,
- CSSPropertyVisibility,
- CSSPropertyWhiteSpace,
- CSSPropertyWidows,
- CSSPropertyWidth,
- CSSPropertyWordSpacing,
- CSSPropertyWordWrap,
- CSSPropertyZIndex,
- CSSPropertyZoom,
-
- CSSPropertyWebkitAppearance,
- CSSPropertyWebkitBackgroundClip,
- CSSPropertyWebkitBackgroundComposite,
- CSSPropertyWebkitBackgroundOrigin,
- CSSPropertyWebkitBackgroundSize,
- CSSPropertyWebkitBorderFit,
- CSSPropertyWebkitBorderImage,
- CSSPropertyWebkitBorderHorizontalSpacing,
- CSSPropertyWebkitBorderVerticalSpacing,
- CSSPropertyWebkitBoxAlign,
- CSSPropertyWebkitBoxDirection,
- CSSPropertyWebkitBoxFlex,
- CSSPropertyWebkitBoxFlexGroup,
- CSSPropertyWebkitBoxLines,
- CSSPropertyWebkitBoxOrdinalGroup,
- CSSPropertyWebkitBoxOrient,
- CSSPropertyWebkitBoxPack,
- CSSPropertyWebkitBoxReflect,
- CSSPropertyWebkitBoxShadow,
- CSSPropertyWebkitBoxSizing,
- CSSPropertyWebkitColumnBreakAfter,
- CSSPropertyWebkitColumnBreakBefore,
- CSSPropertyWebkitColumnBreakInside,
- CSSPropertyWebkitColumnCount,
- CSSPropertyWebkitColumnGap,
- CSSPropertyWebkitColumnRuleColor,
- CSSPropertyWebkitColumnRuleStyle,
- CSSPropertyWebkitColumnRuleWidth,
- CSSPropertyWebkitColumnWidth,
- CSSPropertyWebkitHighlight,
- CSSPropertyWebkitLineBreak,
- CSSPropertyWebkitLineClamp,
- CSSPropertyWebkitMarginBottomCollapse,
- CSSPropertyWebkitMarginTopCollapse,
- CSSPropertyWebkitMarqueeDirection,
- CSSPropertyWebkitMarqueeIncrement,
- CSSPropertyWebkitMarqueeRepetition,
- CSSPropertyWebkitMarqueeStyle,
- CSSPropertyWebkitMaskAttachment,
- CSSPropertyWebkitMaskBoxImage,
- CSSPropertyWebkitMaskImage,
- CSSPropertyWebkitMaskPosition,
- CSSPropertyWebkitMaskRepeat,
- CSSPropertyWebkitMaskClip,
- CSSPropertyWebkitMaskComposite,
- CSSPropertyWebkitMaskOrigin,
- CSSPropertyWebkitMaskSize,
- CSSPropertyWebkitNbspMode,
- CSSPropertyWebkitRtlOrdering,
- CSSPropertyWebkitTextDecorationsInEffect,
- CSSPropertyWebkitTextFillColor,
- CSSPropertyWebkitTextSecurity,
- CSSPropertyWebkitTextStrokeColor,
- CSSPropertyWebkitTextStrokeWidth,
- CSSPropertyWebkitTransform,
- CSSPropertyWebkitTransformOriginX,
- CSSPropertyWebkitTransformOriginY,
- CSSPropertyWebkitTransitionDelay,
- CSSPropertyWebkitTransitionDuration,
- CSSPropertyWebkitTransitionProperty,
- CSSPropertyWebkitTransitionTimingFunction,
- CSSPropertyWebkitUserDrag,
- CSSPropertyWebkitUserModify,
- CSSPropertyWebkitUserSelect,
-#if ENABLE(DASHBOARD_SUPPORT)
- CSSPropertyWebkitDashboardRegion,
-#endif
- CSSPropertyWebkitBorderBottomLeftRadius,
- CSSPropertyWebkitBorderBottomRightRadius,
- CSSPropertyWebkitBorderTopLeftRadius,
- CSSPropertyWebkitBorderTopRightRadius
-
-#if ENABLE(SVG)
- ,
- CSSPropertyClipPath,
- CSSPropertyClipRule,
- CSSPropertyMask,
- CSSPropertyFilter,
- CSSPropertyFloodColor,
- CSSPropertyFloodOpacity,
- CSSPropertyLightingColor,
- CSSPropertyStopColor,
- CSSPropertyStopOpacity,
- CSSPropertyPointerEvents,
- CSSPropertyColorInterpolation,
- CSSPropertyColorInterpolationFilters,
- CSSPropertyColorRendering,
- CSSPropertyFill,
- CSSPropertyFillOpacity,
- CSSPropertyFillRule,
- CSSPropertyImageRendering,
- CSSPropertyMarkerEnd,
- CSSPropertyMarkerMid,
- CSSPropertyMarkerStart,
- CSSPropertyShapeRendering,
- CSSPropertyStroke,
- CSSPropertyStrokeDasharray,
- CSSPropertyStrokeDashoffset,
- CSSPropertyStrokeLinecap,
- CSSPropertyStrokeLinejoin,
- CSSPropertyStrokeMiterlimit,
- CSSPropertyStrokeOpacity,
- CSSPropertyStrokeWidth,
- CSSPropertyTextRendering,
- CSSPropertyAlignmentBaseline,
- CSSPropertyBaselineShift,
- CSSPropertyDominantBaseline,
- CSSPropertyKerning,
- CSSPropertyTextAnchor,
- CSSPropertyWritingMode,
- CSSPropertyGlyphOrientationHorizontal,
- CSSPropertyGlyphOrientationVertical
-#endif
-#ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR
- ,
- CSSPropertyWebkitTapHighlightColor
-#endif
-};
-
-const unsigned numComputedProperties = sizeof(computedProperties) / sizeof(computedProperties[0]);
-
-static PassRefPtr<CSSValue> valueForShadow(const ShadowData* shadow)
-{
- if (!shadow)
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
-
- RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
- for (const ShadowData* s = shadow; s; s = s->next) {
- RefPtr<CSSPrimitiveValue> x = CSSPrimitiveValue::create(s->x, CSSPrimitiveValue::CSS_PX);
- RefPtr<CSSPrimitiveValue> y = CSSPrimitiveValue::create(s->y, CSSPrimitiveValue::CSS_PX);
- RefPtr<CSSPrimitiveValue> blur = CSSPrimitiveValue::create(s->blur, CSSPrimitiveValue::CSS_PX);
- RefPtr<CSSPrimitiveValue> color = CSSPrimitiveValue::createColor(s->color.rgb());
- list->prepend(ShadowValue::create(x.release(), y.release(), blur.release(), color.release()));
- }
- return list.release();
-}
-
-static int valueForRepeatRule(int rule)
-{
- switch (rule) {
- case RepeatImageRule:
- return CSSValueRepeat;
- case RoundImageRule:
- return CSSValueRound;
- default:
- return CSSValueStretch;
- }
-}
-
-static PassRefPtr<CSSValue> valueForNinePieceImage(const NinePieceImage& image)
-{
- if (!image.hasImage())
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
-
- // Image first.
- RefPtr<CSSValue> imageValue;
- if (image.image())
- imageValue = image.image()->cssValue();
-
- // Create the slices.
- RefPtr<CSSPrimitiveValue> top;
- if (image.m_slices.top().isPercent())
- top = CSSPrimitiveValue::create(image.m_slices.top().value(), CSSPrimitiveValue::CSS_PERCENTAGE);
- else
- top = CSSPrimitiveValue::create(image.m_slices.top().value(), CSSPrimitiveValue::CSS_NUMBER);
-
- RefPtr<CSSPrimitiveValue> right;
- if (image.m_slices.right().isPercent())
- right = CSSPrimitiveValue::create(image.m_slices.right().value(), CSSPrimitiveValue::CSS_PERCENTAGE);
- else
- right = CSSPrimitiveValue::create(image.m_slices.right().value(), CSSPrimitiveValue::CSS_NUMBER);
-
- RefPtr<CSSPrimitiveValue> bottom;
- if (image.m_slices.bottom().isPercent())
- bottom = CSSPrimitiveValue::create(image.m_slices.bottom().value(), CSSPrimitiveValue::CSS_PERCENTAGE);
- else
- bottom = CSSPrimitiveValue::create(image.m_slices.bottom().value(), CSSPrimitiveValue::CSS_NUMBER);
-
- RefPtr<CSSPrimitiveValue> left;
- if (image.m_slices.left().isPercent())
- left = CSSPrimitiveValue::create(image.m_slices.left().value(), CSSPrimitiveValue::CSS_PERCENTAGE);
- else
- left = CSSPrimitiveValue::create(image.m_slices.left().value(), CSSPrimitiveValue::CSS_NUMBER);
-
- RefPtr<Rect> rect = Rect::create();
- rect->setTop(top);
- rect->setRight(right);
- rect->setBottom(bottom);
- rect->setLeft(left);
-
- return CSSBorderImageValue::create(imageValue, rect, valueForRepeatRule(image.m_horizontalRule), valueForRepeatRule(image.m_verticalRule));
-}
-
-static PassRefPtr<CSSValue> valueForReflection(const StyleReflection* reflection)
-{
- if (!reflection)
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
-
- RefPtr<CSSPrimitiveValue> offset;
- if (reflection->offset().isPercent())
- offset = CSSPrimitiveValue::create(reflection->offset().percent(), CSSPrimitiveValue::CSS_PERCENTAGE);
- else
- offset = CSSPrimitiveValue::create(reflection->offset().value(), CSSPrimitiveValue::CSS_PX);
-
- return CSSReflectValue::create(reflection->direction(), offset.release(), valueForNinePieceImage(reflection->mask()));
-}
-
-static PassRefPtr<CSSValue> getPositionOffsetValue(RenderStyle* style, int propertyID)
-{
- if (!style)
- return 0;
-
- Length l;
- switch (propertyID) {
- case CSSPropertyLeft:
- l = style->left();
- break;
- case CSSPropertyRight:
- l = style->right();
- break;
- case CSSPropertyTop:
- l = style->top();
- break;
- case CSSPropertyBottom:
- l = style->bottom();
- break;
- default:
- return 0;
- }
-
- if (style->position() == AbsolutePosition || style->position() == FixedPosition)
- return CSSPrimitiveValue::create(l);
-
- if (style->position() == RelativePosition)
- // 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 CSSPrimitiveValue::create(l);
-
- return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
-}
-
-static PassRefPtr<CSSPrimitiveValue> currentColorOrValidColor(RenderStyle* style, const Color& color)
-{
- if (!color.isValid())
- return CSSPrimitiveValue::createColor(style->color().rgb());
- return CSSPrimitiveValue::createColor(color.rgb());
-}
-
-static PassRefPtr<CSSValue> getBorderRadiusCornerValue(IntSize radius)
-{
- if (radius.width() == radius.height())
- return CSSPrimitiveValue::create(radius.width(), CSSPrimitiveValue::CSS_PX);
-
- RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
- list->append(CSSPrimitiveValue::create(radius.width(), CSSPrimitiveValue::CSS_PX));
- list->append(CSSPrimitiveValue::create(radius.height(), CSSPrimitiveValue::CSS_PX));
- return list.release();
-}
-
-static IntRect sizingBox(RenderObject* renderer)
-{
- return renderer->style()->boxSizing() == CONTENT_BOX ? renderer->contentBox() : renderer->borderBox();
-}
-
-static PassRefPtr<CSSValue> computedTransform(RenderObject* renderer)
-{
- if (!renderer || renderer->style()->transform().operations().isEmpty())
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
-
- IntRect box = sizingBox(renderer);
-
- AffineTransform transform;
- renderer->style()->applyTransform(transform, box.size(), false);
-
- RefPtr<WebKitCSSTransformValue> transformVal = WebKitCSSTransformValue::create(WebKitCSSTransformValue::MatrixTransformOperation);
-
- transformVal->append(CSSPrimitiveValue::create(transform.a(), CSSPrimitiveValue::CSS_NUMBER));
- transformVal->append(CSSPrimitiveValue::create(transform.b(), CSSPrimitiveValue::CSS_NUMBER));
- transformVal->append(CSSPrimitiveValue::create(transform.c(), CSSPrimitiveValue::CSS_NUMBER));
- transformVal->append(CSSPrimitiveValue::create(transform.d(), CSSPrimitiveValue::CSS_NUMBER));
- transformVal->append(CSSPrimitiveValue::create(transform.e(), CSSPrimitiveValue::CSS_NUMBER));
- transformVal->append(CSSPrimitiveValue::create(transform.f(), CSSPrimitiveValue::CSS_NUMBER));
-
- RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
- list->append(transformVal);
-
- return list.release();
-}
-
-CSSComputedStyleDeclaration::CSSComputedStyleDeclaration(PassRefPtr<Node> n)
- : m_node(n)
-{
-}
-
-CSSComputedStyleDeclaration::~CSSComputedStyleDeclaration()
-{
-}
-
-String CSSComputedStyleDeclaration::cssText() const
-{
- String result("");
-
- for (unsigned i = 0; i < numComputedProperties; i++) {
- if (i)
- result += " ";
- result += getPropertyName(static_cast<CSSPropertyID>(computedProperties[i]));
- result += ": ";
- result += getPropertyValue(computedProperties[i]);
- result += ";";
- }
-
- return result;
-}
-
-void CSSComputedStyleDeclaration::setCssText(const String&, ExceptionCode& ec)
-{
- ec = NO_MODIFICATION_ALLOWED_ERR;
-}
-
-PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int propertyID) const
-{
- return getPropertyCSSValue(propertyID, UpdateLayout);
-}
-
-PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int propertyID, EUpdateLayout updateLayout) const
-{
- Node* node = m_node.get();
- if (!node)
- return 0;
-
- // Make sure our layout is up to date before we allow a query on these attributes.
- if (updateLayout)
- node->document()->updateLayoutIgnorePendingStylesheets();
-
- RenderObject* renderer = node->renderer();
-
- RenderStyle* style = node->computedStyle();
- if (!style)
- return 0;
-
-#ifdef ANDROID_LAYOUT
- const Settings * settings = node->document()->frame() ? node->document()->frame()->settings() : 0;
-#endif
-
- switch (static_cast<CSSPropertyID>(propertyID)) {
- case CSSPropertyInvalid:
- break;
-
- case CSSPropertyBackgroundColor:
- return CSSPrimitiveValue::createColor(style->backgroundColor().rgb());
- case CSSPropertyBackgroundImage:
- if (style->backgroundImage())
- return style->backgroundImage()->cssValue();
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
- case CSSPropertyWebkitBackgroundSize: {
- RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
- list->append(CSSPrimitiveValue::create(style->backgroundSize().width()));
- list->append(CSSPrimitiveValue::create(style->backgroundSize().height()));
- return list.release();
- }
- case CSSPropertyBackgroundRepeat:
- return CSSPrimitiveValue::create(style->backgroundRepeat());
- case CSSPropertyWebkitBackgroundComposite:
- return CSSPrimitiveValue::create(style->backgroundComposite());
- case CSSPropertyBackgroundAttachment:
- if (style->backgroundAttachment())
- return CSSPrimitiveValue::createIdentifier(CSSValueScroll);
- return CSSPrimitiveValue::createIdentifier(CSSValueFixed);
- case CSSPropertyWebkitBackgroundClip:
- case CSSPropertyWebkitBackgroundOrigin: {
- EFillBox box = (propertyID == CSSPropertyWebkitBackgroundClip ? style->backgroundClip() : style->backgroundOrigin());
- return CSSPrimitiveValue::create(box);
- }
- case CSSPropertyBackgroundPosition: {
- RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
-
- list->append(CSSPrimitiveValue::create(style->backgroundXPosition()));
- list->append(CSSPrimitiveValue::create(style->backgroundYPosition()));
-
- return list.release();
- }
- case CSSPropertyBackgroundPositionX:
- return CSSPrimitiveValue::create(style->backgroundXPosition());
- case CSSPropertyBackgroundPositionY:
- return CSSPrimitiveValue::create(style->backgroundYPosition());
- case CSSPropertyBorderCollapse:
- if (style->borderCollapse())
- return CSSPrimitiveValue::createIdentifier(CSSValueCollapse);
- return CSSPrimitiveValue::createIdentifier(CSSValueSeparate);
- case CSSPropertyBorderSpacing: {
- RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
- list->append(CSSPrimitiveValue::create(style->horizontalBorderSpacing(), CSSPrimitiveValue::CSS_PX));
- list->append(CSSPrimitiveValue::create(style->verticalBorderSpacing(), CSSPrimitiveValue::CSS_PX));
- return list.release();
- }
- case CSSPropertyWebkitBorderHorizontalSpacing:
- return CSSPrimitiveValue::create(style->horizontalBorderSpacing(), CSSPrimitiveValue::CSS_PX);
- case CSSPropertyWebkitBorderVerticalSpacing:
- return CSSPrimitiveValue::create(style->verticalBorderSpacing(), CSSPrimitiveValue::CSS_PX);
- case CSSPropertyBorderTopColor:
- return currentColorOrValidColor(style, style->borderTopColor());
- case CSSPropertyBorderRightColor:
- return currentColorOrValidColor(style, style->borderRightColor());
- case CSSPropertyBorderBottomColor:
- return currentColorOrValidColor(style, style->borderBottomColor());
- case CSSPropertyBorderLeftColor:
- return currentColorOrValidColor(style, style->borderLeftColor());
- case CSSPropertyBorderTopStyle:
- return CSSPrimitiveValue::create(style->borderTopStyle());
- case CSSPropertyBorderRightStyle:
- return CSSPrimitiveValue::create(style->borderRightStyle());
- case CSSPropertyBorderBottomStyle:
- return CSSPrimitiveValue::create(style->borderBottomStyle());
- case CSSPropertyBorderLeftStyle:
- return CSSPrimitiveValue::create(style->borderLeftStyle());
- case CSSPropertyBorderTopWidth:
- return CSSPrimitiveValue::create(style->borderTopWidth(), CSSPrimitiveValue::CSS_PX);
- case CSSPropertyBorderRightWidth:
- return CSSPrimitiveValue::create(style->borderRightWidth(), CSSPrimitiveValue::CSS_PX);
- case CSSPropertyBorderBottomWidth:
- return CSSPrimitiveValue::create(style->borderBottomWidth(), CSSPrimitiveValue::CSS_PX);
- case CSSPropertyBorderLeftWidth:
- return CSSPrimitiveValue::create(style->borderLeftWidth(), CSSPrimitiveValue::CSS_PX);
- case CSSPropertyBottom:
- return getPositionOffsetValue(style, CSSPropertyBottom);
- case CSSPropertyWebkitBoxAlign:
- return CSSPrimitiveValue::create(style->boxAlign());
- case CSSPropertyWebkitBoxDirection:
- return CSSPrimitiveValue::create(style->boxDirection());
- case CSSPropertyWebkitBoxFlex:
- return CSSPrimitiveValue::create(style->boxFlex(), CSSPrimitiveValue::CSS_NUMBER);
- case CSSPropertyWebkitBoxFlexGroup:
- return CSSPrimitiveValue::create(style->boxFlexGroup(), CSSPrimitiveValue::CSS_NUMBER);
- case CSSPropertyWebkitBoxLines:
- return CSSPrimitiveValue::create(style->boxLines());
- case CSSPropertyWebkitBoxOrdinalGroup:
- return CSSPrimitiveValue::create(style->boxOrdinalGroup(), CSSPrimitiveValue::CSS_NUMBER);
- case CSSPropertyWebkitBoxOrient:
- return CSSPrimitiveValue::create(style->boxOrient());
- case CSSPropertyWebkitBoxPack: {
- EBoxAlignment boxPack = style->boxPack();
- ASSERT(boxPack != BSTRETCH);
- ASSERT(boxPack != BBASELINE);
- if (boxPack == BJUSTIFY || boxPack== BBASELINE)
- return 0;
- return CSSPrimitiveValue::create(boxPack);
- }
- case CSSPropertyWebkitBoxReflect:
- return valueForReflection(style->boxReflect());
- case CSSPropertyWebkitBoxShadow:
- return valueForShadow(style->boxShadow());
- case CSSPropertyCaptionSide:
- return CSSPrimitiveValue::create(style->captionSide());
- case CSSPropertyClear:
- return CSSPrimitiveValue::create(style->clear());
- case CSSPropertyColor:
- return CSSPrimitiveValue::createColor(style->color().rgb());
- case CSSPropertyWebkitColumnCount:
- if (style->hasAutoColumnCount())
- return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
- return CSSPrimitiveValue::create(style->columnCount(), CSSPrimitiveValue::CSS_NUMBER);
- case CSSPropertyWebkitColumnGap:
- if (style->hasNormalColumnGap())
- return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
- return CSSPrimitiveValue::create(style->columnGap(), CSSPrimitiveValue::CSS_NUMBER);
- case CSSPropertyWebkitColumnRuleColor:
- return currentColorOrValidColor(style, style->columnRuleColor());
- case CSSPropertyWebkitColumnRuleStyle:
- return CSSPrimitiveValue::create(style->columnRuleStyle());
- case CSSPropertyWebkitColumnRuleWidth:
- return CSSPrimitiveValue::create(style->columnRuleWidth(), CSSPrimitiveValue::CSS_PX);
- case CSSPropertyWebkitColumnBreakAfter:
- return CSSPrimitiveValue::create(style->columnBreakAfter());
- case CSSPropertyWebkitColumnBreakBefore:
- return CSSPrimitiveValue::create(style->columnBreakBefore());
- case CSSPropertyWebkitColumnBreakInside:
- return CSSPrimitiveValue::create(style->columnBreakInside());
- case CSSPropertyWebkitColumnWidth:
- if (style->hasAutoColumnWidth())
- return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
- return CSSPrimitiveValue::create(style->columnWidth(), CSSPrimitiveValue::CSS_NUMBER);
- case CSSPropertyCursor: {
- RefPtr<CSSValueList> list;
- CursorList* cursors = style->cursors();
- if (cursors && cursors->size() > 0) {
- list = CSSValueList::createCommaSeparated();
- for (unsigned i = 0; i < cursors->size(); ++i)
- list->append(CSSPrimitiveValue::create((*cursors)[i].cursorImage->url(), CSSPrimitiveValue::CSS_URI));
- }
- RefPtr<CSSValue> value = CSSPrimitiveValue::create(style->cursor());
- if (list) {
- list->append(value);
- return list.release();
- }
- return value.release();
- }
- case CSSPropertyDirection:
- return CSSPrimitiveValue::create(style->direction());
- case CSSPropertyDisplay:
- return CSSPrimitiveValue::create(style->display());
- case CSSPropertyEmptyCells:
- return CSSPrimitiveValue::create(style->emptyCells());
- case CSSPropertyFloat:
-#ifdef ANDROID_LAYOUT
- if (settings && settings->layoutAlgorithm() == Settings::kLayoutSSR)
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
-#endif
- return CSSPrimitiveValue::create(style->floating());
- case CSSPropertyFontFamily:
- // FIXME: This only returns the first family.
- return CSSPrimitiveValue::create(style->fontDescription().family().family().string(), CSSPrimitiveValue::CSS_STRING);
- case CSSPropertyFontSize:
- return CSSPrimitiveValue::create(style->fontDescription().computedPixelSize(), CSSPrimitiveValue::CSS_PX);
- case CSSPropertyWebkitBinding:
- break;
- case CSSPropertyFontStyle:
- if (style->fontDescription().italic())
- return CSSPrimitiveValue::createIdentifier(CSSValueItalic);
- return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
- case CSSPropertyFontVariant:
- if (style->fontDescription().smallCaps())
- return CSSPrimitiveValue::createIdentifier(CSSValueSmallCaps);
- return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
- case CSSPropertyFontWeight:
- switch (style->fontDescription().weight()) {
- case FontWeight100:
- return CSSPrimitiveValue::createIdentifier(CSSValue100);
- case FontWeight200:
- return CSSPrimitiveValue::createIdentifier(CSSValue200);
- case FontWeight300:
- return CSSPrimitiveValue::createIdentifier(CSSValue300);
- case FontWeightNormal:
- return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
- case FontWeight500:
- return CSSPrimitiveValue::createIdentifier(CSSValue500);
- case FontWeight600:
- return CSSPrimitiveValue::createIdentifier(CSSValue600);
- case FontWeightBold:
- return CSSPrimitiveValue::createIdentifier(CSSValueBold);
- case FontWeight800:
- return CSSPrimitiveValue::createIdentifier(CSSValue800);
- case FontWeight900:
- return CSSPrimitiveValue::createIdentifier(CSSValue900);
- }
- ASSERT_NOT_REACHED();
- return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
- case CSSPropertyHeight:
- if (renderer)
- return CSSPrimitiveValue::create(sizingBox(renderer).height(), CSSPrimitiveValue::CSS_PX);
- return CSSPrimitiveValue::create(style->height());
- case CSSPropertyWebkitHighlight:
- if (style->highlight() == nullAtom)
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
- return CSSPrimitiveValue::create(style->highlight(), CSSPrimitiveValue::CSS_STRING);
- case CSSPropertyWebkitBorderFit:
- if (style->borderFit() == BorderFitBorder)
- return CSSPrimitiveValue::createIdentifier(CSSValueBorder);
- return CSSPrimitiveValue::createIdentifier(CSSValueLines);
- case CSSPropertyLeft:
- return getPositionOffsetValue(style, CSSPropertyLeft);
- case CSSPropertyLetterSpacing:
- if (!style->letterSpacing())
- return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
- return CSSPrimitiveValue::create(style->letterSpacing(), CSSPrimitiveValue::CSS_PX);
- case CSSPropertyWebkitLineClamp:
- if (style->lineClamp() == -1)
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
- return CSSPrimitiveValue::create(style->lineClamp(), CSSPrimitiveValue::CSS_PERCENTAGE);
- case CSSPropertyLineHeight: {
- Length length = style->lineHeight();
- if (length.isNegative())
- return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
- if (length.isPercent())
- // This is imperfect, because it doesn't include the zoom factor and the real computation
- // for how high to be in pixels does include things like minimum font size and the zoom factor.
- // On the other hand, since font-size doesn't include the zoom factor, we really can't do
- // that here either.
- return CSSPrimitiveValue::create(static_cast<int>(length.percent() * style->fontDescription().specifiedSize()) / 100, CSSPrimitiveValue::CSS_PX);
- return CSSPrimitiveValue::create(length.value(), CSSPrimitiveValue::CSS_PX);
- }
- case CSSPropertyListStyleImage:
- if (style->listStyleImage())
- return style->listStyleImage()->cssValue();
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
- case CSSPropertyListStylePosition:
- return CSSPrimitiveValue::create(style->listStylePosition());
- case CSSPropertyListStyleType:
- return CSSPrimitiveValue::create(style->listStyleType());
- case CSSPropertyMarginTop:
- if (renderer)
- // FIXME: Supposed to return the percentage if percentage was specified.
- return CSSPrimitiveValue::create(renderer->marginTop(), CSSPrimitiveValue::CSS_PX);
- return CSSPrimitiveValue::create(style->marginTop());
- case CSSPropertyMarginRight:
- if (renderer)
- // FIXME: Supposed to return the percentage if percentage was specified.
- return CSSPrimitiveValue::create(renderer->marginRight(), CSSPrimitiveValue::CSS_PX);
- return CSSPrimitiveValue::create(style->marginRight());
- case CSSPropertyMarginBottom:
- if (renderer)
- // FIXME: Supposed to return the percentage if percentage was specified.
- return CSSPrimitiveValue::create(renderer->marginBottom(), CSSPrimitiveValue::CSS_PX);
- return CSSPrimitiveValue::create(style->marginBottom());
- case CSSPropertyMarginLeft:
- if (renderer)
- // FIXME: Supposed to return the percentage if percentage was specified.
- return CSSPrimitiveValue::create(renderer->marginLeft(), CSSPrimitiveValue::CSS_PX);
- return CSSPrimitiveValue::create(style->marginLeft());
- case CSSPropertyWebkitMarqueeDirection:
- return CSSPrimitiveValue::create(style->marqueeDirection());
- case CSSPropertyWebkitMarqueeIncrement:
- return CSSPrimitiveValue::create(style->marqueeIncrement());
- case CSSPropertyWebkitMarqueeRepetition:
- if (style->marqueeLoopCount() < 0)
- return CSSPrimitiveValue::createIdentifier(CSSValueInfinite);
- return CSSPrimitiveValue::create(style->marqueeLoopCount(), CSSPrimitiveValue::CSS_NUMBER);
- case CSSPropertyWebkitMarqueeStyle:
- return CSSPrimitiveValue::create(style->marqueeBehavior());
- case CSSPropertyWebkitMaskImage:
- if (style->maskImage())
- return style->maskImage()->cssValue();
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
- case CSSPropertyWebkitMaskSize: {
- RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
- list->append(CSSPrimitiveValue::create(style->maskSize().width()));
- list->append(CSSPrimitiveValue::create(style->maskSize().height()));
- return list.release();
- }
- case CSSPropertyWebkitMaskRepeat:
- return CSSPrimitiveValue::create(style->maskRepeat());
- case CSSPropertyWebkitMaskAttachment:
- if (style->maskAttachment())
- return CSSPrimitiveValue::createIdentifier(CSSValueScroll);
- return CSSPrimitiveValue::createIdentifier(CSSValueFixed);
- case CSSPropertyWebkitMaskComposite:
- return CSSPrimitiveValue::create(style->maskComposite());
- case CSSPropertyWebkitMaskClip:
- case CSSPropertyWebkitMaskOrigin: {
- EFillBox box = (propertyID == CSSPropertyWebkitMaskClip ? style->maskClip() : style->maskOrigin());
- return CSSPrimitiveValue::create(box);
- }
- case CSSPropertyWebkitMaskPosition: {
- RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
-
- list->append(CSSPrimitiveValue::create(style->maskXPosition()));
- list->append(CSSPrimitiveValue::create(style->maskYPosition()));
-
- return list.release();
- }
- case CSSPropertyWebkitMaskPositionX:
- return CSSPrimitiveValue::create(style->maskXPosition());
- case CSSPropertyWebkitMaskPositionY:
- return CSSPrimitiveValue::create(style->maskYPosition());
- case CSSPropertyWebkitUserModify:
- return CSSPrimitiveValue::create(style->userModify());
- case CSSPropertyMaxHeight: {
- const Length& maxHeight = style->maxHeight();
- if (maxHeight.isFixed() && maxHeight.value() == undefinedLength)
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
- return CSSPrimitiveValue::create(maxHeight);
- }
- case CSSPropertyMaxWidth: {
- const Length& maxWidth = style->maxWidth();
- if (maxWidth.isFixed() && maxWidth.value() == undefinedLength)
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
- return CSSPrimitiveValue::create(maxWidth);
- }
- case CSSPropertyMinHeight:
- return CSSPrimitiveValue::create(style->minHeight());
- case CSSPropertyMinWidth:
- return CSSPrimitiveValue::create(style->minWidth());
- case CSSPropertyOpacity:
- return CSSPrimitiveValue::create(style->opacity(), CSSPrimitiveValue::CSS_NUMBER);
- case CSSPropertyOrphans:
- return CSSPrimitiveValue::create(style->orphans(), CSSPrimitiveValue::CSS_NUMBER);
- case CSSPropertyOutlineColor:
- return currentColorOrValidColor(style, style->outlineColor());
- case CSSPropertyOutlineStyle:
- if (style->outlineStyleIsAuto())
- return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
- return CSSPrimitiveValue::create(style->outlineStyle());
- case CSSPropertyOutlineWidth:
- return CSSPrimitiveValue::create(style->outlineWidth(), CSSPrimitiveValue::CSS_PX);
- case CSSPropertyOverflow:
- return CSSPrimitiveValue::create(max(style->overflowX(), style->overflowY()));
- case CSSPropertyOverflowX:
- return CSSPrimitiveValue::create(style->overflowX());
- case CSSPropertyOverflowY:
-#ifdef ANDROID_LAYOUT
- if (settings && settings->layoutAlgorithm() == Settings::kLayoutSSR)
- return CSSPrimitiveValue::createIdentifier(CSSValueVisible);
-#endif
- return CSSPrimitiveValue::create(style->overflowY());
- case CSSPropertyPaddingTop:
- if (renderer)
- return CSSPrimitiveValue::create(renderer->paddingTop(), CSSPrimitiveValue::CSS_PX);
- return CSSPrimitiveValue::create(style->paddingTop());
- case CSSPropertyPaddingRight:
- if (renderer)
- return CSSPrimitiveValue::create(renderer->paddingRight(), CSSPrimitiveValue::CSS_PX);
- return CSSPrimitiveValue::create(style->paddingRight());
- case CSSPropertyPaddingBottom:
- if (renderer)
- return CSSPrimitiveValue::create(renderer->paddingBottom(), CSSPrimitiveValue::CSS_PX);
- return CSSPrimitiveValue::create(style->paddingBottom());
- case CSSPropertyPaddingLeft:
- if (renderer)
- return CSSPrimitiveValue::create(renderer->paddingLeft(), CSSPrimitiveValue::CSS_PX);
- return CSSPrimitiveValue::create(style->paddingLeft());
- case CSSPropertyPageBreakAfter:
- return CSSPrimitiveValue::create(style->pageBreakAfter());
- case CSSPropertyPageBreakBefore:
- return CSSPrimitiveValue::create(style->pageBreakBefore());
- case CSSPropertyPageBreakInside: {
- EPageBreak pageBreak = style->pageBreakInside();
- ASSERT(pageBreak != PBALWAYS);
- if (pageBreak == PBALWAYS)
- return 0;
- return CSSPrimitiveValue::create(style->pageBreakInside());
- }
- case CSSPropertyPosition:
-#ifdef ANDROID_LAYOUT
- if (settings && settings->layoutAlgorithm() == Settings::kLayoutSSR)
- return CSSPrimitiveValue::createIdentifier(CSSValueStatic);
-#endif
- return CSSPrimitiveValue::create(style->position());
- case CSSPropertyRight:
- return getPositionOffsetValue(style, CSSPropertyRight);
- case CSSPropertyTableLayout:
- return CSSPrimitiveValue::create(style->tableLayout());
- case CSSPropertyTextAlign:
- return CSSPrimitiveValue::create(style->textAlign());
- case CSSPropertyTextDecoration: {
- String string;
- if (style->textDecoration() & UNDERLINE)
- string += "underline";
- if (style->textDecoration() & OVERLINE) {
- if (string.length())
- string += " ";
- string += "overline";
- }
- if (style->textDecoration() & LINE_THROUGH) {
- if (string.length())
- string += " ";
- string += "line-through";
- }
- if (style->textDecoration() & BLINK) {
- if (string.length())
- string += " ";
- string += "blink";
- }
- if (!string.length())
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
- return CSSPrimitiveValue::create(string, CSSPrimitiveValue::CSS_STRING);
- }
- case CSSPropertyWebkitTextDecorationsInEffect: {
- String string;
- if (style->textDecorationsInEffect() & UNDERLINE)
- string += "underline";
- if (style->textDecorationsInEffect() & OVERLINE) {
- if (string.length())
- string += " ";
- string += "overline";
- }
- if (style->textDecorationsInEffect() & LINE_THROUGH) {
- if (string.length())
- string += " ";
- string += "line-through";
- }
- if (style->textDecorationsInEffect() & BLINK) {
- if (string.length())
- string += " ";
- string += "blink";
- }
- if (!string.length())
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
- return CSSPrimitiveValue::create(string, CSSPrimitiveValue::CSS_STRING);
- }
- case CSSPropertyWebkitTextFillColor:
- return currentColorOrValidColor(style, style->textFillColor());
- case CSSPropertyTextIndent:
- return CSSPrimitiveValue::create(style->textIndent());
- case CSSPropertyTextShadow:
- return valueForShadow(style->textShadow());
- case CSSPropertyWebkitTextSecurity:
- return CSSPrimitiveValue::create(style->textSecurity());
- case CSSPropertyWebkitTextSizeAdjust:
- if (style->textSizeAdjust())
- return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
- case CSSPropertyWebkitTextStrokeColor:
- return currentColorOrValidColor(style, style->textStrokeColor());
- case CSSPropertyWebkitTextStrokeWidth:
- return CSSPrimitiveValue::create(style->textStrokeWidth(), CSSPrimitiveValue::CSS_PX);
- case CSSPropertyTextTransform:
- return CSSPrimitiveValue::create(style->textTransform());
- case CSSPropertyTop:
- return getPositionOffsetValue(style, CSSPropertyTop);
- case CSSPropertyUnicodeBidi:
- return CSSPrimitiveValue::create(style->unicodeBidi());
- case CSSPropertyVerticalAlign:
- switch (style->verticalAlign()) {
- case BASELINE:
- return CSSPrimitiveValue::createIdentifier(CSSValueBaseline);
- case MIDDLE:
- return CSSPrimitiveValue::createIdentifier(CSSValueMiddle);
- case SUB:
- return CSSPrimitiveValue::createIdentifier(CSSValueSub);
- case SUPER:
- return CSSPrimitiveValue::createIdentifier(CSSValueSuper);
- case TEXT_TOP:
- return CSSPrimitiveValue::createIdentifier(CSSValueTextTop);
- case TEXT_BOTTOM:
- return CSSPrimitiveValue::createIdentifier(CSSValueTextBottom);
- case TOP:
- return CSSPrimitiveValue::createIdentifier(CSSValueTop);
- case BOTTOM:
- return CSSPrimitiveValue::createIdentifier(CSSValueBottom);
- case BASELINE_MIDDLE:
- return CSSPrimitiveValue::createIdentifier(CSSValueWebkitBaselineMiddle);
- case LENGTH:
- return CSSPrimitiveValue::create(style->verticalAlignLength());
- }
- ASSERT_NOT_REACHED();
- return 0;
- case CSSPropertyVisibility:
-#ifdef ANDROID_LAYOUT
- if (settings && settings->layoutAlgorithm() == Settings::kLayoutSSR)
- return CSSPrimitiveValue::createIdentifier(CSSValueVisible);
-#endif
- return CSSPrimitiveValue::create(style->visibility());
- case CSSPropertyWhiteSpace:
-#ifdef ANDROID_LAYOUT
- if (settings && settings->layoutAlgorithm() == Settings::kLayoutSSR)
- switch (style->whiteSpace()) {
- case NORMAL:
- case NOWRAP:
- case KHTML_NOWRAP:
- return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
- case PRE:
- case PRE_WRAP:
- return CSSPrimitiveValue::createIdentifier(CSSValuePreWrap);
- case PRE_LINE:
- return CSSPrimitiveValue::createIdentifier(CSSValuePreLine);
- }
- else
-#endif
- return CSSPrimitiveValue::create(style->whiteSpace());
- case CSSPropertyWidows:
- return CSSPrimitiveValue::create(style->widows(), CSSPrimitiveValue::CSS_NUMBER);
- case CSSPropertyWidth:
- if (renderer)
- return CSSPrimitiveValue::create(sizingBox(renderer).width(), CSSPrimitiveValue::CSS_PX);
- return CSSPrimitiveValue::create(style->width());
- case CSSPropertyWordBreak:
- return CSSPrimitiveValue::create(style->wordBreak());
- case CSSPropertyWordSpacing:
- return CSSPrimitiveValue::create(style->wordSpacing(), CSSPrimitiveValue::CSS_PX);
- case CSSPropertyWordWrap:
- return CSSPrimitiveValue::create(style->wordWrap());
- case CSSPropertyWebkitLineBreak:
- return CSSPrimitiveValue::create(style->khtmlLineBreak());
- case CSSPropertyWebkitNbspMode:
- return CSSPrimitiveValue::create(style->nbspMode());
- case CSSPropertyWebkitMatchNearestMailBlockquoteColor:
- return CSSPrimitiveValue::create(style->matchNearestMailBlockquoteColor());
- case CSSPropertyResize:
- return CSSPrimitiveValue::create(style->resize());
- case CSSPropertyZIndex:
- if (style->hasAutoZIndex())
- return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
- return CSSPrimitiveValue::create(style->zIndex(), CSSPrimitiveValue::CSS_NUMBER);
- case CSSPropertyZoom:
- return CSSPrimitiveValue::create(style->zoom(), CSSPrimitiveValue::CSS_NUMBER);
- case CSSPropertyWebkitBoxSizing:
- if (style->boxSizing() == CONTENT_BOX)
- return CSSPrimitiveValue::createIdentifier(CSSValueContentBox);
- return CSSPrimitiveValue::createIdentifier(CSSValueBorderBox);
-#if ENABLE(DASHBOARD_SUPPORT)
- case CSSPropertyWebkitDashboardRegion:
- {
- const Vector<StyleDashboardRegion>& regions = style->dashboardRegions();
- unsigned count = regions.size();
- if (count == 1 && regions[0].type == StyleDashboardRegion::None)
- return CSSPrimitiveValue::createIdentifier(CSSValueNone);
-
- RefPtr<DashboardRegion> firstRegion;
- DashboardRegion* previousRegion = 0;
- for (unsigned i = 0; i < count; i++) {
- RefPtr<DashboardRegion> region = DashboardRegion::create();
- StyleDashboardRegion styleRegion = regions[i];
-
- region->m_label = styleRegion.label;
- LengthBox offset = styleRegion.offset;
- region->setTop(CSSPrimitiveValue::create(offset.top().value(), CSSPrimitiveValue::CSS_PX));
- region->setRight(CSSPrimitiveValue::create(offset.right().value(), CSSPrimitiveValue::CSS_PX));
- region->setBottom(CSSPrimitiveValue::create(offset.bottom().value(), CSSPrimitiveValue::CSS_PX));
- region->setLeft(CSSPrimitiveValue::create(offset.left().value(), CSSPrimitiveValue::CSS_PX));
- region->m_isRectangle = (styleRegion.type == StyleDashboardRegion::Rectangle);
- region->m_isCircle = (styleRegion.type == StyleDashboardRegion::Circle);
-
- if (previousRegion)
- previousRegion->m_next = region;
- else
- firstRegion = region;
- previousRegion = region.get();
- }
- return CSSPrimitiveValue::create(firstRegion.release());
- }
-#endif
- case CSSPropertyWebkitAppearance:
- return CSSPrimitiveValue::create(style->appearance());
- case CSSPropertyWebkitBorderImage:
- return valueForNinePieceImage(style->borderImage());
- case CSSPropertyWebkitMaskBoxImage:
- return valueForNinePieceImage(style->maskBoxImage());
- case CSSPropertyWebkitFontSizeDelta:
- // Not a real style property -- used by the editing engine -- so has no computed value.
- break;
- case CSSPropertyWebkitMarginBottomCollapse:
- return CSSPrimitiveValue::create(style->marginBottomCollapse());
- case CSSPropertyWebkitMarginTopCollapse:
- return CSSPrimitiveValue::create(style->marginTopCollapse());
- case CSSPropertyWebkitRtlOrdering:
- if (style->visuallyOrdered())
- return CSSPrimitiveValue::createIdentifier(CSSValueVisual);
- return CSSPrimitiveValue::createIdentifier(CSSValueLogical);
- case CSSPropertyWebkitUserDrag:
- return CSSPrimitiveValue::create(style->userDrag());
- case CSSPropertyWebkitUserSelect:
- return CSSPrimitiveValue::create(style->userSelect());
- case CSSPropertyWebkitBorderBottomLeftRadius:
- return getBorderRadiusCornerValue(style->borderBottomLeftRadius());
- case CSSPropertyWebkitBorderBottomRightRadius:
- return getBorderRadiusCornerValue(style->borderBottomRightRadius());
- case CSSPropertyWebkitBorderTopLeftRadius:
- return getBorderRadiusCornerValue(style->borderTopLeftRadius());
- case CSSPropertyWebkitBorderTopRightRadius:
- return getBorderRadiusCornerValue(style->borderTopRightRadius());
- case CSSPropertyClip:
- {
- if (style->hasClip()) {
- RefPtr<Rect> rect = Rect::create();
- rect->setTop(CSSPrimitiveValue::create(style->clip().top().value(), CSSPrimitiveValue::CSS_PX));
- rect->setRight(CSSPrimitiveValue::create(style->clip().right().value(), CSSPrimitiveValue::CSS_PX));
- rect->setBottom(CSSPrimitiveValue::create(style->clip().bottom().value(), CSSPrimitiveValue::CSS_PX));
- rect->setLeft(CSSPrimitiveValue::create(style->clip().left().value(), CSSPrimitiveValue::CSS_PX));
- return CSSPrimitiveValue::create(rect.release());
- }
- return 0;
- }
- case CSSPropertyWebkitTransform:
- return computedTransform(renderer);
- case CSSPropertyWebkitTransformOriginX:
- if (renderer) {
- IntRect box = sizingBox(renderer);
- return CSSPrimitiveValue::create(style->transformOriginX().calcMinValue(box.width()), CSSPrimitiveValue::CSS_PX);
- }
- else
- return CSSPrimitiveValue::create(style->transformOriginX());
- case CSSPropertyWebkitTransformOriginY:
- if (renderer) {
- IntRect box = sizingBox(renderer);
- return CSSPrimitiveValue::create(style->transformOriginY().calcMinValue(box.height()), CSSPrimitiveValue::CSS_PX);
- }
- else
- return CSSPrimitiveValue::create(style->transformOriginY());
- case CSSPropertyWebkitTransitionDelay: {
- RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
- const AnimationList* t = style->transitions();
- if (t) {
- for (size_t i = 0; i < t->size(); ++i)
- list->append(CSSPrimitiveValue::create(t->animation(i)->delay(), CSSPrimitiveValue::CSS_S));
- }
- else
- list->append(CSSPrimitiveValue::create(RenderStyle::initialAnimationDelay(), CSSPrimitiveValue::CSS_S));
- return list.release();
- }
- case CSSPropertyWebkitTransitionDuration: {
- RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
- const AnimationList* t = style->transitions();
- if (t) {
- for (size_t i = 0; i < t->size(); ++i)
- list->append(CSSPrimitiveValue::create(t->animation(i)->duration(), CSSPrimitiveValue::CSS_S));
- }
- else
- list->append(CSSPrimitiveValue::create(RenderStyle::initialAnimationDuration(), CSSPrimitiveValue::CSS_S));
- return list.release();
- }
- case CSSPropertyWebkitTransitionTimingFunction: {
- RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
- const AnimationList* t = style->transitions();
- if (t) {
- for (size_t i = 0; i < t->size(); ++i) {
- const TimingFunction& tf = t->animation(i)->timingFunction();
- list->append(CSSTimingFunctionValue::create(tf.x1(), tf.y1(), tf.x2(), tf.y2()));
- }
- }
- else {
- const TimingFunction& tf = RenderStyle::initialAnimationTimingFunction();
- list->append(CSSTimingFunctionValue::create(tf.x1(), tf.y1(), tf.x2(), tf.y2()));
- }
- return list.release();
- }
- case CSSPropertyWebkitTransitionProperty: {
- RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
- const AnimationList* t = style->transitions();
- if (t) {
- for (size_t i = 0; i < t->size(); ++i) {
- int prop = t->animation(i)->property();
- const char* name;
- if (prop == cAnimateNone)
- name = "none";
- else if (prop == cAnimateAll)
- name = "all";
- else
- name = getPropertyName(static_cast<CSSPropertyID>(prop));
- list->append(CSSPrimitiveValue::create(name, CSSPrimitiveValue::CSS_STRING));
- }
- }
- else
- list->append(CSSPrimitiveValue::create("all", CSSPrimitiveValue::CSS_STRING));
- return list.release();
- }
- case CSSPropertyBackground:
- case CSSPropertyBorder:
- case CSSPropertyBorderBottom:
- case CSSPropertyBorderColor:
- case CSSPropertyBorderLeft:
- case CSSPropertyBorderRight:
- case CSSPropertyBorderStyle:
- case CSSPropertyBorderTop:
- case CSSPropertyBorderWidth:
- case CSSPropertyContent:
- case CSSPropertyCounterIncrement:
- case CSSPropertyCounterReset:
- case CSSPropertyFont:
- case CSSPropertyFontStretch:
- case CSSPropertyListStyle:
- case CSSPropertyMargin:
- case CSSPropertyOutline:
- case CSSPropertyOutlineOffset:
- case CSSPropertyPadding:
- case CSSPropertyPage:
- case CSSPropertyQuotes:
- case CSSPropertyScrollbar3dlightColor:
- case CSSPropertyScrollbarArrowColor:
- case CSSPropertyScrollbarDarkshadowColor:
- case CSSPropertyScrollbarFaceColor:
- case CSSPropertyScrollbarHighlightColor:
- case CSSPropertyScrollbarShadowColor:
- case CSSPropertyScrollbarTrackColor:
- case CSSPropertySrc: // Only used in @font-face rules.
- case CSSPropertySize:
- case CSSPropertyTextLineThrough:
- case CSSPropertyTextLineThroughColor:
- case CSSPropertyTextLineThroughMode:
- case CSSPropertyTextLineThroughStyle:
- case CSSPropertyTextLineThroughWidth:
- case CSSPropertyTextOverflow:
- case CSSPropertyTextOverline:
- case CSSPropertyTextOverlineColor:
- case CSSPropertyTextOverlineMode:
- case CSSPropertyTextOverlineStyle:
- case CSSPropertyTextOverlineWidth:
- case CSSPropertyTextUnderline:
- case CSSPropertyTextUnderlineColor:
- case CSSPropertyTextUnderlineMode:
- case CSSPropertyTextUnderlineStyle:
- case CSSPropertyTextUnderlineWidth:
- case CSSPropertyUnicodeRange: // Only used in @font-face rules.
- case CSSPropertyWebkitAnimation:
- case CSSPropertyWebkitAnimationDelay:
- case CSSPropertyWebkitAnimationDirection:
- case CSSPropertyWebkitAnimationDuration:
- case CSSPropertyWebkitAnimationIterationCount:
- case CSSPropertyWebkitAnimationName:
- case CSSPropertyWebkitAnimationPlayState:
- case CSSPropertyWebkitAnimationTimingFunction:
- case CSSPropertyWebkitBorderRadius:
- case CSSPropertyWebkitColumns:
- case CSSPropertyWebkitColumnRule:
- case CSSPropertyWebkitMarginCollapse:
- case CSSPropertyWebkitMarginStart:
- case CSSPropertyWebkitMarquee:
- case CSSPropertyWebkitMarqueeSpeed:
- case CSSPropertyWebkitMask:
- case CSSPropertyWebkitPaddingStart:
- case CSSPropertyWebkitTextStroke:
- case CSSPropertyWebkitTransformOrigin:
- case CSSPropertyWebkitTransition:
- case CSSPropertyWebkitVariableDeclarationBlock:
- // FIXME: The above are unimplemented.
- break;
-#ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR
- case CSSPropertyWebkitTapHighlightColor:
- return CSSPrimitiveValue::createColor(style->tapHighlightColor().rgb());
-#endif
-#if ENABLE(SVG)
- // FIXME: This default case ruins the point of using an enum for
- // properties -- it prevents us from getting a warning when we
- // forget to list a property above.
- default:
- return getSVGPropertyCSSValue(propertyID, DoNotUpdateLayout);
-#endif
- }
-
- LOG_ERROR("unimplemented propertyID: %d", propertyID);
- return 0;
-}
-
-String CSSComputedStyleDeclaration::getPropertyValue(int propertyID) const
-{
- RefPtr<CSSValue> value = getPropertyCSSValue(propertyID);
- if (value)
- return value->cssText();
- return "";
-}
-
-bool CSSComputedStyleDeclaration::getPropertyPriority(int /*propertyID*/) const
-{
- // All computed styles have a priority of false (not "important").
- return false;
-}
-
-String CSSComputedStyleDeclaration::removeProperty(int /*propertyID*/, ExceptionCode& ec)
-{
- ec = NO_MODIFICATION_ALLOWED_ERR;
- return String();
-}
-
-void CSSComputedStyleDeclaration::setProperty(int /*propertyID*/, const String& /*value*/, bool /*important*/, ExceptionCode& ec)
-{
- ec = NO_MODIFICATION_ALLOWED_ERR;
-}
-
-unsigned CSSComputedStyleDeclaration::length() const
-{
- Node* node = m_node.get();
- if (!node)
- return 0;
-
- RenderStyle* style = node->computedStyle();
- if (!style)
- return 0;
-
- return numComputedProperties;
-}
-
-String CSSComputedStyleDeclaration::item(unsigned i) const
-{
- if (i >= length())
- return String();
-
- return getPropertyName(static_cast<CSSPropertyID>(computedProperties[i]));
-}
-
-// This is the list of properties we want to copy in the copyInheritableProperties() function.
-// It is the intersection of the list of inherited CSS properties and the
-// properties for which we have a computed implementation in this file.
-const int inheritableProperties[] = {
- CSSPropertyBorderCollapse,
- CSSPropertyColor,
- CSSPropertyFontFamily,
- CSSPropertyFontSize,
- CSSPropertyFontStyle,
- CSSPropertyFontVariant,
- CSSPropertyFontWeight,
- CSSPropertyLetterSpacing,
- CSSPropertyLineHeight,
- CSSPropertyOrphans,
- CSSPropertyTextAlign,
- CSSPropertyTextIndent,
- CSSPropertyTextTransform,
- CSSPropertyWhiteSpace,
- CSSPropertyWidows,
- CSSPropertyWordSpacing,
- CSSPropertyWebkitBorderHorizontalSpacing,
- CSSPropertyWebkitBorderVerticalSpacing,
- CSSPropertyWebkitTextDecorationsInEffect,
- CSSPropertyWebkitTextFillColor,
- CSSPropertyWebkitTextSizeAdjust,
- CSSPropertyWebkitTextStrokeColor,
- CSSPropertyWebkitTextStrokeWidth,
-#ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR
- CSSPropertyWebkitTapHighlightColor,
-#endif
-};
-
-const unsigned numInheritableProperties = sizeof(inheritableProperties) / sizeof(inheritableProperties[0]);
-
-void CSSComputedStyleDeclaration::removeComputedInheritablePropertiesFrom(CSSMutableStyleDeclaration* declaration)
-{
- declaration->removePropertiesInSet(inheritableProperties, numInheritableProperties);
-}
-
-PassRefPtr<CSSMutableStyleDeclaration> CSSComputedStyleDeclaration::copyInheritableProperties() const
-{
- RefPtr<CSSMutableStyleDeclaration> style = copyPropertiesInSet(inheritableProperties, numInheritableProperties);
- if (style && m_node && m_node->computedStyle()) {
- // If a node's text fill color is invalid, then its children use
- // their font-color as their text fill color (they don't
- // inherit it). Likewise for stroke color.
- ExceptionCode ec = 0;
- if (!m_node->computedStyle()->textFillColor().isValid())
- style->removeProperty(CSSPropertyWebkitTextFillColor, ec);
- if (!m_node->computedStyle()->textStrokeColor().isValid())
- style->removeProperty(CSSPropertyWebkitTextStrokeColor, ec);
- ASSERT(ec == 0);
- }
- return style.release();
-}
-
-PassRefPtr<CSSMutableStyleDeclaration> CSSComputedStyleDeclaration::copy() const
-{
- return copyPropertiesInSet(computedProperties, numComputedProperties);
-}
-
-PassRefPtr<CSSMutableStyleDeclaration> CSSComputedStyleDeclaration::makeMutable()
-{
- return copy();
-}
-
-} // namespace WebCore