Changeset 196131 in webkit
- Timestamp:
- Feb 4, 2016 10:20:21 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r196130 r196131 1 2016-02-04 Eric Carlson <eric.carlson@apple.com> 2 3 Don't discard in-band cues with negative start times 4 https://bugs.webkit.org/show_bug.cgi?id=153867 5 <rdar://problem/19588632> 6 7 Reviewed by Jer Noble. 8 9 * http/tests/media/track-in-band-hls-metadata-expected.txt: 10 * http/tests/media/track-in-band-hls-metadata.html: Test more attributes for correctness, 11 fail test immediately if cue.value is undefined so the test doesn't generate an exception 12 and exit without any results. 13 * platform/mac/TestExpectations: Unskip test. 14 1 15 2016-02-04 Hyemi Shin <hyemi.sin@samsung.com> 2 16 -
trunk/LayoutTests/http/tests/media/track-in-band-hls-metadata-expected.txt
r168377 r196131 25 25 ** Validate cue data 26 26 * 1 27 EXPECTED (typeof(cue) != 'undefined') OK 27 28 EXPECTED (cue.type == 'org.id3') OK 28 29 EXPECTED (cue.data == 'null') OK 30 EXPECTED (cue.value != 'null') OK 29 31 EXPECTED (cue.value.key == '"TIT2"') OK 30 32 EXPECTED (cue.value.data == '"Stream Counting"') OK 31 33 32 34 * 2 35 EXPECTED (typeof(cue) != 'undefined') OK 33 36 EXPECTED (cue.type == 'org.id3') OK 34 37 EXPECTED (cue.data == 'null') OK 38 EXPECTED (cue.value != 'null') OK 35 39 EXPECTED (cue.value.key == '"TPE1"') OK 36 40 EXPECTED (cue.value.data == '"Andy"') OK 37 41 38 42 * 3 43 EXPECTED (typeof(cue) != 'undefined') OK 39 44 EXPECTED (cue.type == 'org.id3') OK 40 45 EXPECTED (cue.data == 'null') OK 46 EXPECTED (cue.value != 'null') OK 41 47 EXPECTED (cue.value.key == '"TALB"') OK 42 48 EXPECTED (cue.value.data == '"Greatest Hits"') OK 43 49 44 50 * 4 51 EXPECTED (typeof(cue) != 'undefined') OK 45 52 EXPECTED (cue.type == 'org.id3') OK 46 53 EXPECTED (cue.data == 'null') OK 54 EXPECTED (cue.value != 'null') OK 47 55 EXPECTED (cue.value.key == '"GEOB"') OK 48 56 EXPECTED (cue.value.data == '{}') OK … … 52 60 53 61 * 5 62 EXPECTED (typeof(cue) != 'undefined') OK 54 63 EXPECTED (cue.type == 'org.id3') OK 55 64 EXPECTED (cue.data == 'null') OK 65 EXPECTED (cue.value != 'null') OK 56 66 EXPECTED (cue.value.key == '"APIC"') OK 57 67 EXPECTED (cue.value.data == '{}') OK … … 59 69 60 70 * 6 71 EXPECTED (typeof(cue) != 'undefined') OK 61 72 EXPECTED (cue.type == 'org.id3') OK 62 73 EXPECTED (cue.data == 'null') OK 74 EXPECTED (cue.value != 'null') OK 63 75 EXPECTED (cue.value.key == '"TXXX"') OK 64 76 EXPECTED (cue.value.data == '"Text Blob"') OK -
trunk/LayoutTests/http/tests/media/track-in-band-hls-metadata.html
r168377 r196131 20 20 ]; 21 21 var imageSizes = [ [76, 103], [100, 100] ]; 22 var cue; 22 23 23 24 function addtrack(event) … … 57 58 function compareCues(observed, expected) 58 59 { 59 // Make a mutable copy of the cueso we can remove attributes as they are processed.60 // Make a mutable copy of observed so we can remove attributes as they are processed. 60 61 observed = JSON.parse(JSON.stringify(observed)); 61 62 for (property in expected) { … … 66 67 observedValue = JSON.stringify(observedValue); 67 68 expectedValue = JSON.stringify(expectedValue); 68 reportExpected(observedValue == expectedValue, "cue.value." + property, "==", expectedValue, observedValue);69 reportExpected(observedValue == expectedValue, `cue.value.${property}`, "==", expectedValue, observedValue); 69 70 delete observed[property]; 70 71 } … … 73 74 observedName = property; 74 75 observedValue = observed[property]; 75 logResult(Failed, "Error: unexpected cue property <em>cue.value." + observedName + "</em> = <em>'" + observedValue + "'</em> ");76 logResult(Failed, `Error: unexpected cue property <em>cue.value. ${observedName}</em> = <em>' ${observedValue}'</em>`); 76 77 } 77 78 } … … 88 89 89 90 for (var i = 0; i < 6; i++) { 90 consoleWrite( "<em>* " + (i + 1) + "</em>");91 consoleWrite(`<em>* ${i + 1}</em>`); 91 92 cue = track.cues[i]; 93 94 testExpected("typeof(cue)", undefined, "!="); 92 95 testExpected("cue.type", "org.id3"); 93 96 testExpected("cue.data", null); 97 testExpected("cue.value", null, "!="); 98 if (typeof(cue.value) == undefined) { 99 failTest(`Error: cue.value is undefined!`); 100 return; 101 } 102 94 103 compareCues(cue.value, cueData[i]); 95 104 consoleWrite(""); … … 115 124 116 125 consoleWrite(""); 117 waitForEvent ("canplaythrough", canplaythrough);126 waitForEventOnce("canplaythrough", canplaythrough); 118 127 waitForEvent('addtrack', addtrack, false, false, video.textTracks); 119 128 } -
trunk/LayoutTests/platform/mac/TestExpectations
r196099 r196131 907 907 webkit.org/b/123099 media/media-controller-time-clamp.html [ Pass Timeout ] 908 908 webkit.org/b/123522 media/track/track-in-band-legacy-api.html [ Pass Failure Crash ] 909 webkit.org/b/128312 media/video-load-preload-metadata.html [ Pass Failure ]910 909 webkit.org/b/130490 media/video-remote-control-playpause.html [ Pass Failure ] 911 910 webkit.org/b/130971 media/track/track-remove-track.html [ Pass Crash Failure Timeout ] -
trunk/Source/WebCore/ChangeLog
r196130 r196131 1 2016-02-04 Eric Carlson <eric.carlson@apple.com> 2 3 Don't discard in-band cues with negative start times 4 https://bugs.webkit.org/show_bug.cgi?id=153867 5 <rdar://problem/19588632> 6 7 Reviewed by Jer Noble. 8 9 No new tests, updated and un-skipped http/tests/media/track-in-band-hls-metadata.html. 10 11 * platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp: 12 (WebCore::InbandMetadataTextTrackPrivateAVF::addDataCue): ASSERT if passed negative time value. 13 (WebCore::InbandMetadataTextTrackPrivateAVF::updatePendingCueEndTimes): Ditto. Correct logging. 14 15 * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: 16 (WebCore::MediaPlayerPrivateAVFoundationObjC::processCue): ASSERT if passed negative time value. 17 (WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive): Convert negative cue times to zero. 18 (-[WebCoreAVFMovieObserver legibleOutput:didOutputAttributedStrings:nativeSampleBuffers:forItemTime:]): 19 Ditto. 20 1 21 2016-02-04 Hyemi Shin <hyemi.sin@samsung.com> 2 22 -
trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp
r183234 r196131 58 58 { 59 59 ASSERT(cueFormat() == Data); 60 ASSERT(start >= MediaTime::zeroTime()); 61 60 62 if (!client()) 61 63 return; … … 70 72 void InbandMetadataTextTrackPrivateAVF::updatePendingCueEndTimes(const MediaTime& time) 71 73 { 74 ASSERT(time >= MediaTime::zeroTime()); 75 72 76 if (time >= m_currentCueStartTime) { 73 77 if (client()) { 74 78 for (auto& partialCue : m_incompleteCues) { 75 LOG(Media, "InbandMetadataTextTrackPrivateAVF:: addDataCue(%p) - updating cue: start=%s, end=%s", this, toString(partialCue.startTime).utf8().data(), toString(time).utf8().data());79 LOG(Media, "InbandMetadataTextTrackPrivateAVF::updatePendingCueEndTimes(%p) - updating cue: start=%s, end=%s", this, toString(partialCue.startTime).utf8().data(), toString(time).utf8().data()); 76 80 client()->updateDataCue(this, partialCue.startTime, time, partialCue.cueData); 77 81 } 78 82 } 79 83 } else 80 LOG(Media, "InbandMetadataTextTrackPrivateAVF:: addDataCuenegative length cue(s) ignored: start=%s, end=%s\n", toString(m_currentCueStartTime).utf8().data(), toString(time).utf8().data());84 LOG(Media, "InbandMetadataTextTrackPrivateAVF::updatePendingCueEndTimes negative length cue(s) ignored: start=%s, end=%s\n", toString(m_currentCueStartTime).utf8().data(), toString(time).utf8().data()); 81 85 82 86 m_incompleteCues.resize(0); -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
r196010 r196131 2862 2862 void MediaPlayerPrivateAVFoundationObjC::processCue(NSArray *attributedStrings, NSArray *nativeSamples, const MediaTime& time) 2863 2863 { 2864 ASSERT(time >= MediaTime::zeroTime()); 2865 2864 2866 if (!m_currentTextTrack) 2865 2867 return; … … 3240 3242 MediaTime earliestStartTime = MediaTime::positiveInfiniteTime(); 3241 3243 for (AVMetadataItemType *item in m_currentMetaData.get()) { 3242 MediaTime start = toMediaTime(item.time);3244 MediaTime start = std::max(toMediaTime(item.time), MediaTime::zeroTime()); 3243 3245 if (start < earliestStartTime) 3244 3246 earliestStartTime = start; … … 3247 3249 3248 3250 for (AVMetadataItemType *item in m_currentMetaData.get()) { 3249 MediaTime start = toMediaTime(item.time);3251 MediaTime start = std::max(toMediaTime(item.time), MediaTime::zeroTime()); 3250 3252 MediaTime end = MediaTime::positiveInfiniteTime(); 3251 3253 if (CMTIME_IS_VALID(item.duration)) … … 3561 3563 if (!callback) 3562 3564 return; 3563 callback->processCue(strongStrings.get(), strongSamples.get(), toMediaTime(itemTime)); 3565 MediaTime time = std::max(toMediaTime(itemTime), MediaTime::zeroTime()); 3566 callback->processCue(strongStrings.get(), strongSamples.get(), time); 3564 3567 }); 3565 3568 }
Note: See TracChangeset
for help on using the changeset viewer.