Primary eng (and PM) emails
Summary
In the shipped portion of Web Animations,
CompositeOperations can be specified on both the animation and as a 'keyframe-specific' composite, like so:
const anim = element.animate(
// List of keyframes. The second has a keyframe-specific composite.
[ { color: 'red' }, { color: 'blue', composite: 'add' } ],
// The animation options, including the animation-level composite value.
{ duration: 2000, composite: 'replace' }
);
Currently (and in line with Firefox), Chrome only supports the 'replace' value for CompositeOperation in stable. However we unfortunately deal with valid-but-unsupported values of CompositeOperation differently depending whether they are passed as keyframe-specific or animation-level:
Animation-level: Chrome will silently convert unsupported-but-valid CompositeOperation values to 'replace'. This is the same as what Firefox does.
Keyframe-specific: Chrome will throw an exception for unsupported-but-valid CompositeOperation values. This is not what Firefox does; it also silently converts them to 'replace'.
We would like to consolidate our parsing behavior to always silently convert such values, and not throw.
Motivation
The current behavior is confusing (we throw in one case but not another), misaligned with other browsers (Firefox never throws), and also breaks the guidelines on
Partial Implementations of CSSWG specs.
Interoperability and Compatibility Risk
Some; code that previously tried to detect whether other CompositeOperation values were supported could fail. However this code would also fail in Firefox; see 'Alternative implementation...' comments below.
Edge: element.animate() not supported.
Firefox: Supported; Firefox does not throw for valid composite values even when it doesn't implement them.
Safari: element.animate() not supported.
Alternative implementation suggestion for web developers
In the currently shipped version of the Web Animations spec (in both Firefox and Chrome), developers should only ever assume that composite is 'replace', regardless of what value they specify.
In the future, once 'anim.effect' has shipped, developers can detect the composite value(s) in use via:
anim.effect.composite; // Animation-level composite.
anim.effect.getKeyframes(): // Keyframe-specific composites, if there are any.
Usage information from UseCounter
No UseCounter implemented.
OWP launch tracking bug
http://crbug.com/806139 (note that this bug got conflated with a regression bug relating to Chrome stable, so it's a bit of a confusing read).
Entry on the feature dashboard
No entry. Change is believed to be too small to merit one.