1. Test that errors fired while evaluating/loading <source> elements are fired at the <source> and not at the <video> element. 
2. Verifiy that an 'error' event fired while processing/loading a <source> element does not set the media element's 'error' attribute.

EVENT(loadstart)
EVENT(error) from <source id='missing-src' src=''> OK
EXPECTED (video.error == 'null') OK

EVENT(error) from <source id='bogus-type' src='content/test.mp4'> OK
EXPECTED (video.error == 'null') OK

EVENT(error) from <source id='missing-file' src='content/error2.mpeg'> OK
EXPECTED (video.error == 'null') OK

EVENT(error) from <source id='format-error' src='content/unsupported_track.mov'> OK
EXPECTED (video.error == 'null') OK

EVENT(error) from <source id='supported-format-mp4' src='content/test.mp4'> OK
EXPECTED (video.error == 'null') OK

EVENT(durationchange)
EVENT(loadeddata)

EXPECTED (relativeURL(video.currentSrc) == 'content/test.ogv') OK
EXPECTED (video.error == 'null') OK

END OF TEST

