Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "config.h" | 5 #include "config.h" |
| 6 #include "core/css/parser/CSSPropertyParser.h" | 6 #include "core/css/parser/CSSPropertyParser.h" |
| 7 | 7 |
| 8 #include "core/StylePropertyShorthand.h" | 8 #include "core/StylePropertyShorthand.h" |
| 9 #include "core/css/CSSCalculationValue.h" | 9 #include "core/css/CSSCalculationValue.h" |
| 10 #include "core/css/CSSCursorImageValue.h" | 10 #include "core/css/CSSCursorImageValue.h" |
| (...skipping 1907 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1918 if (list->hasValue(ident.get())) | 1918 if (list->hasValue(ident.get())) |
| 1919 return nullptr; | 1919 return nullptr; |
| 1920 list->append(ident.release()); | 1920 list->append(ident.release()); |
| 1921 } | 1921 } |
| 1922 | 1922 |
| 1923 if (!list->length()) | 1923 if (!list->length()) |
| 1924 return nullptr; | 1924 return nullptr; |
| 1925 return list.release(); | 1925 return list.release(); |
| 1926 } | 1926 } |
| 1927 | 1927 |
| 1928 static PassRefPtrWillBeRawPtr<CSSValue> consumeMotionPath(CSSParserTokenRange& r ange) | 1928 static PassRefPtrWillBeRawPtr<CSSValue> consumePath(CSSParserTokenRange& range, CSSPropertyID property) |
| 1929 { | 1929 { |
| 1930 CSSValueID id = range.peek().id(); | 1930 CSSValueID id = range.peek().id(); |
| 1931 if (id == CSSValueNone) | 1931 if (id == CSSValueNone && property == CSSPropertyMotionPath) |
|
fs
2015/12/11 13:01:58
Suggestion: Could also do the trivial split - cons
| |
| 1932 return consumeIdent(range); | 1932 return consumeIdent(range); |
| 1933 // FIXME: Add support for <url>, <basic-shape>, <geometry-box>. | 1933 // FIXME: Add support for <url>, <basic-shape>, <geometry-box>. |
| 1934 if (range.peek().functionId() != CSSValuePath) | 1934 if (range.peek().functionId() != CSSValuePath) |
| 1935 return nullptr; | 1935 return nullptr; |
| 1936 | 1936 |
| 1937 // FIXME: Add support for <fill-rule>. | 1937 // FIXME: Add support for <fill-rule>. |
| 1938 CSSParserTokenRange functionRange = range; | 1938 CSSParserTokenRange functionRange = range; |
| 1939 CSSParserTokenRange functionArgs = consumeFunction(functionRange); | 1939 CSSParserTokenRange functionArgs = consumeFunction(functionRange); |
| 1940 | 1940 |
| 1941 if (functionArgs.peek().type() != StringToken) | 1941 if (functionArgs.peek().type() != StringToken) |
| 1942 return nullptr; | 1942 return nullptr; |
| 1943 String pathString = functionArgs.consumeIncludingWhitespace().value(); | 1943 String pathString = functionArgs.consumeIncludingWhitespace().value(); |
| 1944 Path path; | 1944 |
| 1945 if (!buildPathFromString(pathString, path) || !functionArgs.atEnd()) | 1945 OwnPtr<SVGPathByteStream> byteStream = SVGPathByteStream::create(); |
| 1946 if (!buildByteStreamFromString(pathString, *byteStream) || !functionArgs.atE nd()) | |
| 1946 return nullptr; | 1947 return nullptr; |
| 1947 | 1948 |
| 1948 range = functionRange; | 1949 range = functionRange; |
| 1949 return CSSPathValue::create(pathString); | 1950 return CSSPathValue::create(byteStream.release()); |
| 1950 } | 1951 } |
| 1951 | 1952 |
| 1952 static PassRefPtrWillBeRawPtr<CSSValue> consumeMotionRotation(CSSParserTokenRang e& range, CSSParserMode cssParserMode) | 1953 static PassRefPtrWillBeRawPtr<CSSValue> consumeMotionRotation(CSSParserTokenRang e& range, CSSParserMode cssParserMode) |
| 1953 { | 1954 { |
| 1954 RefPtrWillBeRawPtr<CSSValue> angle = consumeAngle(range, cssParserMode); | 1955 RefPtrWillBeRawPtr<CSSValue> angle = consumeAngle(range, cssParserMode); |
| 1955 RefPtrWillBeRawPtr<CSSValue> keyword = consumeIdent<CSSValueAuto, CSSValueRe verse>(range); | 1956 RefPtrWillBeRawPtr<CSSValue> keyword = consumeIdent<CSSValueAuto, CSSValueRe verse>(range); |
| 1956 if (!angle && !keyword) | 1957 if (!angle && !keyword) |
| 1957 return nullptr; | 1958 return nullptr; |
| 1958 | 1959 |
| 1959 if (!angle) | 1960 if (!angle) |
| (...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2567 return consumeZIndex(m_range); | 2568 return consumeZIndex(m_range); |
| 2568 case CSSPropertyTextShadow: // CSS2 property, dropped in CSS2.1, back in CSS 3, so treat as CSS3 | 2569 case CSSPropertyTextShadow: // CSS2 property, dropped in CSS2.1, back in CSS 3, so treat as CSS3 |
| 2569 case CSSPropertyBoxShadow: | 2570 case CSSPropertyBoxShadow: |
| 2570 return consumeShadow(m_range, m_context, property == CSSPropertyBoxShado w); | 2571 return consumeShadow(m_range, m_context, property == CSSPropertyBoxShado w); |
| 2571 case CSSPropertyWebkitFilter: | 2572 case CSSPropertyWebkitFilter: |
| 2572 case CSSPropertyBackdropFilter: | 2573 case CSSPropertyBackdropFilter: |
| 2573 return consumeFilter(m_range, m_context); | 2574 return consumeFilter(m_range, m_context); |
| 2574 case CSSPropertyWebkitTextDecorationsInEffect: | 2575 case CSSPropertyWebkitTextDecorationsInEffect: |
| 2575 case CSSPropertyTextDecorationLine: | 2576 case CSSPropertyTextDecorationLine: |
| 2576 return consumeTextDecorationLine(m_range); | 2577 return consumeTextDecorationLine(m_range); |
| 2578 case CSSPropertyD: | |
| 2577 case CSSPropertyMotionPath: | 2579 case CSSPropertyMotionPath: |
| 2578 return consumeMotionPath(m_range); | 2580 return consumePath(m_range, property); |
| 2579 case CSSPropertyMotionOffset: | 2581 case CSSPropertyMotionOffset: |
| 2580 return consumeLengthOrPercent(m_range, m_context.mode(), ValueRangeAll); | 2582 return consumeLengthOrPercent(m_range, m_context.mode(), ValueRangeAll); |
| 2581 case CSSPropertyMotionRotation: | 2583 case CSSPropertyMotionRotation: |
| 2582 return consumeMotionRotation(m_range, m_context.mode()); | 2584 return consumeMotionRotation(m_range, m_context.mode()); |
| 2583 case CSSPropertyWebkitTextEmphasisStyle: | 2585 case CSSPropertyWebkitTextEmphasisStyle: |
| 2584 return consumeTextEmphasisStyle(m_range); | 2586 return consumeTextEmphasisStyle(m_range); |
| 2585 case CSSPropertyOutlineColor: | 2587 case CSSPropertyOutlineColor: |
| 2586 return consumeOutlineColor(m_range, m_context); | 2588 return consumeOutlineColor(m_range, m_context); |
| 2587 case CSSPropertyOutlineOffset: | 2589 case CSSPropertyOutlineOffset: |
| 2588 return consumeLength(m_range, m_context.mode(), ValueRangeAll); | 2590 return consumeLength(m_range, m_context.mode(), ValueRangeAll); |
| (...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3234 return consumeShorthandGreedily(flexFlowShorthand(), important); | 3236 return consumeShorthandGreedily(flexFlowShorthand(), important); |
| 3235 case CSSPropertyWebkitColumnRule: | 3237 case CSSPropertyWebkitColumnRule: |
| 3236 return consumeShorthandGreedily(webkitColumnRuleShorthand(), important); | 3238 return consumeShorthandGreedily(webkitColumnRuleShorthand(), important); |
| 3237 default: | 3239 default: |
| 3238 m_currentShorthand = oldShorthand; | 3240 m_currentShorthand = oldShorthand; |
| 3239 return false; | 3241 return false; |
| 3240 } | 3242 } |
| 3241 } | 3243 } |
| 3242 | 3244 |
| 3243 } // namespace blink | 3245 } // namespace blink |
| OLD | NEW |