Commit 663ee27a authored by Anders Hartvoll Ruud's avatar Anders Hartvoll Ruud Committed by Commit Bot

[css-properties-values-api] Support composite for custom property lists.

This CL implements CSSCustomListInterpolationType::Composite by adapting
the callback passed to ListInterpolationFunctions to the Composite
function of the inner interpolation type.

For the current set of supported syntaxes, only <length-percentage>
uses non-interpolable values. This CL adds a
NonInterpolableValuesAreCompatibleCallback which DCHECKs that we don't
have any non-interpolable values (except for <length-percentage>).
This ensures that we don't forget to update this function if we add
support for new types to css-properties-values-api in the future.

Bug: 981024
Change-Id: Iccaaa779a2de0446a7bf9823cdb3e42161b07f26
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1688832
Commit-Queue: Anders Hartvoll Ruud <andruud@chromium.org>
Reviewed-by: default avatarRobert Flack <flackr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#682700}
parent 44a597b3
......@@ -94,9 +94,43 @@ void CSSCustomListInterpolationType::Composite(
double underlying_fraction,
const InterpolationValue& value,
double interpolation_fraction) const {
// TODO(andruud): Properly support composition once behavior is defined.
// https://github.com/w3c/css-houdini-drafts/issues/799
underlying_value_owner.Set(*this, value);
// This adapts a ListInterpolationFunctions::CompositeItemCallback function
// such that we can use the InterpolationType::Composite function of the
// inner interpolation type to get the answer.
//
// TODO(andruud): Make InterpolationType::Composite take an UnderlyingValue
// rather than an UnderlyingValueOwner.
auto composite_callback =
[](const CSSInterpolationType* interpolation_type,
double interpolation_fraction, UnderlyingValue& underlying_value,
double underlying_fraction,
const InterpolableValue& interpolable_value,
const NonInterpolableValue* non_interpolable_value) {
UnderlyingValueOwner owner;
owner.Set(*interpolation_type,
InterpolationValue(
underlying_value.MutableInterpolableValue().Clone(),
underlying_value.GetNonInterpolableValue()));
InterpolationValue interpolation_value(interpolable_value.Clone(),
non_interpolable_value);
interpolation_type->Composite(owner, underlying_fraction,
interpolation_value,
interpolation_fraction);
underlying_value.SetInterpolableValue(
owner.Value().Clone().interpolable_value);
underlying_value.SetNonInterpolableValue(
owner.GetNonInterpolableValue());
};
ListInterpolationFunctions::Composite(
underlying_value_owner, underlying_fraction, *this, value,
ListInterpolationFunctions::LengthMatchingStrategy::kEqual,
GetNonInterpolableValuesAreCompatibleCallback(),
WTF::BindRepeating(composite_callback,
WTF::Unretained(inner_interpolation_type_.get()),
interpolation_fraction));
}
PairwiseInterpolationValue CSSCustomListInterpolationType::MaybeMergeSingles(
......@@ -109,4 +143,23 @@ PairwiseInterpolationValue CSSCustomListInterpolationType::MaybeMergeSingles(
WTF::Unretained(inner_interpolation_type_.get())));
}
static bool VerifyNoNonInterpolableValues(const NonInterpolableValue* a,
const NonInterpolableValue* b) {
DCHECK(!a && !b);
return true;
}
ListInterpolationFunctions::NonInterpolableValuesAreCompatibleCallback
CSSCustomListInterpolationType::GetNonInterpolableValuesAreCompatibleCallback()
const {
if (syntax_type_ == CSSSyntaxType::kLengthPercentage) {
return WTF::BindRepeating(
LengthInterpolationFunctions::NonInterpolableValuesAreCompatible);
}
// TODO(https://crbug.com/981537): Add support for <image> here.
// TODO(https://crbug.com/981538): Add support for <transform-function> here.
// TODO(https://crbug.com/981542): Add support for <transform-list> here.
return WTF::BindRepeating(VerifyNoNonInterpolableValues);
}
} // namespace blink
......@@ -18,9 +18,11 @@ class CSSCustomListInterpolationType : public CSSInterpolationType {
PropertyHandle property,
const PropertyRegistration* registration,
std::unique_ptr<CSSInterpolationType> inner_interpolation_type,
CSSSyntaxType syntax_type,
CSSSyntaxRepeat syntax_repeat)
: CSSInterpolationType(property, registration),
inner_interpolation_type_(std::move(inner_interpolation_type)),
syntax_type_(syntax_type),
syntax_repeat_(syntax_repeat) {
DCHECK(property.IsCSSCustomProperty());
}
......@@ -66,6 +68,9 @@ class CSSCustomListInterpolationType : public CSSInterpolationType {
return nullptr;
}
ListInterpolationFunctions::NonInterpolableValuesAreCompatibleCallback
GetNonInterpolableValuesAreCompatibleCallback() const;
// This InterpolationType represents the interpolation of elements inside
// the list.
//
......@@ -77,6 +82,7 @@ class CSSCustomListInterpolationType : public CSSInterpolationType {
// InterpolationType::Apply on inner_interpolation_type_.
std::unique_ptr<CSSInterpolationType> inner_interpolation_type_;
const CSSSyntaxType syntax_type_;
const CSSSyntaxRepeat syntax_repeat_;
};
......
......@@ -447,7 +447,7 @@ CSSInterpolationTypesMap::CreateInterpolationTypesForCSSSyntax(
if (component.IsRepeatable()) {
interpolation_type = std::make_unique<CSSCustomListInterpolationType>(
property, &registration, std::move(interpolation_type),
component.GetRepeat());
component.GetType(), component.GetRepeat());
}
result.push_back(std::move(interpolation_type));
......
......@@ -87,6 +87,11 @@ class UnderlyingTextIndentAsLengthValue : public UnderlyingValue {
return inner_underlying_value_.MutableInterpolableValue();
}
void SetInterpolableValue(
std::unique_ptr<InterpolableValue> interpolable_value) final {
inner_underlying_value_.SetInterpolableValue(std::move(interpolable_value));
}
const NonInterpolableValue* GetNonInterpolableValue() const final {
const auto& text_indent_non_interpolable_value =
ToCSSTextIndentNonInterpolableValue(
......
......@@ -35,6 +35,11 @@ class UnderlyingItemValue : public UnderlyingValue {
return *ToInterpolableList(underlying_list_.MutableInterpolableValue())
.GetMutable(index_);
}
void SetInterpolableValue(
std::unique_ptr<InterpolableValue> interpolable_value) final {
ToInterpolableList(underlying_list_.MutableInterpolableValue())
.Set(index_, std::move(interpolable_value));
}
const NonInterpolableValue* GetNonInterpolableValue() const final {
return ToNonInterpolableList(*underlying_list_.GetNonInterpolableValue())
.Get(index_);
......
......@@ -55,6 +55,11 @@ class TestUnderlyingValue : public UnderlyingValue {
return *interpolation_value_.interpolable_value;
}
void SetInterpolableValue(
std::unique_ptr<InterpolableValue> interpolable_value) final {
interpolation_value_.interpolable_value = std::move(interpolable_value);
}
const NonInterpolableValue* GetNonInterpolableValue() const final {
return interpolation_value_.non_interpolable_value.get();
}
......
......@@ -74,6 +74,11 @@ class UnderlyingSizeAsLengthValue : public UnderlyingValue {
return inner_underlying_value_.MutableInterpolableValue();
}
void SetInterpolableValue(
std::unique_ptr<InterpolableValue> interpolable_value) final {
inner_underlying_value_.SetInterpolableValue(std::move(interpolable_value));
}
const NonInterpolableValue* GetNonInterpolableValue() const final {
const auto& size_non_interpolable_value = ToCSSSizeNonInterpolableValue(
*inner_underlying_value_.GetNonInterpolableValue());
......
......@@ -24,6 +24,8 @@ class CORE_EXPORT UnderlyingValue {
public:
virtual InterpolableValue& MutableInterpolableValue() = 0;
virtual void SetInterpolableValue(std::unique_ptr<InterpolableValue>) = 0;
virtual const NonInterpolableValue* GetNonInterpolableValue() const = 0;
// The NonInterpolableValue part of the underlying value may not be mutated,
......
......@@ -17,6 +17,12 @@ InterpolableValue& UnderlyingValueOwner::MutableInterpolableValue() {
return *MutableValue().interpolable_value;
}
void UnderlyingValueOwner::SetInterpolableValue(
std::unique_ptr<InterpolableValue> interpolable_value) {
DCHECK(type_);
MutableValue().interpolable_value = std::move(interpolable_value);
}
const NonInterpolableValue* UnderlyingValueOwner::GetNonInterpolableValue()
const {
DCHECK(value_);
......
......@@ -33,6 +33,7 @@ class CORE_EXPORT UnderlyingValueOwner : public UnderlyingValue {
// UnderlyingValue
InterpolableValue& MutableInterpolableValue() final;
void SetInterpolableValue(std::unique_ptr<InterpolableValue>) final;
const NonInterpolableValue* GetNonInterpolableValue() const final;
void SetNonInterpolableValue(scoped_refptr<const NonInterpolableValue>) final;
......
......@@ -90,10 +90,6 @@ assertInterpolation({
{at: 1.5, is: '540deg 540deg'}
]);
// Composition and neutralKeyframe tests assume that composite:add means
// component-wise addition, which may or may not be the behavior we want.
// https://github.com/w3c/css-houdini-drafts/issues/799
assertInterpolation({
property: '--angle-list',
from: neutralKeyframe,
......
......@@ -45,11 +45,11 @@ PASS CSS Animations: property <--color-list> from [hsl(120, 100%, 50%) coral] to
PASS CSS Animations: property <--color-list> from [hsl(120, 100%, 50%) coral] to [navy hsl(240, 100%, 50%)] at (0.5) is [rgb(0, 128, 64) rgb(128, 64, 168)]
PASS CSS Animations: property <--color-list> from [hsl(120, 100%, 50%) coral] to [navy hsl(240, 100%, 50%)] at (1) is [rgb(0, 0, 128) rgb(0, 0, 255)]
PASS CSS Animations: property <--color-list> from [hsl(120, 100%, 50%) coral] to [navy hsl(240, 100%, 50%)] at (1.5) is [rgb(0, 0, 192) rgb(0, 0, 255)]
FAIL CSS Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (-0.3) is [rgba(0, 0, 0, 0) rgba(0, 0, 0, 0)] assert_equals: expected "rgb ( 52 , 40 , 40 ) rgb ( 104 , 104 , 104 ) " but got "rgba ( 0 , 0 , 0 , 0 ) rgba ( 0 , 0 , 0 , 0 ) "
FAIL CSS Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (0) is [rgba(0, 0, 0, 0) rgba(0, 0, 0, 0)] assert_equals: expected "rgb ( 40 , 40 , 40 ) rgb ( 80 , 80 , 80 ) " but got "rgba ( 0 , 0 , 0 , 0 ) rgba ( 0 , 0 , 0 , 0 ) "
FAIL CSS Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (0.5) is [rgba(0, 40, 40, 0.5) rgba(0, 0, 0, 0.5)] assert_equals: expected "rgb ( 20 , 40 , 40 ) rgb ( 40 , 40 , 40 ) " but got "rgba ( 0 , 40 , 40 , 0.5 ) rgba ( 0 , 0 , 0 , 0.5 ) "
PASS CSS Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (-0.3) is [rgb(52, 40, 40) rgb(104, 104, 104)]
PASS CSS Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (0) is [rgb(40, 40, 40) rgb(80, 80, 80)]
PASS CSS Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (0.5) is [rgb(20, 40, 40) rgb(40, 40, 40)]
PASS CSS Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (1) is [rgb(0, 40, 40) rgb(0, 0, 0)]
FAIL CSS Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (1.5) is [rgb(0, 60, 60) rgb(0, 0, 0)] assert_equals: expected "rgb ( 0 , 40 , 40 ) rgb ( 0 , 0 , 0 ) " but got "rgb ( 0 , 60 , 60 ) rgb ( 0 , 0 , 0 ) "
PASS CSS Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (1.5) is [rgb(0, 40, 40) rgb(0, 0, 0)]
PASS Web Animations: property <--color-list> from [initial] to [blue red] at (-0.3) is [rgb(255, 0, 0) rgb(0, 0, 255)]
PASS Web Animations: property <--color-list> from [initial] to [blue red] at (0) is [rgb(255, 0, 0) rgb(0, 0, 255)]
PASS Web Animations: property <--color-list> from [initial] to [blue red] at (0.5) is [rgb(128, 0, 128) rgb(128, 0, 128)]
......@@ -70,20 +70,20 @@ PASS Web Animations: property <--color-list> from [hsl(120, 100%, 50%) coral] to
PASS Web Animations: property <--color-list> from [hsl(120, 100%, 50%) coral] to [navy hsl(240, 100%, 50%)] at (0.5) is [rgb(0, 128, 64) rgb(128, 64, 168)]
PASS Web Animations: property <--color-list> from [hsl(120, 100%, 50%) coral] to [navy hsl(240, 100%, 50%)] at (1) is [rgb(0, 0, 128) rgb(0, 0, 255)]
PASS Web Animations: property <--color-list> from [hsl(120, 100%, 50%) coral] to [navy hsl(240, 100%, 50%)] at (1.5) is [rgb(0, 0, 192) rgb(0, 0, 255)]
FAIL Web Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (-0.3) is [rgba(0, 0, 0, 0) rgba(0, 0, 0, 0)] assert_equals: expected "rgb ( 52 , 40 , 40 ) rgb ( 104 , 104 , 104 ) " but got "rgba ( 0 , 0 , 0 , 0 ) rgba ( 0 , 0 , 0 , 0 ) "
FAIL Web Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (0) is [rgba(0, 0, 0, 0) rgba(0, 0, 0, 0)] assert_equals: expected "rgb ( 40 , 40 , 40 ) rgb ( 80 , 80 , 80 ) " but got "rgba ( 0 , 0 , 0 , 0 ) rgba ( 0 , 0 , 0 , 0 ) "
FAIL Web Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (0.5) is [rgba(0, 40, 40, 0.5) rgba(0, 0, 0, 0.5)] assert_equals: expected "rgb ( 20 , 40 , 40 ) rgb ( 40 , 40 , 40 ) " but got "rgba ( 0 , 40 , 40 , 0.5 ) rgba ( 0 , 0 , 0 , 0.5 ) "
PASS Web Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (-0.3) is [rgb(52, 40, 40) rgb(104, 104, 104)]
PASS Web Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (0) is [rgb(40, 40, 40) rgb(80, 80, 80)]
PASS Web Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (0.5) is [rgb(20, 40, 40) rgb(40, 40, 40)]
PASS Web Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (1) is [rgb(0, 40, 40) rgb(0, 0, 0)]
FAIL Web Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (1.5) is [rgb(0, 60, 60) rgb(0, 0, 0)] assert_equals: expected "rgb ( 0 , 40 , 40 ) rgb ( 0 , 0 , 0 ) " but got "rgb ( 0 , 60 , 60 ) rgb ( 0 , 0 , 0 ) "
FAIL Compositing: property <--color-list> underlying [darkslategray rgb(10, 10, 10)] from add [rgb(10, 10, 10) navy] to add [rgb(30, 30, 30) teal] at (-0.3) is [rgb(4, 4, 4) rgb(0, 0, 128)] assert_equals: expected "rgb ( 51 , 83 , 83 ) rgb ( 10 , 0 , 138 ) " but got "rgb ( 4 , 4 , 4 ) rgb ( 0 , 0 , 128 ) "
FAIL Compositing: property <--color-list> underlying [darkslategray rgb(10, 10, 10)] from add [rgb(10, 10, 10) navy] to add [rgb(30, 30, 30) teal] at (0) is [rgb(10, 10, 10) rgb(0, 0, 128)] assert_equals: expected "rgb ( 57 , 89 , 89 ) rgb ( 10 , 10 , 138 ) " but got "rgb ( 10 , 10 , 10 ) rgb ( 0 , 0 , 128 ) "
FAIL Compositing: property <--color-list> underlying [darkslategray rgb(10, 10, 10)] from add [rgb(10, 10, 10) navy] to add [rgb(30, 30, 30) teal] at (0.5) is [rgb(20, 20, 20) rgb(0, 64, 128)] assert_equals: expected "rgb ( 67 , 99 , 99 ) rgb ( 10 , 74 , 138 ) " but got "rgb ( 20 , 20 , 20 ) rgb ( 0 , 64 , 128 ) "
FAIL Compositing: property <--color-list> underlying [darkslategray rgb(10, 10, 10)] from add [rgb(10, 10, 10) navy] to add [rgb(30, 30, 30) teal] at (1) is [rgb(30, 30, 30) rgb(0, 128, 128)] assert_equals: expected "rgb ( 77 , 109 , 109 ) rgb ( 10 , 138 , 138 ) " but got "rgb ( 30 , 30 , 30 ) rgb ( 0 , 128 , 128 ) "
FAIL Compositing: property <--color-list> underlying [darkslategray rgb(10, 10, 10)] from add [rgb(10, 10, 10) navy] to add [rgb(30, 30, 30) teal] at (1.5) is [rgb(40, 40, 40) rgb(0, 192, 128)] assert_equals: expected "rgb ( 87 , 119 , 119 ) rgb ( 10 , 202 , 138 ) " but got "rgb ( 40 , 40 , 40 ) rgb ( 0 , 192 , 128 ) "
FAIL Compositing: property <--color-list> underlying [gold rgb(100, 100, 100)] from add [navy rgb(0, 0, 0)] to replace [rgb(17, 17, 17) rgb(1, 1, 1)] at (-0.3) is [rgb(0, 0, 161) rgb(0, 0, 0)] assert_equals: expected "rgb ( 255 , 255 , 161 ) rgb ( 130 , 130 , 130 ) " but got "rgb ( 0 , 0 , 161 ) rgb ( 0 , 0 , 0 ) "
FAIL Compositing: property <--color-list> underlying [gold rgb(100, 100, 100)] from add [navy rgb(0, 0, 0)] to replace [rgb(17, 17, 17) rgb(1, 1, 1)] at (0) is [rgb(0, 0, 128) rgb(0, 0, 0)] assert_equals: expected "rgb ( 255 , 215 , 128 ) rgb ( 100 , 100 , 100 ) " but got "rgb ( 0 , 0 , 128 ) rgb ( 0 , 0 , 0 ) "
FAIL Compositing: property <--color-list> underlying [gold rgb(100, 100, 100)] from add [navy rgb(0, 0, 0)] to replace [rgb(17, 17, 17) rgb(1, 1, 1)] at (0.5) is [rgb(9, 9, 73) rgb(1, 1, 1)] assert_equals: expected "rgb ( 136 , 116 , 73 ) rgb ( 51 , 51 , 51 ) " but got "rgb ( 9 , 9 , 73 ) rgb ( 1 , 1 , 1 ) "
PASS Web Animations: property <--color-list> from neutral to [rgb(0, 40, 40) black] at (1.5) is [rgb(0, 40, 40) rgb(0, 0, 0)]
PASS Compositing: property <--color-list> underlying [darkslategray rgb(10, 10, 10)] from add [rgb(10, 10, 10) navy] to add [rgb(30, 30, 30) teal] at (-0.3) is [rgb(51, 83, 83) rgb(10, 0, 138)]
PASS Compositing: property <--color-list> underlying [darkslategray rgb(10, 10, 10)] from add [rgb(10, 10, 10) navy] to add [rgb(30, 30, 30) teal] at (0) is [rgb(57, 89, 89) rgb(10, 10, 138)]
PASS Compositing: property <--color-list> underlying [darkslategray rgb(10, 10, 10)] from add [rgb(10, 10, 10) navy] to add [rgb(30, 30, 30) teal] at (0.5) is [rgb(67, 99, 99) rgb(10, 74, 138)]
PASS Compositing: property <--color-list> underlying [darkslategray rgb(10, 10, 10)] from add [rgb(10, 10, 10) navy] to add [rgb(30, 30, 30) teal] at (1) is [rgb(77, 109, 109) rgb(10, 138, 138)]
PASS Compositing: property <--color-list> underlying [darkslategray rgb(10, 10, 10)] from add [rgb(10, 10, 10) navy] to add [rgb(30, 30, 30) teal] at (1.5) is [rgb(87, 119, 119) rgb(10, 202, 138)]
PASS Compositing: property <--color-list> underlying [gold rgb(100, 100, 100)] from add [navy rgb(0, 0, 0)] to replace [rgb(17, 17, 17) rgb(1, 1, 1)] at (-0.3) is [rgb(255, 255, 161) rgb(130, 130, 130)]
PASS Compositing: property <--color-list> underlying [gold rgb(100, 100, 100)] from add [navy rgb(0, 0, 0)] to replace [rgb(17, 17, 17) rgb(1, 1, 1)] at (0) is [rgb(255, 215, 128) rgb(100, 100, 100)]
PASS Compositing: property <--color-list> underlying [gold rgb(100, 100, 100)] from add [navy rgb(0, 0, 0)] to replace [rgb(17, 17, 17) rgb(1, 1, 1)] at (0.5) is [rgb(136, 116, 73) rgb(51, 51, 51)]
PASS Compositing: property <--color-list> underlying [gold rgb(100, 100, 100)] from add [navy rgb(0, 0, 0)] to replace [rgb(17, 17, 17) rgb(1, 1, 1)] at (1) is [rgb(17, 17, 17) rgb(1, 1, 1)]
FAIL Compositing: property <--color-list> underlying [gold rgb(100, 100, 100)] from add [navy rgb(0, 0, 0)] to replace [rgb(17, 17, 17) rgb(1, 1, 1)] at (1.5) is [rgb(26, 26, 0) rgb(2, 2, 2)] assert_equals: expected "rgb ( 0 , 0 , 0 ) rgb ( 0 , 0 , 0 ) " but got "rgb ( 26 , 26 , 0 ) rgb ( 2 , 2 , 2 ) "
FAIL Compositing: property <--color-list> underlying [gold rgb(100, 100, 100)] from add [navy rgb(0, 0, 0)] to replace [rgb(17, 17, 17) rgb(1, 1, 1)] at (1.5) is [rgba(0, 0, 0, 0.5) rgba(0, 0, 0, 0.5)] assert_equals: expected "rgb ( 0 , 0 , 0 ) rgb ( 0 , 0 , 0 ) " but got "rgba ( 0 , 0 , 0 , 0.5 ) rgba ( 0 , 0 , 0 , 0.5 ) "
Harness: the test ran to completion.
......@@ -66,10 +66,6 @@ assertInterpolation({
{at: 1.5, is: 'rgb(0, 0, 192) rgb(0, 0, 255)'}
]);
// Composition and neutralKeyframe tests assume that composite:add means
// component-wise addition, which may or may not be the behavior we want.
// https://github.com/w3c/css-houdini-drafts/issues/799
assertInterpolation({
property: '--color-list',
from: neutralKeyframe,
......
......@@ -90,10 +90,6 @@ assertInterpolation({
{at: 1.45, is: '22 -7'}
]);
// Composition and neutralKeyframe tests assume that composite:add means
// component-wise addition, which may or may not be the behavior we want.
// https://github.com/w3c/css-houdini-drafts/issues/799
assertInterpolation({
property: '--integer-list',
from: neutralKeyframe,
......
......@@ -103,10 +103,6 @@ assertInterpolation({
{at: 1.5, is: '145px'}
]);
// Composition and neutralKeyframe tests assume that composite:add means
// component-wise addition, which may or may not be the behavior we want.
// https://github.com/w3c/css-houdini-drafts/issues/799
assertInterpolation({
property: '--length-list',
from: neutralKeyframe,
......
......@@ -91,10 +91,6 @@ assertInterpolation({
{at: 1.5, is: 'calc(150% + 150px)'}
]);
// Composition and neutralKeyframe tests assume that composite:add means
// component-wise addition, which may or may not be the behavior we want.
// https://github.com/w3c/css-houdini-drafts/issues/799
assertInterpolation({
property: '--length-percentage-list',
from: neutralKeyframe,
......
......@@ -86,10 +86,6 @@ assertNoInterpolation({
to: '10px'
});
// Composition tests assume that composite:add mean component-wise addition,
// which may or may not be the behavior we want.
// https://github.com/w3c/css-houdini-drafts/issues/799
// Verify that lists of different lengths don't interpolate:
assertNoInterpolation({
......
......@@ -78,10 +78,6 @@ assertInterpolation({
{at: 1.5, is: '145'}
]);
// Composition and neutralKeyframe tests assume that composite:add means
// component-wise addition, which may or may not be the behavior we want.
// https://github.com/w3c/css-houdini-drafts/issues/799
assertInterpolation({
property: '--number-list',
from: neutralKeyframe,
......
......@@ -78,10 +78,6 @@ assertInterpolation({
{at: 1.5, is: '145%'}
]);
// Composition and neutralKeyframe tests assume that composite:add means
// component-wise addition, which may or may not be the behavior we want.
// https://github.com/w3c/css-houdini-drafts/issues/799
assertInterpolation({
property: '--percentage-list',
from: neutralKeyframe,
......
......@@ -90,10 +90,6 @@ assertInterpolation({
{at: 1.5, is: '2.5dppx 2dppx'}
]);
// Composition and neutralKeyframe tests assume that composite:add means
// component-wise addition, which may or may not be the behavior we want.
// https://github.com/w3c/css-houdini-drafts/issues/799
assertInterpolation({
property: '--resolution-list',
from: neutralKeyframe,
......
......@@ -90,10 +90,6 @@ assertInterpolation({
{at: 1.5, is: '1.5s -0.5s'}
]);
// Composition and neutralKeyframe tests assume that composite:add means
// component-wise addition, which may or may not be the behavior we want.
// https://github.com/w3c/css-houdini-drafts/issues/799
assertInterpolation({
property: '--time-list',
from: neutralKeyframe,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment