Tested on linux / gtk port / gstreamer 1.4.0 but same issue was already there long time ago in Qt port / gstreamer 0.10.19 (code is very old, http://trac.webkit.org/changeset/83598). When gstreamer send "GST_STREAM_ERROR_TYPE_NOT_FOUND" error, the error is skipped (= not reported to the MediaPlayerClient) http://trac.webkit.org/browser/releases/WebKitGTK/webkit-2.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp?annotate=blame&rev=172912#L1027 Definition of stalled event is : "The user agent is trying to fetch media data, but data is unexpectedly not forthcoming" http://www.w3.org/TR/2011/WD-html5-20110113/video.html#event-media-stalled Definition of GST_STREAM_ERROR_TYPE_NOT_FOUND is "used when the element doesn't know the stream's type." http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstGError.html GST_STREAM_ERROR_TYPE_NOT_FOUND doesn't seems related to "data is unexpectedly not forthcoming". I don't know why GST_STREAM_ERROR_TYPE_NOT_FOUND was chosen, but the code is very very old, so maybe gst was lacking some error type back then. Anyway this cause troubles: when gstreamer try to play an invalid video, it will usually trigger GST_STREAM_ERROR_TYPE_NOT_FOUND. I didn't find any 'stalled' related regression test, but in LayoutTests/media/broken-video.html, playback of LayoutTests/media/content/garbage.mp4 triggers 2 errors: Error 4: Could not determine type of stream. (url=file:///xxxx/LayoutTests/media/content/garbage.mp4) GST_STREAM_ERROR: 4, Could not determine type of stream. Decode error, let the Media element emit a stalled event. Error 1: GStreamer encountered a general stream error. (url=file:///xxxx/LayoutTests/media/content/garbage.mp4) GST_STREAM_ERROR: 1, GStreamer encountered a general stream error. First error (GST_STREAM_ERROR: 4) is skipped, but second error (GST_STREAM_ERROR: 1) is handled and the test can pass (but only because of the second error). However if I change the video src to another invalid video (http://itv.mit-xperts.com/hbbtvtest/playerevents/novideo.php/video.mp4), only "GST_STREAM_ERROR: 4, Could not determine type of stream" error is triggered. As GST_STREAM_ERROR_TYPE_NOT_FOUND is skipped, the error event is never triggered and the test timeout. Same test (using modified video src) works fine using chromium (Version 36.0.1985.125 (283153)) and opera 12.16.
Created attachment 237484 [details] based on LayoutTest/media/broken-video.html only changed the video src test can pass using chromium (Version 36.0.1985.125 (283153)) and opera 12.16. Fails (timeout, no event triggered) using webkitgtk.
To correct my first comment, there are tests for 'stalled' event, e.g. : LayoutTests/http/tests/media/video-play-stall.html The test timeout as per https://bugs.webkit.org/show_bug.cgi?id=108925 but even if I increase run-webkit-tests timeout I don't think gstreamer is sending GST_STREAM_ERROR_TYPE_NOT_FOUND message in that case.
Comment on attachment 237484 [details] based on LayoutTest/media/broken-video.html only changed the video src need to copy the file to LayoutTest/media/ folder to access media-file.js and video-test.js
This code was actually introduced in http://trac.webkit.org/changeset/81229 and I think that reverting it will break a test again.
Yeah, I agree, anyway thanks Philippe for answer. I will try to check what's going on in video-play-stall-before-meta-data.html
won't fix.