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 "core/css/parser/CSSPropertyParser.h" | 5 #include "core/css/parser/CSSPropertyParser.h" |
6 | 6 |
7 #include "core/StylePropertyShorthand.h" | 7 #include "core/StylePropertyShorthand.h" |
8 #include "core/css/CSSBasicShapeValues.h" | 8 #include "core/css/CSSBasicShapeValues.h" |
9 #include "core/css/CSSBorderImage.h" | 9 #include "core/css/CSSBorderImage.h" |
10 #include "core/css/CSSContentDistributionValue.h" | 10 #include "core/css/CSSContentDistributionValue.h" |
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
698 | 698 |
699 if (CSSPrimitiveValue* position = consumePositiveInteger(range)) { | 699 if (CSSPrimitiveValue* position = consumePositiveInteger(range)) { |
700 if (position->getIntValue() > 100) | 700 if (position->getIntValue() > 100) |
701 return nullptr; | 701 return nullptr; |
702 list->append(*position); | 702 list->append(*position); |
703 } | 703 } |
704 | 704 |
705 return list; | 705 return list; |
706 } | 706 } |
707 | 707 |
708 static CSSValue* consumeTextIndent(CSSParserTokenRange& range, | |
709 CSSParserMode cssParserMode) { | |
710 // [ <length> | <percentage> ] && hanging? && each-line? | |
711 // Keywords only allowed when css3Text is enabled. | |
712 CSSValueList* list = CSSValueList::createSpaceSeparated(); | |
713 | |
714 bool hasLengthOrPercentage = false; | |
715 bool hasEachLine = false; | |
716 bool hasHanging = false; | |
717 | |
718 do { | |
719 if (!hasLengthOrPercentage) { | |
720 if (CSSValue* textIndent = consumeLengthOrPercent( | |
721 range, cssParserMode, ValueRangeAll, UnitlessQuirk::Allow)) { | |
722 list->append(*textIndent); | |
723 hasLengthOrPercentage = true; | |
724 continue; | |
725 } | |
726 } | |
727 | |
728 if (RuntimeEnabledFeatures::css3TextEnabled()) { | |
729 CSSValueID id = range.peek().id(); | |
730 if (!hasEachLine && id == CSSValueEachLine) { | |
731 list->append(*consumeIdent(range)); | |
732 hasEachLine = true; | |
733 continue; | |
734 } | |
735 if (!hasHanging && id == CSSValueHanging) { | |
736 list->append(*consumeIdent(range)); | |
737 hasHanging = true; | |
738 continue; | |
739 } | |
740 } | |
741 return nullptr; | |
742 } while (!range.atEnd()); | |
743 | |
744 if (!hasLengthOrPercentage) | |
745 return nullptr; | |
746 | |
747 return list; | |
748 } | |
749 | |
750 static bool validWidthOrHeightKeyword(CSSValueID id, | 708 static bool validWidthOrHeightKeyword(CSSValueID id, |
751 const CSSParserContext* context) { | 709 const CSSParserContext* context) { |
752 if (id == CSSValueWebkitMinContent || id == CSSValueWebkitMaxContent || | 710 if (id == CSSValueWebkitMinContent || id == CSSValueWebkitMaxContent || |
753 id == CSSValueWebkitFillAvailable || id == CSSValueWebkitFitContent || | 711 id == CSSValueWebkitFillAvailable || id == CSSValueWebkitFitContent || |
754 id == CSSValueMinContent || id == CSSValueMaxContent || | 712 id == CSSValueMinContent || id == CSSValueMaxContent || |
755 id == CSSValueFitContent) { | 713 id == CSSValueFitContent) { |
756 if (context->isUseCounterRecordingEnabled()) { | 714 if (context->isUseCounterRecordingEnabled()) { |
757 UseCounter* useCounter = context->useCounter(); | 715 UseCounter* useCounter = context->useCounter(); |
758 switch (id) { | 716 switch (id) { |
759 case CSSValueWebkitMinContent: | 717 case CSSValueWebkitMinContent: |
(...skipping 2348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3108 return consumeScale(m_range); | 3066 return consumeScale(m_range); |
3109 case CSSPropertyWebkitBorderHorizontalSpacing: | 3067 case CSSPropertyWebkitBorderHorizontalSpacing: |
3110 case CSSPropertyWebkitBorderVerticalSpacing: | 3068 case CSSPropertyWebkitBorderVerticalSpacing: |
3111 return consumeLength(m_range, m_context->mode(), ValueRangeNonNegative); | 3069 return consumeLength(m_range, m_context->mode(), ValueRangeNonNegative); |
3112 case CSSPropertyCounterIncrement: | 3070 case CSSPropertyCounterIncrement: |
3113 case CSSPropertyCounterReset: | 3071 case CSSPropertyCounterReset: |
3114 return consumeCounter(m_range, | 3072 return consumeCounter(m_range, |
3115 property == CSSPropertyCounterIncrement ? 1 : 0); | 3073 property == CSSPropertyCounterIncrement ? 1 : 0); |
3116 case CSSPropertySnapHeight: | 3074 case CSSPropertySnapHeight: |
3117 return consumeSnapHeight(m_range, m_context->mode()); | 3075 return consumeSnapHeight(m_range, m_context->mode()); |
3118 case CSSPropertyTextIndent: | |
3119 return consumeTextIndent(m_range, m_context->mode()); | |
3120 case CSSPropertyMaxWidth: | 3076 case CSSPropertyMaxWidth: |
3121 case CSSPropertyMaxHeight: | 3077 case CSSPropertyMaxHeight: |
3122 return consumeMaxWidthOrHeight(m_range, m_context, UnitlessQuirk::Allow); | 3078 return consumeMaxWidthOrHeight(m_range, m_context, UnitlessQuirk::Allow); |
3123 case CSSPropertyMaxInlineSize: | 3079 case CSSPropertyMaxInlineSize: |
3124 case CSSPropertyMaxBlockSize: | 3080 case CSSPropertyMaxBlockSize: |
3125 case CSSPropertyWebkitMaxLogicalWidth: | 3081 case CSSPropertyWebkitMaxLogicalWidth: |
3126 case CSSPropertyWebkitMaxLogicalHeight: | 3082 case CSSPropertyWebkitMaxLogicalHeight: |
3127 return consumeMaxWidthOrHeight(m_range, m_context); | 3083 return consumeMaxWidthOrHeight(m_range, m_context); |
3128 case CSSPropertyMinWidth: | 3084 case CSSPropertyMinWidth: |
3129 case CSSPropertyMinHeight: | 3085 case CSSPropertyMinHeight: |
(...skipping 1788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4918 case CSSPropertyGridTemplate: | 4874 case CSSPropertyGridTemplate: |
4919 return consumeGridTemplateShorthand(CSSPropertyGridTemplate, important); | 4875 return consumeGridTemplateShorthand(CSSPropertyGridTemplate, important); |
4920 case CSSPropertyGrid: | 4876 case CSSPropertyGrid: |
4921 return consumeGridShorthand(important); | 4877 return consumeGridShorthand(important); |
4922 default: | 4878 default: |
4923 return false; | 4879 return false; |
4924 } | 4880 } |
4925 } | 4881 } |
4926 | 4882 |
4927 } // namespace blink | 4883 } // namespace blink |
OLD | NEW |