Processing model for the first argument of Animatable.animate is not well defined

There are actually several issues here:

1)  (AnimationEffect or EffectCallback or OneOrMoreKeyframes) is not a 
valid WebIDL union, because EffectCallback is a callback type an 
OneOrMoreKeyframes is a union of a dictionary type (ish) and a sequence 
type.  But callbacks and dictionaries are not distinguishable, so can't 
be used in the same union.

2)  The "KeyFrame" not-really-a-dictionary thing doesn't have a clear 
processing model defined.  Specifically:
   a) In section 5.14.6 step 7 there is no definition of what "Iterate
      over the properties of keyframe input." means.  There are several
      possible definitions, which lead to different observable behavior.
   b) Step 7 talks about setting properties of keyframe input, which
      doesn't make sense.  Does it mean to talk about setting properties
      of keyframe result?
   c) Nothing seems to define _when_ the algorithm of section 5.14.6 is
     invoked.  For example, when animate() is called with two arguments,
     the first of which is a sequence, is that algorithm performed on
     elements of the sequence before the second argument is coerced to
     (double or TimingInput)?  This matters, because that coercion can
     have side-effects, as can the algorithm in question, and the
     ordering needs to be defined.

It seems like what's really wanted here is to define the first argument 
of animate() to be "object?" and then in the prose for the method define 
the actual processing model for determining which sort of thing it 
should be.  That would solve problems (1) and (2c) above.  (2a) and (2b) 
would need to be addressed separately...

-Boris

Received on Wednesday, 16 April 2014 05:49:34 UTC