summaryrefslogtreecommitdiffstats
path: root/WebCore/css
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/css')
-rw-r--r--WebCore/css/AndroidCSSPropertyNames.in34
-rw-r--r--WebCore/css/CSSComputedStyleDeclaration.cpp35
-rw-r--r--WebCore/css/CSSMutableStyleDeclaration.cpp14
-rw-r--r--WebCore/css/CSSParser.cpp30
-rw-r--r--WebCore/css/CSSPropertyNames.in3
-rw-r--r--WebCore/css/CSSStyleSelector.cpp132
6 files changed, 245 insertions, 3 deletions
diff --git a/WebCore/css/AndroidCSSPropertyNames.in b/WebCore/css/AndroidCSSPropertyNames.in
new file mode 100644
index 0000000..ef67d6b
--- /dev/null
+++ b/WebCore/css/AndroidCSSPropertyNames.in
@@ -0,0 +1,34 @@
+# Copyright 2010, The Android Open Source Project
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+-webkit-ring
+-webkit-ring-fill-color
+-webkit-ring-inner-width
+-webkit-ring-outer-width
+-webkit-ring-outset
+-webkit-ring-pressed-inner-color
+-webkit-ring-pressed-outer-color
+-webkit-ring-radius
+-webkit-ring-selected-inner-color
+-webkit-ring-selected-outer-color
+-webkit-tap-highlight-color
diff --git a/WebCore/css/CSSComputedStyleDeclaration.cpp b/WebCore/css/CSSComputedStyleDeclaration.cpp
index 6bb025d..418251f 100644
--- a/WebCore/css/CSSComputedStyleDeclaration.cpp
+++ b/WebCore/css/CSSComputedStyleDeclaration.cpp
@@ -271,6 +271,18 @@ static const int computedProperties[] = {
CSSPropertyWebkitSvgShadow,
CSSPropertyVectorEffect
#endif
+#ifdef ANDROID_CSS_RING
+ ,
+ CSSPropertyWebkitRingFillColor,
+ CSSPropertyWebkitRingInnerWidth,
+ CSSPropertyWebkitRingOuterWidth,
+ CSSPropertyWebkitRingOutset,
+ CSSPropertyWebkitRingPressedInnerColor,
+ CSSPropertyWebkitRingPressedOuterColor,
+ CSSPropertyWebkitRingRadius,
+ CSSPropertyWebkitRingSelectedInnerColor,
+ CSSPropertyWebkitRingSelectedOuterColor
+#endif
#ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR
,
CSSPropertyWebkitTapHighlightColor
@@ -1540,6 +1552,29 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper
case CSSPropertyWebkitTransition:
case CSSPropertyWebkitVariableDeclarationBlock:
break;
+#ifdef ANDROID_CSS_RING
+ case CSSPropertyWebkitRing:
+ // shorthand property currently not supported see bug 13658
+ break;
+ case CSSPropertyWebkitRingFillColor:
+ return CSSPrimitiveValue::createColor(style->ringFillColor().rgb());
+ case CSSPropertyWebkitRingInnerWidth:
+ return CSSPrimitiveValue::create(style->ringInnerWidth());
+ case CSSPropertyWebkitRingOuterWidth:
+ return CSSPrimitiveValue::create(style->ringOuterWidth());
+ case CSSPropertyWebkitRingOutset:
+ return CSSPrimitiveValue::create(style->ringOutset());
+ case CSSPropertyWebkitRingPressedInnerColor:
+ return CSSPrimitiveValue::createColor(style->ringPressedInnerColor().rgb());
+ case CSSPropertyWebkitRingPressedOuterColor:
+ return CSSPrimitiveValue::createColor(style->ringPressedOuterColor().rgb());
+ case CSSPropertyWebkitRingRadius:
+ return CSSPrimitiveValue::create(style->ringRadius());
+ case CSSPropertyWebkitRingSelectedInnerColor:
+ return CSSPrimitiveValue::createColor(style->ringSelectedInnerColor().rgb());
+ case CSSPropertyWebkitRingSelectedOuterColor:
+ return CSSPrimitiveValue::createColor(style->ringSelectedOuterColor().rgb());
+#endif
#ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR
case CSSPropertyWebkitTapHighlightColor:
return CSSPrimitiveValue::createColor(style->tapHighlightColor().rgb());
diff --git a/WebCore/css/CSSMutableStyleDeclaration.cpp b/WebCore/css/CSSMutableStyleDeclaration.cpp
index 8d37a2e..e3fed35 100644
--- a/WebCore/css/CSSMutableStyleDeclaration.cpp
+++ b/WebCore/css/CSSMutableStyleDeclaration.cpp
@@ -258,6 +258,20 @@ String CSSMutableStyleDeclaration::getPropertyValue(int propertyID) const
return value->cssText();
}
#endif
+#ifdef ANDROID_CSS_RING
+ case CSSPropertyWebkitRing: {
+ const int properties[9] = { CSSPropertyWebkitRingFillColor,
+ CSSPropertyWebkitRingInnerWidth,
+ CSSPropertyWebkitRingOuterWidth,
+ CSSPropertyWebkitRingOutset,
+ CSSPropertyWebkitRingPressedInnerColor,
+ CSSPropertyWebkitRingPressedOuterColor,
+ CSSPropertyWebkitRingRadius,
+ CSSPropertyWebkitRingSelectedInnerColor,
+ CSSPropertyWebkitRingSelectedOuterColor };
+ return getLayeredShorthandValue(properties, 9);
+ }
+#endif
}
return String();
}
diff --git a/WebCore/css/CSSParser.cpp b/WebCore/css/CSSParser.cpp
index a084474..cdd6294 100644
--- a/WebCore/css/CSSParser.cpp
+++ b/WebCore/css/CSSParser.cpp
@@ -1816,6 +1816,36 @@ bool CSSParser::parseValue(int propId, bool important)
break;
#endif
+#ifdef ANDROID_CSS_RING
+ case CSSPropertyWebkitRing:
+ {
+ const int properties[9] = { CSSPropertyWebkitRingFillColor,
+ CSSPropertyWebkitRingInnerWidth,
+ CSSPropertyWebkitRingOuterWidth,
+ CSSPropertyWebkitRingOutset,
+ CSSPropertyWebkitRingPressedInnerColor,
+ CSSPropertyWebkitRingPressedOuterColor,
+ CSSPropertyWebkitRingRadius,
+ CSSPropertyWebkitRingSelectedInnerColor,
+ CSSPropertyWebkitRingSelectedOuterColor };
+ return parseShorthand(propId, properties, 9, important);
+ }
+ case CSSPropertyWebkitRingFillColor:
+ case CSSPropertyWebkitRingPressedInnerColor:
+ case CSSPropertyWebkitRingPressedOuterColor:
+ case CSSPropertyWebkitRingSelectedInnerColor:
+ case CSSPropertyWebkitRingSelectedOuterColor:
+ parsedValue = parseColor();
+ if (parsedValue)
+ m_valueList->next();
+ break;
+ case CSSPropertyWebkitRingInnerWidth:
+ case CSSPropertyWebkitRingOuterWidth:
+ case CSSPropertyWebkitRingOutset:
+ case CSSPropertyWebkitRingRadius:
+ validPrimitive = validUnit(value, FLength | FNonNeg, m_strict);
+ break;
+#endif
#ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR
case CSSPropertyWebkitTapHighlightColor:
parsedValue = parseColor();
diff --git a/WebCore/css/CSSPropertyNames.in b/WebCore/css/CSSPropertyNames.in
index 1a79602..d236b45 100644
--- a/WebCore/css/CSSPropertyNames.in
+++ b/WebCore/css/CSSPropertyNames.in
@@ -255,9 +255,6 @@ z-index
-webkit-perspective-origin-x
-webkit-perspective-origin-y
-webkit-rtl-ordering
-# ANDROID_CSS_TAP_HIGHLIGHT_COLOR: added CSS property (also in iPhone)
--webkit-tap-highlight-color
-# end ANDROID_CSS_TAP_HIGHLIGHT_COLOR
-webkit-text-decorations-in-effect
-webkit-text-fill-color
-webkit-text-security
diff --git a/WebCore/css/CSSStyleSelector.cpp b/WebCore/css/CSSStyleSelector.cpp
index 40b11d9..bd94b68 100644
--- a/WebCore/css/CSSStyleSelector.cpp
+++ b/WebCore/css/CSSStyleSelector.cpp
@@ -5556,6 +5556,138 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
return;
#endif
+#ifdef ANDROID_CSS_RING
+ case CSSPropertyWebkitRing:
+ if (valueType != CSSValue::CSS_INHERIT || !m_parentNode) return;
+ m_style->setRingFillColor(m_parentStyle->ringFillColor());
+ m_style->setRingInnerWidth(m_parentStyle->ringInnerWidth());
+ m_style->setRingOuterWidth(m_parentStyle->ringOuterWidth());
+ m_style->setRingOutset(m_parentStyle->ringOutset());
+ m_style->setRingPressedInnerColor(m_parentStyle->ringPressedInnerColor());
+ m_style->setRingPressedOuterColor(m_parentStyle->ringPressedOuterColor());
+ m_style->setRingRadius(m_parentStyle->ringRadius());
+ m_style->setRingSelectedInnerColor(m_parentStyle->ringSelectedInnerColor());
+ m_style->setRingSelectedOuterColor(m_parentStyle->ringSelectedOuterColor());
+ return;
+ case CSSPropertyWebkitRingFillColor: {
+ HANDLE_INHERIT_AND_INITIAL(ringFillColor, RingFillColor);
+ if (!primitiveValue)
+ break;
+ Color col = getColorFromPrimitiveValue(primitiveValue).blendWithWhite();
+ m_style->setRingFillColor(col);
+ return;
+ }
+ case CSSPropertyWebkitRingInnerWidth: {
+ HANDLE_INHERIT_AND_INITIAL(ringInnerWidth, RingInnerWidth)
+ if (!primitiveValue)
+ break;
+ Length l;
+ int type = primitiveValue->primitiveType();
+ if (CSSPrimitiveValue::isUnitTypeLength(type)) {
+ // width can be specified with fractional px
+ // scale by 16 here (and unscale in android_graphics) to keep
+ // 4 bits of fraction
+ RefPtr<CSSPrimitiveValue> scaledValue = CSSPrimitiveValue::create(
+ primitiveValue->getFloatValue() * 16,
+ (CSSPrimitiveValue::UnitTypes) type);
+ l = Length(scaledValue->computeLengthIntForLength(style(),
+ m_rootElementStyle, zoomFactor), Fixed);
+ scaledValue.release();
+ } else if (type == CSSPrimitiveValue::CSS_PERCENTAGE)
+ l = Length(primitiveValue->getDoubleValue(), Percent);
+ else
+ return;
+ m_style->setRingInnerWidth(l);
+ return;
+ }
+ case CSSPropertyWebkitRingOuterWidth: {
+ HANDLE_INHERIT_AND_INITIAL(ringOuterWidth, RingOuterWidth)
+ if (!primitiveValue)
+ break;
+ Length l;
+ int type = primitiveValue->primitiveType();
+ if (CSSPrimitiveValue::isUnitTypeLength(type)) {
+ // width can be specified with fractional px
+ // scale by 16 here (and unscale in android_graphics) to keep
+ // 4 bits of fraction
+ RefPtr<CSSPrimitiveValue> scaledValue = CSSPrimitiveValue::create(
+ primitiveValue->getFloatValue() * 16,
+ (CSSPrimitiveValue::UnitTypes) type);
+ l = Length(scaledValue->computeLengthIntForLength(style(),
+ m_rootElementStyle, zoomFactor), Fixed);
+ scaledValue.release();
+ } else if (type == CSSPrimitiveValue::CSS_PERCENTAGE)
+ l = Length(primitiveValue->getDoubleValue(), Percent);
+ else
+ return;
+ m_style->setRingOuterWidth(l);
+ return;
+ }
+ case CSSPropertyWebkitRingOutset: {
+ HANDLE_INHERIT_AND_INITIAL(ringOutset, RingOutset)
+ if (!primitiveValue)
+ break;
+ Length l;
+ int type = primitiveValue->primitiveType();
+ if (CSSPrimitiveValue::isUnitTypeLength(type))
+ l = Length(primitiveValue->computeLengthIntForLength(style(),
+ m_rootElementStyle, zoomFactor), Fixed);
+ else if (type == CSSPrimitiveValue::CSS_PERCENTAGE)
+ l = Length(primitiveValue->getDoubleValue(), Percent);
+ else
+ return;
+ m_style->setRingOutset(l);
+ return;
+ }
+ case CSSPropertyWebkitRingPressedInnerColor: {
+ HANDLE_INHERIT_AND_INITIAL(ringPressedInnerColor, RingPressedInnerColor);
+ if (!primitiveValue)
+ break;
+ Color col = getColorFromPrimitiveValue(primitiveValue).blendWithWhite();
+ m_style->setRingPressedInnerColor(col);
+ return;
+ }
+ case CSSPropertyWebkitRingPressedOuterColor: {
+ HANDLE_INHERIT_AND_INITIAL(ringPressedOuterColor, RingPressedOuterColor);
+ if (!primitiveValue)
+ break;
+ Color col = getColorFromPrimitiveValue(primitiveValue).blendWithWhite();
+ m_style->setRingPressedOuterColor(col);
+ return;
+ }
+ case CSSPropertyWebkitRingRadius: {
+ HANDLE_INHERIT_AND_INITIAL(ringRadius, RingRadius)
+ if (!primitiveValue)
+ break;
+ Length l;
+ int type = primitiveValue->primitiveType();
+ if (CSSPrimitiveValue::isUnitTypeLength(type))
+ l = Length(primitiveValue->computeLengthIntForLength(style(),
+ m_rootElementStyle, zoomFactor), Fixed);
+ else if (type == CSSPrimitiveValue::CSS_PERCENTAGE)
+ l = Length(primitiveValue->getDoubleValue(), Percent);
+ else
+ return;
+ m_style->setRingRadius(l);
+ return;
+ }
+ case CSSPropertyWebkitRingSelectedInnerColor: {
+ HANDLE_INHERIT_AND_INITIAL(ringSelectedInnerColor, RingSelectedInnerColor);
+ if (!primitiveValue)
+ break;
+ Color col = getColorFromPrimitiveValue(primitiveValue).blendWithWhite();
+ m_style->setRingSelectedInnerColor(col);
+ return;
+ }
+ case CSSPropertyWebkitRingSelectedOuterColor: {
+ HANDLE_INHERIT_AND_INITIAL(ringSelectedOuterColor, RingSelectedOuterColor);
+ if (!primitiveValue)
+ break;
+ Color col = getColorFromPrimitiveValue(primitiveValue).blendWithWhite();
+ m_style->setRingSelectedOuterColor(col);
+ return;
+ }
+#endif
#ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR
case CSSPropertyWebkitTapHighlightColor: {
HANDLE_INHERIT_AND_INITIAL(tapHighlightColor, TapHighlightColor);