diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/css/css_calculation_value.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/css/css_calculation_value.cc | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/chromium/third_party/blink/renderer/core/css/css_calculation_value.cc b/chromium/third_party/blink/renderer/core/css/css_calculation_value.cc index e785bd05a2b..cac6c210359 100644 --- a/chromium/third_party/blink/renderer/core/css/css_calculation_value.cc +++ b/chromium/third_party/blink/renderer/core/css/css_calculation_value.cc @@ -165,7 +165,7 @@ class CSSCalcPrimitiveValue final : public CSSCalcExpressionNode { public: static CSSCalcPrimitiveValue* Create(CSSPrimitiveValue* value, bool is_integer) { - return new CSSCalcPrimitiveValue(value, is_integer); + return MakeGarbageCollected<CSSCalcPrimitiveValue>(value, is_integer); } static CSSCalcPrimitiveValue* Create(double value, @@ -173,10 +173,15 @@ class CSSCalcPrimitiveValue final : public CSSCalcExpressionNode { bool is_integer) { if (std::isnan(value) || std::isinf(value)) return nullptr; - return new CSSCalcPrimitiveValue(CSSPrimitiveValue::Create(value, type), - is_integer); + return MakeGarbageCollected<CSSCalcPrimitiveValue>( + CSSPrimitiveValue::Create(value, type), is_integer); } + CSSCalcPrimitiveValue(CSSPrimitiveValue* value, bool is_integer) + : CSSCalcExpressionNode(UnitCategory(value->TypeWithCalcResolved()), + is_integer), + value_(value) {} + bool IsZero() const override { return !value_->GetDoubleValue(); } String CustomCSSText() const override { return value_->CssText(); } @@ -278,11 +283,6 @@ class CSSCalcPrimitiveValue final : public CSSCalcExpressionNode { } private: - CSSCalcPrimitiveValue(CSSPrimitiveValue* value, bool is_integer) - : CSSCalcExpressionNode(UnitCategory(value->TypeWithCalcResolved()), - is_integer), - value_(value) {} - Member<CSSPrimitiveValue> value_; }; @@ -375,7 +375,8 @@ class CSSCalcBinaryOperation final : public CSSCalcExpressionNode { if (new_category == kCalcOther) return nullptr; - return new CSSCalcBinaryOperation(left_side, right_side, op, new_category); + return MakeGarbageCollected<CSSCalcBinaryOperation>(left_side, right_side, + op, new_category); } static CSSCalcExpressionNode* CreateSimplified( @@ -462,6 +463,16 @@ class CSSCalcBinaryOperation final : public CSSCalcExpressionNode { return Create(left_side, right_side, op); } + CSSCalcBinaryOperation(CSSCalcExpressionNode* left_side, + CSSCalcExpressionNode* right_side, + CalcOperator op, + CalculationCategory category) + : CSSCalcExpressionNode(category, + IsIntegerResult(left_side, right_side, op)), + left_side_(left_side), + right_side_(right_side), + operator_(op) {} + bool IsZero() const override { return !DoubleValue(); } void AccumulatePixelsAndPercent( @@ -627,16 +638,6 @@ class CSSCalcBinaryOperation final : public CSSCalcExpressionNode { } private: - CSSCalcBinaryOperation(CSSCalcExpressionNode* left_side, - CSSCalcExpressionNode* right_side, - CalcOperator op, - CalculationCategory category) - : CSSCalcExpressionNode(category, - IsIntegerResult(left_side, right_side, op)), - left_side_(left_side), - right_side_(right_side), - operator_(op) {} - static CSSCalcExpressionNode* GetNumberSide( CSSCalcExpressionNode* left_side, CSSCalcExpressionNode* right_side) { @@ -837,13 +838,13 @@ CSSCalcExpressionNode* CSSCalcValue::CreateExpressionNode( CSSCalcExpressionNode* CSSCalcValue::CreateExpressionNode(double pixels, double percent) { return CreateExpressionNode( - CreateExpressionNode(CSSPrimitiveValue::Create( - pixels, CSSPrimitiveValue::UnitType::kPixels), - pixels == trunc(pixels)), CreateExpressionNode( CSSPrimitiveValue::Create(percent, CSSPrimitiveValue::UnitType::kPercentage), percent == trunc(percent)), + CreateExpressionNode(CSSPrimitiveValue::Create( + pixels, CSSPrimitiveValue::UnitType::kPixels), + pixels == trunc(pixels)), kCalcAdd); } @@ -852,12 +853,13 @@ CSSCalcValue* CSSCalcValue::Create(const CSSParserTokenRange& tokens, CSSCalcExpressionNodeParser parser; CSSCalcExpressionNode* expression = parser.ParseCalc(tokens); - return expression ? new CSSCalcValue(expression, range) : nullptr; + return expression ? MakeGarbageCollected<CSSCalcValue>(expression, range) + : nullptr; } CSSCalcValue* CSSCalcValue::Create(CSSCalcExpressionNode* expression, ValueRange range) { - return new CSSCalcValue(expression, range); + return MakeGarbageCollected<CSSCalcValue>(expression, range); } } // namespace blink |