It turns out I misextrapolated what the css3-animations spec meant to say about how keyframes work: what WebKit does, I think, is that the animation animates each property across all the keyframes that it's present in (and using the initial values at 0% and 100% if needed)... as though the other keyframes weren't there. So any property in the animation is present throughout the animation. This behavior does make more sense for authors; it just didn't occur to me while reading the spec that it was what the spec might have meant (perhaps partly because my understanding of what the spec meant evolved over time, after reading it, as I tested things).
Created attachment 527711 [details] [diff] [review] patch 2: main patch This fixes it. In the new model, it wasn't clear to me how to handle inability to interpolate between some of the values. The easiest thing to implement was to drop the entire property from the animation (even if there are some value pairs that we can interpolate between). None of the other options felt particularly sensible with this model, and this was the easiest to implement. I tested that the test fails without the patch and passes with it.
Comment on attachment 527711 [details] [diff] [review] patch 2: main patch r=me
Created attachment 527724 [details] [diff] [review] patch 1: make index names clearer I forgot I had this patch underneath the other one. This fixes some index names that were getting a little out-of-hand.
Comment on attachment 527724 [details] [diff] [review] patch 1: make index names clearer r=me
Are we going to put this on Aurora?
I'm documenting this as a change that will take place in Gecko 6.0; if it gets pulled into Gecko 5.0, someone please let me know.
I've updated the documentation here: https://developer.mozilla.org/index.php?title=en/CSS/%40keyframes#When_properties_are_left_out_of_some_keyframes And mentioned on Firefox 6 for developers.
Comment on attachment 527724 [details] [diff] [review] patch 1: make index names clearer I'd like to get this in to Aurora -- it's pretty silly to ship animations and then change the behavior substantially in the next release when we could avoid doing so. This code doesn't affect anything outside of animations (so if we turn off animations, it all gets disabled).
Comment on attachment 527711 [details] [diff] [review] patch 2: main patch ... and same for this patch.
I have updated the documentation to reflect that this has been accepted for Aurora.
You should know that Safari and Chrome differ in their treatment of "missing properties". Chrome tries to interpolate, Safari uses the intrinsic properties. I think a strict reading of the spec is that the Safari behavior (and the "pre-bug-fix" Firefox behavior) is the correct one, although it makes less sense.