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/CSSCustomIdentValue.h" | 10 #include "core/css/CSSCustomIdentValue.h" |
(...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
828 return nullptr; | 828 return nullptr; |
829 RefPtrWillBeRawPtr<CSSPrimitiveValue> bottom = consumeClipComponent(args, cs
sParserMode); | 829 RefPtrWillBeRawPtr<CSSPrimitiveValue> bottom = consumeClipComponent(args, cs
sParserMode); |
830 if (!bottom || (needsComma && !consumeCommaIncludingWhitespace(args))) | 830 if (!bottom || (needsComma && !consumeCommaIncludingWhitespace(args))) |
831 return nullptr; | 831 return nullptr; |
832 RefPtrWillBeRawPtr<CSSPrimitiveValue> left = consumeClipComponent(args, cssP
arserMode); | 832 RefPtrWillBeRawPtr<CSSPrimitiveValue> left = consumeClipComponent(args, cssP
arserMode); |
833 if (!left || !args.atEnd()) | 833 if (!left || !args.atEnd()) |
834 return nullptr; | 834 return nullptr; |
835 return CSSQuadValue::create(top.release(), right.release(), bottom.release()
, left.release(), CSSQuadValue::SerializeAsRect); | 835 return CSSQuadValue::create(top.release(), right.release(), bottom.release()
, left.release(), CSSQuadValue::SerializeAsRect); |
836 } | 836 } |
837 | 837 |
| 838 static bool consumePan(CSSParserTokenRange& range, RefPtrWillBeRawPtr<CSSValue>&
panX, RefPtrWillBeRawPtr<CSSValue>& panY) |
| 839 { |
| 840 CSSValueID id = range.peek().id(); |
| 841 if ((id == CSSValuePanX || id == CSSValuePanRight || id == CSSValuePanLeft)
&& !panX) { |
| 842 if (id != CSSValuePanX && !RuntimeEnabledFeatures::cssTouchActionPanDire
ctionsEnabled()) |
| 843 return false; |
| 844 panX = consumeIdent(range); |
| 845 } else if ((id == CSSValuePanY || id == CSSValuePanDown || id == CSSValuePan
Up) && !panY) { |
| 846 if (id != CSSValuePanY && !RuntimeEnabledFeatures::cssTouchActionPanDire
ctionsEnabled()) |
| 847 return false; |
| 848 panY = consumeIdent(range); |
| 849 } else { |
| 850 return false; |
| 851 } |
| 852 return true; |
| 853 } |
| 854 |
| 855 static PassRefPtrWillBeRawPtr<CSSValue> consumeTouchAction(CSSParserTokenRange&
range) |
| 856 { |
| 857 RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated()
; |
| 858 CSSValueID id = range.peek().id(); |
| 859 if (id == CSSValueAuto || id == CSSValueNone || id == CSSValueManipulation)
{ |
| 860 list->append(consumeIdent(range)); |
| 861 return list.release(); |
| 862 } |
| 863 |
| 864 RefPtrWillBeRawPtr<CSSValue> panX = nullptr; |
| 865 RefPtrWillBeRawPtr<CSSValue> panY = nullptr; |
| 866 if (!consumePan(range, panX, panY)) |
| 867 return nullptr; |
| 868 if (!range.atEnd() && !consumePan(range, panX, panY)) |
| 869 return nullptr; |
| 870 |
| 871 if (panX) |
| 872 list->append(panX.release()); |
| 873 if (panY) |
| 874 list->append(panY.release()); |
| 875 return list.release(); |
| 876 } |
| 877 |
838 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSProperty
ID propId) | 878 PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSProperty
ID propId) |
839 { | 879 { |
840 m_range.consumeWhitespace(); | 880 m_range.consumeWhitespace(); |
841 switch (propId) { | 881 switch (propId) { |
842 case CSSPropertyWillChange: | 882 case CSSPropertyWillChange: |
843 return consumeWillChange(m_range); | 883 return consumeWillChange(m_range); |
844 case CSSPropertyPage: | 884 case CSSPropertyPage: |
845 return consumePage(m_range); | 885 return consumePage(m_range); |
846 case CSSPropertyQuotes: | 886 case CSSPropertyQuotes: |
847 return consumeQuotes(m_range); | 887 return consumeQuotes(m_range); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
889 case CSSPropertyWidth: | 929 case CSSPropertyWidth: |
890 case CSSPropertyHeight: | 930 case CSSPropertyHeight: |
891 return consumeWidthOrHeight(m_range, m_context, UnitlessQuirk::Allow); | 931 return consumeWidthOrHeight(m_range, m_context, UnitlessQuirk::Allow); |
892 case CSSPropertyWebkitMinLogicalWidth: | 932 case CSSPropertyWebkitMinLogicalWidth: |
893 case CSSPropertyWebkitMinLogicalHeight: | 933 case CSSPropertyWebkitMinLogicalHeight: |
894 case CSSPropertyWebkitLogicalWidth: | 934 case CSSPropertyWebkitLogicalWidth: |
895 case CSSPropertyWebkitLogicalHeight: | 935 case CSSPropertyWebkitLogicalHeight: |
896 return consumeWidthOrHeight(m_range, m_context); | 936 return consumeWidthOrHeight(m_range, m_context); |
897 case CSSPropertyClip: | 937 case CSSPropertyClip: |
898 return consumeClip(m_range, m_context.mode()); | 938 return consumeClip(m_range, m_context.mode()); |
| 939 case CSSPropertyTouchAction: |
| 940 return consumeTouchAction(m_range); |
899 default: | 941 default: |
900 return nullptr; | 942 return nullptr; |
901 } | 943 } |
902 } | 944 } |
903 | 945 |
904 static PassRefPtrWillBeRawPtr<CSSValueList> consumeFontFaceUnicodeRange(CSSParse
rTokenRange& range) | 946 static PassRefPtrWillBeRawPtr<CSSValueList> consumeFontFaceUnicodeRange(CSSParse
rTokenRange& range) |
905 { | 947 { |
906 RefPtrWillBeRawPtr<CSSValueList> values = CSSValueList::createCommaSeparated
(); | 948 RefPtrWillBeRawPtr<CSSValueList> values = CSSValueList::createCommaSeparated
(); |
907 | 949 |
908 do { | 950 do { |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1283 } | 1325 } |
1284 case CSSPropertyBorderSpacing: | 1326 case CSSPropertyBorderSpacing: |
1285 return consumeBorderSpacing(important); | 1327 return consumeBorderSpacing(important); |
1286 default: | 1328 default: |
1287 m_currentShorthand = oldShorthand; | 1329 m_currentShorthand = oldShorthand; |
1288 return false; | 1330 return false; |
1289 } | 1331 } |
1290 } | 1332 } |
1291 | 1333 |
1292 } // namespace blink | 1334 } // namespace blink |
OLD | NEW |