Changeset 277793 in webkit
- Timestamp:
- May 20, 2021, 10:28:39 AM (4 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r277792 r277793 1 2021-05-20 Devin Rousso <drousso@apple.com> 2 3 [Modern Media Controls] should not use `codePointCompare` as it doesn't take into account language specific sorting rules 4 https://bugs.webkit.org/show_bug.cgi?id=225993 5 6 Reviewed by Eric Carlson. 7 8 * page/CaptionUserPreferences.cpp: 9 (WebCore::CaptionUserPreferences::sortedTrackListForMenu): 10 * page/CaptionUserPreferencesMediaAF.cpp: 11 (WebCore::textTrackCompare): 12 (WebCore::CaptionUserPreferencesMediaAF::sortedTrackListForMenu): 13 1 14 2021-05-20 Geoffrey Garen <ggaren@apple.com> 2 15 -
trunk/Source/WebCore/page/CaptionUserPreferences.cpp
r273191 r277793 46 46 #include <JavaScriptCore/StructureInlines.h> 47 47 #include <wtf/Language.h> 48 #include <wtf/unicode/Collator.h> 48 49 49 50 namespace WebCore { … … 238 239 } 239 240 240 std::sort(tracksForMenu.begin(), tracksForMenu.end(), [](auto& a, auto& b) { 241 return codePointCompare(trackDisplayName(a.get()), trackDisplayName(b.get())) < 0; 241 Collator collator; 242 243 std::sort(tracksForMenu.begin(), tracksForMenu.end(), [&] (auto& a, auto& b) { 244 return collator.collate(trackDisplayName(a.get()), trackDisplayName(b.get())) < 0; 242 245 }); 243 246 … … 280 283 } 281 284 282 std::sort(tracksForMenu.begin(), tracksForMenu.end(), [](auto& a, auto& b) { 283 return codePointCompare(trackDisplayName(a.get()), trackDisplayName(b.get())) < 0; 285 Collator collator; 286 287 std::sort(tracksForMenu.begin(), tracksForMenu.end(), [&] (auto& a, auto& b) { 288 return collator.collate(trackDisplayName(a.get()), trackDisplayName(b.get())) < 0; 284 289 }); 285 290 -
trunk/Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp
r277790 r277793 50 50 #include <wtf/text/StringConcatenateNumbers.h> 51 51 #include <wtf/text/cf/StringConcatenateCF.h> 52 #include <wtf/unicode/Collator.h> 52 53 53 54 #if PLATFORM(IOS_FAMILY) … … 682 683 683 684 // Tracks in the user's preferred language are always at the top of the menu. 684 bool aIsPreferredLanguage = !codePointCompare(aLanguageDisplayName, preferredLanguageDisplayName);685 bool bIsPreferredLanguage = !codePointCompare(bLanguageDisplayName, preferredLanguageDisplayName);685 bool aIsPreferredLanguage = aLanguageDisplayName == preferredLanguageDisplayName; 686 bool bIsPreferredLanguage = bLanguageDisplayName == preferredLanguageDisplayName; 686 687 if (aIsPreferredLanguage != bIsPreferredLanguage) 687 688 return aIsPreferredLanguage; 688 689 690 Collator collator; 691 689 692 // Tracks not in the user's preferred language sort first by language ... 690 if (auto languageDisplayNameComparison = co dePointCompare(aLanguageDisplayName, bLanguageDisplayName))693 if (auto languageDisplayNameComparison = collator.collate(aLanguageDisplayName, bLanguageDisplayName)) 691 694 return languageDisplayNameComparison < 0; 692 695 … … 704 707 705 708 // ... and tracks of the same type and language sort by the menu item text. 706 if (auto trackDisplayComparison = co dePointCompare(trackDisplayName(a.get()), trackDisplayName(b.get())))709 if (auto trackDisplayComparison = collator.collate(trackDisplayName(a.get()), trackDisplayName(b.get()))) 707 710 return trackDisplayComparison < 0; 708 711 … … 722 725 tracksForMenu.append(track); 723 726 } 724 725 std::sort(tracksForMenu.begin(), tracksForMenu.end(), [](auto& a, auto& b) { 726 auto trackDisplayComparison = codePointCompare(trackDisplayName(a.get()), trackDisplayName(b.get())); 727 if (trackDisplayComparison) 727 728 Collator collator; 729 730 std::sort(tracksForMenu.begin(), tracksForMenu.end(), [&] (auto& a, auto& b) { 731 if (auto trackDisplayComparison = collator.collate(trackDisplayName(a.get()), trackDisplayName(b.get()))) 728 732 return trackDisplayComparison < 0; 729 733
Note:
See TracChangeset
for help on using the changeset viewer.