| Index: third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h | 
| diff --git a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h | 
| index b652d4e4fdbfe71acaa925e3795f92bdca8e0c85..9734d122388d396f7f4124623a683d9017b98a3a 100644 | 
| --- a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h | 
| +++ b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h | 
| @@ -27,6 +27,7 @@ | 
| #ifndef StyleBuilderConverter_h | 
| #define StyleBuilderConverter_h | 
|  | 
| +#include "core/css/CSSIdentifierValue.h" | 
| #include "core/css/CSSStringValue.h" | 
| #include "core/css/CSSValue.h" | 
| #include "core/css/CSSValueList.h" | 
| @@ -136,37 +137,37 @@ template <typename T> | 
| T StyleBuilderConverter::convertFlags(StyleResolverState& state, const CSSValue& value) | 
| { | 
| T flags = static_cast<T>(0); | 
| -    if (value.isPrimitiveValue() && toCSSPrimitiveValue(value).getValueID() == CSSValueNone) | 
| +    if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueNone) | 
| return flags; | 
| for (auto& flagValue : toCSSValueList(value)) | 
| -        flags |= toCSSPrimitiveValue(*flagValue).convertTo<T>(); | 
| +        flags |= toCSSIdentifierValue(*flagValue).convertTo<T>(); | 
| return flags; | 
| } | 
|  | 
| template <typename T> | 
| T StyleBuilderConverter::convertLineWidth(StyleResolverState& state, const CSSValue& value) | 
| { | 
| -    const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); | 
| -    CSSValueID valueID = primitiveValue.getValueID(); | 
| -    if (valueID == CSSValueThin) | 
| -        return 1; | 
| -    if (valueID == CSSValueMedium) | 
| -        return 3; | 
| -    if (valueID == CSSValueThick) | 
| -        return 5; | 
| -    if (valueID == CSSValueInvalid) { | 
| -        // FIXME: We are moving to use the full page zoom implementation to handle high-dpi. | 
| -        // In that case specyfing a border-width of less than 1px would result in a border that is one device pixel thick. | 
| -        // With this change that would instead be rounded up to 2 device pixels. | 
| -        // Consider clamping it to device pixels or zoom adjusted CSS pixels instead of raw CSS pixels. | 
| -        // Reference crbug.com/485650 and crbug.com/382483 | 
| -        double result = primitiveValue.computeLength<double>(state.cssToLengthConversionData()); | 
| -        if (result > 0.0 && result < 1.0) | 
| -            return 1.0; | 
| -        return clampTo<T>(roundForImpreciseConversion<T>(result), defaultMinimumForClamp<T>(), defaultMaximumForClamp<T>()); | 
| +    if (value.isIdentifierValue()) { | 
| +        CSSValueID valueID = toCSSIdentifierValue(value).getValueID(); | 
| +        if (valueID == CSSValueThin) | 
| +            return 1; | 
| +        if (valueID == CSSValueMedium) | 
| +            return 3; | 
| +        if (valueID == CSSValueThick) | 
| +            return 5; | 
| +        NOTREACHED(); | 
| +        return 0; | 
| } | 
| -    ASSERT_NOT_REACHED(); | 
| -    return 0; | 
| +    const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); | 
| +    // FIXME: We are moving to use the full page zoom implementation to handle high-dpi. | 
| +    // In that case specyfing a border-width of less than 1px would result in a border that is one device pixel thick. | 
| +    // With this change that would instead be rounded up to 2 device pixels. | 
| +    // Consider clamping it to device pixels or zoom adjusted CSS pixels instead of raw CSS pixels. | 
| +    // Reference crbug.com/485650 and crbug.com/382483 | 
| +    double result = primitiveValue.computeLength<double>(state.cssToLengthConversionData()); | 
| +    if (result > 0.0 && result < 1.0) | 
| +        return 1.0; | 
| +    return clampTo<T>(roundForImpreciseConversion<T>(result), defaultMinimumForClamp<T>(), defaultMaximumForClamp<T>()); | 
| } | 
|  | 
| template <CSSValueID IdForNone> | 
| @@ -174,7 +175,7 @@ AtomicString StyleBuilderConverter::convertString(StyleResolverState&, const CSS | 
| { | 
| if (value.isStringValue()) | 
| return AtomicString(toCSSStringValue(value).value()); | 
| -    ASSERT(toCSSPrimitiveValue(value).getValueID() == IdForNone); | 
| +    DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), IdForNone); | 
| return nullAtom; | 
| } | 
|  | 
|  |