Let this be mentioned in our code base history that I wrote this patch
with tears in my eyes. This is the saddest thing I've ever had to do to
Gecko. :(
--HG--
extra : rebase_source : 798e5b1dc8af51a399189dd05bc59ac077670820
This patch implements most of the semantics of AudioParam in a
templatized base class called AudioEventTimeline. This is done in order
to make it possible to test this code from C++ without the need of
linking to libxul. Basically we take everything that could depend on
libxul or is not suitable for a genertic implementation and put it in a
traits like type as a template argument. Then the test creates mock
objects that conform to the argument interfaces, and tests the logic of
AudioEventTimeline.