Index: third_party/WebKit/Source/core/css/resolver/ViewportStyleResolver.cpp |
diff --git a/third_party/WebKit/Source/core/css/resolver/ViewportStyleResolver.cpp b/third_party/WebKit/Source/core/css/resolver/ViewportStyleResolver.cpp |
index 3f248994d466458ee3368f57787a1095980c3979..f2332066da700ffbbd429645898f99dfdc4d7154 100644 |
--- a/third_party/WebKit/Source/core/css/resolver/ViewportStyleResolver.cpp |
+++ b/third_party/WebKit/Source/core/css/resolver/ViewportStyleResolver.cpp |
@@ -147,9 +147,28 @@ float ViewportStyleResolver::viewportArgumentValue(CSSPropertyID id) const |
defaultValue = 1; |
const CSSValue* value = m_propertySet->getPropertyCSSValue(id); |
- if (!value || !value->isPrimitiveValue()) |
+ if (!value || !(value->isPrimitiveValue() || value->isIdentifierValue())) |
return defaultValue; |
+ if (value->isIdentifierValue()) { |
+ switch (toCSSIdentifierValue(value)->getValueID()) { |
+ case CSSValueAuto: |
+ return defaultValue; |
+ case CSSValueLandscape: |
+ return ViewportDescription::ValueLandscape; |
+ case CSSValuePortrait: |
+ return ViewportDescription::ValuePortrait; |
+ case CSSValueZoom: |
+ return defaultValue; |
+ case CSSValueInternalExtendToZoom: |
+ return ViewportDescription::ValueExtendToZoom; |
+ case CSSValueFixed: |
+ return 0; |
+ default: |
+ return defaultValue; |
+ } |
+ } |
+ |
const CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); |
if (primitiveValue->isNumber() || primitiveValue->isPx()) |
@@ -166,27 +185,13 @@ float ViewportStyleResolver::viewportArgumentValue(CSSPropertyID id) const |
case CSSPropertyZoom: |
return percentValue; |
default: |
- ASSERT_NOT_REACHED(); |
+ NOTREACHED(); |
break; |
} |
} |
- switch (primitiveValue->getValueID()) { |
- case CSSValueAuto: |
- return defaultValue; |
- case CSSValueLandscape: |
- return ViewportDescription::ValueLandscape; |
- case CSSValuePortrait: |
- return ViewportDescription::ValuePortrait; |
- case CSSValueZoom: |
- return defaultValue; |
- case CSSValueInternalExtendToZoom: |
- return ViewportDescription::ValueExtendToZoom; |
- case CSSValueFixed: |
- return 0; |
- default: |
- return defaultValue; |
- } |
+ NOTREACHED(); |
+ return defaultValue; |
} |
Length ViewportStyleResolver::viewportLengthValue(CSSPropertyID id) const |
@@ -197,14 +202,18 @@ Length ViewportStyleResolver::viewportLengthValue(CSSPropertyID id) const |
|| id == CSSPropertyMinWidth); |
const CSSValue* value = m_propertySet->getPropertyCSSValue(id); |
- if (!value || !value->isPrimitiveValue()) |
+ if (!value || !(value->isPrimitiveValue() || value->isIdentifierValue())) |
return Length(); // auto |
- const CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); |
- |
- if (primitiveValue->getValueID() == CSSValueInternalExtendToZoom) |
- return Length(ExtendToZoom); |
+ if (value->isIdentifierValue()) { |
+ CSSValueID valueID = toCSSIdentifierValue(value)->getValueID(); |
+ if (valueID == CSSValueInternalExtendToZoom) |
+ return Length(ExtendToZoom); |
+ if (valueID == CSSValueAuto) |
+ return Length(Auto); |
+ } |
+ const CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); |
ComputedStyle* documentStyle = m_document->mutableComputedStyle(); |
// If we have viewport units the conversion will mark the document style as having viewport units. |
@@ -214,9 +223,6 @@ Length ViewportStyleResolver::viewportLengthValue(CSSPropertyID id) const |
CSSToLengthConversionData::FontSizes fontSizes(documentStyle, documentStyle); |
CSSToLengthConversionData::ViewportSize viewportSize(m_document->layoutViewItem()); |
- if (primitiveValue->getValueID() == CSSValueAuto) |
- return Length(Auto); |
- |
Length result = primitiveValue->convertToLength(CSSToLengthConversionData(documentStyle, fontSizes, viewportSize, 1.0f)); |
if (documentStyle->hasViewportUnits()) |
m_document->setHasViewportUnits(); |