Changeset 258587 in webkit
- Timestamp:
- Mar 17, 2020, 1:52:00 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r258585 r258587 1 2020-03-17 Eric Carlson <eric.carlson@apple.com> 2 3 TextTrackBase should validate language before setting m_validBCP47Language 4 https://bugs.webkit.org/show_bug.cgi?id=209094 5 <rdar://problem/60439603> 6 7 Reviewed by Jer Noble. 8 9 * media/track/track-bcp-language-expected.txt: Added. 10 * media/track/track-bcp-language.html: Added. 11 1 12 2020-03-17 Jacob Uphoff <jacob_uphoff@apple.com> 2 13 -
trunk/Source/WebCore/ChangeLog
r258564 r258587 1 2020-03-17 Eric Carlson <eric.carlson@apple.com> 2 3 TextTrackBase should validate language before setting m_validBCP47Language 4 https://bugs.webkit.org/show_bug.cgi?id=209094 5 <rdar://problem/60439603> 6 7 Reviewed by Jer Noble. 8 9 Test: media/track/track-bcp-language.html 10 11 * html/track/TextTrack.idl: 12 * html/track/TrackBase.cpp: 13 (WebCore::TrackBase::TrackBase): Don't set m_validBCP47Language unless the language is valid. 14 (WebCore::TrackBase::setLanguage): Clear m_validBCP47Language if the language is invalid. 15 Restructure the code to use early returns. 16 (WebCore::TrackBase::validBCP47Language const): Deleted. 17 * html/track/TrackBase.h: 18 (WebCore::TrackBase::validBCP47Language const): 19 * testing/Internals.cpp: 20 (WebCore::Internals::textTrackBCP47Language): 21 * testing/Internals.h: 22 * testing/Internals.idl: 23 1 24 2020-03-17 Alex Christensen <achristensen@webkit.org> 2 25 -
trunk/Source/WebCore/html/track/TextTrack.idl
r257997 r258587 29 29 [ 30 30 Conditional=VIDEO_TRACK, 31 ExportToWrappedFunction, 31 32 GenerateIsReachable=ImplElementRoot, 32 33 JSCustomMarkFunction, -
trunk/Source/WebCore/html/track/TrackBase.cpp
r256353 r258587 39 39 static int s_uniqueId = 0; 40 40 41 static bool isValidBCP47LanguageTag(const String&); 42 41 43 #if !RELEASE_LOG_DISABLED 42 44 static RefPtr<Logger>& nullLogger() … … 52 54 , m_label(label) 53 55 , m_language(language) 54 , m_validBCP47Language(language)55 56 { 56 57 ASSERT(type != BaseTrack); 58 if (isValidBCP47LanguageTag(language)) 59 m_validBCP47Language = language; 60 57 61 m_type = type; 58 62 … … 130 134 void TrackBase::setLanguage(const AtomString& language) 131 135 { 132 if (!language.isEmpty() && !isValidBCP47LanguageTag(language)) { 133 String message; 134 if (language.contains((UChar)'\0')) 135 message = "The language contains a null character and is not a valid BCP 47 language tag."_s; 136 else { 137 StringBuilder stringBuilder; 138 stringBuilder.appendLiteral("The language '"); 139 stringBuilder.append(language); 140 stringBuilder.appendLiteral("' is not a valid BCP 47 language tag."); 141 message = stringBuilder.toString(); 142 } 143 if (auto element = this->element()) 144 element->document().addConsoleMessage(MessageSource::Rendering, MessageLevel::Warning, message); 145 } else 136 m_language = language; 137 if (language.isEmpty() || isValidBCP47LanguageTag(language)) { 146 138 m_validBCP47Language = language; 147 148 m_language = language; 149 } 139 return; 140 } 150 141 151 AtomString TrackBase::validBCP47Language() const 152 { 153 return m_validBCP47Language; 142 m_validBCP47Language = emptyAtom(); 143 144 auto element = this->element(); 145 if (!element) 146 return; 147 148 String message; 149 if (language.contains((UChar)'\0')) 150 message = "The language contains a null character and is not a valid BCP 47 language tag."_s; 151 else { 152 StringBuilder stringBuilder; 153 stringBuilder.appendLiteral("The language '"); 154 stringBuilder.append(language); 155 stringBuilder.appendLiteral("' is not a valid BCP 47 language tag."); 156 message = stringBuilder.toString(); 157 } 158 159 element->document().addConsoleMessage(MessageSource::Rendering, MessageLevel::Warning, message); 154 160 } 155 161 -
trunk/Source/WebCore/html/track/TrackBase.h
r256353 r258587 60 60 void setLabel(const AtomString& label) { m_label = label; } 61 61 62 AtomString validBCP47Language() const ;62 AtomString validBCP47Language() const { return m_validBCP47Language; } 63 63 AtomString language() const { return m_language; } 64 64 virtual void setLanguage(const AtomString&); -
trunk/Source/WebCore/testing/Internals.cpp
r258528 r258587 238 238 #include "CaptionUserPreferences.h" 239 239 #include "PageGroup.h" 240 #include "TextTrack.h" 240 241 #include "TextTrackCueGeneric.h" 241 242 #endif … … 3770 3771 return TextTrackCueGeneric::create(*document, MediaTime::createWithDouble(startTime), MediaTime::createWithDouble(endTime), text); 3771 3772 } 3773 3774 ExceptionOr<String> Internals::textTrackBCP47Language(TextTrack& track) 3775 { 3776 return String { track.validBCP47Language() }; 3777 } 3772 3778 #endif 3773 3779 -
trunk/Source/WebCore/testing/Internals.h
r258359 r258587 99 99 class StringCallback; 100 100 class StyleSheet; 101 class TextTrack; 101 102 class TimeRanges; 102 103 class TypeConversions; … … 595 596 #if ENABLE(VIDEO_TRACK) 596 597 RefPtr<TextTrackCueGeneric> createGenericCue(double startTime, double endTime, String text); 598 ExceptionOr<String> textTrackBCP47Language(TextTrack&); 597 599 #endif 598 600 -
trunk/Source/WebCore/testing/Internals.idl
r258359 r258587 588 588 [Conditional=VIDEO_TRACK, MayThrowException] void setCaptionDisplayMode(DOMString mode); 589 589 [Conditional=VIDEO_TRACK] TextTrackCueGeneric createGenericCue(double startTime, double endTime, DOMString text); 590 [Conditional=VIDEO_TRACK, MayThrowException] DOMString textTrackBCP47Language(TextTrack track); 590 591 591 592 [Conditional=VIDEO] TimeRanges createTimeRanges(Float32Array startTimes, Float32Array
Note:
See TracChangeset
for help on using the changeset viewer.