OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2003 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2003 Lars Knoll (knoll@kde.org) |
3 * Copyright (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 3 * Copyright (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. | 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. |
5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> | 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> |
6 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> | 6 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
8 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. | 8 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. |
9 * Copyright (C) 2012 Intel Corporation. All rights reserved. | 9 * Copyright (C) 2012 Intel Corporation. All rights reserved. |
10 * | 10 * |
(...skipping 1887 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1898 m_valueList->next(); | 1898 m_valueList->next(); |
1899 return parsedValue; | 1899 return parsedValue; |
1900 } | 1900 } |
1901 return nullptr; | 1901 return nullptr; |
1902 } | 1902 } |
1903 | 1903 |
1904 bool CSSPropertyParser::parseColumnsShorthand(bool important) | 1904 bool CSSPropertyParser::parseColumnsShorthand(bool important) |
1905 { | 1905 { |
1906 RefPtrWillBeRawPtr<CSSValue> columnWidth = nullptr; | 1906 RefPtrWillBeRawPtr<CSSValue> columnWidth = nullptr; |
1907 RefPtrWillBeRawPtr<CSSValue> columnCount = nullptr; | 1907 RefPtrWillBeRawPtr<CSSValue> columnCount = nullptr; |
1908 bool hasPendingExplicitAuto = false; | |
1909 | 1908 |
1910 for (unsigned propertiesParsed = 0; CSSParserValue* value = m_valueList->cur
rent(); propertiesParsed++) { | 1909 for (unsigned propertiesParsed = 0; CSSParserValue* value = m_valueList->cur
rent(); propertiesParsed++) { |
1911 if (propertiesParsed >= 2) | 1910 if (propertiesParsed >= 2) |
1912 return false; // Too many values for this shorthand. Invalid declara
tion. | 1911 return false; // Too many values for this shorthand. Invalid declara
tion. |
1913 if (!propertiesParsed && value->id == CSSValueAuto) { | 1912 if (value->id == CSSValueAuto) { |
1914 // 'auto' is a valid value for any of the two longhands, and at this
point we | 1913 // Skip 'auto' as we will use it for initial value if no width/count
was parsed. |
1915 // don't know which one(s) it is meant for. We need to see if there
are other | |
1916 // values first. | |
1917 m_valueList->next(); | 1914 m_valueList->next(); |
1918 hasPendingExplicitAuto = true; | |
1919 } else { | 1915 } else { |
1920 if (!columnWidth) { | 1916 if (!columnWidth) { |
1921 if ((columnWidth = parseColumnWidth())) | 1917 if ((columnWidth = parseColumnWidth())) |
1922 continue; | 1918 continue; |
1923 } | 1919 } |
1924 if (!columnCount) { | 1920 if (!columnCount) { |
1925 if ((columnCount = parseColumnCount())) | 1921 if ((columnCount = parseColumnCount())) |
1926 continue; | 1922 continue; |
1927 } | 1923 } |
1928 // If we didn't find at least one match, this is an | 1924 // If we didn't find at least one match, this is an |
1929 // invalid shorthand and we have to ignore it. | 1925 // invalid shorthand and we have to ignore it. |
1930 return false; | 1926 return false; |
1931 } | 1927 } |
1932 } | 1928 } |
1933 if (hasPendingExplicitAuto) { | |
1934 // Time to assign the previously skipped 'auto' value to a property. If
both properties are | |
1935 // unassigned at this point (i.e. 'columns:auto'), it doesn't matter tha
t much which one we | |
1936 // set (although it does make a slight difference to web-inspector). The
one we don't set | |
1937 // here will get an implicit 'auto' value further down. | |
1938 if (!columnWidth) { | |
1939 columnWidth = cssValuePool().createIdentifierValue(CSSValueAuto); | |
1940 } else { | |
1941 ASSERT(!columnCount); | |
1942 columnCount = cssValuePool().createIdentifierValue(CSSValueAuto); | |
1943 } | |
1944 } | |
1945 ASSERT(columnCount || columnWidth); | |
1946 | 1929 |
1947 // Any unassigned property at this point will become implicit 'auto'. | 1930 if (!columnWidth) |
1948 if (columnWidth) | 1931 columnWidth = cssValuePool().createIdentifierValue(CSSValueAuto); |
1949 addProperty(CSSPropertyWebkitColumnWidth, columnWidth, important); | 1932 addProperty(CSSPropertyWebkitColumnWidth, columnWidth, important); |
1950 else | 1933 if (!columnCount) |
1951 addProperty(CSSPropertyWebkitColumnWidth, cssValuePool().createIdentifie
rValue(CSSValueAuto), important, true /* implicit */); | 1934 columnCount = cssValuePool().createIdentifierValue(CSSValueAuto); |
1952 if (columnCount) | 1935 addProperty(CSSPropertyWebkitColumnCount, columnCount, important); |
1953 addProperty(CSSPropertyWebkitColumnCount, columnCount, important); | |
1954 else | |
1955 addProperty(CSSPropertyWebkitColumnCount, cssValuePool().createIdentifie
rValue(CSSValueAuto), important, true /* implicit */); | |
1956 return true; | 1936 return true; |
1957 } | 1937 } |
1958 | 1938 |
1959 bool CSSPropertyParser::parseShorthand(CSSPropertyID propId, const StyleProperty
Shorthand& shorthand, bool important) | 1939 bool CSSPropertyParser::parseShorthand(CSSPropertyID propId, const StyleProperty
Shorthand& shorthand, bool important) |
1960 { | 1940 { |
1961 // We try to match as many properties as possible | 1941 // We try to match as many properties as possible |
1962 // We set up an array of booleans to mark which property has been found, | 1942 // We set up an array of booleans to mark which property has been found, |
1963 // and we try to search for properties until it makes no longer any sense. | 1943 // and we try to search for properties until it makes no longer any sense. |
1964 ShorthandScope scope(this, propId); | 1944 ShorthandScope scope(this, propId); |
1965 | 1945 |
(...skipping 6126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8092 } | 8072 } |
8093 } | 8073 } |
8094 | 8074 |
8095 if (!list->length()) | 8075 if (!list->length()) |
8096 return nullptr; | 8076 return nullptr; |
8097 | 8077 |
8098 return list.release(); | 8078 return list.release(); |
8099 } | 8079 } |
8100 | 8080 |
8101 } // namespace blink | 8081 } // namespace blink |
OLD | NEW |