Changeset 253002 in webkit
- Timestamp:
- Dec 2, 2019 12:03:10 PM (4 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r253001 r253002 1 2019-12-02 Simon Fraser <simon.fraser@apple.com> 2 3 Remove the confusing Value struct used for calc results 4 https://bugs.webkit.org/show_bug.cgi?id=204751 5 6 Reviewed by Tim Horton. 7 8 Replace the Value* argument with a RefPtr<CSSCalcExpressionNode>&. Value just made things more 9 confusing. 10 11 * css/CSSCalculationValue.cpp: 12 (WebCore::CSSCalcExpressionNodeParser::parseCalc): 13 (WebCore::CSSCalcExpressionNodeParser::parseValue): 14 (WebCore::CSSCalcExpressionNodeParser::parseValueTerm): 15 (WebCore::CSSCalcExpressionNodeParser::parseValueMultiplicativeExpression): 16 (WebCore::CSSCalcExpressionNodeParser::parseAdditiveValueExpression): 17 (WebCore::CSSCalcExpressionNodeParser::parseMinMaxExpression): 18 (WebCore::CSSCalcExpressionNodeParser::parseValueExpression): 19 1 20 2019-12-02 Zalan Bujtas <zalan@apple.com> 2 21 -
trunk/Source/WebCore/css/CSSCalculationValue.cpp
r252983 r253002 755 755 756 756 private: 757 struct Value {758 RefPtr<CSSCalcExpressionNode> value;759 };760 761 757 char operatorValue(const CSSParserToken& token) 762 758 { … … 766 762 } 767 763 768 bool parseValue(CSSParserTokenRange&, Value* result);769 bool parseValueTerm(CSSParserTokenRange&, int depth, Value* result);770 bool parseValueMultiplicativeExpression(CSSParserTokenRange&, int depth, Value* result);771 bool parseAdditiveValueExpression(CSSParserTokenRange&, int depth, Value* result);772 bool parseMinMaxExpression(CSSParserTokenRange&, CSSValueID minMaxFunction, int depth, Value* result);773 bool parseValueExpression(CSSParserTokenRange&, int depth, Value* result);764 bool parseValue(CSSParserTokenRange&, RefPtr<CSSCalcExpressionNode>&); 765 bool parseValueTerm(CSSParserTokenRange&, int depth, RefPtr<CSSCalcExpressionNode>&); 766 bool parseValueMultiplicativeExpression(CSSParserTokenRange&, int depth, RefPtr<CSSCalcExpressionNode>&); 767 bool parseAdditiveValueExpression(CSSParserTokenRange&, int depth, RefPtr<CSSCalcExpressionNode>&); 768 bool parseMinMaxExpression(CSSParserTokenRange&, CSSValueID minMaxFunction, int depth, RefPtr<CSSCalcExpressionNode>&); 769 bool parseValueExpression(CSSParserTokenRange&, int depth, RefPtr<CSSCalcExpressionNode>&); 774 770 775 771 CalculationCategory m_destinationCategory; … … 779 775 RefPtr<CSSCalcExpressionNode> CSSCalcExpressionNodeParser::parseCalc(CSSParserTokenRange tokens, CSSValueID function) 780 776 { 781 Valueresult;777 RefPtr<CSSCalcExpressionNode> result; 782 778 tokens.consumeWhitespace(); 783 779 bool ok = false; 784 780 if (function == CSSValueCalc || function == CSSValueWebkitCalc) 785 ok = parseValueExpression(tokens, 0, &result);781 ok = parseValueExpression(tokens, 0, result); 786 782 else if (function == CSSValueMin || function == CSSValueMax) 787 ok = parseMinMaxExpression(tokens, function, 0, &result);783 ok = parseMinMaxExpression(tokens, function, 0, result); 788 784 if (!ok || !tokens.atEnd()) 789 785 return nullptr; 790 786 791 LOG_WITH_STREAM(Calc, stream << "CSSCalcExpressionNodeParser::parseCalc " << prettyPrintNode(*result.value)); 792 793 return result.value; 794 } 795 796 bool CSSCalcExpressionNodeParser::parseValue(CSSParserTokenRange& tokens, Value* result) 787 if (!result) 788 return nullptr; 789 790 LOG_WITH_STREAM(Calc, stream << "CSSCalcExpressionNodeParser::parseCalc " << prettyPrintNode(*result)); 791 792 return result; 793 } 794 795 bool CSSCalcExpressionNodeParser::parseValue(CSSParserTokenRange& tokens, RefPtr<CSSCalcExpressionNode>& result) 797 796 { 798 797 CSSParserToken token = tokens.consumeIncludingWhitespace(); … … 804 803 return false; 805 804 806 result->value = CSSCalcPrimitiveValueNode::create(CSSPrimitiveValue::create(token.numericValue(), type)); 807 805 result = CSSCalcPrimitiveValueNode::create(CSSPrimitiveValue::create(token.numericValue(), type)); 808 806 return true; 809 807 } … … 825 823 } 826 824 827 bool CSSCalcExpressionNodeParser::parseValueTerm(CSSParserTokenRange& tokens, int depth, Value*result)825 bool CSSCalcExpressionNodeParser::parseValueTerm(CSSParserTokenRange& tokens, int depth, RefPtr<CSSCalcExpressionNode>& result) 828 826 { 829 827 if (checkDepthAndIndex(&depth, tokens) != OK) … … 849 847 } 850 848 851 bool CSSCalcExpressionNodeParser::parseValueMultiplicativeExpression(CSSParserTokenRange& tokens, int depth, Value*result)849 bool CSSCalcExpressionNodeParser::parseValueMultiplicativeExpression(CSSParserTokenRange& tokens, int depth, RefPtr<CSSCalcExpressionNode>& result) 852 850 { 853 851 if (checkDepthAndIndex(&depth, tokens) != OK) … … 863 861 tokens.consumeIncludingWhitespace(); 864 862 865 Valuerhs;866 if (!parseValueTerm(tokens, depth, &rhs))863 RefPtr<CSSCalcExpressionNode> rhs; 864 if (!parseValueTerm(tokens, depth, rhs)) 867 865 return false; 868 866 869 result ->value = CSSCalcOperationNode::createSimplified(static_cast<CalcOperator>(operatorCharacter), WTFMove(result->value), WTFMove(rhs.value));870 871 if (!result ->value)867 result = CSSCalcOperationNode::createSimplified(static_cast<CalcOperator>(operatorCharacter), WTFMove(result), WTFMove(rhs)); 868 869 if (!result) 872 870 return false; 873 871 } … … 876 874 } 877 875 878 bool CSSCalcExpressionNodeParser::parseAdditiveValueExpression(CSSParserTokenRange& tokens, int depth, Value*result)876 bool CSSCalcExpressionNodeParser::parseAdditiveValueExpression(CSSParserTokenRange& tokens, int depth, RefPtr<CSSCalcExpressionNode>& result) 879 877 { 880 878 if (checkDepthAndIndex(&depth, tokens) != OK) … … 895 893 tokens.consumeIncludingWhitespace(); 896 894 897 Valuerhs;898 if (!parseValueMultiplicativeExpression(tokens, depth, &rhs))895 RefPtr<CSSCalcExpressionNode> rhs; 896 if (!parseValueMultiplicativeExpression(tokens, depth, rhs)) 899 897 return false; 900 898 901 result ->value = CSSCalcOperationNode::createSimplified(static_cast<CalcOperator>(operatorCharacter), WTFMove(result->value), WTFMove(rhs.value));902 if (!result ->value)899 result = CSSCalcOperationNode::createSimplified(static_cast<CalcOperator>(operatorCharacter), WTFMove(result), WTFMove(rhs)); 900 if (!result) 903 901 return false; 904 902 } … … 907 905 } 908 906 909 bool CSSCalcExpressionNodeParser::parseMinMaxExpression(CSSParserTokenRange& tokens, CSSValueID minMaxFunction, int depth, Value*result)907 bool CSSCalcExpressionNodeParser::parseMinMaxExpression(CSSParserTokenRange& tokens, CSSValueID minMaxFunction, int depth, RefPtr<CSSCalcExpressionNode>& result) 910 908 { 911 909 if (checkDepthAndIndex(&depth, tokens) != OK) … … 914 912 CalcOperator op = (minMaxFunction == CSSValueMin) ? CalcOperator::Min : CalcOperator::Max; 915 913 916 Valuevalue;917 if (!parseValueExpression(tokens, depth, &value))914 RefPtr<CSSCalcExpressionNode> value; 915 if (!parseValueExpression(tokens, depth, value)) 918 916 return false; 919 917 920 918 Vector<Ref<CSSCalcExpressionNode>> nodes; 921 nodes.append(value. value.releaseNonNull());919 nodes.append(value.releaseNonNull()); 922 920 923 921 while (!tokens.atEnd()) { … … 927 925 tokens.consumeWhitespace(); 928 926 929 if (!parseValueExpression(tokens, depth, &value))927 if (!parseValueExpression(tokens, depth, value)) 930 928 return false; 931 929 932 nodes.append(value. value.releaseNonNull());933 } 934 935 result ->value= CSSCalcOperationNode::createMinOrMax(op, WTFMove(nodes), m_destinationCategory);936 return result ->value;937 } 938 939 bool CSSCalcExpressionNodeParser::parseValueExpression(CSSParserTokenRange& tokens, int depth, Value*result)930 nodes.append(value.releaseNonNull()); 931 } 932 933 result = CSSCalcOperationNode::createMinOrMax(op, WTFMove(nodes), m_destinationCategory); 934 return result; 935 } 936 937 bool CSSCalcExpressionNodeParser::parseValueExpression(CSSParserTokenRange& tokens, int depth, RefPtr<CSSCalcExpressionNode>& result) 940 938 { 941 939 return parseAdditiveValueExpression(tokens, depth, result);
Note: See TracChangeset
for help on using the changeset viewer.