Bug 163523 - [GStreamer] Layout test media/track/track-manual-mode.html is failing
Summary: [GStreamer] Layout test media/track/track-manual-mode.html is failing
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: Media (show other bugs)
Version: Other
Hardware: PC Linux
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-10-16 19:48 PDT by Michael Catanzaro
Modified: 2018-02-09 09:34 PST (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Catanzaro 2016-10-16 19:48:46 PDT
Layout test media/track/track-manual-mode.html has been failing since it was added in r196010 "Allow ports to disable automatic text track selection". Updating expectations accordingly.

--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/track/track-manual-mode-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/track/track-manual-mode-actual.txt
@@ -7,59 +7,56 @@
 EVENT(canplaythrough)
 
 ** Forced tracks should be in .textTracks as well as in the menu
-EXPECTED (video.textTracks.length == '9') OK
-EXPECTED (trackMenuItems.length == '11') OK
+EXPECTED (video.textTracks.length == '9'), OBSERVED '6' FAIL
+EXPECTED (trackMenuItems.length == '11'), OBSERVED '8' FAIL
 
 ** 'forced' should be in the title of a forced track menu item
 Track menu:
-0: "Off", checked
-1: "Auto (Recommended)"
-2: "English Closed Captions CC"
-3: "English Subtitles"
-4: "English Subtitles Forced"
-5: "French Subtitles"
-6: "French Subtitles Forced"
-7: "German Subtitles"
-8: "German Subtitles Forced"
-9: "Spanish Subtitles"
-10: "Spanish Subtitles Forced"
+0: "Off"
+1: "Auto"
+2: "No label"
+3: "No label"
+4: "No label"
+5: "No label"
+6: "No label"
+7: "en"
 
 ** No track should be enabled by default
 EXPECTED (video.textTracks[0].language == 'en') OK
 EXPECTED (video.textTracks[0].kind == 'subtitles') OK
 EXPECTED (video.textTracks[0].mode == 'disabled') OK
 
-EXPECTED (video.textTracks[1].language == 'en') OK
-EXPECTED (video.textTracks[1].kind == 'forced') OK
+EXPECTED (video.textTracks[1].language == 'en'), OBSERVED '' FAIL
+EXPECTED (video.textTracks[1].kind == 'forced'), OBSERVED 'subtitles' FAIL
 EXPECTED (video.textTracks[1].mode == 'disabled') OK
 
-EXPECTED (video.textTracks[2].language == 'fr') OK
+EXPECTED (video.textTracks[2].language == 'fr'), OBSERVED '' FAIL
 EXPECTED (video.textTracks[2].kind == 'subtitles') OK
 EXPECTED (video.textTracks[2].mode == 'disabled') OK
 
-EXPECTED (video.textTracks[3].language == 'fr') OK
-EXPECTED (video.textTracks[3].kind == 'forced') OK
+EXPECTED (video.textTracks[3].language == 'fr'), OBSERVED '' FAIL
+EXPECTED (video.textTracks[3].kind == 'forced'), OBSERVED 'subtitles' FAIL
 EXPECTED (video.textTracks[3].mode == 'disabled') OK
 
-EXPECTED (video.textTracks[4].language == 'es') OK
+EXPECTED (video.textTracks[4].language == 'es'), OBSERVED '' FAIL
 EXPECTED (video.textTracks[4].kind == 'subtitles') OK
 EXPECTED (video.textTracks[4].mode == 'disabled') OK
 
-EXPECTED (video.textTracks[5].language == 'es') OK
-EXPECTED (video.textTracks[5].kind == 'forced') OK
+EXPECTED (video.textTracks[5].language == 'es'), OBSERVED '' FAIL
+EXPECTED (video.textTracks[5].kind == 'forced'), OBSERVED 'subtitles' FAIL
 EXPECTED (video.textTracks[5].mode == 'disabled') OK
 
-EXPECTED (video.textTracks[6].language == 'de') OK
-EXPECTED (video.textTracks[6].kind == 'subtitles') OK
-EXPECTED (video.textTracks[6].mode == 'disabled') OK
+TypeError: undefined is not an object (evaluating 'video.textTracks[6].language')
+TypeError: undefined is not an object (evaluating 'video.textTracks[6].kind')
+TypeError: undefined is not an object (evaluating 'video.textTracks[6].mode')
 
-EXPECTED (video.textTracks[7].language == 'de') OK
-EXPECTED (video.textTracks[7].kind == 'forced') OK
-EXPECTED (video.textTracks[7].mode == 'disabled') OK
+TypeError: undefined is not an object (evaluating 'video.textTracks[7].language')
+TypeError: undefined is not an object (evaluating 'video.textTracks[7].kind')
+TypeError: undefined is not an object (evaluating 'video.textTracks[7].mode')
 
-EXPECTED (video.textTracks[8].language == 'en') OK
-EXPECTED (video.textTracks[8].kind == 'captions') OK
-EXPECTED (video.textTracks[8].mode == 'disabled') OK
+TypeError: undefined is not an object (evaluating 'video.textTracks[8].language')
+TypeError: undefined is not an object (evaluating 'video.textTracks[8].kind')
+TypeError: undefined is not an object (evaluating 'video.textTracks[8].mode')
 
 END OF TEST
Comment 1 Charlie Turner 2017-10-04 07:39:55 PDT
This test is also crashing (expectations updated accordingly). The issue is in TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged(). It's calling VideoTrack::setLanguage when it's not in a correct state. setLanguage then asks for the HTMLMediaElement's videoTracks when the media element member is null, but the spec suggests a VideoTrack's HTMLMediaElement is always available... Because this call stack is invoked from a GStreamer signal, it's very likely there's bugs in the TrackPrivateBaseGStreamer.
Comment 2 Fujii Hironori 2017-12-04 21:29:40 PST
(In reply to Charlie Turner from comment #1)

Sounds like a same issue with Bug 160131 Comment 6.
Comment 3 Philippe Normand 2018-01-03 03:59:47 PST
The crash is gone but the test still fails badly. This points to a FIXME for multiple CHAP tracks support in qtdemux.