| Index: Source/core/editing/EditingStyle.cpp | 
| diff --git a/Source/core/editing/EditingStyle.cpp b/Source/core/editing/EditingStyle.cpp | 
| index 28e6ecd981b444ae7e7a29525bb845611d148b58..9ee281c00c086f859e9469ce5a0fef32f4e9c5d7 100644 | 
| --- a/Source/core/editing/EditingStyle.cpp | 
| +++ b/Source/core/editing/EditingStyle.cpp | 
| @@ -138,7 +138,7 @@ static PassRefPtr<CSSValue> backgroundColorInEffect(Node*); | 
| class HTMLElementEquivalent { | 
| WTF_MAKE_FAST_ALLOCATED; | 
| public: | 
| -    static PassOwnPtr<HTMLElementEquivalent> create(CSSPropertyID propertyID, int primitiveValue, const QualifiedName& tagName) | 
| +    static PassOwnPtr<HTMLElementEquivalent> create(CSSPropertyID propertyID, CSSValueID primitiveValue, const QualifiedName& tagName) | 
| { | 
| return adoptPtr(new HTMLElementEquivalent(propertyID, primitiveValue, tagName)); | 
| } | 
| @@ -153,7 +153,7 @@ public: | 
| protected: | 
| HTMLElementEquivalent(CSSPropertyID); | 
| HTMLElementEquivalent(CSSPropertyID, const QualifiedName& tagName); | 
| -    HTMLElementEquivalent(CSSPropertyID, int primitiveValue, const QualifiedName& tagName); | 
| +    HTMLElementEquivalent(CSSPropertyID, CSSValueID primitiveValue, const QualifiedName& tagName); | 
| const CSSPropertyID m_propertyID; | 
| const RefPtr<CSSPrimitiveValue> m_primitiveValue; | 
| const QualifiedName* m_tagName; // We can store a pointer because HTML tag names are const global. | 
| @@ -171,7 +171,7 @@ HTMLElementEquivalent::HTMLElementEquivalent(CSSPropertyID id, const QualifiedNa | 
| { | 
| } | 
|  | 
| -HTMLElementEquivalent::HTMLElementEquivalent(CSSPropertyID id, int primitiveValue, const QualifiedName& tagName) | 
| +HTMLElementEquivalent::HTMLElementEquivalent(CSSPropertyID id, CSSValueID primitiveValue, const QualifiedName& tagName) | 
| : m_propertyID(id) | 
| , m_primitiveValue(CSSPrimitiveValue::createIdentifier(primitiveValue)) | 
| , m_tagName(&tagName) | 
| @@ -182,7 +182,7 @@ HTMLElementEquivalent::HTMLElementEquivalent(CSSPropertyID id, int primitiveValu | 
| bool HTMLElementEquivalent::valueIsPresentInStyle(Element* element, StylePropertySet* style) const | 
| { | 
| RefPtr<CSSValue> value = style->getPropertyCSSValue(m_propertyID); | 
| -    return matches(element) && value && value->isPrimitiveValue() && static_cast<CSSPrimitiveValue*>(value.get())->getIdent() == m_primitiveValue->getIdent(); | 
| +    return matches(element) && value && value->isPrimitiveValue() && toCSSPrimitiveValue(value.get())->getValueID() == m_primitiveValue->getValueID(); | 
| } | 
|  | 
| void HTMLElementEquivalent::addToStyle(Element*, EditingStyle* style) const | 
| @@ -192,7 +192,7 @@ void HTMLElementEquivalent::addToStyle(Element*, EditingStyle* style) const | 
|  | 
| class HTMLTextDecorationEquivalent : public HTMLElementEquivalent { | 
| public: | 
| -    static PassOwnPtr<HTMLElementEquivalent> create(int primitiveValue, const QualifiedName& tagName) | 
| +    static PassOwnPtr<HTMLElementEquivalent> create(CSSValueID primitiveValue, const QualifiedName& tagName) | 
| { | 
| return adoptPtr(new HTMLTextDecorationEquivalent(primitiveValue, tagName)); | 
| } | 
| @@ -200,10 +200,10 @@ public: | 
| virtual bool valueIsPresentInStyle(Element*, StylePropertySet*) const; | 
|  | 
| private: | 
| -    HTMLTextDecorationEquivalent(int primitiveValue, const QualifiedName& tagName); | 
| +    HTMLTextDecorationEquivalent(CSSValueID primitiveValue, const QualifiedName& tagName); | 
| }; | 
|  | 
| -HTMLTextDecorationEquivalent::HTMLTextDecorationEquivalent(int primitiveValue, const QualifiedName& tagName) | 
| +HTMLTextDecorationEquivalent::HTMLTextDecorationEquivalent(CSSValueID primitiveValue, const QualifiedName& tagName) | 
| : HTMLElementEquivalent(CSSPropertyTextDecoration, primitiveValue, tagName) | 
| // m_propertyID is used in HTMLElementEquivalent::addToStyle | 
| { | 
| @@ -523,13 +523,13 @@ bool EditingStyle::textDirection(WritingDirection& writingDirection) const | 
| if (!unicodeBidi || !unicodeBidi->isPrimitiveValue()) | 
| return false; | 
|  | 
| -    int unicodeBidiValue = static_cast<CSSPrimitiveValue*>(unicodeBidi.get())->getIdent(); | 
| +    CSSValueID unicodeBidiValue = toCSSPrimitiveValue(unicodeBidi.get())->getValueID(); | 
| if (unicodeBidiValue == CSSValueEmbed) { | 
| RefPtr<CSSValue> direction = m_mutableStyle->getPropertyCSSValue(CSSPropertyDirection); | 
| if (!direction || !direction->isPrimitiveValue()) | 
| return false; | 
|  | 
| -        writingDirection = static_cast<CSSPrimitiveValue*>(direction.get())->getIdent() == CSSValueLtr ? LeftToRightWritingDirection : RightToLeftWritingDirection; | 
| +        writingDirection = toCSSPrimitiveValue(direction.get())->getValueID() == CSSValueLtr ? LeftToRightWritingDirection : RightToLeftWritingDirection; | 
|  | 
| return true; | 
| } | 
| @@ -953,9 +953,9 @@ void EditingStyle::prepareToApplyAt(const Position& position, ShouldPreserveWrit | 
| m_mutableStyle->removeProperty(CSSPropertyBackgroundColor); | 
|  | 
| if (unicodeBidi && unicodeBidi->isPrimitiveValue()) { | 
| -        m_mutableStyle->setProperty(CSSPropertyUnicodeBidi, static_cast<CSSValueID>(toCSSPrimitiveValue(unicodeBidi.get())->getIdent())); | 
| +        m_mutableStyle->setProperty(CSSPropertyUnicodeBidi, toCSSPrimitiveValue(unicodeBidi.get())->getValueID()); | 
| if (direction && direction->isPrimitiveValue()) | 
| -            m_mutableStyle->setProperty(CSSPropertyDirection, static_cast<CSSValueID>(toCSSPrimitiveValue(direction.get())->getIdent())); | 
| +            m_mutableStyle->setProperty(CSSPropertyDirection, toCSSPrimitiveValue(direction.get())->getValueID()); | 
| } | 
| } | 
|  | 
| @@ -1273,7 +1273,7 @@ WritingDirection EditingStyle::textDirectionForSelection(const VisibleSelection& | 
| if (!unicodeBidi || !unicodeBidi->isPrimitiveValue()) | 
| continue; | 
|  | 
| -            int unicodeBidiValue = static_cast<CSSPrimitiveValue*>(unicodeBidi.get())->getIdent(); | 
| +            CSSValueID unicodeBidiValue = toCSSPrimitiveValue(unicodeBidi.get())->getValueID(); | 
| if (unicodeBidiValue == CSSValueEmbed || unicodeBidiValue == CSSValueBidiOverride) | 
| return NaturalWritingDirection; | 
| } | 
| @@ -1302,7 +1302,7 @@ WritingDirection EditingStyle::textDirectionForSelection(const VisibleSelection& | 
| if (!unicodeBidi || !unicodeBidi->isPrimitiveValue()) | 
| continue; | 
|  | 
| -        int unicodeBidiValue = static_cast<CSSPrimitiveValue*>(unicodeBidi.get())->getIdent(); | 
| +        CSSValueID unicodeBidiValue = toCSSPrimitiveValue(unicodeBidi.get())->getValueID(); | 
| if (unicodeBidiValue == CSSValueNormal) | 
| continue; | 
|  | 
| @@ -1314,7 +1314,7 @@ WritingDirection EditingStyle::textDirectionForSelection(const VisibleSelection& | 
| if (!direction || !direction->isPrimitiveValue()) | 
| continue; | 
|  | 
| -        int directionValue = static_cast<CSSPrimitiveValue*>(direction.get())->getIdent(); | 
| +        int directionValue = toCSSPrimitiveValue(direction.get())->getValueID(); | 
| if (directionValue != CSSValueLtr && directionValue != CSSValueRtl) | 
| continue; | 
|  | 
| @@ -1481,7 +1481,7 @@ static bool fontWeightIsBold(CSSValue* fontWeight) | 
|  | 
| // Because b tag can only bold text, there are only two states in plain html: bold and not bold. | 
| // Collapse all other values to either one of these two states for editing purposes. | 
| -    switch (static_cast<CSSPrimitiveValue*>(fontWeight)->getIdent()) { | 
| +    switch (toCSSPrimitiveValue(fontWeight)->getValueID()) { | 
| case CSSValue100: | 
| case CSSValue200: | 
| case CSSValue300: | 
| @@ -1495,6 +1495,8 @@ static bool fontWeightIsBold(CSSValue* fontWeight) | 
| case CSSValue800: | 
| case CSSValue900: | 
| return true; | 
| +        default: | 
| +            break; | 
| } | 
|  | 
| ASSERT_NOT_REACHED(); // For CSSValueBolder and CSSValueLighter | 
| @@ -1543,24 +1545,24 @@ PassRefPtr<MutableStylePropertySet> getPropertiesNotIn(StylePropertySet* styleWi | 
| return result.release(); | 
| } | 
|  | 
| -int getIdentifierValue(StylePropertySet* style, CSSPropertyID propertyID) | 
| +CSSValueID getIdentifierValue(StylePropertySet* style, CSSPropertyID propertyID) | 
| { | 
| if (!style) | 
| -        return 0; | 
| +        return CSSValueInvalid; | 
| RefPtr<CSSValue> value = style->getPropertyCSSValue(propertyID); | 
| if (!value || !value->isPrimitiveValue()) | 
| -        return 0; | 
| -    return static_cast<CSSPrimitiveValue*>(value.get())->getIdent(); | 
| +        return CSSValueInvalid; | 
| +    return toCSSPrimitiveValue(value.get())->getValueID(); | 
| } | 
|  | 
| -int getIdentifierValue(CSSStyleDeclaration* style, CSSPropertyID propertyID) | 
| +CSSValueID getIdentifierValue(CSSStyleDeclaration* style, CSSPropertyID propertyID) | 
| { | 
| if (!style) | 
| -        return 0; | 
| +        return CSSValueInvalid; | 
| RefPtr<CSSValue> value = style->getPropertyCSSValueInternal(propertyID); | 
| if (!value || !value->isPrimitiveValue()) | 
| -        return 0; | 
| -    return static_cast<CSSPrimitiveValue*>(value.get())->getIdent(); | 
| +        return CSSValueInvalid; | 
| +    return toCSSPrimitiveValue(value.get())->getValueID(); | 
| } | 
|  | 
| static bool isCSSValueLength(CSSPrimitiveValue* value) | 
| @@ -1581,8 +1583,8 @@ int legacyFontSizeFromCSSValue(Document* document, CSSPrimitiveValue* value, boo | 
| return 0; | 
| } | 
|  | 
| -    if (CSSValueXSmall <= value->getIdent() && value->getIdent() <= CSSValueWebkitXxxLarge) | 
| -        return value->getIdent() - CSSValueXSmall + 1; | 
| +    if (CSSValueXSmall <= value->getValueID() && value->getValueID() <= CSSValueWebkitXxxLarge) | 
| +        return value->getValueID() - CSSValueXSmall + 1; | 
|  | 
| return 0; | 
| } | 
| @@ -1590,13 +1592,13 @@ int legacyFontSizeFromCSSValue(Document* document, CSSPrimitiveValue* value, boo | 
| bool isTransparentColorValue(CSSValue* cssValue) | 
| { | 
| if (!cssValue) | 
| -        return true; | 
| +        return true; | 
| if (!cssValue->isPrimitiveValue()) | 
| return false; | 
| -    CSSPrimitiveValue* value = static_cast<CSSPrimitiveValue*>(cssValue); | 
| +    CSSPrimitiveValue* value = toCSSPrimitiveValue(cssValue); | 
| if (value->isRGBColor()) | 
| -        return !alphaChannel(value->getRGBA32Value()); | 
| -    return value->getIdent() == CSSValueTransparent; | 
| +        return !alphaChannel(value->getRGBA32Value()); | 
| +    return value->getValueID() == CSSValueTransparent; | 
| } | 
|  | 
| bool hasTransparentBackgroundColor(CSSStyleDeclaration* style) | 
|  |