Title: [273867] trunk
Revision
273867
Author
cdu...@apple.com
Date
2021-03-03 17:49:00 -0800 (Wed, 03 Mar 2021)

Log Message

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

Modified Paths

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
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to