Changeset 243450 in webkit
- Timestamp:
- Mar 25, 2019, 1:39:59 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 20 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/media/track/track-in-band-metadata-display-order-expected.txt (added)
-
LayoutTests/media/track/track-in-band-metadata-display-order.html (added)
-
Source/WebCore/CMakeLists.txt (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/DerivedSources-input.xcfilelist (modified) (1 diff)
-
Source/WebCore/DerivedSources-output.xcfilelist (modified) (1 diff)
-
Source/WebCore/DerivedSources.make (modified) (1 diff)
-
Source/WebCore/WebCore.xcodeproj/project.pbxproj (modified) (5 diffs)
-
Source/WebCore/html/shadow/MediaControlElementTypes.cpp (modified) (2 diffs)
-
Source/WebCore/html/shadow/MediaControlElementTypes.h (modified) (1 diff)
-
Source/WebCore/html/shadow/MediaControlElements.cpp (modified) (3 diffs)
-
Source/WebCore/html/shadow/MediaControlElements.h (modified) (3 diffs)
-
Source/WebCore/html/track/DataCue.h (modified) (2 diffs)
-
Source/WebCore/html/track/TextTrackCueGeneric.h (modified) (2 diffs)
-
Source/WebCore/html/track/TextTrackCueGeneric.idl (added)
-
Source/WebCore/html/track/VTTCue.h (modified) (2 diffs)
-
Source/WebCore/testing/Internals.cpp (modified) (2 diffs)
-
Source/WebCore/testing/Internals.h (modified) (2 diffs)
-
Source/WebCore/testing/Internals.idl (modified) (1 diff)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/DumpRenderTree/mac/DumpRenderTree.mm (modified) (1 diff)
-
Tools/WebKitTestRunner/TestController.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r243444 r243450 1 2019-03-25 Jer Noble <jer.noble@apple.com> 2 3 Add test for fix of #196095 4 https://bugs.webkit.org/show_bug.cgi?id=196097 5 6 Reviewed by Eric Carlson. 7 8 * media/track/track-in-band-metadata-display-order-expected.txt: Added. 9 * media/track/track-in-band-metadata-display-order.html: Added. 10 1 11 2019-03-25 Antti Koivisto <antti@apple.com> 2 12 -
trunk/Source/WebCore/CMakeLists.txt
r243433 r243450 1384 1384 html/track/TextTrack.idl 1385 1385 html/track/TextTrackCue.idl 1386 html/track/TextTrackCueGeneric.idl 1386 1387 html/track/TextTrackCueList.idl 1387 1388 html/track/TextTrackList.idl -
trunk/Source/WebCore/ChangeLog
r243444 r243450 1 2019-03-25 Jer Noble <jer.noble@apple.com> 2 3 Test for: 196095 Inband Text Track cues interspersed with Data cues can display out of order. 4 https://bugs.webkit.org/show_bug.cgi?id=196097 5 6 Reviewed by Eric Carlson. 7 8 Test: media/track/track-in-band-metadata-display-order.html 9 10 Add a method in Internals to create a TextTrackCueGeneric (which can normally only be created 11 by parsing an in-band media track). This requires adding IDL for TextTrackCueGeneric, and exporting 12 TextTrackCueGeneric for testing. 13 14 Drive-by fixes: 15 16 Add runtime logging to MediaControlTextTrackContainerElement. This necessitates modifying the 17 parentMediaElement() method to take a const Node*, and const_cast that constness away in order to return 18 a HTMLMediaElement* 19 20 TextTrackCue, VTTCue, TextTrackCueGeneric, and DataCue should all use the WTF TypeCasts macros to 21 enable use of is<> and downcast<>. 22 23 * Source/WebCore/CMakeLists.txt: 24 * DerivedSources-input.xcfilelist: 25 * DerivedSources-output.xcfilelist: 26 * DerivedSources.make: 27 * WebCore.xcodeproj/project.pbxproj: 28 * html/shadow/MediaControlElementTypes.cpp: 29 (WebCore::parentMediaElement): 30 * html/shadow/MediaControlElementTypes.h: 31 * html/shadow/MediaControlElements.cpp: 32 (WebCore::MediaControlTextTrackContainerElement::updateDisplay): 33 (WebCore::MediaControlTextTrackContainerElement::logger const): 34 (WebCore::MediaControlTextTrackContainerElement::logIdentifier const): 35 (WebCore::MediaControlTextTrackContainerElement::logChannel const): 36 * html/shadow/MediaControlElements.h: 37 * html/track/DataCue.h: 38 (isType): 39 * html/track/TextTrackCueGeneric.h: 40 (isType): 41 * html/track/TextTrackCueGeneric.idl: Added. 42 * html/track/VTTCue.h: 43 (isType): 44 * testing/Internals.cpp: 45 (WebCore::Internals::createGenericCue): 46 * testing/Internals.h: 47 * testing/Internals.idl: 48 1 49 2019-03-25 Antti Koivisto <antti@apple.com> 2 50 -
trunk/Source/WebCore/DerivedSources-input.xcfilelist
r243419 r243450 868 868 $(PROJECT_DIR)/html/track/TextTrack.idl 869 869 $(PROJECT_DIR)/html/track/TextTrackCue.idl 870 $(PROJECT_DIR)/html/track/TextTrackCueGeneric.idl 870 871 $(PROJECT_DIR)/html/track/TextTrackCueList.idl 871 872 $(PROJECT_DIR)/html/track/TextTrackList.idl -
trunk/Source/WebCore/DerivedSources-output.xcfilelist
r243419 r243450 1740 1740 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSTextTrackCue.cpp 1741 1741 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSTextTrackCue.h 1742 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSTextTrackCueGeneric.cpp 1743 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSTextTrackCueGeneric.h 1742 1744 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSTextTrackCueList.cpp 1743 1745 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSTextTrackCueList.h -
trunk/Source/WebCore/DerivedSources.make
r243419 r243450 847 847 $(WebCore)/html/track/TextTrack.idl \ 848 848 $(WebCore)/html/track/TextTrackCue.idl \ 849 $(WebCore)/html/track/TextTrackCueGeneric.idl \ 849 850 $(WebCore)/html/track/TextTrackCueList.idl \ 850 851 $(WebCore)/html/track/TextTrackList.idl \ -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r243438 r243450 4229 4229 CDF756A3215C29E900EFCB50 /* JSMediaKeyEncryptionScheme.h in Headers */ = {isa = PBXBuildFile; fileRef = CDF756A1215C29E900EFCB50 /* JSMediaKeyEncryptionScheme.h */; }; 4230 4230 CDFC360618CA61C20026E56F /* RemoteCommandListener.h in Headers */ = {isa = PBXBuildFile; fileRef = CDFC360418CA61C20026E56F /* RemoteCommandListener.h */; settings = {ATTRIBUTES = (Private, ); }; }; 4231 CDFD78C32242FCC600D7208A /* JSTextTrackCueGeneric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDFD78BB2242C4FF00D7208A /* JSTextTrackCueGeneric.cpp */; }; 4231 4232 CE057FA61220731100A476D5 /* DocumentMarkerController.h in Headers */ = {isa = PBXBuildFile; fileRef = CE057FA41220731100A476D5 /* DocumentMarkerController.h */; settings = {ATTRIBUTES = (Private, ); }; }; 4232 4233 CE08C3D2152B599A0021B8C2 /* AlternativeTextController.h in Headers */ = {isa = PBXBuildFile; fileRef = CE08C3D0152B599A0021B8C2 /* AlternativeTextController.h */; settings = {ATTRIBUTES = (); }; }; … … 13940 13941 CDFC360318CA61C20026E56F /* RemoteCommandListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteCommandListener.cpp; sourceTree = "<group>"; }; 13941 13942 CDFC360418CA61C20026E56F /* RemoteCommandListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteCommandListener.h; sourceTree = "<group>"; }; 13943 CDFD78BA2242C4FE00D7208A /* JSTextTrackCueGeneric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTextTrackCueGeneric.h; sourceTree = "<group>"; }; 13944 CDFD78BB2242C4FF00D7208A /* JSTextTrackCueGeneric.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCueGeneric.cpp; sourceTree = "<group>"; }; 13945 CDFD78C22242FC4900D7208A /* TextTrackCueGeneric.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TextTrackCueGeneric.idl; sourceTree = "<group>"; }; 13942 13946 CE057FA31220731100A476D5 /* DocumentMarkerController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentMarkerController.cpp; sourceTree = "<group>"; }; 13943 13947 CE057FA41220731100A476D5 /* DocumentMarkerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentMarkerController.h; sourceTree = "<group>"; }; … … 23135 23139 070756D714239B4B00414161 /* JSTextTrackCue.cpp */, 23136 23140 070756D814239B4B00414161 /* JSTextTrackCue.h */, 23141 CDFD78BB2242C4FF00D7208A /* JSTextTrackCueGeneric.cpp */, 23142 CDFD78BA2242C4FE00D7208A /* JSTextTrackCueGeneric.h */, 23137 23143 070756D914239B4C00414161 /* JSTextTrackCueList.cpp */, 23138 23144 070756DA14239B4E00414161 /* JSTextTrackCueList.h */, … … 24076 24082 071A9EC0168FB56C002629F9 /* TextTrackCueGeneric.cpp */, 24077 24083 071A9EC1168FB56C002629F9 /* TextTrackCueGeneric.h */, 24084 CDFD78C22242FC4900D7208A /* TextTrackCueGeneric.idl */, 24078 24085 9759E93B14EF1CF80026A2DD /* TextTrackCueList.cpp */, 24079 24086 9759E93C14EF1CF80026A2DD /* TextTrackCueList.h */, … … 33113 33120 CD063F821E23FA8900812BE3 /* InitDataRegistry.cpp in Sources */, 33114 33121 538EC93E1F99BF5A004D22A8 /* JSQuickTimePluginReplacement.cpp in Sources */, 33122 CDFD78C32242FCC600D7208A /* JSTextTrackCueGeneric.cpp in Sources */, 33115 33123 935C477009AC4D7300A6AAB4 /* KeyEventMac.mm in Sources */, 33116 33124 CDA98E0B1603CD6000FEA3B1 /* LegacyCDM.cpp in Sources */, -
trunk/Source/WebCore/html/shadow/MediaControlElementTypes.cpp
r229694 r243450 55 55 class Event; 56 56 57 RefPtr<HTMLMediaElement> parentMediaElement( Node* node)57 RefPtr<HTMLMediaElement> parentMediaElement(const Node* node) 58 58 { 59 59 if (!node) … … 61 61 RefPtr<Node> mediaNode = node->shadowHost(); 62 62 if (!mediaNode) 63 mediaNode = node;63 mediaNode = const_cast<Node*>(node); 64 64 if (!is<HTMLMediaElement>(*mediaNode)) 65 65 return nullptr; -
trunk/Source/WebCore/html/shadow/MediaControlElementTypes.h
r229694 r243450 73 73 }; 74 74 75 RefPtr<HTMLMediaElement> parentMediaElement( Node*);75 RefPtr<HTMLMediaElement> parentMediaElement(const Node*); 76 76 inline RefPtr<HTMLMediaElement> parentMediaElement(const RenderObject& renderer) { return parentMediaElement(renderer.node()); } 77 77 -
trunk/Source/WebCore/html/shadow/MediaControlElements.cpp
r243341 r243450 1173 1173 1174 1174 activeCues.removeAllMatching([] (CueInterval& cueInterval) { 1175 if (! cueInterval.data() || !cueInterval.data()->isRenderable())1175 if (!is<VTTCue>(cueInterval.data())) 1176 1176 return true; 1177 1177 1178 Ref Ptr<VTTCue> cue = toVTTCue(cueInterval.data());1178 Ref<VTTCue> cue = downcast<VTTCue>(*cueInterval.data()); 1179 1179 1180 1180 return !cue->isRenderable() … … 1198 1198 continue; 1199 1199 1200 RefPtr<VTTCue> cue = toVTTCue(activeCues[i].data()); 1201 ASSERT(cue); 1202 if (!cue) 1203 continue; 1204 1205 LOG(Media, "MediaControlTextTrackContainerElement::updateDisplay(%p) - adding and positioning cue #%zu: \"%s\", start=%.2f, end=%.2f, line=%.2f", this, i, cue->text().utf8().data(), cue->startTime(), cue->endTime(), cue->line()); 1200 RefPtr<VTTCue> cue = downcast<VTTCue>(activeCues[i].data()); 1201 1202 DEBUG_LOG(LOGIDENTIFIER, "adding and positioning cue ", i, ": \"", cue->text(), "\", start=", cue->startTime(), ", end=", cue->endTime(), ", line=", cue->line()); 1206 1203 Ref<VTTCueBox> displayBox = cue->getDisplayTree(m_videoDisplaySize.size(), m_fontSize); 1207 1204 RefPtr<VTTRegion> region = cue->track()->regions()->getRegionById(cue->regionId()); … … 1455 1452 } 1456 1453 1454 #if !RELEASE_LOG_DISABLED 1455 const Logger& MediaControlTextTrackContainerElement::logger() const 1456 { 1457 return document().logger(); 1458 } 1459 1460 const void* MediaControlTextTrackContainerElement::logIdentifier() const 1461 { 1462 if (auto mediaElement = parentMediaElement(this)) 1463 return mediaElement->logIdentifier(); 1464 return nullptr; 1465 } 1466 1467 WTFLogChannel& MediaControlTextTrackContainerElement::logChannel() const 1468 { 1469 return LogMedia; 1470 } 1471 #endif // !RELEASE_LOG_DISABLED 1472 1457 1473 #endif // ENABLE(VIDEO_TRACK) 1458 1474 -
trunk/Source/WebCore/html/shadow/MediaControlElements.h
r237266 r243450 34 34 #include "MediaControlElementTypes.h" 35 35 #include "TextTrackRepresentation.h" 36 #include <wtf/LoggerHelper.h> 36 37 37 38 namespace WebCore { … … 467 468 #if ENABLE(VIDEO_TRACK) 468 469 469 class MediaControlTextTrackContainerElement final : public MediaControlDivElement, public TextTrackRepresentationClient { 470 class MediaControlTextTrackContainerElement final 471 : public MediaControlDivElement 472 , public TextTrackRepresentationClient 473 #if !RELEASE_LOG_DISABLED 474 , private LoggerHelper 475 #endif 476 { 470 477 WTF_MAKE_ISO_ALLOCATED(MediaControlTextTrackContainerElement); 471 478 public: … … 481 488 void updateActiveCuesFontSize(); 482 489 void updateTextStrokeStyle(); 483 490 491 #if !RELEASE_LOG_DISABLED 492 const Logger& logger() const final; 493 const void* logIdentifier() const final; 494 WTFLogChannel& logChannel() const final; 495 const char* logClassName() const final { return "MediaControlTextTrackContainerElement"; } 496 #endif 497 484 498 explicit MediaControlTextTrackContainerElement(Document&); 485 499 -
trunk/Source/WebCore/html/track/DataCue.h
r228218 r243450 34 34 #include <JavaScriptCore/JSCJSValue.h> 35 35 #include <wtf/MediaTime.h> 36 #include <wtf/TypeCasts.h> 36 37 37 38 namespace WebCore { … … 124 125 } 125 126 127 SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::DataCue) 128 static bool isType(const WebCore::TextTrackCue& cue) { return cue.cueType() == WebCore::TextTrackCue::Data; } 129 SPECIALIZE_TYPE_TRAITS_END() 130 126 131 #endif -
trunk/Source/WebCore/html/track/TextTrackCueGeneric.h
r236531 r243450 71 71 72 72 private: 73 TextTrackCueGeneric(ScriptExecutionContext&, const MediaTime& start, const MediaTime& end, const String&);73 WEBCORE_TESTSUPPORT_EXPORT TextTrackCueGeneric(ScriptExecutionContext&, const MediaTime& start, const MediaTime& end, const String&); 74 74 75 75 bool isOrderedBefore(const TextTrackCue*) const final; … … 109 109 110 110 } 111 112 SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::TextTrackCueGeneric) 113 static bool isType(const WebCore::TextTrackCue& cue) { return cue.cueType() == WebCore::TextTrackCue::Generic; } 114 SPECIALIZE_TYPE_TRAITS_END() 115 111 116 #endif -
trunk/Source/WebCore/html/track/VTTCue.h
r239063 r243450 36 36 #include "HTMLElement.h" 37 37 #include "TextTrackCue.h" 38 #include <wtf/TypeCasts.h> 38 39 39 40 namespace WebCore { … … 261 262 } // namespace WTF 262 263 264 SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::VTTCue) 265 static bool isType(const WebCore::TextTrackCue& cue) { return cue.isRenderable(); } 266 SPECIALIZE_TYPE_TRAITS_END() 267 263 268 #endif -
trunk/Source/WebCore/testing/Internals.cpp
r243324 r243450 214 214 #include "CaptionUserPreferences.h" 215 215 #include "PageGroup.h" 216 #include "TextTrackCueGeneric.h" 216 217 #endif 217 218 … … 3579 3580 } 3580 3581 3582 RefPtr<TextTrackCueGeneric> Internals::createGenericCue(double startTime, double endTime, String text) 3583 { 3584 Document* document = contextDocument(); 3585 if (!document || !document->page()) 3586 return nullptr; 3587 #if ENABLE(VIDEO_TRACK) 3588 return TextTrackCueGeneric::create(*document, MediaTime::createWithDouble(startTime), MediaTime::createWithDouble(endTime), text); 3589 #else 3590 UNUSED_PARAM(startTime); 3591 UNUSED_PARAM(endTime); 3592 UNUSED_PARAM(text); 3593 return nullptr; 3594 #endif 3595 } 3596 3581 3597 #if ENABLE(VIDEO) 3582 3598 -
trunk/Source/WebCore/testing/Internals.h
r243324 r243450 92 92 class StringCallback; 93 93 class StyleSheet; 94 class TextTrackCueGeneric; 94 95 class TimeRanges; 95 96 class TypeConversions; … … 544 545 ExceptionOr<void> setPrimaryAudioTrackLanguageOverride(const String&); 545 546 ExceptionOr<void> setCaptionDisplayMode(const String&); 547 RefPtr<TextTrackCueGeneric> createGenericCue(double startTime, double endTime, String text); 546 548 547 549 #if ENABLE(VIDEO) -
trunk/Source/WebCore/testing/Internals.idl
r243324 r243450 541 541 [Conditional=VIDEO_TRACK, MayThrowException] void setPrimaryAudioTrackLanguageOverride(DOMString language); 542 542 [Conditional=VIDEO_TRACK, MayThrowException] void setCaptionDisplayMode(DOMString mode); 543 [Conditional=VIDEO_TRACK] TextTrackCueGeneric createGenericCue(double startTime, double endTime, DOMString text); 543 544 544 545 [Conditional=VIDEO] TimeRanges createTimeRanges(Float32Array startTimes, Float32Array -
trunk/Tools/ChangeLog
r243445 r243450 1 2019-03-25 Jer Noble <jer.noble@apple.com> 2 3 Test for: 196095 Inband Text Track cues interspersed with Data cues can display out of order. 4 https://bugs.webkit.org/show_bug.cgi?id=196097 5 6 Reviewed by Eric Carlson. 7 8 Drive-by bug fix: allow tests to play audio without a user gesture by default. 9 10 * DumpRenderTree/mac/DumpRenderTree.mm: 11 (resetWebPreferencesToConsistentValues): 12 * WebKitTestRunner/TestController.cpp: 13 (WTR::TestController::resetPreferencesToConsistentValues): 14 1 15 2019-03-25 Wenson Hsieh <wenson_hsieh@apple.com> 2 16 -
trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm
r242534 r243450 939 939 940 940 [preferences setMediaPlaybackAllowsInline:YES]; 941 [preferences setMediaPlaybackRequiresUserGesture:NO]; 941 942 [preferences setVideoPlaybackRequiresUserGesture:NO]; 942 943 [preferences setAudioPlaybackRequiresUserGesture:NO]; -
trunk/Tools/WebKitTestRunner/TestController.cpp
r243347 r243450 855 855 WKPreferencesSetWebSQLDisabled(preferences, false); 856 856 857 WKPreferencesSetMediaPlaybackRequiresUserGesture(preferences, false); 858 WKPreferencesSetVideoPlaybackRequiresUserGesture(preferences, false); 859 WKPreferencesSetAudioPlaybackRequiresUserGesture(preferences, false); 860 857 861 platformResetPreferencesToConsistentValues(); 858 862 }
Note:
See TracChangeset
for help on using the changeset viewer.