Changeset 207907 in webkit
- Timestamp:
- Oct 26, 2016 12:27:20 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r207905 r207907 1 2016-10-26 Chris Dumez <cdumez@apple.com> 2 3 First parameter to TextTrack.addCue() / removeCue() should not be nullable 4 https://bugs.webkit.org/show_bug.cgi?id=164020 5 6 Reviewed by Eric Carlson. 7 8 Add layout test coverage. 9 10 * media/track/texttrack-addCue-null-expected.txt: Added. 11 * media/track/texttrack-addCue-null.html: Added. 12 1 13 2016-10-26 Antoine Quint <graouts@apple.com> 2 14 -
trunk/Source/WebCore/ChangeLog
r207905 r207907 1 2016-10-26 Chris Dumez <cdumez@apple.com> 2 3 First parameter to TextTrack.addCue() / removeCue() should not be nullable 4 https://bugs.webkit.org/show_bug.cgi?id=164020 5 6 Reviewed by Eric Carlson. 7 8 First parameter to TextTrack.addCue() / removeCue() should not be nullable: 9 - https://html.spec.whatwg.org/#texttrack 10 11 Firefox and Chrome agree with the specification. 12 13 Test: media/track/texttrack-addCue-null.html 14 15 * html/track/InbandDataTextTrack.cpp: 16 (WebCore::InbandDataTextTrack::removeDataCue): 17 (WebCore::InbandDataTextTrack::removeCue): 18 * html/track/InbandDataTextTrack.h: 19 * html/track/InbandGenericTextTrack.cpp: 20 (WebCore::InbandGenericTextTrack::addGenericCue): 21 (WebCore::InbandGenericTextTrack::removeGenericCue): 22 (WebCore::InbandGenericTextTrack::removeCue): 23 * html/track/InbandGenericTextTrack.h: 24 * html/track/TextTrack.cpp: 25 (WebCore::TextTrack::addCue): 26 (WebCore::TextTrack::removeCue): 27 * html/track/TextTrack.h: 28 * html/track/TextTrack.idl: 29 1 30 2016-10-26 Antoine Quint <graouts@apple.com> 2 31 -
trunk/Source/WebCore/html/track/InbandDataTextTrack.cpp
r207720 r207907 115 115 return; 116 116 117 RefPtr<DataCue> cue = iter->value; 118 if (cue) { 117 if (RefPtr<DataCue> cue = iter->value) { 119 118 LOG(Media, "InbandDataTextTrack::removeDataCue removing cue: start=%s, end=%s\n", toString(cue->startTime()).utf8().data(), toString(cue->endTime()).utf8().data()); 120 removeCue( cue.get());119 removeCue(*cue); 121 120 } 122 121 } 123 122 124 ExceptionOr<void> InbandDataTextTrack::removeCue(TextTrackCue *cue)123 ExceptionOr<void> InbandDataTextTrack::removeCue(TextTrackCue& cue) 125 124 { 126 ASSERT(cue ->cueType() == TextTrackCue::Data);125 ASSERT(cue.cueType() == TextTrackCue::Data); 127 126 128 m_incompleteCueMap.remove(const_cast<SerializedPlatformRepresentation*>(toDataCue( cue)->platformValue()));127 m_incompleteCueMap.remove(const_cast<SerializedPlatformRepresentation*>(toDataCue(&cue)->platformValue())); 129 128 130 129 return InbandTextTrack::removeCue(cue); -
trunk/Source/WebCore/html/track/InbandDataTextTrack.h
r207720 r207907 51 51 void updateDataCue(InbandTextTrackPrivate*, const MediaTime& start, const MediaTime& end, PassRefPtr<SerializedPlatformRepresentation>) final; 52 52 void removeDataCue(InbandTextTrackPrivate*, const MediaTime& start, const MediaTime& end, PassRefPtr<SerializedPlatformRepresentation>) final; 53 ExceptionOr<void> removeCue(TextTrackCue *) final;53 ExceptionOr<void> removeCue(TextTrackCue&) final; 54 54 55 55 HashMap<RefPtr<SerializedPlatformRepresentation>, RefPtr<DataCue>> m_incompleteCueMap; -
trunk/Source/WebCore/html/track/InbandGenericTextTrack.cpp
r207720 r207907 128 128 return; 129 129 130 RefPtr<TextTrackCueGeneric>cue = TextTrackCueGeneric::create(*scriptExecutionContext(), cueData->startTime(), cueData->endTime(), cueData->content());131 updateCueFromCueData(cue. get(), cueData.get());132 if (hasCue(cue. get(), TextTrackCue::IgnoreDuration)) {130 auto cue = TextTrackCueGeneric::create(*scriptExecutionContext(), cueData->startTime(), cueData->endTime(), cueData->content()); 131 updateCueFromCueData(cue.ptr(), cueData.get()); 132 if (hasCue(cue.ptr(), TextTrackCue::IgnoreDuration)) { 133 133 LOG(Media, "InbandGenericTextTrack::addGenericCue ignoring already added cue: start=%s, end=%s, content=\"%s\"\n", toString(cueData->startTime()).utf8().data(), toString(cueData->endTime()).utf8().data(), cueData->content().utf8().data()); 134 134 return; … … 138 138 139 139 if (cueData->status() != GenericCueData::Complete) 140 m_cueMap.add(*cueData, *cue);140 m_cueMap.add(*cueData, cue); 141 141 142 142 addCue(WTFMove(cue)); … … 160 160 if (cue) { 161 161 LOG(Media, "InbandGenericTextTrack::removeGenericCue removing cue: start=%s, end=%s, content=\"%s\"\n", toString(cueData->startTime()).utf8().data(), toString(cueData->endTime()).utf8().data(), cueData->content().utf8().data()); 162 removeCue( cue);162 removeCue(*cue); 163 163 } else { 164 164 LOG(Media, "InbandGenericTextTrack::removeGenericCue UNABLE to find cue: start=%.2f, end=%.2f, content=\"%s\"\n", cueData->startTime().toDouble(), cueData->endTime().toDouble(), cueData->content().utf8().data()); … … 166 166 } 167 167 168 ExceptionOr<void> InbandGenericTextTrack::removeCue(TextTrackCue *cue)168 ExceptionOr<void> InbandGenericTextTrack::removeCue(TextTrackCue& cue) 169 169 { 170 170 auto result = TextTrack::removeCue(cue); 171 if (!result.hasException() && cue)172 m_cueMap.remove( *cue);171 if (!result.hasException()) 172 m_cueMap.remove(cue); 173 173 return result; 174 174 } -
trunk/Source/WebCore/html/track/InbandGenericTextTrack.h
r207720 r207907 66 66 void updateGenericCue(InbandTextTrackPrivate*, GenericCueData*) final; 67 67 void removeGenericCue(InbandTextTrackPrivate*, GenericCueData*) final; 68 ExceptionOr<void> removeCue(TextTrackCue *) final;68 ExceptionOr<void> removeCue(TextTrackCue&) final; 69 69 70 70 PassRefPtr<TextTrackCueGeneric> createCue(PassRefPtr<GenericCueData>); -
trunk/Source/WebCore/html/track/TextTrack.cpp
r207720 r207907 291 291 } 292 292 293 ExceptionOr<void> TextTrack::addCue(RefPtr<TextTrackCue>&& cue) 294 { 295 if (!cue) 296 return { }; 297 293 ExceptionOr<void> TextTrack::addCue(Ref<TextTrackCue>&& cue) 294 { 298 295 // 4.7.10.12.6 Text tracks exposing in-band metadata 299 296 // The UA will use DataCue to expose only text track cue objects that belong to a text track that has a text … … 321 318 // 2. Add cue to the method's TextTrack object's text track's text track list of cues. 322 319 cue->setTrack(this); 323 ensureTextTrackCueList().add(cue );320 ensureTextTrackCueList().add(cue.ptr()); 324 321 325 322 if (m_client) 326 m_client->textTrackAddCue(this, *cue);323 m_client->textTrackAddCue(this, cue); 327 324 328 325 return { }; 329 326 } 330 327 331 ExceptionOr<void> TextTrack::removeCue(TextTrackCue* cue) 332 { 333 if (!cue) 334 return { }; 335 328 ExceptionOr<void> TextTrack::removeCue(TextTrackCue& cue) 329 { 336 330 // 4.8.10.12.5 Text track API 337 331 … … 340 334 // 1. If the given cue is not currently listed in the method's TextTrack 341 335 // object's text track's text track list of cues, then throw a NotFoundError exception. 342 if (cue ->track() != this)336 if (cue.track() != this) 343 337 return Exception { NOT_FOUND_ERR }; 344 338 345 339 // 2. Remove cue from the method's TextTrack object's text track's text track list of cues. 346 if (!m_cues || !m_cues->remove( cue))340 if (!m_cues || !m_cues->remove(&cue)) 347 341 return Exception { INVALID_STATE_ERR }; 348 342 349 cue ->setTrack(nullptr);343 cue.setTrack(nullptr); 350 344 if (m_client) 351 m_client->textTrackRemoveCue(this, *cue);345 m_client->textTrackRemoveCue(this, cue); 352 346 353 347 return { }; -
trunk/Source/WebCore/html/track/TextTrack.h
r207720 r207907 101 101 TextTrackClient* client() { return m_client; } 102 102 103 ExceptionOr<void> addCue(Ref Ptr<TextTrackCue>&&);104 virtual ExceptionOr<void> removeCue(TextTrackCue *);103 ExceptionOr<void> addCue(Ref<TextTrackCue>&&); 104 virtual ExceptionOr<void> removeCue(TextTrackCue&); 105 105 106 106 bool hasCue(TextTrackCue*, TextTrackCue::CueMatchRules = TextTrackCue::MatchAllFields); -
trunk/Source/WebCore/html/track/TextTrack.idl
r207720 r207907 44 44 readonly attribute TextTrackCueList? activeCues; 45 45 46 // FIXME: cue parameter should not be nullable in addCue and removeCue. 47 [MayThrowException] void addCue(TextTrackCue? cue); 48 [MayThrowException] void removeCue(TextTrackCue? cue); 46 [MayThrowException] void addCue(TextTrackCue cue); 47 [MayThrowException] void removeCue(TextTrackCue cue); 49 48 50 49 attribute EventHandler oncuechange;
Note: See TracChangeset
for help on using the changeset viewer.