Index: Source/core/css/CSSStyleDeclaration.cpp |
diff --git a/Source/core/css/CSSStyleDeclaration.cpp b/Source/core/css/CSSStyleDeclaration.cpp |
index de3064306a8a857dcc8d133d987fd0f7fe48f414..538e17e227cf113704c997940bf73389f90fc509 100644 |
--- a/Source/core/css/CSSStyleDeclaration.cpp |
+++ b/Source/core/css/CSSStyleDeclaration.cpp |
@@ -43,141 +43,4 @@ |
namespace WebCore { |
-// FIXME: Next two functions look lifted verbatim from JSCSSStyleDeclarationCustom. Please remove duplication. |
- |
-// Check for a CSS prefix. |
-// Passed prefix is all lowercase. |
-// First character of the prefix within the property name may be upper or lowercase. |
-// Other characters in the prefix within the property name must be lowercase. |
-// The prefix within the property name must be followed by a capital letter. |
-static bool hasCSSPropertyNamePrefix(const String& propertyName, const char* prefix) |
-{ |
-#ifndef NDEBUG |
- ASSERT(*prefix); |
- for (const char* p = prefix; *p; ++p) |
- ASSERT(isASCIILower(*p)); |
- ASSERT(propertyName.length()); |
-#endif |
- |
- if (toASCIILower(propertyName[0]) != prefix[0]) |
- return false; |
- |
- unsigned length = propertyName.length(); |
- for (unsigned i = 1; i < length; ++i) { |
- if (!prefix[i]) |
- return isASCIIUpper(propertyName[i]); |
- if (propertyName[i] != prefix[i]) |
- return false; |
- } |
- return false; |
-} |
- |
-// When getting properties on CSSStyleDeclarations, the name used from |
-// Javascript and the actual name of the property are not the same, so |
-// we have to do the following translation. The translation turns upper |
-// case characters into lower case characters and inserts dashes to |
-// separate words. |
-// |
-// Example: 'backgroundPositionY' -> 'background-position-y' |
-// |
-// Also, certain prefixes such as 'pos', 'css-' and 'pixel-' are stripped |
-// and the hadPixelOrPosPrefix out parameter is used to indicate whether or |
-// not the property name was prefixed with 'pos-' or 'pixel-'. |
-CSSPropertyInfo* CSSStyleDeclaration::cssPropertyInfo(const String& propertyName) |
-{ |
- typedef HashMap<String, CSSPropertyInfo*> CSSPropertyInfoMap; |
- DEFINE_STATIC_LOCAL(CSSPropertyInfoMap, map, ()); |
- CSSPropertyInfo* propInfo = map.get(propertyName); |
- if (!propInfo) { |
- unsigned length = propertyName.length(); |
- bool hadPixelOrPosPrefix = false; |
- if (!length) |
- return 0; |
- |
- StringBuilder builder; |
- builder.reserveCapacity(length); |
- |
- unsigned i = 0; |
- |
- if (hasCSSPropertyNamePrefix(propertyName, "css")) |
- i += 3; |
- else if (hasCSSPropertyNamePrefix(propertyName, "pixel")) { |
- i += 5; |
- hadPixelOrPosPrefix = true; |
- } else if (hasCSSPropertyNamePrefix(propertyName, "pos")) { |
- i += 3; |
- hadPixelOrPosPrefix = true; |
- } else if (hasCSSPropertyNamePrefix(propertyName, "webkit")) |
- builder.append('-'); |
- else if (isASCIIUpper(propertyName[0])) |
- return 0; |
- |
- builder.append(toASCIILower(propertyName[i++])); |
- |
- for (; i < length; ++i) { |
- UChar c = propertyName[i]; |
- if (!isASCIIUpper(c)) |
- builder.append(c); |
- else { |
- builder.append('-'); |
- builder.append(toASCIILower(c)); |
- } |
- } |
- |
- String propName = builder.toString(); |
- CSSPropertyID propertyID = cssPropertyID(propName); |
- if (propertyID && RuntimeCSSEnabled::isCSSPropertyEnabled(propertyID)) { |
- propInfo = new CSSPropertyInfo(); |
- propInfo->hadPixelOrPosPrefix = hadPixelOrPosPrefix; |
- propInfo->propID = propertyID; |
- map.add(propertyName, propInfo); |
- } |
- } |
- return propInfo; |
-} |
- |
-void CSSStyleDeclaration::anonymousNamedGetter(const AtomicString& name, bool& returnValue1Enabled, String& returnValue1, bool& returnValue2Enabled, float& returnValue2) |
-{ |
- // Search the style declaration. |
- CSSPropertyInfo* propInfo = cssPropertyInfo(name); |
- |
- // Do not handle non-property names. |
- if (!propInfo) |
- return; |
- |
- RefPtr<CSSValue> cssValue = getPropertyCSSValueInternal(static_cast<CSSPropertyID>(propInfo->propID)); |
- if (cssValue) { |
- if (propInfo->hadPixelOrPosPrefix && cssValue->isPrimitiveValue()) { |
- returnValue2Enabled = true; |
- returnValue2 = static_cast<CSSPrimitiveValue*>(cssValue.get())->getFloatValue(CSSPrimitiveValue::CSS_PX); |
- return; |
- } |
- returnValue1Enabled = true; |
- returnValue1 = cssValue->cssText(); |
- return; |
- } |
- |
- String result = getPropertyValueInternal(static_cast<CSSPropertyID>(propInfo->propID)); |
- if (result.isNull()) |
- result = ""; // convert null to empty string. |
- |
- returnValue1 = result; |
- returnValue1Enabled = true; |
-} |
- |
-bool CSSStyleDeclaration::anonymousNamedSetter(const AtomicString& propertyName, const String& value, ExceptionCode& ec) |
-{ |
- String propertyValue = value; |
- CSSPropertyInfo* propInfo = CSSStyleDeclaration::cssPropertyInfo(propertyName); |
- if (!propInfo) |
- return false; |
- |
- if (propInfo->hadPixelOrPosPrefix) |
- propertyValue.append("px"); |
- |
- this->setPropertyInternal(static_cast<CSSPropertyID>(propInfo->propID), propertyValue, false, ec); |
- |
- return true; |
-} |
- |
} // namespace WebCore |