Changeset 254615 in webkit
- Timestamp:
- Jan 15, 2020 11:16:08 AM (4 years ago)
- Location:
- branches/safari-609-branch
- Files:
-
- 41 added
- 1 deleted
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/safari-609-branch/LayoutTests/ChangeLog
r254612 r254615 1 2020-01-15 Alan Coon <alancoon@apple.com> 2 3 Cherry-pick r254389. rdar://problem/58548648 4 5 REGRESSION(r185816): In the Hong Kong locale, navigator.language reports it's in the Taiwan locale 6 https://bugs.webkit.org/show_bug.cgi?id=200043 7 Source/WTF: 8 9 <rdar://problem/44119496> 10 11 Reviewed by Dean Jackson. 12 13 We ask the system for the current locale using CFLocaleCopyPreferredLanguages(), and then round-trip 14 it through CFBundleGetLocalizationInfoForLocalization() / CFBundleCopyLocalizationForLocalizationInfo(). 15 This was to work around the fact that CFLocaleCopyPreferredLanguages() previously didn't report BCP47 16 language codes. However, that round-tripping was introducing errors, such as "zh-Hant-HK" was getting 17 turned into "zh-Hant-TW" which is clearly wrong. The CFBundle functions were never supposed to be used 18 in this way. 19 20 Instead, we can use CFLocaleCreateCanonicalLanguageIdentifierFromString() which is intended to 21 canonicalize locale identifiers, and does return BCP47 language codes. However, this function preserves 22 more fingerprinting entropy than the old code path, so we pass the input through new NSLocale SPI to 23 minimize the entropy revealed. 24 25 * WTF.xcodeproj/project.pbxproj: 26 * wtf/Language.h: 27 * wtf/Platform.h: 28 * wtf/PlatformMac.cmake: 29 * wtf/cf/LanguageCF.cpp: 30 (WTF::httpStyleLanguageCode): 31 (WTF::platformUserPreferredLanguages): 32 * wtf/cocoa/LanguageCocoa.mm: Added. 33 (WTF::minimizedLanguagesFromLanguages): 34 * wtf/spi/cocoa/NSLocaleSPI.h: Added. 35 36 Tools: 37 38 Reviewed by Dean Jackson. 39 40 Migrate system language tests to LayoutTests, to match the rest of our system language tests. 41 42 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 43 * TestWebKitAPI/Tests/mac/NavigatorLanguage.mm: Removed. 44 45 LayoutTests: 46 47 <rdar://problem/44119496> 48 49 Reviewed by Dean Jackson. 50 51 Migrate and update tests from TestWebKitAPI to LayoutTests, to match the rest of our system language tests. 52 53 * platform/mac/TestExpectations: Mark these tests as possibly failing on older versions of macOS. 54 * fast/text/international/system-language/navigator-language/navigator-language-en-GB-expected.txt: Added. 55 * fast/text/international/system-language/navigator-language/navigator-language-en-GB.html: Added. 56 * fast/text/international/system-language/navigator-language/navigator-language-en-US-expected.txt: Added. 57 * fast/text/international/system-language/navigator-language/navigator-language-en-US.html: Added. 58 * fast/text/international/system-language/navigator-language/navigator-language-en-expected.txt: Added. 59 * fast/text/international/system-language/navigator-language/navigator-language-en.html: Added. 60 * fast/text/international/system-language/navigator-language/navigator-language-es-419-expected.txt: Added. 61 * fast/text/international/system-language/navigator-language/navigator-language-es-419.html: Added. 62 * fast/text/international/system-language/navigator-language/navigator-language-es-ES-expected.txt: Added. 63 * fast/text/international/system-language/navigator-language/navigator-language-es-ES.html: Added. 64 * fast/text/international/system-language/navigator-language/navigator-language-es-MX-expected.txt: Added. 65 * fast/text/international/system-language/navigator-language/navigator-language-es-MX.html: Added. 66 * fast/text/international/system-language/navigator-language/navigator-language-es-expected.txt: Added. 67 * fast/text/international/system-language/navigator-language/navigator-language-es.html: Added. 68 * fast/text/international/system-language/navigator-language/navigator-language-fr-CA-expected.txt: Added. 69 * fast/text/international/system-language/navigator-language/navigator-language-fr-CA.html: Added. 70 * fast/text/international/system-language/navigator-language/navigator-language-fr-expected.txt: Added. 71 * fast/text/international/system-language/navigator-language/navigator-language-fr.html: Added. 72 * fast/text/international/system-language/navigator-language/navigator-language-hi-expected.txt: Added. 73 * fast/text/international/system-language/navigator-language/navigator-language-hi.html: Added. 74 * fast/text/international/system-language/navigator-language/navigator-language-ja-expected.txt: Added. 75 * fast/text/international/system-language/navigator-language/navigator-language-ja.html: Added. 76 * fast/text/international/system-language/navigator-language/navigator-language-pt-BR-expected.txt: Added. 77 * fast/text/international/system-language/navigator-language/navigator-language-pt-BR.html: Added. 78 * fast/text/international/system-language/navigator-language/navigator-language-pt-PT-expected.txt: Added. 79 * fast/text/international/system-language/navigator-language/navigator-language-pt-PT.html: Added. 80 * fast/text/international/system-language/navigator-language/navigator-language-ru-expected.txt: Added. 81 * fast/text/international/system-language/navigator-language/navigator-language-ru.html: Added. 82 * fast/text/international/system-language/navigator-language/navigator-language-zh-HK-expected.txt: Added. 83 * fast/text/international/system-language/navigator-language/navigator-language-zh-HK.html: Added. 84 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hans-expected.txt: Added. 85 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hans.html: Added. 86 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK-expected.txt: Added. 87 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK.html: Added. 88 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-expected.txt: Added. 89 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant.html: Added. 90 * fast/text/international/system-language/navigator-language/navigator-language-zh-TW-expected.txt: Added. 91 * fast/text/international/system-language/navigator-language/navigator-language-zh-TW.html: Added. 92 * js/dom/navigator-language-expected.txt: 93 94 git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254389 268f45cc-cd09-0410-ab3c-d52691b4dbfc 95 96 2020-01-10 Myles C. Maxfield <mmaxfield@apple.com> 97 98 REGRESSION(r185816): In the Hong Kong locale, navigator.language reports it's in the Taiwan locale 99 https://bugs.webkit.org/show_bug.cgi?id=200043 100 <rdar://problem/44119496> 101 102 Reviewed by Dean Jackson. 103 104 Migrate and update tests from TestWebKitAPI to LayoutTests, to match the rest of our system language tests. 105 106 * platform/mac/TestExpectations: Mark these tests as possibly failing on older versions of macOS. 107 * fast/text/international/system-language/navigator-language/navigator-language-en-GB-expected.txt: Added. 108 * fast/text/international/system-language/navigator-language/navigator-language-en-GB.html: Added. 109 * fast/text/international/system-language/navigator-language/navigator-language-en-US-expected.txt: Added. 110 * fast/text/international/system-language/navigator-language/navigator-language-en-US.html: Added. 111 * fast/text/international/system-language/navigator-language/navigator-language-en-expected.txt: Added. 112 * fast/text/international/system-language/navigator-language/navigator-language-en.html: Added. 113 * fast/text/international/system-language/navigator-language/navigator-language-es-419-expected.txt: Added. 114 * fast/text/international/system-language/navigator-language/navigator-language-es-419.html: Added. 115 * fast/text/international/system-language/navigator-language/navigator-language-es-ES-expected.txt: Added. 116 * fast/text/international/system-language/navigator-language/navigator-language-es-ES.html: Added. 117 * fast/text/international/system-language/navigator-language/navigator-language-es-MX-expected.txt: Added. 118 * fast/text/international/system-language/navigator-language/navigator-language-es-MX.html: Added. 119 * fast/text/international/system-language/navigator-language/navigator-language-es-expected.txt: Added. 120 * fast/text/international/system-language/navigator-language/navigator-language-es.html: Added. 121 * fast/text/international/system-language/navigator-language/navigator-language-fr-CA-expected.txt: Added. 122 * fast/text/international/system-language/navigator-language/navigator-language-fr-CA.html: Added. 123 * fast/text/international/system-language/navigator-language/navigator-language-fr-expected.txt: Added. 124 * fast/text/international/system-language/navigator-language/navigator-language-fr.html: Added. 125 * fast/text/international/system-language/navigator-language/navigator-language-hi-expected.txt: Added. 126 * fast/text/international/system-language/navigator-language/navigator-language-hi.html: Added. 127 * fast/text/international/system-language/navigator-language/navigator-language-ja-expected.txt: Added. 128 * fast/text/international/system-language/navigator-language/navigator-language-ja.html: Added. 129 * fast/text/international/system-language/navigator-language/navigator-language-pt-BR-expected.txt: Added. 130 * fast/text/international/system-language/navigator-language/navigator-language-pt-BR.html: Added. 131 * fast/text/international/system-language/navigator-language/navigator-language-pt-PT-expected.txt: Added. 132 * fast/text/international/system-language/navigator-language/navigator-language-pt-PT.html: Added. 133 * fast/text/international/system-language/navigator-language/navigator-language-ru-expected.txt: Added. 134 * fast/text/international/system-language/navigator-language/navigator-language-ru.html: Added. 135 * fast/text/international/system-language/navigator-language/navigator-language-zh-HK-expected.txt: Added. 136 * fast/text/international/system-language/navigator-language/navigator-language-zh-HK.html: Added. 137 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hans-expected.txt: Added. 138 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hans.html: Added. 139 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK-expected.txt: Added. 140 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK.html: Added. 141 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-expected.txt: Added. 142 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant.html: Added. 143 * fast/text/international/system-language/navigator-language/navigator-language-zh-TW-expected.txt: Added. 144 * fast/text/international/system-language/navigator-language/navigator-language-zh-TW.html: Added. 145 * js/dom/navigator-language-expected.txt: 146 1 147 2020-01-14 Alan Coon <alancoon@apple.com> 2 148 -
branches/safari-609-branch/LayoutTests/js/dom/navigator-language-expected.txt
r206949 r254615 3 3 4 4 5 PASS language is 'en-US'5 PASS 6 6 PASS successfullyParsed is true 7 7 -
branches/safari-609-branch/LayoutTests/js/dom/navigator-language.html
r206949 r254615 16 16 17 17 var language = navigator.language; 18 if (language .length == 2)19 shouldBe("language", "'en'");18 if (language == "en" || language == "en-us" || language == "en-US") 19 testPassed(""); 20 20 else 21 shouldBe("language", "'en-US'");21 testFailed(""); 22 22 </script> 23 23 <script src="../../resources/js-test-post.js"></script> -
branches/safari-609-branch/LayoutTests/platform/mac/TestExpectations
r254591 r254615 1968 1968 webkit.org/b/205757 webgl/1.0.3/conformance/textures/texture-upload-size.html [ Pass Timeout ] 1969 1969 1970 # The navigator.language tests rely on functionality only available in recent releases of macOS Catalina and onward. 1971 webkit.org/b/200043 [ Sierra HighSierra Mojave ] fast/text/international/system-language/navigator-language [ Pass Failure ] -
branches/safari-609-branch/Source/WTF/ChangeLog
r254014 r254615 1 2020-01-15 Alan Coon <alancoon@apple.com> 2 3 Cherry-pick r254389. rdar://problem/58548648 4 5 REGRESSION(r185816): In the Hong Kong locale, navigator.language reports it's in the Taiwan locale 6 https://bugs.webkit.org/show_bug.cgi?id=200043 7 Source/WTF: 8 9 <rdar://problem/44119496> 10 11 Reviewed by Dean Jackson. 12 13 We ask the system for the current locale using CFLocaleCopyPreferredLanguages(), and then round-trip 14 it through CFBundleGetLocalizationInfoForLocalization() / CFBundleCopyLocalizationForLocalizationInfo(). 15 This was to work around the fact that CFLocaleCopyPreferredLanguages() previously didn't report BCP47 16 language codes. However, that round-tripping was introducing errors, such as "zh-Hant-HK" was getting 17 turned into "zh-Hant-TW" which is clearly wrong. The CFBundle functions were never supposed to be used 18 in this way. 19 20 Instead, we can use CFLocaleCreateCanonicalLanguageIdentifierFromString() which is intended to 21 canonicalize locale identifiers, and does return BCP47 language codes. However, this function preserves 22 more fingerprinting entropy than the old code path, so we pass the input through new NSLocale SPI to 23 minimize the entropy revealed. 24 25 * WTF.xcodeproj/project.pbxproj: 26 * wtf/Language.h: 27 * wtf/Platform.h: 28 * wtf/PlatformMac.cmake: 29 * wtf/cf/LanguageCF.cpp: 30 (WTF::httpStyleLanguageCode): 31 (WTF::platformUserPreferredLanguages): 32 * wtf/cocoa/LanguageCocoa.mm: Added. 33 (WTF::minimizedLanguagesFromLanguages): 34 * wtf/spi/cocoa/NSLocaleSPI.h: Added. 35 36 Tools: 37 38 Reviewed by Dean Jackson. 39 40 Migrate system language tests to LayoutTests, to match the rest of our system language tests. 41 42 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 43 * TestWebKitAPI/Tests/mac/NavigatorLanguage.mm: Removed. 44 45 LayoutTests: 46 47 <rdar://problem/44119496> 48 49 Reviewed by Dean Jackson. 50 51 Migrate and update tests from TestWebKitAPI to LayoutTests, to match the rest of our system language tests. 52 53 * platform/mac/TestExpectations: Mark these tests as possibly failing on older versions of macOS. 54 * fast/text/international/system-language/navigator-language/navigator-language-en-GB-expected.txt: Added. 55 * fast/text/international/system-language/navigator-language/navigator-language-en-GB.html: Added. 56 * fast/text/international/system-language/navigator-language/navigator-language-en-US-expected.txt: Added. 57 * fast/text/international/system-language/navigator-language/navigator-language-en-US.html: Added. 58 * fast/text/international/system-language/navigator-language/navigator-language-en-expected.txt: Added. 59 * fast/text/international/system-language/navigator-language/navigator-language-en.html: Added. 60 * fast/text/international/system-language/navigator-language/navigator-language-es-419-expected.txt: Added. 61 * fast/text/international/system-language/navigator-language/navigator-language-es-419.html: Added. 62 * fast/text/international/system-language/navigator-language/navigator-language-es-ES-expected.txt: Added. 63 * fast/text/international/system-language/navigator-language/navigator-language-es-ES.html: Added. 64 * fast/text/international/system-language/navigator-language/navigator-language-es-MX-expected.txt: Added. 65 * fast/text/international/system-language/navigator-language/navigator-language-es-MX.html: Added. 66 * fast/text/international/system-language/navigator-language/navigator-language-es-expected.txt: Added. 67 * fast/text/international/system-language/navigator-language/navigator-language-es.html: Added. 68 * fast/text/international/system-language/navigator-language/navigator-language-fr-CA-expected.txt: Added. 69 * fast/text/international/system-language/navigator-language/navigator-language-fr-CA.html: Added. 70 * fast/text/international/system-language/navigator-language/navigator-language-fr-expected.txt: Added. 71 * fast/text/international/system-language/navigator-language/navigator-language-fr.html: Added. 72 * fast/text/international/system-language/navigator-language/navigator-language-hi-expected.txt: Added. 73 * fast/text/international/system-language/navigator-language/navigator-language-hi.html: Added. 74 * fast/text/international/system-language/navigator-language/navigator-language-ja-expected.txt: Added. 75 * fast/text/international/system-language/navigator-language/navigator-language-ja.html: Added. 76 * fast/text/international/system-language/navigator-language/navigator-language-pt-BR-expected.txt: Added. 77 * fast/text/international/system-language/navigator-language/navigator-language-pt-BR.html: Added. 78 * fast/text/international/system-language/navigator-language/navigator-language-pt-PT-expected.txt: Added. 79 * fast/text/international/system-language/navigator-language/navigator-language-pt-PT.html: Added. 80 * fast/text/international/system-language/navigator-language/navigator-language-ru-expected.txt: Added. 81 * fast/text/international/system-language/navigator-language/navigator-language-ru.html: Added. 82 * fast/text/international/system-language/navigator-language/navigator-language-zh-HK-expected.txt: Added. 83 * fast/text/international/system-language/navigator-language/navigator-language-zh-HK.html: Added. 84 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hans-expected.txt: Added. 85 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hans.html: Added. 86 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK-expected.txt: Added. 87 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK.html: Added. 88 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-expected.txt: Added. 89 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant.html: Added. 90 * fast/text/international/system-language/navigator-language/navigator-language-zh-TW-expected.txt: Added. 91 * fast/text/international/system-language/navigator-language/navigator-language-zh-TW.html: Added. 92 * js/dom/navigator-language-expected.txt: 93 94 git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254389 268f45cc-cd09-0410-ab3c-d52691b4dbfc 95 96 2020-01-10 Myles C. Maxfield <mmaxfield@apple.com> 97 98 REGRESSION(r185816): In the Hong Kong locale, navigator.language reports it's in the Taiwan locale 99 https://bugs.webkit.org/show_bug.cgi?id=200043 100 <rdar://problem/44119496> 101 102 Reviewed by Dean Jackson. 103 104 We ask the system for the current locale using CFLocaleCopyPreferredLanguages(), and then round-trip 105 it through CFBundleGetLocalizationInfoForLocalization() / CFBundleCopyLocalizationForLocalizationInfo(). 106 This was to work around the fact that CFLocaleCopyPreferredLanguages() previously didn't report BCP47 107 language codes. However, that round-tripping was introducing errors, such as "zh-Hant-HK" was getting 108 turned into "zh-Hant-TW" which is clearly wrong. The CFBundle functions were never supposed to be used 109 in this way. 110 111 Instead, we can use CFLocaleCreateCanonicalLanguageIdentifierFromString() which is intended to 112 canonicalize locale identifiers, and does return BCP47 language codes. However, this function preserves 113 more fingerprinting entropy than the old code path, so we pass the input through new NSLocale SPI to 114 minimize the entropy revealed. 115 116 * WTF.xcodeproj/project.pbxproj: 117 * wtf/Language.h: 118 * wtf/Platform.h: 119 * wtf/PlatformMac.cmake: 120 * wtf/cf/LanguageCF.cpp: 121 (WTF::httpStyleLanguageCode): 122 (WTF::platformUserPreferredLanguages): 123 * wtf/cocoa/LanguageCocoa.mm: Added. 124 (WTF::minimizedLanguagesFromLanguages): 125 * wtf/spi/cocoa/NSLocaleSPI.h: Added. 126 1 127 2020-01-03 Dean Jackson <dino@apple.com> 2 128 -
branches/safari-609-branch/Source/WTF/WTF.xcodeproj/project.pbxproj
r253987 r254615 61 61 1C181C931D307AB800F5FA16 /* UTextProviderUTF16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C181C8D1D307AB800F5FA16 /* UTextProviderUTF16.cpp */; }; 62 62 1C181C961D30800A00F5FA16 /* TextBreakIteratorInternalICUCocoa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C181C951D30800A00F5FA16 /* TextBreakIteratorInternalICUCocoa.cpp */; }; 63 1C503BE623AAE0AE0072E66B /* LanguageCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C503BE523AAE0AE0072E66B /* LanguageCocoa.mm */; }; 63 64 1FA47C8A152502DA00568D1B /* WebCoreThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1FA47C88152502DA00568D1B /* WebCoreThread.cpp */; }; 64 65 2CCD892A15C0390200285083 /* GregorianDateTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CCD892915C0390200285083 /* GregorianDateTime.cpp */; }; … … 340 341 1C181C8E1D307AB800F5FA16 /* UTextProviderUTF16.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UTextProviderUTF16.h; sourceTree = "<group>"; }; 341 342 1C181C951D30800A00F5FA16 /* TextBreakIteratorInternalICUCocoa.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextBreakIteratorInternalICUCocoa.cpp; sourceTree = "<group>"; }; 343 1C503BE423AADEEA0072E66B /* NSLocaleSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSLocaleSPI.h; sourceTree = "<group>"; }; 344 1C503BE523AAE0AE0072E66B /* LanguageCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = LanguageCocoa.mm; sourceTree = "<group>"; }; 342 345 1CCDB1491E566626006C73C0 /* TextBreakIteratorCF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextBreakIteratorCF.h; sourceTree = "<group>"; }; 343 346 1CCDB14D1E566898006C73C0 /* TextBreakIteratorICU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextBreakIteratorICU.h; sourceTree = "<group>"; }; … … 1413 1416 CEA072A7236FFA160018839C /* CrashReporterClientSPI.h */, 1414 1417 E31BDE2822E913CC0029B105 /* MachVMSPI.h */, 1418 1C503BE423AADEEA0072E66B /* NSLocaleSPI.h */, 1415 1419 93D191CF20CAECE800C51B8E /* objcSPI.h */, 1416 1420 A5098B011C16A4F900087797 /* SecuritySPI.h */, … … 1476 1480 143DDE9520C8BC37007F76FA /* Entitlements.mm */, 1477 1481 A331D95E21F249F6009F02AA /* FileSystemCocoa.mm */, 1482 1C503BE523AAE0AE0072E66B /* LanguageCocoa.mm */, 1478 1483 7A6EBA3320746C34004F9C44 /* MachSendRight.cpp */, 1479 1484 A8A472C5151A825A004123FF /* MainThreadCocoa.mm */, … … 1622 1627 C2BCFC401F61D13000C9222C /* Language.cpp in Sources */, 1623 1628 C2BCFC421F61D61600C9222C /* LanguageCF.cpp in Sources */, 1629 1C503BE623AAE0AE0072E66B /* LanguageCocoa.mm in Sources */, 1624 1630 C2BCFC551F621F3F00C9222C /* LineEnding.cpp in Sources */, 1625 1631 0FE1646A1B6FFC9600400E7C /* Lock.cpp in Sources */, -
branches/safari-609-branch/Source/WTF/wtf/Language.h
r221768 r254615 29 29 #include <wtf/Vector.h> 30 30 31 #if PLATFORM(COCOA) 32 #import <CoreFoundation/CoreFoundation.h> 33 #import <wtf/RetainPtr.h> 34 #endif 35 31 36 namespace WTF { 32 37 … … 44 49 WTF_EXPORT void addLanguageChangeObserver(void* context, LanguageChangeObserverFunction); 45 50 WTF_EXPORT void removeLanguageChangeObserver(void* context); 51 WTF_EXPORT String displayNameForLanguageLocale(const String&); 46 52 47 WTF_EXPORT String displayNameForLanguageLocale(const String&); 53 #if PLATFORM(COCOA) 54 bool canMinimizeLanguages(); 55 RetainPtr<CFArrayRef> minimizedLanguagesFromLanguages(CFArrayRef); 56 #endif 57 48 58 } 49 59 -
branches/safari-609-branch/Source/WTF/wtf/PlatformMac.cmake
r252065 r254615 27 27 spi/cocoa/CrashReporterClientSPI.h 28 28 spi/cocoa/MachVMSPI.h 29 spi/cocoa/NSLocaleSPI.h 29 30 spi/cocoa/SecuritySPI.h 30 31 spi/cocoa/objcSPI.h … … 57 58 cocoa/Entitlements.mm 58 59 cocoa/FileSystemCocoa.mm 60 cocoa/LanguageCocoa.mm 59 61 cocoa/MachSendRight.cpp 60 62 cocoa/MainThreadCocoa.mm -
branches/safari-609-branch/Source/WTF/wtf/cf/LanguageCF.cpp
r237099 r254615 49 49 static String httpStyleLanguageCode(CFStringRef language) 50 50 { 51 SInt32 languageCode; 52 SInt32 regionCode; 53 SInt32 scriptCode; 54 CFStringEncoding stringEncoding; 51 RetainPtr<CFStringRef> preferredLanguageCode; 52 // If we can minimize the language list to reduce fingerprinting, we can afford to be more lossless when canonicalizing the locale list. 53 if (canMinimizeLanguages()) 54 preferredLanguageCode = adoptCF(CFLocaleCreateCanonicalLanguageIdentifierFromString(kCFAllocatorDefault, language)); 55 else { 56 SInt32 languageCode; 57 SInt32 regionCode; 58 SInt32 scriptCode; 59 CFStringEncoding stringEncoding; 55 60 56 // FIXME: This transformation is very wrong: 57 // 1. There is no reason why CFBundle localization names would be at all related to language names as used on the Web. 58 // 2. Script Manager codes cannot represent all languages that are now supported by the platform, so the conversion is lossy. 59 // 3. This should probably match what is sent by the network layer as Accept-Language, but currently, that's implemented separately. 60 CFBundleGetLocalizationInfoForLocalization(language, &languageCode, ®ionCode, &scriptCode, &stringEncoding); 61 RetainPtr<CFStringRef> preferredLanguageCode = adoptCF(CFBundleCopyLocalizationForLocalizationInfo(languageCode, regionCode, scriptCode, stringEncoding)); 62 if (preferredLanguageCode) 63 language = preferredLanguageCode.get(); 61 // FIXME: This transformation is very wrong: 62 // 1. There is no reason why CFBundle localization names would be at all related to language names as used on the Web. 63 // 2. Script Manager codes cannot represent all languages that are now supported by the platform, so the conversion is lossy. 64 // 3. This should probably match what is sent by the network layer as Accept-Language, but currently, that's implemented separately. 65 CFBundleGetLocalizationInfoForLocalization(language, &languageCode, ®ionCode, &scriptCode, &stringEncoding); 66 preferredLanguageCode = adoptCF(CFBundleCopyLocalizationForLocalizationInfo(languageCode, regionCode, scriptCode, stringEncoding)); 67 } 68 69 if (!preferredLanguageCode) 70 preferredLanguageCode = language; 71 auto mutableLanguageCode = adoptCF(CFStringCreateMutableCopy(kCFAllocatorDefault, 0, preferredLanguageCode.get())); 64 72 65 73 // Turn a '_' into a '-' if it appears after a 2-letter language code 66 if (CFStringGetLength(language) >= 3 && CFStringGetCharacterAtIndex(language, 2) == '_') { 67 auto mutableLanguageCode = adoptCF(CFStringCreateMutableCopy(kCFAllocatorDefault, 0, language)); 74 if (CFStringGetLength(mutableLanguageCode.get()) >= 3 && CFStringGetCharacterAtIndex(mutableLanguageCode.get(), 2) == '_') 68 75 CFStringReplace(mutableLanguageCode.get(), CFRangeMake(2, 1), CFSTR("-")); 69 return mutableLanguageCode.get();70 }71 76 72 return language; 77 CFStringLowercase(mutableLanguageCode.get(), nullptr); 78 return mutableLanguageCode.get(); 79 73 80 } 74 81 … … 99 106 if (userPreferredLanguages.isEmpty()) { 100 107 RetainPtr<CFArrayRef> languages = adoptCF(CFLocaleCopyPreferredLanguages()); 108 languages = minimizedLanguagesFromLanguages(languages.get()); 101 109 CFIndex languageCount = CFArrayGetCount(languages.get()); 102 110 if (!languageCount) -
branches/safari-609-branch/Tools/ChangeLog
r254613 r254615 1 2020-01-15 Alan Coon <alancoon@apple.com> 2 3 Cherry-pick r254389. rdar://problem/58548648 4 5 REGRESSION(r185816): In the Hong Kong locale, navigator.language reports it's in the Taiwan locale 6 https://bugs.webkit.org/show_bug.cgi?id=200043 7 Source/WTF: 8 9 <rdar://problem/44119496> 10 11 Reviewed by Dean Jackson. 12 13 We ask the system for the current locale using CFLocaleCopyPreferredLanguages(), and then round-trip 14 it through CFBundleGetLocalizationInfoForLocalization() / CFBundleCopyLocalizationForLocalizationInfo(). 15 This was to work around the fact that CFLocaleCopyPreferredLanguages() previously didn't report BCP47 16 language codes. However, that round-tripping was introducing errors, such as "zh-Hant-HK" was getting 17 turned into "zh-Hant-TW" which is clearly wrong. The CFBundle functions were never supposed to be used 18 in this way. 19 20 Instead, we can use CFLocaleCreateCanonicalLanguageIdentifierFromString() which is intended to 21 canonicalize locale identifiers, and does return BCP47 language codes. However, this function preserves 22 more fingerprinting entropy than the old code path, so we pass the input through new NSLocale SPI to 23 minimize the entropy revealed. 24 25 * WTF.xcodeproj/project.pbxproj: 26 * wtf/Language.h: 27 * wtf/Platform.h: 28 * wtf/PlatformMac.cmake: 29 * wtf/cf/LanguageCF.cpp: 30 (WTF::httpStyleLanguageCode): 31 (WTF::platformUserPreferredLanguages): 32 * wtf/cocoa/LanguageCocoa.mm: Added. 33 (WTF::minimizedLanguagesFromLanguages): 34 * wtf/spi/cocoa/NSLocaleSPI.h: Added. 35 36 Tools: 37 38 Reviewed by Dean Jackson. 39 40 Migrate system language tests to LayoutTests, to match the rest of our system language tests. 41 42 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 43 * TestWebKitAPI/Tests/mac/NavigatorLanguage.mm: Removed. 44 45 LayoutTests: 46 47 <rdar://problem/44119496> 48 49 Reviewed by Dean Jackson. 50 51 Migrate and update tests from TestWebKitAPI to LayoutTests, to match the rest of our system language tests. 52 53 * platform/mac/TestExpectations: Mark these tests as possibly failing on older versions of macOS. 54 * fast/text/international/system-language/navigator-language/navigator-language-en-GB-expected.txt: Added. 55 * fast/text/international/system-language/navigator-language/navigator-language-en-GB.html: Added. 56 * fast/text/international/system-language/navigator-language/navigator-language-en-US-expected.txt: Added. 57 * fast/text/international/system-language/navigator-language/navigator-language-en-US.html: Added. 58 * fast/text/international/system-language/navigator-language/navigator-language-en-expected.txt: Added. 59 * fast/text/international/system-language/navigator-language/navigator-language-en.html: Added. 60 * fast/text/international/system-language/navigator-language/navigator-language-es-419-expected.txt: Added. 61 * fast/text/international/system-language/navigator-language/navigator-language-es-419.html: Added. 62 * fast/text/international/system-language/navigator-language/navigator-language-es-ES-expected.txt: Added. 63 * fast/text/international/system-language/navigator-language/navigator-language-es-ES.html: Added. 64 * fast/text/international/system-language/navigator-language/navigator-language-es-MX-expected.txt: Added. 65 * fast/text/international/system-language/navigator-language/navigator-language-es-MX.html: Added. 66 * fast/text/international/system-language/navigator-language/navigator-language-es-expected.txt: Added. 67 * fast/text/international/system-language/navigator-language/navigator-language-es.html: Added. 68 * fast/text/international/system-language/navigator-language/navigator-language-fr-CA-expected.txt: Added. 69 * fast/text/international/system-language/navigator-language/navigator-language-fr-CA.html: Added. 70 * fast/text/international/system-language/navigator-language/navigator-language-fr-expected.txt: Added. 71 * fast/text/international/system-language/navigator-language/navigator-language-fr.html: Added. 72 * fast/text/international/system-language/navigator-language/navigator-language-hi-expected.txt: Added. 73 * fast/text/international/system-language/navigator-language/navigator-language-hi.html: Added. 74 * fast/text/international/system-language/navigator-language/navigator-language-ja-expected.txt: Added. 75 * fast/text/international/system-language/navigator-language/navigator-language-ja.html: Added. 76 * fast/text/international/system-language/navigator-language/navigator-language-pt-BR-expected.txt: Added. 77 * fast/text/international/system-language/navigator-language/navigator-language-pt-BR.html: Added. 78 * fast/text/international/system-language/navigator-language/navigator-language-pt-PT-expected.txt: Added. 79 * fast/text/international/system-language/navigator-language/navigator-language-pt-PT.html: Added. 80 * fast/text/international/system-language/navigator-language/navigator-language-ru-expected.txt: Added. 81 * fast/text/international/system-language/navigator-language/navigator-language-ru.html: Added. 82 * fast/text/international/system-language/navigator-language/navigator-language-zh-HK-expected.txt: Added. 83 * fast/text/international/system-language/navigator-language/navigator-language-zh-HK.html: Added. 84 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hans-expected.txt: Added. 85 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hans.html: Added. 86 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK-expected.txt: Added. 87 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK.html: Added. 88 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-expected.txt: Added. 89 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant.html: Added. 90 * fast/text/international/system-language/navigator-language/navigator-language-zh-TW-expected.txt: Added. 91 * fast/text/international/system-language/navigator-language/navigator-language-zh-TW.html: Added. 92 * js/dom/navigator-language-expected.txt: 93 94 git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254389 268f45cc-cd09-0410-ab3c-d52691b4dbfc 95 96 2020-01-10 Myles C. Maxfield <mmaxfield@apple.com> 97 98 REGRESSION(r185816): In the Hong Kong locale, navigator.language reports it's in the Taiwan locale 99 https://bugs.webkit.org/show_bug.cgi?id=200043 100 101 Reviewed by Dean Jackson. 102 103 Migrate system language tests to LayoutTests, to match the rest of our system language tests. 104 105 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 106 * TestWebKitAPI/Tests/mac/NavigatorLanguage.mm: Removed. 107 1 108 2020-01-14 Alan Coon <alancoon@apple.com> 2 109 -
branches/safari-609-branch/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
r253950 r254615 376 376 5C0BF8931DD599BD00B00328 /* IsNavigationActionTrusted.mm in Sources */ = {isa = PBXBuildFile; fileRef = 57F10D921C7E7B3800ECDF30 /* IsNavigationActionTrusted.mm */; }; 377 377 5C0BF8941DD599C900B00328 /* MenuTypesForMouseEvents.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7A99D9931AD4A29D00373141 /* MenuTypesForMouseEvents.mm */; }; 378 5C0BF8951DD599CD00B00328 /* NavigatorLanguage.mm in Sources */ = {isa = PBXBuildFile; fileRef = E19DB9781B32137C00DB38D4 /* NavigatorLanguage.mm */; };379 378 5C16F8FC230C94370074C4A8 /* TextSize.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C16F8FB230C942B0074C4A8 /* TextSize.mm */; }; 380 379 5C19A5241FD0F60100EEA323 /* CookiePrivateBrowsing.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C19A5231FD0F32600EEA323 /* CookiePrivateBrowsing.mm */; }; … … 2495 2494 E194E1BA177E5145009C4D4E /* StopLoadingFromDidReceiveResponse.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = StopLoadingFromDidReceiveResponse.mm; sourceTree = "<group>"; }; 2496 2495 E194E1BC177E534A009C4D4E /* StopLoadingFromDidReceiveResponse.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = StopLoadingFromDidReceiveResponse.html; sourceTree = "<group>"; }; 2497 E19DB9781B32137C00DB38D4 /* NavigatorLanguage.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NavigatorLanguage.mm; sourceTree = "<group>"; };2498 2496 E32B549122810AC0008AD702 /* Packed.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Packed.cpp; sourceTree = "<group>"; }; 2499 2497 E35FC7B122B82A6D00F32F98 /* JSLockTakesWebThreadLock.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JSLockTakesWebThreadLock.mm; sourceTree = "<group>"; }; … … 4002 4000 5C0BF88C1DD5957400B00328 /* MemoryPressureHandler.mm */, 4003 4001 7A99D9931AD4A29D00373141 /* MenuTypesForMouseEvents.mm */, 4004 E19DB9781B32137C00DB38D4 /* NavigatorLanguage.mm */,4005 4002 83F22C6320B355EB0034277E /* NoPolicyDelegateResponse.mm */, 4006 4003 A57A34EF16AF677200C2501F /* PageVisibilityStateWithWindowChanges.mm */, … … 4772 4769 7CCE7F241A411AF600447C4C /* Navigation.mm in Sources */, 4773 4770 6351992822275C6A00890AD3 /* NavigationAction.mm in Sources */, 4774 5C0BF8951DD599CD00B00328 /* NavigatorLanguage.mm in Sources */,4775 4771 5C8BC799218CF44700813886 /* NetworkProcess.mm in Sources */, 4776 4772 5CAE463820193B6A0051610F /* NetworkProcessCrashNonPersistentDataStore.mm in Sources */,
Note: See TracChangeset
for help on using the changeset viewer.