Diff
Modified: trunk/Source/WTF/ChangeLog (273866 => 273867)
--- trunk/Source/WTF/ChangeLog 2021-03-04 01:48:53 UTC (rev 273866)
+++ trunk/Source/WTF/ChangeLog 2021-03-04 01:49:00 UTC (rev 273867)
@@ -1,3 +1,16 @@
+2021-03-03 Chris Dumez <cdu...@apple.com>
+
+ Unreviewed, reverting r273851.
+
+ Caused some tests failures on macOS Big Sur
+
+ Reverted changeset:
+
+ "[macOS][WK2] Changing the system language does not update
+ navigator.language"
+ https://bugs.webkit.org/show_bug.cgi?id=222619
+ https://commits.webkit.org/r273851
+
2021-03-03 Ryan Haddad <ryanhad...@apple.com>
Unreviewed, reverting r273832.
Modified: trunk/Source/WTF/wtf/Language.cpp (273866 => 273867)
--- trunk/Source/WTF/wtf/Language.cpp 2021-03-04 01:48:53 UTC (rev 273866)
+++ trunk/Source/WTF/wtf/Language.cpp 2021-03-04 01:49:00 UTC (rev 273867)
@@ -62,7 +62,6 @@
void languageDidChange()
{
- platformLanguageDidChange();
for (auto& observer : copyToVector(observerMap())) {
if (observerMap().contains(observer.key))
observer.value(observer.key);
@@ -184,10 +183,4 @@
return localeName;
}
-#if !PLATFORM(COCOA)
-void platformLanguageDidChange()
-{
}
-#endif
-
-}
Modified: trunk/Source/WTF/wtf/Language.h (273866 => 273867)
--- trunk/Source/WTF/wtf/Language.h 2021-03-04 01:48:53 UTC (rev 273866)
+++ trunk/Source/WTF/wtf/Language.h 2021-03-04 01:49:00 UTC (rev 273867)
@@ -41,8 +41,6 @@
WTF_EXPORT_PRIVATE void overrideUserPreferredLanguages(const Vector<String>&);
WTF_EXPORT_PRIVATE size_t indexOfBestMatchingLanguageInList(const String& language, const Vector<String>& languageList, bool& exactMatch);
WTF_EXPORT_PRIVATE Vector<String> platformUserPreferredLanguages();
-WTF_EXPORT_PRIVATE void platformLanguageDidChange();
-
// Called from platform specific code when the user's preferred language(s) change.
WTF_EXPORT_PRIVATE void languageDidChange();
@@ -54,7 +52,6 @@
#if PLATFORM(COCOA)
bool canMinimizeLanguages();
-WTF_EXPORT_PRIVATE void listenForLanguageChangeNotifications();
RetainPtr<CFArrayRef> minimizedLanguagesFromLanguages(CFArrayRef);
#endif
Modified: trunk/Source/WTF/wtf/cf/LanguageCF.cpp (273866 => 273867)
--- trunk/Source/WTF/wtf/cf/LanguageCF.cpp 2021-03-04 01:48:53 UTC (rev 273866)
+++ trunk/Source/WTF/wtf/cf/LanguageCF.cpp 2021-03-04 01:49:00 UTC (rev 273867)
@@ -40,13 +40,6 @@
static Lock preferredLanguagesMutex;
-#if PLATFORM(MAC)
-static void languagePreferencesDidChange(CFNotificationCenterRef, void*, CFStringRef, const void*, CFDictionaryRef)
-{
- languageDidChange();
-}
-#endif
-
static Vector<String>& preferredLanguages()
{
static LazyNeverDestroyed<Vector<String>> languages;
@@ -90,26 +83,27 @@
}
-void platformLanguageDidChange()
+#if PLATFORM(MAC)
+static void languagePreferencesDidChange(CFNotificationCenterRef, void*, CFStringRef, const void*, CFDictionaryRef)
{
{
auto locker = holdLock(preferredLanguagesMutex);
preferredLanguages().clear();
}
+
+ languageDidChange();
}
+#endif
-void listenForLanguageChangeNotifications()
+Vector<String> platformUserPreferredLanguages()
{
#if PLATFORM(MAC)
static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
+ dispatch_once(&onceToken, ^ {
CFNotificationCenterAddObserver(CFNotificationCenterGetDistributedCenter(), nullptr, &languagePreferencesDidChange, CFSTR("AppleLanguagePreferencesChangedNotification"), nullptr, CFNotificationSuspensionBehaviorCoalesce);
});
#endif
-}
-Vector<String> platformUserPreferredLanguages()
-{
auto locker = holdLock(preferredLanguagesMutex);
Vector<String>& userPreferredLanguages = preferredLanguages();
Modified: trunk/Source/WebKit/ChangeLog (273866 => 273867)
--- trunk/Source/WebKit/ChangeLog 2021-03-04 01:48:53 UTC (rev 273866)
+++ trunk/Source/WebKit/ChangeLog 2021-03-04 01:49:00 UTC (rev 273867)
@@ -1,3 +1,16 @@
+2021-03-03 Chris Dumez <cdu...@apple.com>
+
+ Unreviewed, reverting r273851.
+
+ Caused some tests failures on macOS Big Sur
+
+ Reverted changeset:
+
+ "[macOS][WK2] Changing the system language does not update
+ navigator.language"
+ https://bugs.webkit.org/show_bug.cgi?id=222619
+ https://commits.webkit.org/r273851
+
2021-03-03 Ryan Haddad <ryanhad...@apple.com>
Unreviewed, reverting r273832.
Modified: trunk/Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm (273866 => 273867)
--- trunk/Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm 2021-03-04 01:48:53 UTC (rev 273866)
+++ trunk/Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm 2021-03-04 01:49:00 UTC (rev 273867)
@@ -47,19 +47,15 @@
if (xpc_object_t languages = xpc_dictionary_get_value(bootstrap.get(), "OverrideLanguages")) {
@autoreleasepool {
+ NSDictionary *existingArguments = [[NSUserDefaults standardUserDefaults] volatileDomainForName:NSArgumentDomain];
+ NSMutableDictionary *newArguments = [existingArguments mutableCopy];
RetainPtr<NSMutableArray> newLanguages = adoptNS([[NSMutableArray alloc] init]);
xpc_array_apply(languages, ^(size_t index, xpc_object_t value) {
[newLanguages addObject:[NSString stringWithCString:xpc_string_get_string_ptr(value) encoding:NSUTF8StringEncoding]];
return true;
});
-#if ENABLE(CFPREFS_DIRECT_MODE)
- [[NSUserDefaults standardUserDefaults] setObject:newLanguages.get() forKey:@"AppleLanguages"];
-#else
- NSDictionary *existingArguments = [[NSUserDefaults standardUserDefaults] volatileDomainForName:NSArgumentDomain];
- auto newArguments = adoptNS([existingArguments mutableCopy]);
[newArguments setValue:newLanguages.get() forKey:@"AppleLanguages"];
- [[NSUserDefaults standardUserDefaults] setVolatileDomain:newArguments.get() forName:NSArgumentDomain];
-#endif
+ [[NSUserDefaults standardUserDefaults] setVolatileDomain:newArguments forName:NSArgumentDomain];
}
}
}
Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (273866 => 273867)
--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2021-03-04 01:48:53 UTC (rev 273866)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2021-03-04 01:49:00 UTC (rev 273867)
@@ -81,6 +81,7 @@
#import <algorithm>
#import <dispatch/dispatch.h>
#import <objc/runtime.h>
+#import <pal/cocoa/MediaToolboxSoftLink.h>
#import <pal/spi/cf/CFNetworkSPI.h>
#import <pal/spi/cf/CFUtilitiesSPI.h>
#import <pal/spi/cg/CoreGraphicsSPI.h>
@@ -93,7 +94,6 @@
#import <pal/spi/mac/NSApplicationSPI.h>
#import <stdio.h>
#import <wtf/FileSystem.h>
-#import <wtf/Language.h>
#import <wtf/ProcessPrivilege.h>
#import <wtf/SoftLinking.h>
#import <wtf/cocoa/Entitlements.h>
@@ -144,7 +144,6 @@
#endif
#import <pal/cocoa/AVFoundationSoftLink.h>
-#import <pal/cocoa/MediaToolboxSoftLink.h>
#if HAVE(CATALYST_USER_INTERFACE_IDIOM_AND_SCALE_FACTOR)
// FIXME: This is only for binary compatibility with versions of UIKit in macOS 11 that are missing the change in <rdar://problem/68524148>.
@@ -358,10 +357,6 @@
__CFRunLoopSetOptionsReason(__CFRunLoopOptionsEnableAppNap, CFSTR("Finished checkin as application - enable app nap"));
#endif
-#if !ENABLE(CFPREFS_DIRECT_MODE)
- WTF::listenForLanguageChangeNotifications();
-#endif
-
#if TARGET_OS_IPHONE
// Priority decay on iOS 9 is impacting page load time so we fix the priority of the WebProcess' main thread (rdar://problem/22003112).
pthread_set_fixedpriority_self();
@@ -1098,16 +1093,13 @@
static void setPreferenceValue(const String& domain, const String& key, id value)
{
if (domain.isEmpty()) {
- CFPreferencesSetAppValue(key.createCFString().get(), (__bridge CFPropertyListRef)value, kCFPreferencesCurrentApplication);
+ CFPreferencesSetValue(key.createCFString().get(), (__bridge CFPropertyListRef)value, kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
#if ASSERT_ENABLED
id valueAfterSetting = [[NSUserDefaults standardUserDefaults] objectForKey:key];
ASSERT(valueAfterSetting == value || [valueAfterSetting isEqual:value]);
#endif
} else
- CFPreferencesSetAppValue(key.createCFString().get(), (__bridge CFPropertyListRef)value, domain.createCFString().get());
-
- if (key == "AppleLanguages")
- WTF::languageDidChange();
+ CFPreferencesSetValue(key.createCFString().get(), (__bridge CFPropertyListRef)value, domain.createCFString().get(), kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
}
void WebProcess::notifyPreferencesChanged(const String& domain, const String& key, const Optional<String>& encodedValue)
Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (273866 => 273867)
--- trunk/Source/WebKitLegacy/mac/ChangeLog 2021-03-04 01:48:53 UTC (rev 273866)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog 2021-03-04 01:49:00 UTC (rev 273867)
@@ -1,5 +1,18 @@
2021-03-03 Chris Dumez <cdu...@apple.com>
+ Unreviewed, reverting r273851.
+
+ Caused some tests failures on macOS Big Sur
+
+ Reverted changeset:
+
+ "[macOS][WK2] Changing the system language does not update
+ navigator.language"
+ https://bugs.webkit.org/show_bug.cgi?id=222619
+ https://commits.webkit.org/r273851
+
+2021-03-03 Chris Dumez <cdu...@apple.com>
+
[macOS][WK2] Changing the system language does not update navigator.language
https://bugs.webkit.org/show_bug.cgi?id=222619
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebView.mm (273866 => 273867)
--- trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2021-03-04 01:48:53 UTC (rev 273866)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2021-03-04 01:49:00 UTC (rev 273867)
@@ -248,7 +248,6 @@
#import <wtf/BlockPtr.h>
#import <wtf/FileSystem.h>
#import <wtf/HashTraits.h>
-#import <wtf/Language.h>
#import <wtf/MainThread.h>
#import <wtf/ProcessPrivilege.h>
#import <wtf/RAMSize.h>
@@ -1681,9 +1680,7 @@
#endif
[WebViewVisualIdentificationOverlay installForWebViewIfNeeded:self kind:@"WebView" deprecated:YES];
-
- WTF::listenForLanguageChangeNotifications();
-#endif // PLATFORM(MAC)
+#endif
}
- (id)_initWithFrame:(NSRect)f frameName:(NSString *)frameName groupName:(NSString *)groupName
Modified: trunk/Tools/ChangeLog (273866 => 273867)
--- trunk/Tools/ChangeLog 2021-03-04 01:48:53 UTC (rev 273866)
+++ trunk/Tools/ChangeLog 2021-03-04 01:49:00 UTC (rev 273867)
@@ -1,3 +1,16 @@
+2021-03-03 Chris Dumez <cdu...@apple.com>
+
+ Unreviewed, reverting r273851.
+
+ Caused some tests failures on macOS Big Sur
+
+ Reverted changeset:
+
+ "[macOS][WK2] Changing the system language does not update
+ navigator.language"
+ https://bugs.webkit.org/show_bug.cgi?id=222619
+ https://commits.webkit.org/r273851
+
2021-03-03 Sam Sneddon <gsnedd...@apple.com>
Make LayoutTestFinder.find_tests/find_tests_by_path return List[Test]
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit/OverrideAppleLanguagesPreference.mm (273866 => 273867)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit/OverrideAppleLanguagesPreference.mm 2021-03-04 01:48:53 UTC (rev 273866)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit/OverrideAppleLanguagesPreference.mm 2021-03-04 01:49:00 UTC (rev 273867)
@@ -29,8 +29,6 @@
#import "PlatformUtilities.h"
#import "TestWKWebView.h"
-#import <wtf/cocoa/VectorCocoa.h>
-#import <wtf/text/StringBuilder.h>
TEST(WebKit, OverrideAppleLanguagesPreference)
{
@@ -53,74 +51,3 @@
}
#endif // WK_HAVE_C_SPI
-
-// On older macOSes, CFPREFS_DIRECT_MODE is disabled and the WebProcess does not see the updated AppleLanguages
-// after the AppleLanguagePreferencesChangedNotification notification.
-#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
-class AppleLanguagesTest : public testing::Test {
-public:
- AppleLanguagesTest()
- {
- // Save current system language to restore it later.
- auto task = adoptNS([[NSTask alloc] init]);
- [task setLaunchPath:@"/usr/bin/defaults"];
- [task setArguments:@[@"read", @"NSGlobalDomain", @"AppleLanguages"]];
- auto pipe = adoptNS([[NSPipe alloc] init]);
- [task setStandardOutput:pipe.get()];
- auto fileHandle = [pipe fileHandleForReading];
- [task launch];
- NSData *data = "" readDataToEndOfFile];
- m_savedAppleLanguages = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
- m_savedAppleLanguages.replace("\n", "");
- m_savedAppleLanguages.replace(" ", "");
- }
-
- ~AppleLanguagesTest()
- {
- // Restore previous system language.
- system([NSString stringWithFormat:@"defaults write NSGlobalDomain AppleLanguages '%@'", (NSString *)m_savedAppleLanguages].UTF8String);
- }
-
-private:
- String m_savedAppleLanguages;
-};
-
-TEST_F(AppleLanguagesTest, UpdateAppleLanguages)
-{
- // Tests uses "en-US" language initially.
- system([NSString stringWithFormat:@"defaults write NSGlobalDomain AppleLanguages '(\"en-US\")'"].UTF8String);
-
- auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
- auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 300, 300) configuration:configuration.get() addToWindow:YES]);
- [webView synchronouslyLoadTestPageNamed:@"simple"];
-
- // We only listen for preference changes when the application is active.
- [[NSNotificationCenter defaultCenter] postNotificationName:NSApplicationDidBecomeActiveNotification object:NSApp userInfo:nil];
-
- auto preferredLanguage = [&] {
- return [webView stringByEvaluatingJavaScript:@"navigator.language"];
- };
- EXPECT_WK_STREQ(@"en-us", preferredLanguage());
-
- __block bool done = false;
- [webView evaluateJavaScript:@"_onlanguagechange_ = () => { webkit.messageHandlers.testHandler.postMessage(navigator.language); }; true;" completionHandler:^(id value, NSError *error) {
- EXPECT_TRUE(!error);
- done = true;
- }];
- TestWebKitAPI::Util::run(&done);
-
- __block bool didChangeLanguage = false;
- [webView performAfterReceivingMessage:@"en-gb" action:^{ didChangeLanguage = true; }];
- [webView performAfterReceivingMessage:@"en-us" action:^{
- EXPECT_TRUE(false); // navigator.language was wrong when the languagechange event fired.
- didChangeLanguage = true;
- }];
-
- // Switch system language from "en-US" to "en-GB". Make sure that we fire a languagechange event at the Window and that navigator.language
- // now reports "en-gb".
- system([NSString stringWithFormat:@"defaults write NSGlobalDomain AppleLanguages '(\"en-GB\")'"].UTF8String);
- CFNotificationCenterPostNotification(CFNotificationCenterGetDistributedCenter(), CFSTR("AppleLanguagePreferencesChangedNotification"), nullptr, nullptr, true);
-
- TestWebKitAPI::Util::run(&didChangeLanguage);
-}
-#endif