Changeset 254389 in webkit
- Timestamp:
- Jan 10, 2020 7:05:30 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 41 added
- 1 deleted
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r254386 r254389 1 2020-01-10 Myles C. Maxfield <mmaxfield@apple.com> 2 3 REGRESSION(r185816): In the Hong Kong locale, navigator.language reports it's in the Taiwan locale 4 https://bugs.webkit.org/show_bug.cgi?id=200043 5 <rdar://problem/44119496> 6 7 Reviewed by Dean Jackson. 8 9 Migrate and update tests from TestWebKitAPI to LayoutTests, to match the rest of our system language tests. 10 11 * platform/mac/TestExpectations: Mark these tests as possibly failing on older versions of macOS. 12 * fast/text/international/system-language/navigator-language/navigator-language-en-GB-expected.txt: Added. 13 * fast/text/international/system-language/navigator-language/navigator-language-en-GB.html: Added. 14 * fast/text/international/system-language/navigator-language/navigator-language-en-US-expected.txt: Added. 15 * fast/text/international/system-language/navigator-language/navigator-language-en-US.html: Added. 16 * fast/text/international/system-language/navigator-language/navigator-language-en-expected.txt: Added. 17 * fast/text/international/system-language/navigator-language/navigator-language-en.html: Added. 18 * fast/text/international/system-language/navigator-language/navigator-language-es-419-expected.txt: Added. 19 * fast/text/international/system-language/navigator-language/navigator-language-es-419.html: Added. 20 * fast/text/international/system-language/navigator-language/navigator-language-es-ES-expected.txt: Added. 21 * fast/text/international/system-language/navigator-language/navigator-language-es-ES.html: Added. 22 * fast/text/international/system-language/navigator-language/navigator-language-es-MX-expected.txt: Added. 23 * fast/text/international/system-language/navigator-language/navigator-language-es-MX.html: Added. 24 * fast/text/international/system-language/navigator-language/navigator-language-es-expected.txt: Added. 25 * fast/text/international/system-language/navigator-language/navigator-language-es.html: Added. 26 * fast/text/international/system-language/navigator-language/navigator-language-fr-CA-expected.txt: Added. 27 * fast/text/international/system-language/navigator-language/navigator-language-fr-CA.html: Added. 28 * fast/text/international/system-language/navigator-language/navigator-language-fr-expected.txt: Added. 29 * fast/text/international/system-language/navigator-language/navigator-language-fr.html: Added. 30 * fast/text/international/system-language/navigator-language/navigator-language-hi-expected.txt: Added. 31 * fast/text/international/system-language/navigator-language/navigator-language-hi.html: Added. 32 * fast/text/international/system-language/navigator-language/navigator-language-ja-expected.txt: Added. 33 * fast/text/international/system-language/navigator-language/navigator-language-ja.html: Added. 34 * fast/text/international/system-language/navigator-language/navigator-language-pt-BR-expected.txt: Added. 35 * fast/text/international/system-language/navigator-language/navigator-language-pt-BR.html: Added. 36 * fast/text/international/system-language/navigator-language/navigator-language-pt-PT-expected.txt: Added. 37 * fast/text/international/system-language/navigator-language/navigator-language-pt-PT.html: Added. 38 * fast/text/international/system-language/navigator-language/navigator-language-ru-expected.txt: Added. 39 * fast/text/international/system-language/navigator-language/navigator-language-ru.html: Added. 40 * fast/text/international/system-language/navigator-language/navigator-language-zh-HK-expected.txt: Added. 41 * fast/text/international/system-language/navigator-language/navigator-language-zh-HK.html: Added. 42 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hans-expected.txt: Added. 43 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hans.html: Added. 44 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK-expected.txt: Added. 45 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK.html: Added. 46 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-expected.txt: Added. 47 * fast/text/international/system-language/navigator-language/navigator-language-zh-Hant.html: Added. 48 * fast/text/international/system-language/navigator-language/navigator-language-zh-TW-expected.txt: Added. 49 * fast/text/international/system-language/navigator-language/navigator-language-zh-TW.html: Added. 50 * js/dom/navigator-language-expected.txt: 51 1 52 2020-01-10 John Wilander <wilander@apple.com> 2 53 -
trunk/LayoutTests/js/dom/navigator-language-expected.txt
r206949 r254389 3 3 4 4 5 PASS language is 'en-US'5 PASS 6 6 PASS successfullyParsed is true 7 7 -
trunk/LayoutTests/js/dom/navigator-language.html
r206949 r254389 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> -
trunk/LayoutTests/platform/mac/TestExpectations
r254279 r254389 1925 1925 1926 1926 webkit.org/b/197204 webexposed/css-properties-behind-flags.html [ Pass Failure ] 1927 1928 # The navigator.language tests rely on functionality only available in recent releases of macOS Catalina and onward. 1929 webkit.org/b/200043 [ Sierra HighSierra Mojave ] fast/text/international/system-language/navigator-language [ Pass Failure ] -
trunk/Source/WTF/ChangeLog
r254384 r254389 1 2020-01-10 Myles C. Maxfield <mmaxfield@apple.com> 2 3 REGRESSION(r185816): In the Hong Kong locale, navigator.language reports it's in the Taiwan locale 4 https://bugs.webkit.org/show_bug.cgi?id=200043 5 <rdar://problem/44119496> 6 7 Reviewed by Dean Jackson. 8 9 We ask the system for the current locale using CFLocaleCopyPreferredLanguages(), and then round-trip 10 it through CFBundleGetLocalizationInfoForLocalization() / CFBundleCopyLocalizationForLocalizationInfo(). 11 This was to work around the fact that CFLocaleCopyPreferredLanguages() previously didn't report BCP47 12 language codes. However, that round-tripping was introducing errors, such as "zh-Hant-HK" was getting 13 turned into "zh-Hant-TW" which is clearly wrong. The CFBundle functions were never supposed to be used 14 in this way. 15 16 Instead, we can use CFLocaleCreateCanonicalLanguageIdentifierFromString() which is intended to 17 canonicalize locale identifiers, and does return BCP47 language codes. However, this function preserves 18 more fingerprinting entropy than the old code path, so we pass the input through new NSLocale SPI to 19 minimize the entropy revealed. 20 21 * WTF.xcodeproj/project.pbxproj: 22 * wtf/Language.h: 23 * wtf/Platform.h: 24 * wtf/PlatformMac.cmake: 25 * wtf/cf/LanguageCF.cpp: 26 (WTF::httpStyleLanguageCode): 27 (WTF::platformUserPreferredLanguages): 28 * wtf/cocoa/LanguageCocoa.mm: Added. 29 (WTF::minimizedLanguagesFromLanguages): 30 * wtf/spi/cocoa/NSLocaleSPI.h: Added. 31 1 32 2020-01-10 Simon Fraser <simon.fraser@apple.com> 2 33 -
trunk/Source/WTF/WTF.xcodeproj/project.pbxproj
r254241 r254389 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>"; }; … … 1415 1418 CEA072A7236FFA160018839C /* CrashReporterClientSPI.h */, 1416 1419 E31BDE2822E913CC0029B105 /* MachVMSPI.h */, 1420 1C503BE423AADEEA0072E66B /* NSLocaleSPI.h */, 1417 1421 93D191CF20CAECE800C51B8E /* objcSPI.h */, 1418 1422 A5098B011C16A4F900087797 /* SecuritySPI.h */, … … 1478 1482 143DDE9520C8BC37007F76FA /* Entitlements.mm */, 1479 1483 A331D95E21F249F6009F02AA /* FileSystemCocoa.mm */, 1484 1C503BE523AAE0AE0072E66B /* LanguageCocoa.mm */, 1480 1485 7A6EBA3320746C34004F9C44 /* MachSendRight.cpp */, 1481 1486 A8A472C5151A825A004123FF /* MainThreadCocoa.mm */, … … 1624 1629 C2BCFC401F61D13000C9222C /* Language.cpp in Sources */, 1625 1630 C2BCFC421F61D61600C9222C /* LanguageCF.cpp in Sources */, 1631 1C503BE623AAE0AE0072E66B /* LanguageCocoa.mm in Sources */, 1626 1632 C2BCFC551F621F3F00C9222C /* LineEnding.cpp in Sources */, 1627 1633 0FE1646A1B6FFC9600400E7C /* Lock.cpp in Sources */, -
trunk/Source/WTF/wtf/Language.h
r221768 r254389 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 -
trunk/Source/WTF/wtf/PlatformMac.cmake
r252065 r254389 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 -
trunk/Source/WTF/wtf/cf/LanguageCF.cpp
r237099 r254389 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) -
trunk/Tools/ChangeLog
r254387 r254389 1 2020-01-10 Myles C. Maxfield <mmaxfield@apple.com> 2 3 REGRESSION(r185816): In the Hong Kong locale, navigator.language reports it's in the Taiwan locale 4 https://bugs.webkit.org/show_bug.cgi?id=200043 5 6 Reviewed by Dean Jackson. 7 8 Migrate system language tests to LayoutTests, to match the rest of our system language tests. 9 10 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 11 * TestWebKitAPI/Tests/mac/NavigatorLanguage.mm: Removed. 12 1 13 2020-01-10 Jer Noble <jer.noble@apple.com> 2 14 -
trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
r254387 r254389 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 */; }; … … 2501 2500 E194E1BA177E5145009C4D4E /* StopLoadingFromDidReceiveResponse.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = StopLoadingFromDidReceiveResponse.mm; sourceTree = "<group>"; }; 2502 2501 E194E1BC177E534A009C4D4E /* StopLoadingFromDidReceiveResponse.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = StopLoadingFromDidReceiveResponse.html; sourceTree = "<group>"; }; 2503 E19DB9781B32137C00DB38D4 /* NavigatorLanguage.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NavigatorLanguage.mm; sourceTree = "<group>"; };2504 2502 E32B549122810AC0008AD702 /* Packed.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Packed.cpp; sourceTree = "<group>"; }; 2505 2503 E35FC7B122B82A6D00F32F98 /* JSLockTakesWebThreadLock.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JSLockTakesWebThreadLock.mm; sourceTree = "<group>"; }; … … 4011 4009 5C0BF88C1DD5957400B00328 /* MemoryPressureHandler.mm */, 4012 4010 7A99D9931AD4A29D00373141 /* MenuTypesForMouseEvents.mm */, 4013 E19DB9781B32137C00DB38D4 /* NavigatorLanguage.mm */,4014 4011 83F22C6320B355EB0034277E /* NoPolicyDelegateResponse.mm */, 4015 4012 A57A34EF16AF677200C2501F /* PageVisibilityStateWithWindowChanges.mm */, … … 4782 4779 7CCE7F241A411AF600447C4C /* Navigation.mm in Sources */, 4783 4780 6351992822275C6A00890AD3 /* NavigationAction.mm in Sources */, 4784 5C0BF8951DD599CD00B00328 /* NavigatorLanguage.mm in Sources */,4785 4781 5C8BC799218CF44700813886 /* NetworkProcess.mm in Sources */, 4786 4782 5CAE463820193B6A0051610F /* NetworkProcessCrashNonPersistentDataStore.mm in Sources */,
Note: See TracChangeset
for help on using the changeset viewer.