Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(223)

Side by Side Diff: third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp

Issue 2938983002: Implement parseShorthand API for shorthand properties, "overflow", "font" and "font-variant" (Closed)
Patch Set: Replace ImplicitProperty by IsImplicitProperty Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/css/parser/CSSPropertyParser.h" 5 #include "core/css/parser/CSSPropertyParser.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include "core/StylePropertyShorthand.h" 8 #include "core/StylePropertyShorthand.h"
9 #include "core/css/CSSBasicShapeValues.h" 9 #include "core/css/CSSBasicShapeValues.h"
10 #include "core/css/CSSContentDistributionValue.h" 10 #include "core/css/CSSContentDistributionValue.h"
11 #include "core/css/CSSCursorImageValue.h" 11 #include "core/css/CSSCursorImageValue.h"
12 #include "core/css/CSSFontFaceSrcValue.h" 12 #include "core/css/CSSFontFaceSrcValue.h"
13 #include "core/css/CSSFontFamilyValue.h"
14 #include "core/css/CSSFunctionValue.h" 13 #include "core/css/CSSFunctionValue.h"
15 #include "core/css/CSSGridAutoRepeatValue.h" 14 #include "core/css/CSSGridAutoRepeatValue.h"
16 #include "core/css/CSSGridLineNamesValue.h" 15 #include "core/css/CSSGridLineNamesValue.h"
17 #include "core/css/CSSGridTemplateAreasValue.h" 16 #include "core/css/CSSGridTemplateAreasValue.h"
18 #include "core/css/CSSIdentifierValue.h" 17 #include "core/css/CSSIdentifierValue.h"
19 #include "core/css/CSSInheritedValue.h" 18 #include "core/css/CSSInheritedValue.h"
20 #include "core/css/CSSInitialValue.h" 19 #include "core/css/CSSInitialValue.h"
21 #include "core/css/CSSPendingSubstitutionValue.h" 20 #include "core/css/CSSPendingSubstitutionValue.h"
22 #include "core/css/CSSPrimitiveValueMappings.h" 21 #include "core/css/CSSPrimitiveValueMappings.h"
23 #include "core/css/CSSReflectValue.h" 22 #include "core/css/CSSReflectValue.h"
24 #include "core/css/CSSShadowValue.h" 23 #include "core/css/CSSShadowValue.h"
25 #include "core/css/CSSStringValue.h" 24 #include "core/css/CSSStringValue.h"
26 #include "core/css/CSSTimingFunctionValue.h" 25 #include "core/css/CSSTimingFunctionValue.h"
27 #include "core/css/CSSURIValue.h" 26 #include "core/css/CSSURIValue.h"
28 #include "core/css/CSSUnicodeRangeValue.h" 27 #include "core/css/CSSUnicodeRangeValue.h"
29 #include "core/css/CSSUnsetValue.h" 28 #include "core/css/CSSUnsetValue.h"
30 #include "core/css/CSSValuePair.h" 29 #include "core/css/CSSValuePair.h"
31 #include "core/css/CSSVariableReferenceValue.h" 30 #include "core/css/CSSVariableReferenceValue.h"
32 #include "core/css/HashTools.h" 31 #include "core/css/HashTools.h"
33 #include "core/css/parser/CSSParserFastPaths.h" 32 #include "core/css/parser/CSSParserFastPaths.h"
34 #include "core/css/parser/CSSParserIdioms.h" 33 #include "core/css/parser/CSSParserIdioms.h"
35 #include "core/css/parser/CSSParserLocalContext.h" 34 #include "core/css/parser/CSSParserLocalContext.h"
36 #include "core/css/parser/CSSPropertyParserHelpers.h" 35 #include "core/css/parser/CSSPropertyParserHelpers.h"
37 #include "core/css/parser/CSSVariableParser.h" 36 #include "core/css/parser/CSSVariableParser.h"
38 #include "core/css/parser/FontVariantLigaturesParser.h"
39 #include "core/css/parser/FontVariantNumericParser.h"
40 #include "core/css/properties/CSSPropertyAPIOffsetAnchor.h" 37 #include "core/css/properties/CSSPropertyAPIOffsetAnchor.h"
41 #include "core/css/properties/CSSPropertyAPIOffsetPosition.h" 38 #include "core/css/properties/CSSPropertyAPIOffsetPosition.h"
42 #include "core/css/properties/CSSPropertyAlignmentUtils.h" 39 #include "core/css/properties/CSSPropertyAlignmentUtils.h"
43 #include "core/css/properties/CSSPropertyAnimationIterationCountUtils.h" 40 #include "core/css/properties/CSSPropertyAnimationIterationCountUtils.h"
44 #include "core/css/properties/CSSPropertyAnimationNameUtils.h" 41 #include "core/css/properties/CSSPropertyAnimationNameUtils.h"
45 #include "core/css/properties/CSSPropertyBorderImageUtils.h" 42 #include "core/css/properties/CSSPropertyBorderImageUtils.h"
46 #include "core/css/properties/CSSPropertyColumnUtils.h" 43 #include "core/css/properties/CSSPropertyColumnUtils.h"
47 #include "core/css/properties/CSSPropertyDescriptor.h" 44 #include "core/css/properties/CSSPropertyDescriptor.h"
48 #include "core/css/properties/CSSPropertyFontUtils.h" 45 #include "core/css/properties/CSSPropertyFontUtils.h"
49 #include "core/css/properties/CSSPropertyLengthUtils.h" 46 #include "core/css/properties/CSSPropertyLengthUtils.h"
(...skipping 13 matching lines...) Expand all
63 class CSSCustomIdentValue; 60 class CSSCustomIdentValue;
64 61
65 CSSPropertyParser::CSSPropertyParser( 62 CSSPropertyParser::CSSPropertyParser(
66 const CSSParserTokenRange& range, 63 const CSSParserTokenRange& range,
67 const CSSParserContext* context, 64 const CSSParserContext* context,
68 HeapVector<CSSProperty, 256>* parsed_properties) 65 HeapVector<CSSProperty, 256>* parsed_properties)
69 : range_(range), context_(context), parsed_properties_(parsed_properties) { 66 : range_(range), context_(context), parsed_properties_(parsed_properties) {
70 range_.ConsumeWhitespace(); 67 range_.ConsumeWhitespace();
71 } 68 }
72 69
70 // AddProperty takes implicit as an enum, below we're using a bool because
71 // AddParsedProperty will be removed after we finish implemenation of property
72 // APIs.
73 void CSSPropertyParser::AddParsedProperty(CSSPropertyID resolved_property, 73 void CSSPropertyParser::AddParsedProperty(CSSPropertyID resolved_property,
74 CSSPropertyID current_shorthand, 74 CSSPropertyID current_shorthand,
75 const CSSValue& value, 75 const CSSValue& value,
76 bool important, 76 bool important,
77 bool implicit) { 77 bool implicit) {
78 AddProperty(resolved_property, current_shorthand, value, important, implicit, 78 AddProperty(resolved_property, current_shorthand, value, important,
79 implicit ? IsImplicitProperty::kImplicit
80 : IsImplicitProperty::kNotImplicit,
79 *parsed_properties_); 81 *parsed_properties_);
80 } 82 }
81 83
82 void CSSPropertyParser::AddExpandedPropertyForValue(CSSPropertyID property, 84 void CSSPropertyParser::AddExpandedPropertyForValue(CSSPropertyID property,
83 const CSSValue& value, 85 const CSSValue& value,
84 bool important) { 86 bool important) {
85 const StylePropertyShorthand& shorthand = shorthandForProperty(property); 87 const StylePropertyShorthand& shorthand = shorthandForProperty(property);
86 unsigned shorthand_length = shorthand.length(); 88 unsigned shorthand_length = shorthand.length();
87 DCHECK(shorthand_length); 89 DCHECK(shorthand_length);
88 const CSSPropertyID* longhands = shorthand.properties(); 90 const CSSPropertyID* longhands = shorthand.properties();
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 if (!CSSPropertyMetadata::IsProperty(unresolved_property)) 276 if (!CSSPropertyMetadata::IsProperty(unresolved_property))
275 return false; 277 return false;
276 AddParsedProperty(property, CSSPropertyInvalid, *value, important); 278 AddParsedProperty(property, CSSPropertyInvalid, *value, important);
277 } else { 279 } else {
278 AddExpandedPropertyForValue(property, *value, important); 280 AddExpandedPropertyForValue(property, *value, important);
279 } 281 }
280 range_ = range_copy; 282 range_ = range_copy;
281 return true; 283 return true;
282 } 284 }
283 285
284 static CSSIdentifierValue* ConsumeFontVariantCSS21(CSSParserTokenRange& range) {
285 return ConsumeIdent<CSSValueNormal, CSSValueSmallCaps>(range);
286 }
287
288 static CSSValue* ConsumeFontVariantList(CSSParserTokenRange& range) { 286 static CSSValue* ConsumeFontVariantList(CSSParserTokenRange& range) {
289 CSSValueList* values = CSSValueList::CreateCommaSeparated(); 287 CSSValueList* values = CSSValueList::CreateCommaSeparated();
290 do { 288 do {
291 if (range.Peek().Id() == CSSValueAll) { 289 if (range.Peek().Id() == CSSValueAll) {
292 // FIXME: CSSPropertyParser::ParseFontVariant() implements 290 // FIXME: CSSPropertyParser::ParseFontVariant() implements
293 // the old css3 draft: 291 // the old css3 draft:
294 // http://www.w3.org/TR/2002/WD-css3-webfonts-20020802/#font-variant 292 // http://www.w3.org/TR/2002/WD-css3-webfonts-20020802/#font-variant
295 // 'all' is only allowed in @font-face and with no other values. 293 // 'all' is only allowed in @font-face and with no other values.
296 if (values->length()) 294 if (values->length())
297 return nullptr; 295 return nullptr;
298 return ConsumeIdent(range); 296 return ConsumeIdent(range);
299 } 297 }
300 CSSIdentifierValue* font_variant = ConsumeFontVariantCSS21(range); 298 CSSIdentifierValue* font_variant =
299 CSSPropertyFontUtils::ConsumeFontVariantCSS21(range);
301 if (font_variant) 300 if (font_variant)
302 values->Append(*font_variant); 301 values->Append(*font_variant);
303 } while (ConsumeCommaIncludingWhitespace(range)); 302 } while (ConsumeCommaIncludingWhitespace(range));
304 303
305 if (values->length()) 304 if (values->length())
306 return values; 305 return values;
307 306
308 return nullptr; 307 return nullptr;
309 } 308 }
310 309
(...skipping 1484 matching lines...) Expand 10 before | Expand all | Expand 10 after
1795 break; 1794 break;
1796 } 1795 }
1797 1796
1798 if (!parsed_value || !range_.AtEnd()) 1797 if (!parsed_value || !range_.AtEnd())
1799 return false; 1798 return false;
1800 1799
1801 AddParsedProperty(prop_id, CSSPropertyInvalid, *parsed_value, false); 1800 AddParsedProperty(prop_id, CSSPropertyInvalid, *parsed_value, false);
1802 return true; 1801 return true;
1803 } 1802 }
1804 1803
1805 bool CSSPropertyParser::ConsumeSystemFont(bool important) {
1806 CSSValueID system_font_id = range_.ConsumeIncludingWhitespace().Id();
1807 DCHECK_GE(system_font_id, CSSValueCaption);
1808 DCHECK_LE(system_font_id, CSSValueStatusBar);
1809 if (!range_.AtEnd())
1810 return false;
1811
1812 FontStyle font_style = kFontStyleNormal;
1813 FontWeight font_weight = kFontWeightNormal;
1814 float font_size = 0;
1815 AtomicString font_family;
1816 LayoutTheme::GetTheme().SystemFont(system_font_id, font_style, font_weight,
1817 font_size, font_family);
1818
1819 AddParsedProperty(CSSPropertyFontStyle, CSSPropertyFont,
1820 *CSSIdentifierValue::Create(font_style == kFontStyleItalic
1821 ? CSSValueItalic
1822 : CSSValueNormal),
1823 important);
1824 AddParsedProperty(CSSPropertyFontWeight, CSSPropertyFont,
1825 *CSSIdentifierValue::Create(font_weight), important);
1826 AddParsedProperty(CSSPropertyFontSize, CSSPropertyFont,
1827 *CSSPrimitiveValue::Create(
1828 font_size, CSSPrimitiveValue::UnitType::kPixels),
1829 important);
1830 CSSValueList* font_family_list = CSSValueList::CreateCommaSeparated();
1831 font_family_list->Append(*CSSFontFamilyValue::Create(font_family));
1832 AddParsedProperty(CSSPropertyFontFamily, CSSPropertyFont, *font_family_list,
1833 important);
1834
1835 AddParsedProperty(CSSPropertyFontStretch, CSSPropertyFont,
1836 *CSSIdentifierValue::Create(CSSValueNormal), important);
1837 AddParsedProperty(CSSPropertyFontVariantCaps, CSSPropertyFont,
1838 *CSSIdentifierValue::Create(CSSValueNormal), important);
1839 AddParsedProperty(CSSPropertyFontVariantLigatures, CSSPropertyFont,
1840 *CSSIdentifierValue::Create(CSSValueNormal), important);
1841 AddParsedProperty(CSSPropertyFontVariantNumeric, CSSPropertyFont,
1842 *CSSIdentifierValue::Create(CSSValueNormal), important);
1843 AddParsedProperty(CSSPropertyLineHeight, CSSPropertyFont,
1844 *CSSIdentifierValue::Create(CSSValueNormal), important);
1845 return true;
1846 }
1847
1848 bool CSSPropertyParser::ConsumeFont(bool important) {
1849 // Let's check if there is an inherit or initial somewhere in the shorthand.
1850 CSSParserTokenRange range = range_;
1851 while (!range.AtEnd()) {
1852 CSSValueID id = range.ConsumeIncludingWhitespace().Id();
1853 if (id == CSSValueInherit || id == CSSValueInitial)
1854 return false;
1855 }
1856 // Optional font-style, font-variant, font-stretch and font-weight.
1857 CSSIdentifierValue* font_style = nullptr;
1858 CSSIdentifierValue* font_variant_caps = nullptr;
1859 CSSIdentifierValue* font_weight = nullptr;
1860 CSSIdentifierValue* font_stretch = nullptr;
1861 while (!range_.AtEnd()) {
1862 CSSValueID id = range_.Peek().Id();
1863 if (!font_style && CSSParserFastPaths::IsValidKeywordPropertyAndValue(
1864 CSSPropertyFontStyle, id, context_->Mode())) {
1865 font_style = ConsumeIdent(range_);
1866 continue;
1867 }
1868 if (!font_variant_caps &&
1869 (id == CSSValueNormal || id == CSSValueSmallCaps)) {
1870 // Font variant in the shorthand is particular, it only accepts normal or
1871 // small-caps.
1872 // See https://drafts.csswg.org/css-fonts/#propdef-font
1873 font_variant_caps = ConsumeFontVariantCSS21(range_);
1874 if (font_variant_caps)
1875 continue;
1876 }
1877 if (!font_weight) {
1878 font_weight = CSSPropertyFontUtils::ConsumeFontWeight(range_);
1879 if (font_weight)
1880 continue;
1881 }
1882 if (!font_stretch && CSSParserFastPaths::IsValidKeywordPropertyAndValue(
1883 CSSPropertyFontStretch, id, context_->Mode()))
1884 font_stretch = ConsumeIdent(range_);
1885 else
1886 break;
1887 }
1888
1889 if (range_.AtEnd())
1890 return false;
1891
1892 AddParsedProperty(
1893 CSSPropertyFontStyle, CSSPropertyFont,
1894 font_style ? *font_style : *CSSIdentifierValue::Create(CSSValueNormal),
1895 important);
1896 AddParsedProperty(CSSPropertyFontVariantCaps, CSSPropertyFont,
1897 font_variant_caps
1898 ? *font_variant_caps
1899 : *CSSIdentifierValue::Create(CSSValueNormal),
1900 important);
1901 AddParsedProperty(CSSPropertyFontVariantLigatures, CSSPropertyFont,
1902 *CSSIdentifierValue::Create(CSSValueNormal), important);
1903 AddParsedProperty(CSSPropertyFontVariantNumeric, CSSPropertyFont,
1904 *CSSIdentifierValue::Create(CSSValueNormal), important);
1905
1906 AddParsedProperty(
1907 CSSPropertyFontWeight, CSSPropertyFont,
1908 font_weight ? *font_weight : *CSSIdentifierValue::Create(CSSValueNormal),
1909 important);
1910 AddParsedProperty(CSSPropertyFontStretch, CSSPropertyFont,
1911 font_stretch ? *font_stretch
1912 : *CSSIdentifierValue::Create(CSSValueNormal),
1913 important);
1914
1915 // Now a font size _must_ come.
1916 CSSValue* font_size =
1917 CSSPropertyFontUtils::ConsumeFontSize(range_, context_->Mode());
1918 if (!font_size || range_.AtEnd())
1919 return false;
1920
1921 AddParsedProperty(CSSPropertyFontSize, CSSPropertyFont, *font_size,
1922 important);
1923
1924 if (ConsumeSlashIncludingWhitespace(range_)) {
1925 CSSValue* line_height =
1926 CSSPropertyFontUtils::ConsumeLineHeight(range_, context_->Mode());
1927 if (!line_height)
1928 return false;
1929 AddParsedProperty(CSSPropertyLineHeight, CSSPropertyFont, *line_height,
1930 important);
1931 } else {
1932 AddParsedProperty(CSSPropertyLineHeight, CSSPropertyFont,
1933 *CSSIdentifierValue::Create(CSSValueNormal), important);
1934 }
1935
1936 // Font family must come now.
1937 CSSValue* parsed_family_value =
1938 CSSPropertyFontUtils::ConsumeFontFamily(range_);
1939 if (!parsed_family_value)
1940 return false;
1941
1942 AddParsedProperty(CSSPropertyFontFamily, CSSPropertyFont,
1943 *parsed_family_value, important);
1944
1945 // FIXME: http://www.w3.org/TR/2011/WD-css3-fonts-20110324/#font-prop requires
1946 // that "font-stretch", "font-size-adjust", and "font-kerning" be reset to
1947 // their initial values but we don't seem to support them at the moment. They
1948 // should also be added here once implemented.
1949 return range_.AtEnd();
1950 }
1951
1952 bool CSSPropertyParser::ConsumeFontVariantShorthand(bool important) {
1953 if (IdentMatches<CSSValueNormal, CSSValueNone>(range_.Peek().Id())) {
1954 AddParsedProperty(CSSPropertyFontVariantLigatures, CSSPropertyFontVariant,
1955 *ConsumeIdent(range_), important);
1956 AddParsedProperty(CSSPropertyFontVariantCaps, CSSPropertyFontVariant,
1957 *CSSIdentifierValue::Create(CSSValueNormal), important);
1958 return range_.AtEnd();
1959 }
1960
1961 CSSIdentifierValue* caps_value = nullptr;
1962 FontVariantLigaturesParser ligatures_parser;
1963 FontVariantNumericParser numeric_parser;
1964 do {
1965 FontVariantLigaturesParser::ParseResult ligatures_parse_result =
1966 ligatures_parser.ConsumeLigature(range_);
1967 FontVariantNumericParser::ParseResult numeric_parse_result =
1968 numeric_parser.ConsumeNumeric(range_);
1969 if (ligatures_parse_result ==
1970 FontVariantLigaturesParser::ParseResult::kConsumedValue ||
1971 numeric_parse_result ==
1972 FontVariantNumericParser::ParseResult::kConsumedValue)
1973 continue;
1974
1975 if (ligatures_parse_result ==
1976 FontVariantLigaturesParser::ParseResult::kDisallowedValue ||
1977 numeric_parse_result ==
1978 FontVariantNumericParser::ParseResult::kDisallowedValue)
1979 return false;
1980
1981 CSSValueID id = range_.Peek().Id();
1982 switch (id) {
1983 case CSSValueSmallCaps:
1984 case CSSValueAllSmallCaps:
1985 case CSSValuePetiteCaps:
1986 case CSSValueAllPetiteCaps:
1987 case CSSValueUnicase:
1988 case CSSValueTitlingCaps:
1989 // Only one caps value permitted in font-variant grammar.
1990 if (caps_value)
1991 return false;
1992 caps_value = ConsumeIdent(range_);
1993 break;
1994 default:
1995 return false;
1996 }
1997 } while (!range_.AtEnd());
1998
1999 AddParsedProperty(CSSPropertyFontVariantLigatures, CSSPropertyFontVariant,
2000 *ligatures_parser.FinalizeValue(), important);
2001 AddParsedProperty(CSSPropertyFontVariantNumeric, CSSPropertyFontVariant,
2002 *numeric_parser.FinalizeValue(), important);
2003 AddParsedProperty(
2004 CSSPropertyFontVariantCaps, CSSPropertyFontVariant,
2005 caps_value ? *caps_value : *CSSIdentifierValue::Create(CSSValueNormal),
2006 important);
2007 return true;
2008 }
2009
2010 bool CSSPropertyParser::ConsumeBorderSpacing(bool important) { 1804 bool CSSPropertyParser::ConsumeBorderSpacing(bool important) {
2011 CSSValue* horizontal_spacing = ConsumeLength( 1805 CSSValue* horizontal_spacing = ConsumeLength(
2012 range_, context_->Mode(), kValueRangeNonNegative, UnitlessQuirk::kAllow); 1806 range_, context_->Mode(), kValueRangeNonNegative, UnitlessQuirk::kAllow);
2013 if (!horizontal_spacing) 1807 if (!horizontal_spacing)
2014 return false; 1808 return false;
2015 CSSValue* vertical_spacing = horizontal_spacing; 1809 CSSValue* vertical_spacing = horizontal_spacing;
2016 if (!range_.AtEnd()) { 1810 if (!range_.AtEnd()) {
2017 vertical_spacing = 1811 vertical_spacing =
2018 ConsumeLength(range_, context_->Mode(), kValueRangeNonNegative, 1812 ConsumeLength(range_, context_->Mode(), kValueRangeNonNegative,
2019 UnitlessQuirk::kAllow); 1813 UnitlessQuirk::kAllow);
(...skipping 1015 matching lines...) Expand 10 before | Expand all | Expand 10 after
3035 const CSSPropertyDescriptor& css_property_desc = 2829 const CSSPropertyDescriptor& css_property_desc =
3036 CSSPropertyDescriptor::Get(property); 2830 CSSPropertyDescriptor::Get(property);
3037 if (css_property_desc.parseShorthand) { 2831 if (css_property_desc.parseShorthand) {
3038 return css_property_desc.parseShorthand( 2832 return css_property_desc.parseShorthand(
3039 important, range_, *context_, 2833 important, range_, *context_,
3040 CSSParserLocalContext(isPropertyAlias(unresolved_property)), 2834 CSSParserLocalContext(isPropertyAlias(unresolved_property)),
3041 *parsed_properties_); 2835 *parsed_properties_);
3042 } 2836 }
3043 2837
3044 switch (property) { 2838 switch (property) {
3045 case CSSPropertyOverflow: {
3046 CSSValueID id = range_.ConsumeIncludingWhitespace().Id();
3047 if (!CSSParserFastPaths::IsValidKeywordPropertyAndValue(
3048 CSSPropertyOverflowY, id, context_->Mode()))
3049 return false;
3050 if (!range_.AtEnd())
3051 return false;
3052 CSSValue* overflow_y_value = CSSIdentifierValue::Create(id);
3053
3054 CSSValue* overflow_x_value = nullptr;
3055
3056 // FIXME: -webkit-paged-x or -webkit-paged-y only apply to overflow-y.
3057 // If
3058 // this value has been set using the shorthand, then for now overflow-x
3059 // will default to auto, but once we implement pagination controls, it
3060 // should default to hidden. If the overflow-y value is anything but
3061 // paged-x or paged-y, then overflow-x and overflow-y should have the
3062 // same
3063 // value.
3064 if (id == CSSValueWebkitPagedX || id == CSSValueWebkitPagedY)
3065 overflow_x_value = CSSIdentifierValue::Create(CSSValueAuto);
3066 else
3067 overflow_x_value = overflow_y_value;
3068 AddParsedProperty(CSSPropertyOverflowX, CSSPropertyOverflow,
3069 *overflow_x_value, important);
3070 AddParsedProperty(CSSPropertyOverflowY, CSSPropertyOverflow,
3071 *overflow_y_value, important);
3072 return true;
3073 }
3074 case CSSPropertyFont: {
3075 const CSSParserToken& token = range_.Peek();
3076 if (token.Id() >= CSSValueCaption && token.Id() <= CSSValueStatusBar)
3077 return ConsumeSystemFont(important);
3078 return ConsumeFont(important);
3079 }
3080 case CSSPropertyFontVariant:
3081 return ConsumeFontVariantShorthand(important);
3082 case CSSPropertyBorderSpacing: 2839 case CSSPropertyBorderSpacing:
3083 return ConsumeBorderSpacing(important); 2840 return ConsumeBorderSpacing(important);
3084 case CSSPropertyColumns: 2841 case CSSPropertyColumns:
3085 return ConsumeColumns(important); 2842 return ConsumeColumns(important);
3086 case CSSPropertyAnimation: 2843 case CSSPropertyAnimation:
3087 return ConsumeAnimationShorthand( 2844 return ConsumeAnimationShorthand(
3088 animationShorthandForParsing(), 2845 animationShorthandForParsing(),
3089 unresolved_property == CSSPropertyAliasWebkitAnimation, important); 2846 unresolved_property == CSSPropertyAliasWebkitAnimation, important);
3090 case CSSPropertyTransition: 2847 case CSSPropertyTransition:
3091 return ConsumeAnimationShorthand(transitionShorthandForParsing(), false, 2848 return ConsumeAnimationShorthand(transitionShorthandForParsing(), false,
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
3241 case CSSPropertyScrollSnapMarginBlock: 2998 case CSSPropertyScrollSnapMarginBlock:
3242 return Consume2Values(scrollSnapMarginBlockShorthand(), important); 2999 return Consume2Values(scrollSnapMarginBlockShorthand(), important);
3243 case CSSPropertyScrollSnapMarginInline: 3000 case CSSPropertyScrollSnapMarginInline:
3244 return Consume2Values(scrollSnapMarginInlineShorthand(), important); 3001 return Consume2Values(scrollSnapMarginInlineShorthand(), important);
3245 default: 3002 default:
3246 return false; 3003 return false;
3247 } 3004 }
3248 } 3005 }
3249 3006
3250 } // namespace blink 3007 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698