18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2004 Zack Rusin <zack@kde.org>
35f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Lesser General Public
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version.
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful,
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Lesser General Public License for more details.
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Lesser General Public
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License along with this library; if not, write to the Free Software
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 02110-1301  USA
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h"
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CSSComputedStyleDeclaration.h"
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "AnimationController.h"
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CSSBorderImageValue.h"
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CSSMutableStyleDeclaration.h"
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CSSPrimitiveValue.h"
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CSSPrimitiveValueMappings.h"
310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "CSSProperty.h"
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CSSPropertyNames.h"
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CSSReflectValue.h"
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CSSTimingFunctionValue.h"
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CSSValueList.h"
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Document.h"
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ExceptionCode.h"
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Rect.h"
39635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "RenderBox.h"
408f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "RenderLayer.h"
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ShadowValue.h"
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef ANDROID_LAYOUT
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Frame.h"
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Settings.h"
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebKitCSSTransformValue.h"
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(DASHBOARD_SUPPORT)
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "DashboardRegion.h"
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// List of all properties we know how to compute, omitting shorthands.
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic const int computedProperties[] = {
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBackgroundAttachment,
570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    CSSPropertyBackgroundClip,
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBackgroundColor,
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBackgroundImage,
600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    CSSPropertyBackgroundOrigin,
615f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    CSSPropertyBackgroundPosition, // more-specific background-position-x/y are non-standard
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBackgroundRepeat,
63231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    CSSPropertyBackgroundSize,
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBorderBottomColor,
650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    CSSPropertyBorderBottomLeftRadius,
660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    CSSPropertyBorderBottomRightRadius,
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBorderBottomStyle,
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBorderBottomWidth,
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBorderCollapse,
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBorderLeftColor,
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBorderLeftStyle,
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBorderLeftWidth,
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBorderRightColor,
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBorderRightStyle,
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBorderRightWidth,
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBorderTopColor,
770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    CSSPropertyBorderTopLeftRadius,
780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    CSSPropertyBorderTopRightRadius,
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBorderTopStyle,
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBorderTopWidth,
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBottom,
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyCaptionSide,
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyClear,
845f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    CSSPropertyClip,
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyColor,
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyCursor,
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyDirection,
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyDisplay,
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyEmptyCells,
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyFloat,
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyFontFamily,
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyFontSize,
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyFontStyle,
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyFontVariant,
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyFontWeight,
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyHeight,
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyLeft,
988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyLetterSpacing,
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyLineHeight,
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyListStyleImage,
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyListStylePosition,
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyListStyleType,
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyMarginBottom,
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyMarginLeft,
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyMarginRight,
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyMarginTop,
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyMaxHeight,
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyMaxWidth,
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyMinHeight,
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyMinWidth,
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyOpacity,
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyOrphans,
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyOutlineColor,
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyOutlineStyle,
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyOutlineWidth,
1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyOverflowX,
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyOverflowY,
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyPaddingBottom,
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyPaddingLeft,
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyPaddingRight,
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyPaddingTop,
1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyPageBreakAfter,
1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyPageBreakBefore,
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyPageBreakInside,
125635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    CSSPropertyPointerEvents,
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyPosition,
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyResize,
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyRight,
1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyTableLayout,
1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyTextAlign,
1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyTextDecoration,
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyTextIndent,
133231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    CSSPropertyTextRendering,
1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyTextShadow,
1350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    CSSPropertyTextOverflow,
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyTextTransform,
1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyTop,
1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyUnicodeBidi,
1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyVerticalAlign,
1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyVisibility,
1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWhiteSpace,
1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWidows,
1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWidth,
1445f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    CSSPropertyWordBreak,
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWordSpacing,
1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWordWrap,
1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyZIndex,
1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyZoom,
1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
150635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    CSSPropertyWebkitAnimationDelay,
151635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    CSSPropertyWebkitAnimationDirection,
152635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    CSSPropertyWebkitAnimationDuration,
153635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    CSSPropertyWebkitAnimationIterationCount,
154635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    CSSPropertyWebkitAnimationName,
1550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    CSSPropertyWebkitAnimationPlayState,
156635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    CSSPropertyWebkitAnimationTimingFunction,
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitAppearance,
1588f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    CSSPropertyWebkitBackfaceVisibility,
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBackgroundClip,
1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBackgroundComposite,
1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBackgroundOrigin,
162cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    CSSPropertyWebkitBackgroundSize,
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBorderFit,
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBorderHorizontalSpacing,
1655f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    CSSPropertyWebkitBorderImage,
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBorderVerticalSpacing,
1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBoxAlign,
1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBoxDirection,
1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBoxFlex,
1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBoxFlexGroup,
1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBoxLines,
1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBoxOrdinalGroup,
1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBoxOrient,
1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBoxPack,
1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBoxReflect,
176231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    CSSPropertyWebkitBoxShadow,
1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitBoxSizing,
178643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    CSSPropertyWebkitColorCorrection,
1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitColumnBreakAfter,
1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitColumnBreakBefore,
1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitColumnBreakInside,
1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitColumnCount,
1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitColumnGap,
1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitColumnRuleColor,
1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitColumnRuleStyle,
1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitColumnRuleWidth,
1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitColumnWidth,
1885f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#if ENABLE(DASHBOARD_SUPPORT)
1895f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    CSSPropertyWebkitDashboardRegion,
1905f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#endif
191231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    CSSPropertyWebkitFontSmoothing,
1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitHighlight,
1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitLineBreak,
1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitLineClamp,
1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitMarginBottomCollapse,
1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitMarginTopCollapse,
1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitMarqueeDirection,
1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitMarqueeIncrement,
1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitMarqueeRepetition,
2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitMarqueeStyle,
2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitMaskAttachment,
2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitMaskBoxImage,
2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitMaskClip,
2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitMaskComposite,
2055f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    CSSPropertyWebkitMaskImage,
2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitMaskOrigin,
2075f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    CSSPropertyWebkitMaskPosition,
2085f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    CSSPropertyWebkitMaskRepeat,
2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitMaskSize,
2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitNbspMode,
2118f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    CSSPropertyWebkitPerspective,
2128f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    CSSPropertyWebkitPerspectiveOrigin,
2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitRtlOrdering,
2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitTextDecorationsInEffect,
2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitTextFillColor,
2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitTextSecurity,
2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitTextStrokeColor,
2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitTextStrokeWidth,
2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitTransform,
220635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    CSSPropertyWebkitTransformOrigin,
2218f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    CSSPropertyWebkitTransformStyle,
2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitTransitionDelay,
2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitTransitionDuration,
2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitTransitionProperty,
2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitTransitionTimingFunction,
2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitUserDrag,
2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitUserModify,
2285f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    CSSPropertyWebkitUserSelect
2295f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian
2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG)
2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ,
2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyClipPath,
2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyClipRule,
2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyMask,
2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyFilter,
2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyFloodColor,
2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyFloodOpacity,
2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyLightingColor,
2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyStopColor,
2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyStopOpacity,
2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyColorInterpolation,
2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyColorInterpolationFilters,
2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyColorRendering,
2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyFill,
2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyFillOpacity,
2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyFillRule,
2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyImageRendering,
2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyMarkerEnd,
2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyMarkerMid,
2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyMarkerStart,
2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyShapeRendering,
2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyStroke,
2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyStrokeDasharray,
2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyStrokeDashoffset,
2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyStrokeLinecap,
2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyStrokeLinejoin,
2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyStrokeMiterlimit,
2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyStrokeOpacity,
2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyStrokeWidth,
2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyAlignmentBaseline,
2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyBaselineShift,
2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyDominantBaseline,
2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyKerning,
2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyTextAnchor,
2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWritingMode,
2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyGlyphOrientationHorizontal,
267cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    CSSPropertyGlyphOrientationVertical,
268d0825bca7fe65beaee391d30da42e937db621564Steve Block    CSSPropertyWebkitSvgShadow
2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR
2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ,
2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSPropertyWebkitTapHighlightColor
2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectconst unsigned numComputedProperties = sizeof(computedProperties) / sizeof(computedProperties[0]);
2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic int valueForRepeatRule(int rule)
2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    switch (rule) {
2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case RepeatImageRule:
2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSValueRepeat;
2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case RoundImageRule:
2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSValueRound;
2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        default:
2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSValueStretch;
2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic PassRefPtr<CSSValue> valueForNinePieceImage(const NinePieceImage& image)
2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (!image.hasImage())
2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return CSSPrimitiveValue::createIdentifier(CSSValueNone);
2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // Image first.
2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<CSSValue> imageValue;
2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (image.image())
2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        imageValue = image.image()->cssValue();
2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // Create the slices.
3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<CSSPrimitiveValue> top;
3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (image.m_slices.top().isPercent())
3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        top = CSSPrimitiveValue::create(image.m_slices.top().value(), CSSPrimitiveValue::CSS_PERCENTAGE);
3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    else
3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        top = CSSPrimitiveValue::create(image.m_slices.top().value(), CSSPrimitiveValue::CSS_NUMBER);
3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<CSSPrimitiveValue> right;
3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (image.m_slices.right().isPercent())
3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        right = CSSPrimitiveValue::create(image.m_slices.right().value(), CSSPrimitiveValue::CSS_PERCENTAGE);
3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    else
3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        right = CSSPrimitiveValue::create(image.m_slices.right().value(), CSSPrimitiveValue::CSS_NUMBER);
3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<CSSPrimitiveValue> bottom;
3148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (image.m_slices.bottom().isPercent())
3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bottom = CSSPrimitiveValue::create(image.m_slices.bottom().value(), CSSPrimitiveValue::CSS_PERCENTAGE);
3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    else
3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        bottom = CSSPrimitiveValue::create(image.m_slices.bottom().value(), CSSPrimitiveValue::CSS_NUMBER);
3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<CSSPrimitiveValue> left;
3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (image.m_slices.left().isPercent())
3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        left = CSSPrimitiveValue::create(image.m_slices.left().value(), CSSPrimitiveValue::CSS_PERCENTAGE);
3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    else
3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        left = CSSPrimitiveValue::create(image.m_slices.left().value(), CSSPrimitiveValue::CSS_NUMBER);
3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<Rect> rect = Rect::create();
3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    rect->setTop(top);
3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    rect->setRight(right);
3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    rect->setBottom(bottom);
3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    rect->setLeft(left);
3308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return CSSBorderImageValue::create(imageValue, rect, valueForRepeatRule(image.m_horizontalRule), valueForRepeatRule(image.m_verticalRule));
3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic PassRefPtr<CSSValue> valueForReflection(const StyleReflection* reflection)
3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (!reflection)
3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return CSSPrimitiveValue::createIdentifier(CSSValueNone);
3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<CSSPrimitiveValue> offset;
3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (reflection->offset().isPercent())
3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        offset = CSSPrimitiveValue::create(reflection->offset().percent(), CSSPrimitiveValue::CSS_PERCENTAGE);
3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    else
3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        offset = CSSPrimitiveValue::create(reflection->offset().value(), CSSPrimitiveValue::CSS_PX);
3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return CSSReflectValue::create(reflection->direction(), offset.release(), valueForNinePieceImage(reflection->mask()));
3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic PassRefPtr<CSSValue> getPositionOffsetValue(RenderStyle* style, int propertyID)
3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
3508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (!style)
3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return 0;
3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Length l;
3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    switch (propertyID) {
3558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyLeft:
3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            l = style->left();
3578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            break;
3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyRight:
3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            l = style->right();
3608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            break;
3618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTop:
3628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            l = style->top();
3638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            break;
3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBottom:
3658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            l = style->bottom();
3668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            break;
3678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        default:
3688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return 0;
3698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
3708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (style->position() == AbsolutePosition || style->position() == FixedPosition)
3728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return CSSPrimitiveValue::create(l);
3738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (style->position() == RelativePosition)
3758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // FIXME: It's not enough to simply return "auto" values for one offset if the other side is defined.
3768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // In other words if left is auto and right is not auto, then left's computed value is negative right().
3778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // So we should get the opposite length unit and see if it is auto.
3788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return CSSPrimitiveValue::create(l);
3798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
3818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic PassRefPtr<CSSPrimitiveValue> currentColorOrValidColor(RenderStyle* style, const Color& color)
3848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
3858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (!color.isValid())
3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return CSSPrimitiveValue::createColor(style->color().rgb());
3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return CSSPrimitiveValue::createColor(color.rgb());
3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic PassRefPtr<CSSValue> getBorderRadiusCornerValue(IntSize radius)
3918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
3928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (radius.width() == radius.height())
3938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return CSSPrimitiveValue::create(radius.width(), CSSPrimitiveValue::CSS_PX);
3948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
3968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    list->append(CSSPrimitiveValue::create(radius.width(), CSSPrimitiveValue::CSS_PX));
3978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    list->append(CSSPrimitiveValue::create(radius.height(), CSSPrimitiveValue::CSS_PX));
3988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return list.release();
3998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
4008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic IntRect sizingBox(RenderObject* renderer)
4028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
403635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    if (!renderer->isBox())
404635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        return IntRect();
405635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
406635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    RenderBox* box = toRenderBox(renderer);
407635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    return box->style()->boxSizing() == CONTENT_BOX ? box->contentBoxRect() : box->borderBoxRect();
4088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
4098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4108f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qianstatic inline bool hasCompositedLayer(RenderObject* renderer)
4118f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian{
4128f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    return renderer && renderer->hasLayer() && toRenderBoxModelObject(renderer)->layer()->isComposited();
4138f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian}
4148f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
4158f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qianstatic PassRefPtr<CSSValue> computedTransform(RenderObject* renderer, const RenderStyle* style)
4168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
4178f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    if (!renderer || style->transform().operations().isEmpty())
4188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return CSSPrimitiveValue::createIdentifier(CSSValueNone);
4198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    IntRect box = sizingBox(renderer);
4218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
422635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    TransformationMatrix transform;
4238f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    style->applyTransform(transform, box.size(), RenderStyle::ExcludeTransformOrigin);
4248f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    // Note that this does not flatten to an affine transform if ENABLE(3D_RENDERING) is off, by design.
4258f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
4268f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    RefPtr<WebKitCSSTransformValue> transformVal;
4278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4288f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    // FIXME: Need to print out individual functions (https://bugs.webkit.org/show_bug.cgi?id=23924)
4298f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    if (transform.isAffine()) {
4308f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal = WebKitCSSTransformValue::create(WebKitCSSTransformValue::MatrixTransformOperation);
4318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4328f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.a(), CSSPrimitiveValue::CSS_NUMBER));
4338f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.b(), CSSPrimitiveValue::CSS_NUMBER));
4348f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.c(), CSSPrimitiveValue::CSS_NUMBER));
4358f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.d(), CSSPrimitiveValue::CSS_NUMBER));
4368f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.e(), CSSPrimitiveValue::CSS_NUMBER));
4378f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.f(), CSSPrimitiveValue::CSS_NUMBER));
4388f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    } else {
4398f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal = WebKitCSSTransformValue::create(WebKitCSSTransformValue::Matrix3DTransformOperation);
4408f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
4418f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m11(), CSSPrimitiveValue::CSS_NUMBER));
4428f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m12(), CSSPrimitiveValue::CSS_NUMBER));
4438f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m13(), CSSPrimitiveValue::CSS_NUMBER));
4448f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m14(), CSSPrimitiveValue::CSS_NUMBER));
4458f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
4468f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m21(), CSSPrimitiveValue::CSS_NUMBER));
4478f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m22(), CSSPrimitiveValue::CSS_NUMBER));
4488f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m23(), CSSPrimitiveValue::CSS_NUMBER));
4498f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m24(), CSSPrimitiveValue::CSS_NUMBER));
4508f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
4518f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m31(), CSSPrimitiveValue::CSS_NUMBER));
4528f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m32(), CSSPrimitiveValue::CSS_NUMBER));
4538f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m33(), CSSPrimitiveValue::CSS_NUMBER));
4548f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m34(), CSSPrimitiveValue::CSS_NUMBER));
4558f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
4568f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m41(), CSSPrimitiveValue::CSS_NUMBER));
4578f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m42(), CSSPrimitiveValue::CSS_NUMBER));
4588f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m43(), CSSPrimitiveValue::CSS_NUMBER));
4598f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        transformVal->append(CSSPrimitiveValue::create(transform.m44(), CSSPrimitiveValue::CSS_NUMBER));
4608f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    }
4618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
4638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    list->append(transformVal);
4648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return list.release();
4668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
468635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectstatic PassRefPtr<CSSValue> getDelayValue(const AnimationList* animList)
469635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
470635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
471635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    if (animList) {
472635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        for (size_t i = 0; i < animList->size(); ++i)
473635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            list->append(CSSPrimitiveValue::create(animList->animation(i)->delay(), CSSPrimitiveValue::CSS_S));
474635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    } else {
475635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        // Note that initialAnimationDelay() is used for both transitions and animations
476635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        list->append(CSSPrimitiveValue::create(Animation::initialAnimationDelay(), CSSPrimitiveValue::CSS_S));
477635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    }
478635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    return list.release();
479635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
480635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
481635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectstatic PassRefPtr<CSSValue> getDurationValue(const AnimationList* animList)
482635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
483635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
484635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    if (animList) {
485635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        for (size_t i = 0; i < animList->size(); ++i)
486635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            list->append(CSSPrimitiveValue::create(animList->animation(i)->duration(), CSSPrimitiveValue::CSS_S));
487635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    } else {
488635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        // Note that initialAnimationDuration() is used for both transitions and animations
489635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        list->append(CSSPrimitiveValue::create(Animation::initialAnimationDuration(), CSSPrimitiveValue::CSS_S));
490635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    }
491635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    return list.release();
492635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
493635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
494635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectstatic PassRefPtr<CSSValue> getTimingFunctionValue(const AnimationList* animList)
495635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
496635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
497635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    if (animList) {
498635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        for (size_t i = 0; i < animList->size(); ++i) {
499635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            const TimingFunction& tf = animList->animation(i)->timingFunction();
500635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            list->append(CSSTimingFunctionValue::create(tf.x1(), tf.y1(), tf.x2(), tf.y2()));
501635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        }
502635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    } else {
503635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        // Note that initialAnimationTimingFunction() is used for both transitions and animations
504635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        const TimingFunction& tf = Animation::initialAnimationTimingFunction();
505635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        list->append(CSSTimingFunctionValue::create(tf.x1(), tf.y1(), tf.x2(), tf.y2()));
506635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    }
507635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    return list.release();
508635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
509635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
5108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectCSSComputedStyleDeclaration::CSSComputedStyleDeclaration(PassRefPtr<Node> n)
5118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    : m_node(n)
5128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
5138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectCSSComputedStyleDeclaration::~CSSComputedStyleDeclaration()
5168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
5178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectString CSSComputedStyleDeclaration::cssText() const
5208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
5218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    String result("");
5228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    for (unsigned i = 0; i < numComputedProperties; i++) {
5248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        if (i)
5258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            result += " ";
5268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        result += getPropertyName(static_cast<CSSPropertyID>(computedProperties[i]));
5278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        result += ": ";
5288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        result += getPropertyValue(computedProperties[i]);
5298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        result += ";";
5308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
5318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return result;
5338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid CSSComputedStyleDeclaration::setCssText(const String&, ExceptionCode& ec)
5368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
5378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ec = NO_MODIFICATION_ALLOWED_ERR;
5388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5405f1ab04193ad0130ca8204aadaceae083aca9881Feng Qianstatic int cssIdentifierForFontSizeKeyword(int keywordSize)
5415f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{
5425f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    ASSERT_ARG(keywordSize, keywordSize);
5435f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    ASSERT_ARG(keywordSize, keywordSize <= 8);
5445f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    return CSSValueXxSmall + keywordSize - 1;
5455f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian}
5465f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian
5475f1ab04193ad0130ca8204aadaceae083aca9881Feng QianPassRefPtr<CSSValue> CSSComputedStyleDeclaration::getFontSizeCSSValuePreferringKeyword() const
5485f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{
5495f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    Node* node = m_node.get();
5505f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    if (!node)
5515f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        return 0;
5525f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian
5535f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    node->document()->updateLayoutIgnorePendingStylesheets();
5545f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian
5555f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    RefPtr<RenderStyle> style = node->computedStyle();
5565f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    if (!style)
5575f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        return 0;
5585f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian
5595f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    if (int keywordSize = style->fontDescription().keywordSize())
5605f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        return CSSPrimitiveValue::createIdentifier(cssIdentifierForFontSizeKeyword(keywordSize));
5615f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian
5625f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    return CSSPrimitiveValue::create(style->fontDescription().computedPixelSize(), CSSPrimitiveValue::CSS_PX);
5635f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian}
5645f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian
565cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve BlockPassRefPtr<CSSValue> CSSComputedStyleDeclaration::valueForShadow(const ShadowData* shadow, int id) const
566cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block{
567cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    if (!shadow)
568cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block        return CSSPrimitiveValue::createIdentifier(CSSValueNone);
569cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block
570cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    CSSPropertyID propertyID = static_cast<CSSPropertyID>(id);
571cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block
572cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
573cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    for (const ShadowData* s = shadow; s; s = s->next) {
574cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block        RefPtr<CSSPrimitiveValue> x = CSSPrimitiveValue::create(s->x, CSSPrimitiveValue::CSS_PX);
575cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block        RefPtr<CSSPrimitiveValue> y = CSSPrimitiveValue::create(s->y, CSSPrimitiveValue::CSS_PX);
576cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block        RefPtr<CSSPrimitiveValue> blur = CSSPrimitiveValue::create(s->blur, CSSPrimitiveValue::CSS_PX);
577cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block        RefPtr<CSSPrimitiveValue> spread = propertyID == CSSPropertyTextShadow ? 0 : CSSPrimitiveValue::create(s->spread, CSSPrimitiveValue::CSS_PX);
578cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block        RefPtr<CSSPrimitiveValue> style = propertyID == CSSPropertyTextShadow || s->style == Normal ? 0 : CSSPrimitiveValue::createIdentifier(CSSValueInset);
579cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block        RefPtr<CSSPrimitiveValue> color = CSSPrimitiveValue::createColor(s->color.rgb());
580cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block        list->prepend(ShadowValue::create(x.release(), y.release(), blur.release(), spread.release(), style.release(), color.release()));
581cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    }
582cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    return list.release();
583cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block}
584cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block
5858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int propertyID) const
5868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
5878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return getPropertyCSSValue(propertyID, UpdateLayout);
5888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5905f1ab04193ad0130ca8204aadaceae083aca9881Feng Qianstatic int identifierForFamily(const AtomicString& family)
5915f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{
5925f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    DEFINE_STATIC_LOCAL(AtomicString, cursiveFamily, ("-webkit-cursive"));
5935f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    DEFINE_STATIC_LOCAL(AtomicString, fantasyFamily, ("-webkit-fantasy"));
5945f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    DEFINE_STATIC_LOCAL(AtomicString, monospaceFamily, ("-webkit-monospace"));
5955f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    DEFINE_STATIC_LOCAL(AtomicString, sansSerifFamily, ("-webkit-sans-serif"));
5965f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    DEFINE_STATIC_LOCAL(AtomicString, serifFamily, ("-webkit-serif"));
5975f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    if (family == cursiveFamily)
5985f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        return CSSValueCursive;
5995f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    if (family == fantasyFamily)
6005f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        return CSSValueFantasy;
6015f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    if (family == monospaceFamily)
6025f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        return CSSValueMonospace;
6035f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    if (family == sansSerifFamily)
6045f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        return CSSValueSansSerif;
6055f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    if (family == serifFamily)
6065f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        return CSSValueSerif;
6075f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    return 0;
6085f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian}
6095f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian
6105f1ab04193ad0130ca8204aadaceae083aca9881Feng Qianstatic PassRefPtr<CSSPrimitiveValue> valueForFamily(const AtomicString& family)
6115f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{
6125f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    if (int familyIdentifier = identifierForFamily(family))
6135f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        return CSSPrimitiveValue::createIdentifier(familyIdentifier);
6145f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    return CSSPrimitiveValue::create(family.string(), CSSPrimitiveValue::CSS_STRING);
6155f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian}
6165f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian
6170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstatic PassRefPtr<CSSValue> renderTextDecorationFlagsToCSSValue(int textDecoration)
6180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
6190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
6200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    if (textDecoration & UNDERLINE)
6210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        list->append(CSSPrimitiveValue::createIdentifier(CSSValueUnderline));
6220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    if (textDecoration & OVERLINE)
6230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        list->append(CSSPrimitiveValue::createIdentifier(CSSValueOverline));
6240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    if (textDecoration & LINE_THROUGH)
6250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        list->append(CSSPrimitiveValue::createIdentifier(CSSValueLineThrough));
6260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    if (textDecoration & BLINK)
6270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        list->append(CSSPrimitiveValue::createIdentifier(CSSValueBlink));
6280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
6290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    if (!list->length())
6300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        return CSSPrimitiveValue::createIdentifier(CSSValueNone);
6310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    return list;
6320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
6330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
634231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic PassRefPtr<CSSValue> fillRepeatToCSSValue(EFillRepeat xRepeat, EFillRepeat yRepeat)
635231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{
636231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    // For backwards compatibility, if both values are equal, just return one of them. And
637231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    // if the two values are equivalent to repeat-x or repeat-y, just return the shorthand.
638231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    if (xRepeat == yRepeat)
639231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        return CSSPrimitiveValue::create(xRepeat);
640231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    if (xRepeat == CSSValueRepeat && yRepeat == CSSValueNoRepeat)
641231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        return CSSPrimitiveValue::createIdentifier(CSSValueRepeatX);
642231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    if (xRepeat == CSSValueNoRepeat && yRepeat == CSSValueRepeat)
643231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        return CSSPrimitiveValue::createIdentifier(CSSValueRepeatY);
644231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
645231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
646231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    list->append(CSSPrimitiveValue::create(xRepeat));
647231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    list->append(CSSPrimitiveValue::create(yRepeat));
648231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    return list.release();
649231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block}
650231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
651231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void logUnimplementedPropertyID(int propertyID)
652231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{
653231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    DEFINE_STATIC_LOCAL(HashSet<int>, propertyIDSet, ());
654231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    if (!propertyIDSet.add(propertyID).second)
655231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        return;
656231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
657231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    LOG_ERROR("WebKit does not yet implement getComputedStyle for '%s'.", getPropertyName(static_cast<CSSPropertyID>(propertyID)));
658231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block}
659231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
6608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int propertyID, EUpdateLayout updateLayout) const
6618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
6628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Node* node = m_node.get();
6638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (!node)
6648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return 0;
6658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // Make sure our layout is up to date before we allow a query on these attributes.
6678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (updateLayout)
6688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        node->document()->updateLayoutIgnorePendingStylesheets();
6698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RenderObject* renderer = node->renderer();
6718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6728f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    RefPtr<RenderStyle> style;
6738f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    if (renderer && hasCompositedLayer(renderer) && AnimationController::supportsAcceleratedAnimationOfProperty(static_cast<CSSPropertyID>(propertyID)))
6748f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        style = renderer->animation()->getAnimatedStyleForRenderer(renderer);
6758f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    else
6768f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian       style = node->computedStyle();
6778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (!style)
6788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return 0;
6798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef ANDROID_LAYOUT
6818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    const Settings * settings = node->document()->frame() ? node->document()->frame()->settings() : 0;
6828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
6838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    switch (static_cast<CSSPropertyID>(propertyID)) {
6858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyInvalid:
6868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            break;
6878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBackgroundColor:
6898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createColor(style->backgroundColor().rgb());
6908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBackgroundImage:
6918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->backgroundImage())
6928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return style->backgroundImage()->cssValue();
6938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createIdentifier(CSSValueNone);
694cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block        case CSSPropertyBackgroundSize:
695cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block        case CSSPropertyWebkitBackgroundSize: {
696231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block            EFillSizeType size = style->backgroundSizeType();
697231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block            if (size == Contain)
698231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block                return CSSPrimitiveValue::createIdentifier(CSSValueContain);
699231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block            if (size == Cover)
700231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block                return CSSPrimitiveValue::createIdentifier(CSSValueCover);
7018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
702231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block            list->append(CSSPrimitiveValue::create(style->backgroundSizeLength().width()));
703231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block            list->append(CSSPrimitiveValue::create(style->backgroundSizeLength().height()));
7048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return list.release();
7058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
7068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBackgroundRepeat:
707231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block            return fillRepeatToCSSValue(style->backgroundRepeatX(), style->backgroundRepeatY());
7088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBackgroundComposite:
7098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->backgroundComposite());
7108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBackgroundAttachment:
7110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            return CSSPrimitiveValue::create(style->backgroundAttachment());
7120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        case CSSPropertyBackgroundClip:
7130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        case CSSPropertyBackgroundOrigin:
7148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBackgroundClip:
7158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBackgroundOrigin: {
7160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            EFillBox box = (propertyID == CSSPropertyWebkitBackgroundClip || propertyID == CSSPropertyBackgroundClip) ? style->backgroundClip() : style->backgroundOrigin();
7178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(box);
7188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
7198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBackgroundPosition: {
7208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
7218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            list->append(CSSPrimitiveValue::create(style->backgroundXPosition()));
7238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            list->append(CSSPrimitiveValue::create(style->backgroundYPosition()));
7248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return list.release();
7268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
7278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBackgroundPositionX:
7288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->backgroundXPosition());
7298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBackgroundPositionY:
7308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->backgroundYPosition());
7318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderCollapse:
7328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->borderCollapse())
7338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueCollapse);
7348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createIdentifier(CSSValueSeparate);
7358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderSpacing: {
7368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
7378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            list->append(CSSPrimitiveValue::create(style->horizontalBorderSpacing(), CSSPrimitiveValue::CSS_PX));
7388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            list->append(CSSPrimitiveValue::create(style->verticalBorderSpacing(), CSSPrimitiveValue::CSS_PX));
7398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return list.release();
7408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
7418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBorderHorizontalSpacing:
7428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->horizontalBorderSpacing(), CSSPrimitiveValue::CSS_PX);
7438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBorderVerticalSpacing:
7448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->verticalBorderSpacing(), CSSPrimitiveValue::CSS_PX);
7458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderTopColor:
7468f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return currentColorOrValidColor(style.get(), style->borderTopColor());
7478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderRightColor:
7488f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return currentColorOrValidColor(style.get(), style->borderRightColor());
7498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderBottomColor:
7508f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return currentColorOrValidColor(style.get(), style->borderBottomColor());
7518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderLeftColor:
7528f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return currentColorOrValidColor(style.get(), style->borderLeftColor());
7538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderTopStyle:
7548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->borderTopStyle());
7558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderRightStyle:
7568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->borderRightStyle());
7578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderBottomStyle:
7588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->borderBottomStyle());
7598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderLeftStyle:
7608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->borderLeftStyle());
7618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderTopWidth:
7628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->borderTopWidth(), CSSPrimitiveValue::CSS_PX);
7638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderRightWidth:
7648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->borderRightWidth(), CSSPrimitiveValue::CSS_PX);
7658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderBottomWidth:
7668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->borderBottomWidth(), CSSPrimitiveValue::CSS_PX);
7678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderLeftWidth:
7688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->borderLeftWidth(), CSSPrimitiveValue::CSS_PX);
7698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBottom:
7708f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return getPositionOffsetValue(style.get(), CSSPropertyBottom);
7718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBoxAlign:
7728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->boxAlign());
7738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBoxDirection:
7748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->boxDirection());
7758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBoxFlex:
7768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->boxFlex(), CSSPrimitiveValue::CSS_NUMBER);
7778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBoxFlexGroup:
7788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->boxFlexGroup(), CSSPrimitiveValue::CSS_NUMBER);
7798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBoxLines:
7808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->boxLines());
7818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBoxOrdinalGroup:
7828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->boxOrdinalGroup(), CSSPrimitiveValue::CSS_NUMBER);
7838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBoxOrient:
7848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->boxOrient());
7858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBoxPack: {
7868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            EBoxAlignment boxPack = style->boxPack();
7878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            ASSERT(boxPack != BSTRETCH);
7888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            ASSERT(boxPack != BBASELINE);
7898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (boxPack == BJUSTIFY || boxPack== BBASELINE)
7908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return 0;
7918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(boxPack);
7928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
7938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBoxReflect:
7948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return valueForReflection(style->boxReflect());
795231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        case CSSPropertyWebkitBoxShadow:
796cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block            return valueForShadow(style->boxShadow(), propertyID);
7978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyCaptionSide:
7988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->captionSide());
7998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyClear:
8008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->clear());
8018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyColor:
8028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createColor(style->color().rgb());
8038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitColumnCount:
8048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->hasAutoColumnCount())
8058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
8068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->columnCount(), CSSPrimitiveValue::CSS_NUMBER);
8078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitColumnGap:
8088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->hasNormalColumnGap())
8098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
8108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->columnGap(), CSSPrimitiveValue::CSS_NUMBER);
8118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitColumnRuleColor:
8128f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return currentColorOrValidColor(style.get(), style->columnRuleColor());
8138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitColumnRuleStyle:
8148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->columnRuleStyle());
8158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitColumnRuleWidth:
8168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->columnRuleWidth(), CSSPrimitiveValue::CSS_PX);
8178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitColumnBreakAfter:
8188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->columnBreakAfter());
8198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitColumnBreakBefore:
8208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->columnBreakBefore());
8218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitColumnBreakInside:
8228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->columnBreakInside());
8238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitColumnWidth:
8248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->hasAutoColumnWidth())
8258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
8268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->columnWidth(), CSSPrimitiveValue::CSS_NUMBER);
8278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyCursor: {
8288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            RefPtr<CSSValueList> list;
8298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            CursorList* cursors = style->cursors();
8308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (cursors && cursors->size() > 0) {
8318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                list = CSSValueList::createCommaSeparated();
8328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                for (unsigned i = 0; i < cursors->size(); ++i)
8338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    list->append(CSSPrimitiveValue::create((*cursors)[i].cursorImage->url(), CSSPrimitiveValue::CSS_URI));
8348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            }
8358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            RefPtr<CSSValue> value = CSSPrimitiveValue::create(style->cursor());
8368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (list) {
8378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                list->append(value);
8388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return list.release();
8398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            }
8408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return value.release();
8418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
8428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyDirection:
8438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->direction());
8448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyDisplay:
8458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->display());
8468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyEmptyCells:
8478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->emptyCells());
8488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyFloat:
8498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef ANDROID_LAYOUT
8508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (settings && settings->layoutAlgorithm() == Settings::kLayoutSSR)
8518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueNone);
8528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
8538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->floating());
8545f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        case CSSPropertyFontFamily: {
8555f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian            const FontFamily& firstFamily = style->fontDescription().family();
8565f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian            if (!firstFamily.next())
8575f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian                return valueForFamily(firstFamily.family());
8585f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian            RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
8595f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian            for (const FontFamily* family = &firstFamily; family; family = family->next())
8605f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian                list->append(valueForFamily(family->family()));
8615f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian            return list.release();
8625f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        }
8638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyFontSize:
8648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->fontDescription().computedPixelSize(), CSSPrimitiveValue::CSS_PX);
8658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBinding:
8668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            break;
8678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyFontStyle:
8688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->fontDescription().italic())
8698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueItalic);
8708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
8718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyFontVariant:
8728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->fontDescription().smallCaps())
8738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueSmallCaps);
8748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
8758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyFontWeight:
8768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            switch (style->fontDescription().weight()) {
8778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case FontWeight100:
8788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValue100);
8798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case FontWeight200:
8808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValue200);
8818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case FontWeight300:
8828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValue300);
8838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case FontWeightNormal:
8848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
8858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case FontWeight500:
8868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValue500);
8878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case FontWeight600:
8888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValue600);
8898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case FontWeightBold:
8908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValueBold);
8918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case FontWeight800:
8928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValue800);
8938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case FontWeight900:
8948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValue900);
8958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            }
8968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            ASSERT_NOT_REACHED();
8978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
8988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyHeight:
8998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (renderer)
9008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::create(sizingBox(renderer).height(), CSSPrimitiveValue::CSS_PX);
9018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->height());
9028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitHighlight:
9038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->highlight() == nullAtom)
9048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueNone);
9058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->highlight(), CSSPrimitiveValue::CSS_STRING);
9068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBorderFit:
9078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->borderFit() == BorderFitBorder)
9088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueBorder);
9098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createIdentifier(CSSValueLines);
9108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyLeft:
9118f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return getPositionOffsetValue(style.get(), CSSPropertyLeft);
9128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyLetterSpacing:
9138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (!style->letterSpacing())
9148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
9158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->letterSpacing(), CSSPrimitiveValue::CSS_PX);
9168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitLineClamp:
917643ca7872b450ea4efacab6188849e5aac2ba161Steve Block            if (style->lineClamp().isNone())
9188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueNone);
919643ca7872b450ea4efacab6188849e5aac2ba161Steve Block            return CSSPrimitiveValue::create(style->lineClamp().value(), style->lineClamp().isPercentage() ? CSSPrimitiveValue::CSS_PERCENTAGE : CSSPrimitiveValue::CSS_NUMBER);
9208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyLineHeight: {
9218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            Length length = style->lineHeight();
9228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (length.isNegative())
9238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
9248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (length.isPercent())
9258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                // This is imperfect, because it doesn't include the zoom factor and the real computation
9268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                // for how high to be in pixels does include things like minimum font size and the zoom factor.
9278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                // On the other hand, since font-size doesn't include the zoom factor, we really can't do
9288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                // that here either.
929d0825bca7fe65beaee391d30da42e937db621564Steve Block                return CSSPrimitiveValue::create(static_cast<int>(length.percent() * style->fontDescription().specifiedSize()) / 100, CSSPrimitiveValue::CSS_PX);
9308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(length.value(), CSSPrimitiveValue::CSS_PX);
9318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
9328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyListStyleImage:
9338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->listStyleImage())
9348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return style->listStyleImage()->cssValue();
9358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createIdentifier(CSSValueNone);
9368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyListStylePosition:
9378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->listStylePosition());
9388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyListStyleType:
9398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->listStyleType());
9408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyMarginTop:
941635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            if (renderer && renderer->isBox())
9428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                // FIXME: Supposed to return the percentage if percentage was specified.
943635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                return CSSPrimitiveValue::create(toRenderBox(renderer)->marginTop(), CSSPrimitiveValue::CSS_PX);
9448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->marginTop());
9458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyMarginRight:
946635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            if (renderer && renderer->isBox())
9478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                // FIXME: Supposed to return the percentage if percentage was specified.
948635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                return CSSPrimitiveValue::create(toRenderBox(renderer)->marginRight(), CSSPrimitiveValue::CSS_PX);
9498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->marginRight());
9508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyMarginBottom:
951635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            if (renderer && renderer->isBox())
9528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                // FIXME: Supposed to return the percentage if percentage was specified.
953635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                return CSSPrimitiveValue::create(toRenderBox(renderer)->marginBottom(), CSSPrimitiveValue::CSS_PX);
9548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->marginBottom());
9558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyMarginLeft:
956635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            if (renderer && renderer->isBox())
9578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                // FIXME: Supposed to return the percentage if percentage was specified.
958635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                return CSSPrimitiveValue::create(toRenderBox(renderer)->marginLeft(), CSSPrimitiveValue::CSS_PX);
9598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->marginLeft());
9608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMarqueeDirection:
9618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->marqueeDirection());
9628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMarqueeIncrement:
9638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->marqueeIncrement());
9648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMarqueeRepetition:
9658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->marqueeLoopCount() < 0)
9668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueInfinite);
9678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->marqueeLoopCount(), CSSPrimitiveValue::CSS_NUMBER);
9688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMarqueeStyle:
9698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->marqueeBehavior());
9708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMaskImage:
9718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->maskImage())
9728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return style->maskImage()->cssValue();
9738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createIdentifier(CSSValueNone);
9748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMaskSize: {
9758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
9768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            list->append(CSSPrimitiveValue::create(style->maskSize().width()));
9778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            list->append(CSSPrimitiveValue::create(style->maskSize().height()));
9788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return list.release();
9798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
9808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMaskRepeat:
981231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block            return fillRepeatToCSSValue(style->maskRepeatX(), style->maskRepeatY());
9828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMaskAttachment:
9830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            return CSSPrimitiveValue::create(style->maskAttachment());
9848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMaskComposite:
9858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->maskComposite());
9868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMaskClip:
9878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMaskOrigin: {
9888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            EFillBox box = (propertyID == CSSPropertyWebkitMaskClip ? style->maskClip() : style->maskOrigin());
9898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(box);
9908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
9918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMaskPosition: {
9928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
9938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            list->append(CSSPrimitiveValue::create(style->maskXPosition()));
9958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            list->append(CSSPrimitiveValue::create(style->maskYPosition()));
9968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return list.release();
9988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
9998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMaskPositionX:
10008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->maskXPosition());
10018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMaskPositionY:
10028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->maskYPosition());
10038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitUserModify:
10048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->userModify());
10058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyMaxHeight: {
10068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            const Length& maxHeight = style->maxHeight();
10078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (maxHeight.isFixed() && maxHeight.value() == undefinedLength)
10088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueNone);
10098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(maxHeight);
10108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
10118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyMaxWidth: {
10128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            const Length& maxWidth = style->maxWidth();
10138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (maxWidth.isFixed() && maxWidth.value() == undefinedLength)
10148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueNone);
10158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(maxWidth);
10168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
10178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyMinHeight:
10188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->minHeight());
10198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyMinWidth:
10208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->minWidth());
10218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyOpacity:
10228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->opacity(), CSSPrimitiveValue::CSS_NUMBER);
10238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyOrphans:
10248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->orphans(), CSSPrimitiveValue::CSS_NUMBER);
10258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyOutlineColor:
10268f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return currentColorOrValidColor(style.get(), style->outlineColor());
10278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyOutlineStyle:
10288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->outlineStyleIsAuto())
10298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
10308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->outlineStyle());
10318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyOutlineWidth:
10328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->outlineWidth(), CSSPrimitiveValue::CSS_PX);
10338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyOverflow:
10348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(max(style->overflowX(), style->overflowY()));
10358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyOverflowX:
10368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->overflowX());
10378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyOverflowY:
10388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef ANDROID_LAYOUT
10398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (settings && settings->layoutAlgorithm() == Settings::kLayoutSSR)
10408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueVisible);
10418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
10428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->overflowY());
10438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyPaddingTop:
1044635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            if (renderer && renderer->isBox())
1045635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                return CSSPrimitiveValue::create(toRenderBox(renderer)->paddingTop(false), CSSPrimitiveValue::CSS_PX);
10468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->paddingTop());
10478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyPaddingRight:
1048635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            if (renderer && renderer->isBox())
1049635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                return CSSPrimitiveValue::create(toRenderBox(renderer)->paddingRight(false), CSSPrimitiveValue::CSS_PX);
10508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->paddingRight());
10518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyPaddingBottom:
1052635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            if (renderer && renderer->isBox())
1053635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                return CSSPrimitiveValue::create(toRenderBox(renderer)->paddingBottom(false), CSSPrimitiveValue::CSS_PX);
10548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->paddingBottom());
10558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyPaddingLeft:
1056635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            if (renderer && renderer->isBox())
1057635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                return CSSPrimitiveValue::create(toRenderBox(renderer)->paddingLeft(false), CSSPrimitiveValue::CSS_PX);
10588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->paddingLeft());
10598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyPageBreakAfter:
10608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->pageBreakAfter());
10618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyPageBreakBefore:
10628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->pageBreakBefore());
10638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyPageBreakInside: {
10648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            EPageBreak pageBreak = style->pageBreakInside();
10658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            ASSERT(pageBreak != PBALWAYS);
10668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (pageBreak == PBALWAYS)
10678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return 0;
10688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->pageBreakInside());
10698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
10708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyPosition:
10718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef ANDROID_LAYOUT
10728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (settings && settings->layoutAlgorithm() == Settings::kLayoutSSR)
10738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueStatic);
10748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
10758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->position());
10768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyRight:
10778f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return getPositionOffsetValue(style.get(), CSSPropertyRight);
10788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTableLayout:
10798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->tableLayout());
10808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextAlign:
10818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->textAlign());
10820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        case CSSPropertyTextDecoration:
10830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            return renderTextDecorationFlagsToCSSValue(style->textDecoration());
10840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        case CSSPropertyWebkitTextDecorationsInEffect:
10850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            return renderTextDecorationFlagsToCSSValue(style->textDecorationsInEffect());
10868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitTextFillColor:
10878f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return currentColorOrValidColor(style.get(), style->textFillColor());
10888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextIndent:
10898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->textIndent());
10908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextShadow:
1091cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block            return valueForShadow(style->textShadow(), propertyID);
1092231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        case CSSPropertyTextRendering:
1093231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block            return CSSPrimitiveValue::create(style->fontDescription().textRenderingMode());
10940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        case CSSPropertyTextOverflow:
10950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            if (style->textOverflow())
10960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                return CSSPrimitiveValue::createIdentifier(CSSValueEllipsis);
10970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            return CSSPrimitiveValue::createIdentifier(CSSValueClip);
10988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitTextSecurity:
10998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->textSecurity());
11008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitTextSizeAdjust:
11018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->textSizeAdjust())
11028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
11038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createIdentifier(CSSValueNone);
11048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitTextStrokeColor:
11058f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return currentColorOrValidColor(style.get(), style->textStrokeColor());
11068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitTextStrokeWidth:
11078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->textStrokeWidth(), CSSPrimitiveValue::CSS_PX);
11088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextTransform:
11098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->textTransform());
11108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTop:
11118f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return getPositionOffsetValue(style.get(), CSSPropertyTop);
11128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyUnicodeBidi:
11138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->unicodeBidi());
11148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyVerticalAlign:
11158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            switch (style->verticalAlign()) {
11168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case BASELINE:
11178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValueBaseline);
11188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case MIDDLE:
11198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValueMiddle);
11208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case SUB:
11218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValueSub);
11228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case SUPER:
11238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValueSuper);
11248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case TEXT_TOP:
11258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValueTextTop);
11268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case TEXT_BOTTOM:
11278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValueTextBottom);
11288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case TOP:
11298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValueTop);
11308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case BOTTOM:
11318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValueBottom);
11328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case BASELINE_MIDDLE:
11338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::createIdentifier(CSSValueWebkitBaselineMiddle);
11348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                case LENGTH:
11358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    return CSSPrimitiveValue::create(style->verticalAlignLength());
11368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            }
11378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            ASSERT_NOT_REACHED();
11388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return 0;
11398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyVisibility:
11408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef ANDROID_LAYOUT
11418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (settings && settings->layoutAlgorithm() == Settings::kLayoutSSR)
11428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueVisible);
11438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
11448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->visibility());
11458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWhiteSpace:
11468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef ANDROID_LAYOUT
11478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (settings && settings->layoutAlgorithm() == Settings::kLayoutSSR)
11488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                switch (style->whiteSpace()) {
11498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    case NORMAL:
11508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    case NOWRAP:
11518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    case KHTML_NOWRAP:
11528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                        return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
11538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    case PRE:
11548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    case PRE_WRAP:
11558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                        return CSSPrimitiveValue::createIdentifier(CSSValuePreWrap);
11568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    case PRE_LINE:
11578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                        return CSSPrimitiveValue::createIdentifier(CSSValuePreLine);
11588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                }
11598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            else
11608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
11618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->whiteSpace());
11628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWidows:
11638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->widows(), CSSPrimitiveValue::CSS_NUMBER);
11648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWidth:
11658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (renderer)
11668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::create(sizingBox(renderer).width(), CSSPrimitiveValue::CSS_PX);
11678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->width());
11688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWordBreak:
11698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->wordBreak());
11708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWordSpacing:
11718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->wordSpacing(), CSSPrimitiveValue::CSS_PX);
11728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWordWrap:
11738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->wordWrap());
11748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitLineBreak:
11758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->khtmlLineBreak());
11768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitNbspMode:
11778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->nbspMode());
11788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMatchNearestMailBlockquoteColor:
11798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->matchNearestMailBlockquoteColor());
11808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyResize:
11818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->resize());
1182231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        case CSSPropertyWebkitFontSmoothing:
1183231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block            return CSSPrimitiveValue::create(style->fontDescription().fontSmoothing());
11848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyZIndex:
11858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->hasAutoZIndex())
11868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
11878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->zIndex(), CSSPrimitiveValue::CSS_NUMBER);
11888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyZoom:
11898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->zoom(), CSSPrimitiveValue::CSS_NUMBER);
11908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBoxSizing:
11918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->boxSizing() == CONTENT_BOX)
11928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueContentBox);
11938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createIdentifier(CSSValueBorderBox);
11948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(DASHBOARD_SUPPORT)
11958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitDashboardRegion:
11968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        {
11978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            const Vector<StyleDashboardRegion>& regions = style->dashboardRegions();
11988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            unsigned count = regions.size();
11998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (count == 1 && regions[0].type == StyleDashboardRegion::None)
12008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueNone);
12018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
12028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            RefPtr<DashboardRegion> firstRegion;
12038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            DashboardRegion* previousRegion = 0;
12048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            for (unsigned i = 0; i < count; i++) {
12058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                RefPtr<DashboardRegion> region = DashboardRegion::create();
12068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                StyleDashboardRegion styleRegion = regions[i];
12078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
12088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                region->m_label = styleRegion.label;
12098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                LengthBox offset = styleRegion.offset;
12108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                region->setTop(CSSPrimitiveValue::create(offset.top().value(), CSSPrimitiveValue::CSS_PX));
12118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                region->setRight(CSSPrimitiveValue::create(offset.right().value(), CSSPrimitiveValue::CSS_PX));
12128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                region->setBottom(CSSPrimitiveValue::create(offset.bottom().value(), CSSPrimitiveValue::CSS_PX));
12138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                region->setLeft(CSSPrimitiveValue::create(offset.left().value(), CSSPrimitiveValue::CSS_PX));
12148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                region->m_isRectangle = (styleRegion.type == StyleDashboardRegion::Rectangle);
12158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                region->m_isCircle = (styleRegion.type == StyleDashboardRegion::Circle);
12168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
12178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                if (previousRegion)
12188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    previousRegion->m_next = region;
12198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                else
12208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    firstRegion = region;
12218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                previousRegion = region.get();
12228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            }
12238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(firstRegion.release());
12248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
12258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1226635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        case CSSPropertyWebkitAnimationDelay:
1227635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            return getDelayValue(style->animations());
1228635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        case CSSPropertyWebkitAnimationDirection: {
1229635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
1230635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            const AnimationList* t = style->animations();
1231635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            if (t) {
1232635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                for (size_t i = 0; i < t->size(); ++i) {
1233635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                    if (t->animation(i)->direction())
1234635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                        list->append(CSSPrimitiveValue::createIdentifier(CSSValueAlternate));
1235635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                    else
1236635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                        list->append(CSSPrimitiveValue::createIdentifier(CSSValueNormal));
1237635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                }
1238635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            } else
1239635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                list->append(CSSPrimitiveValue::createIdentifier(CSSValueNormal));
1240635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            return list.release();
1241635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        }
1242635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        case CSSPropertyWebkitAnimationDuration:
1243635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            return getDurationValue(style->animations());
1244635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        case CSSPropertyWebkitAnimationIterationCount: {
1245635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
1246635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            const AnimationList* t = style->animations();
1247635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            if (t) {
1248635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                for (size_t i = 0; i < t->size(); ++i) {
1249635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                    int iterationCount = t->animation(i)->iterationCount();
12508f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian                    if (iterationCount == Animation::IterationCountInfinite)
1251635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                        list->append(CSSPrimitiveValue::createIdentifier(CSSValueInfinite));
1252635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                    else
1253635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                        list->append(CSSPrimitiveValue::create(iterationCount, CSSPrimitiveValue::CSS_NUMBER));
1254635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                }
1255635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            } else
1256635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                list->append(CSSPrimitiveValue::create(Animation::initialAnimationIterationCount(), CSSPrimitiveValue::CSS_NUMBER));
1257635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            return list.release();
1258635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        }
1259635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        case CSSPropertyWebkitAnimationName: {
1260635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
1261635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            const AnimationList* t = style->animations();
1262635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            if (t) {
1263635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                for (size_t i = 0; i < t->size(); ++i) {
1264635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                    list->append(CSSPrimitiveValue::create(t->animation(i)->name(), CSSPrimitiveValue::CSS_STRING));
1265635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                }
1266635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            } else
1267635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                list->append(CSSPrimitiveValue::createIdentifier(CSSValueNone));
1268635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            return list.release();
1269635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        }
12700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        case CSSPropertyWebkitAnimationPlayState: {
12710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
12720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            const AnimationList* t = style->animations();
12730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            if (t) {
12740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                for (size_t i = 0; i < t->size(); ++i) {
12750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                    int prop = t->animation(i)->playState();
12760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                    if (prop == AnimPlayStatePlaying)
12770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                        list->append(CSSPrimitiveValue::createIdentifier(CSSValueRunning));
12780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                    else
12790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                        list->append(CSSPrimitiveValue::createIdentifier(CSSValuePaused));
12800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                }
12810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            } else
12820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                list->append(CSSPrimitiveValue::createIdentifier(CSSValueRunning));
12830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            return list.release();
12840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        }
1285635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        case CSSPropertyWebkitAnimationTimingFunction:
1286635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            return getTimingFunctionValue(style->animations());
12878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitAppearance:
12888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->appearance());
12898f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertyWebkitBackfaceVisibility:
12908f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return CSSPrimitiveValue::createIdentifier((style->backfaceVisibility() == BackfaceVisibilityHidden) ? CSSValueHidden : CSSValueVisible);
12918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBorderImage:
12928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return valueForNinePieceImage(style->borderImage());
12938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMaskBoxImage:
12948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return valueForNinePieceImage(style->maskBoxImage());
12958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitFontSizeDelta:
12968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            // Not a real style property -- used by the editing engine -- so has no computed value.
12978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            break;
12988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMarginBottomCollapse:
12998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->marginBottomCollapse());
13008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMarginTopCollapse:
13018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->marginTopCollapse());
13028f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertyWebkitPerspective:
13038f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            if (!style->hasPerspective())
13048f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian                return CSSPrimitiveValue::createIdentifier(CSSValueNone);
13058f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return CSSPrimitiveValue::create(style->perspective(), CSSPrimitiveValue::CSS_NUMBER);
13068f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertyWebkitPerspectiveOrigin: {
13078f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
13088f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            if (renderer) {
13098f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian                IntRect box = sizingBox(renderer);
13108f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian                list->append(CSSPrimitiveValue::create(style->perspectiveOriginX().calcMinValue(box.width()), CSSPrimitiveValue::CSS_PX));
13118f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian                list->append(CSSPrimitiveValue::create(style->perspectiveOriginY().calcMinValue(box.height()), CSSPrimitiveValue::CSS_PX));
13128f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            }
13138f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            else {
13148f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian                list->append(CSSPrimitiveValue::create(style->perspectiveOriginX()));
13158f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian                list->append(CSSPrimitiveValue::create(style->perspectiveOriginY()));
13168f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            }
13178f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return list.release();
13188f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        }
13198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitRtlOrdering:
13208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (style->visuallyOrdered())
13218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                return CSSPrimitiveValue::createIdentifier(CSSValueVisual);
13228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createIdentifier(CSSValueLogical);
13238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitUserDrag:
13248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->userDrag());
13258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitUserSelect:
13268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::create(style->userSelect());
13270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        case CSSPropertyBorderBottomLeftRadius:
13288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return getBorderRadiusCornerValue(style->borderBottomLeftRadius());
13290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        case CSSPropertyBorderBottomRightRadius:
13308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return getBorderRadiusCornerValue(style->borderBottomRightRadius());
13310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        case CSSPropertyBorderTopLeftRadius:
13328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return getBorderRadiusCornerValue(style->borderTopLeftRadius());
13330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        case CSSPropertyBorderTopRightRadius:
13348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return getBorderRadiusCornerValue(style->borderTopRightRadius());
13355f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        case CSSPropertyClip: {
13365f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian            if (!style->hasClip())
13375f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian                return CSSPrimitiveValue::createIdentifier(CSSValueAuto);
13385f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian            RefPtr<Rect> rect = Rect::create();
13395f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian            rect->setTop(CSSPrimitiveValue::create(style->clip().top().value(), CSSPrimitiveValue::CSS_PX));
13405f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian            rect->setRight(CSSPrimitiveValue::create(style->clip().right().value(), CSSPrimitiveValue::CSS_PX));
13415f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian            rect->setBottom(CSSPrimitiveValue::create(style->clip().bottom().value(), CSSPrimitiveValue::CSS_PX));
13425f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian            rect->setLeft(CSSPrimitiveValue::create(style->clip().left().value(), CSSPrimitiveValue::CSS_PX));
13435f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian            return CSSPrimitiveValue::create(rect.release());
13448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
13458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitTransform:
13468f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return computedTransform(renderer, style.get());
1347635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        case CSSPropertyWebkitTransformOrigin: {
1348635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
13498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (renderer) {
13508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                IntRect box = sizingBox(renderer);
1351635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                list->append(CSSPrimitiveValue::create(style->transformOriginX().calcMinValue(box.width()), CSSPrimitiveValue::CSS_PX));
1352635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                list->append(CSSPrimitiveValue::create(style->transformOriginY().calcMinValue(box.height()), CSSPrimitiveValue::CSS_PX));
13538f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian                if (style->transformOriginZ() != 0)
13548f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian                    list->append(CSSPrimitiveValue::create(style->transformOriginZ(), CSSPrimitiveValue::CSS_PX));
1355635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            } else {
1356635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                list->append(CSSPrimitiveValue::create(style->transformOriginX()));
1357635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                list->append(CSSPrimitiveValue::create(style->transformOriginY()));
13588f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian                if (style->transformOriginZ() != 0)
13598f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian                    list->append(CSSPrimitiveValue::create(style->transformOriginZ(), CSSPrimitiveValue::CSS_PX));
13608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            }
13618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return list.release();
13628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
13638f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertyWebkitTransformStyle:
13648f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return CSSPrimitiveValue::createIdentifier((style->transformStyle3D() == TransformStyle3DPreserve3D) ? CSSValuePreserve3d : CSSValueFlat);
1365635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        case CSSPropertyWebkitTransitionDelay:
1366635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            return getDelayValue(style->transitions());
1367635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        case CSSPropertyWebkitTransitionDuration:
1368635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            return getDurationValue(style->transitions());
13698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitTransitionProperty: {
13708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
13718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            const AnimationList* t = style->transitions();
13728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (t) {
13738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                for (size_t i = 0; i < t->size(); ++i) {
13748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    int prop = t->animation(i)->property();
1375635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                    RefPtr<CSSValue> propertyValue;
13768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    if (prop == cAnimateNone)
1377635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                        propertyValue = CSSPrimitiveValue::createIdentifier(CSSValueNone);
13788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    else if (prop == cAnimateAll)
1379635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                        propertyValue = CSSPrimitiveValue::createIdentifier(CSSValueAll);
13808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                    else
1381635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                        propertyValue = CSSPrimitiveValue::create(getPropertyName(static_cast<CSSPropertyID>(prop)), CSSPrimitiveValue::CSS_STRING);
1382635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                    list->append(propertyValue);
13838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                }
1384635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            } else
1385635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project                list->append(CSSPrimitiveValue::createIdentifier(CSSValueAll));
13868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return list.release();
13878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
1388635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        case CSSPropertyWebkitTransitionTimingFunction:
1389635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            return getTimingFunctionValue(style->transitions());
1390635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        case CSSPropertyPointerEvents:
1391635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            return CSSPrimitiveValue::create(style->pointerEvents());
1392643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        case CSSPropertyWebkitColorCorrection:
1393643ca7872b450ea4efacab6188849e5aac2ba161Steve Block            return CSSPrimitiveValue::create(style->colorSpace());
13948f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
13958f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        /* Shorthand properties, currently not supported see bug 13658*/
13968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBackground:
13978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorder:
13988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderBottom:
13998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderColor:
14008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderLeft:
14010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        case CSSPropertyBorderRadius:
14028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderRight:
14038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderStyle:
14048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderTop:
14058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyBorderWidth:
14068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyFont:
14078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyListStyle:
14088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyMargin:
14098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyPadding:
14108f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            break;
14118f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
14128f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        /* Unimplemented CSS 3 properties (including CSS3 shorthand properties) */
14138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextLineThrough:
14148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextLineThroughColor:
14158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextLineThroughMode:
14168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextLineThroughStyle:
14178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextLineThroughWidth:
14188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextOverline:
14198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextOverlineColor:
14208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextOverlineMode:
14218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextOverlineStyle:
14228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextOverlineWidth:
14238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextUnderline:
14248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextUnderlineColor:
14258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextUnderlineMode:
14268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextUnderlineStyle:
14278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyTextUnderlineWidth:
14288f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            break;
14298f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
14308f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        /* Unimplemented @font-face properties */
14318f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertyFontStretch:
14328f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertySrc:
14338f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertyUnicodeRange:
14348f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            break;
14358f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
14368f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        /* Other unimplemented properties */
14378f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertyContent: // FIXME: needs implementation, bug 23668
14388f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertyCounterIncrement:
14398f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertyCounterReset:
14408f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertyOutline: // FIXME: needs implementation
14418f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertyOutlineOffset: // FIXME: needs implementation
14428f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertyPage: // for @page
14438f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertyQuotes: // FIXME: needs implementation
14448f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        case CSSPropertySize: // for @page
14458f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            break;
14468f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
14478f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        /* Unimplemented -webkit- properties */
14488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitAnimation:
14498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitBorderRadius:
14508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitColumns:
14518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitColumnRule:
14528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMarginCollapse:
14538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMarginStart:
14548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMarquee:
14558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMarqueeSpeed:
14568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitMask:
14578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitPaddingStart:
14585f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        case CSSPropertyWebkitPerspectiveOriginX:
14595f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        case CSSPropertyWebkitPerspectiveOriginY:
14608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitTextStroke:
14615f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        case CSSPropertyWebkitTransformOriginX:
14625f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        case CSSPropertyWebkitTransformOriginY:
14635f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian        case CSSPropertyWebkitTransformOriginZ:
14648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitTransition:
14658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitVariableDeclarationBlock:
14668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            break;
14678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR
14688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CSSPropertyWebkitTapHighlightColor:
14698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return CSSPrimitiveValue::createColor(style->tapHighlightColor().rgb());
14708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
14718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG)
14728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // FIXME: This default case ruins the point of using an enum for
14738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // properties -- it prevents us from getting a warning when we
14748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        // forget to list a property above.
14758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        default:
14768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return getSVGPropertyCSSValue(propertyID, DoNotUpdateLayout);
14778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
14788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
14798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1480231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    logUnimplementedPropertyID(propertyID);
14818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return 0;
14828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
14838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
14848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectString CSSComputedStyleDeclaration::getPropertyValue(int propertyID) const
14858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
14868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<CSSValue> value = getPropertyCSSValue(propertyID);
14878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (value)
14888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return value->cssText();
14898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return "";
14908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
14918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
14928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool CSSComputedStyleDeclaration::getPropertyPriority(int /*propertyID*/) const
14938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
14948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // All computed styles have a priority of false (not "important").
14958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return false;
14968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
14978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
14988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectString CSSComputedStyleDeclaration::removeProperty(int /*propertyID*/, ExceptionCode& ec)
14998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
15008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ec = NO_MODIFICATION_ALLOWED_ERR;
15018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return String();
15028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
15038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
15048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid CSSComputedStyleDeclaration::setProperty(int /*propertyID*/, const String& /*value*/, bool /*important*/, ExceptionCode& ec)
15058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
15068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ec = NO_MODIFICATION_ALLOWED_ERR;
15078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
15088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
15098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectunsigned CSSComputedStyleDeclaration::length() const
15108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
15118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Node* node = m_node.get();
15128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (!node)
15138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return 0;
15148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
15158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RenderStyle* style = node->computedStyle();
15168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (!style)
15178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return 0;
15188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
15198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return numComputedProperties;
15208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
15218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
15228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectString CSSComputedStyleDeclaration::item(unsigned i) const
15238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
15248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (i >= length())
1525643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        return "";
15268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
15278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return getPropertyName(static_cast<CSSPropertyID>(computedProperties[i]));
15288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
15298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
15300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochbool CSSComputedStyleDeclaration::cssPropertyMatches(const CSSProperty* property) const
15318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
15320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    if (property->id() == CSSPropertyFontSize && property->value()->isPrimitiveValue() && m_node) {
15330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        m_node->document()->updateLayoutIgnorePendingStylesheets();
15340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        RenderStyle* style = m_node->computedStyle();
15350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        if (style && style->fontDescription().keywordSize()) {
15360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            int sizeValue = cssIdentifierForFontSizeKeyword(style->fontDescription().keywordSize());
15370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(property->value());
15380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch            if (primitiveValue->primitiveType() == CSSPrimitiveValue::CSS_IDENT && primitiveValue->getIdent() == sizeValue)
15390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch                return true;
15400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        }
15418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
15420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
15430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    return CSSStyleDeclaration::cssPropertyMatches(property);
15448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
15458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
15468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPassRefPtr<CSSMutableStyleDeclaration> CSSComputedStyleDeclaration::copy() const
15478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
15488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return copyPropertiesInSet(computedProperties, numComputedProperties);
15498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
15508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
15518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPassRefPtr<CSSMutableStyleDeclaration> CSSComputedStyleDeclaration::makeMutable()
15528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
15538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return copy();
15548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
15558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
15568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
1557