diff options
Diffstat (limited to 'Source/WebCore/css/CSSParser.cpp')
-rw-r--r-- | Source/WebCore/css/CSSParser.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/Source/WebCore/css/CSSParser.cpp b/Source/WebCore/css/CSSParser.cpp index ec0f1c204..18c4c0352 100644 --- a/Source/WebCore/css/CSSParser.cpp +++ b/Source/WebCore/css/CSSParser.cpp @@ -596,11 +596,14 @@ static inline bool isValidKeywordPropertyAndValue(CSSPropertyID propertyId, int if (valueID == CSSValueAuto || valueID == CSSValueNone || (valueID >= CSSValueInset && valueID <= CSSValueDouble)) return true; break; - case CSSPropertyOverflowX: - case CSSPropertyOverflowY: // visible | hidden | scroll | auto | marquee | overlay | inherit + case CSSPropertyOverflowX: // visible | hidden | scroll | auto | marquee | overlay | inherit if (valueID == CSSValueVisible || valueID == CSSValueHidden || valueID == CSSValueScroll || valueID == CSSValueAuto || valueID == CSSValueOverlay || valueID == CSSValueWebkitMarquee) return true; break; + case CSSPropertyOverflowY: // visible | hidden | scroll | auto | marquee | overlay | inherit | -webkit-paged-x | -webkit-paged-y + if (valueID == CSSValueVisible || valueID == CSSValueHidden || valueID == CSSValueScroll || valueID == CSSValueAuto || valueID == CSSValueOverlay || valueID == CSSValueWebkitMarquee || valueID == CSSValueWebkitPagedX || valueID == CSSValueWebkitPagedY) + return true; + break; case CSSPropertyPageBreakAfter: // auto | always | avoid | left | right | inherit case CSSPropertyPageBreakBefore: case CSSPropertyWebkitColumnBreakAfter: @@ -1758,10 +1761,20 @@ bool CSSParser::parseValue(CSSPropertyID propId, bool important) */ case CSSPropertyOverflow: { ShorthandScope scope(this, propId); - if (num != 1 || !parseValue(CSSPropertyOverflowX, important)) + if (num != 1 || !parseValue(CSSPropertyOverflowY, important)) return false; - CSSValue* value = m_parsedProperties->last().value(); - addProperty(CSSPropertyOverflowY, value, important); + + RefPtr<CSSValue> overflowXValue; + + // FIXME: -webkit-paged-x or -webkit-paged-y only apply to overflow-y. If this value has been + // set using the shorthand, then for now overflow-x will default to auto, but once we implement + // pagination controls, it should default to hidden. If the overflow-y value is anything but + // paged-x or paged-y, then overflow-x and overflow-y should have the same value. + if (id == CSSValueWebkitPagedX || id == CSSValueWebkitPagedY) + overflowXValue = cssValuePool().createIdentifierValue(CSSValueAuto); + else + overflowXValue = m_parsedProperties->last().value(); + addProperty(CSSPropertyOverflowX, overflowXValue.release(), important); return true; } |