Title: [273735] trunk
Revision
273735
Author
[email protected]
Date
2021-03-02 10:25:38 -0800 (Tue, 02 Mar 2021)

Log Message

REGRESSION(r263094): [GTK][WPE] API test /webkit/WebKitWebContext/languages is failing
https://bugs.webkit.org/show_bug.cgi?id=188111

Patch by Carlos Garcia Campos <[email protected]> on 2021-03-02
Reviewed by Michael Catanzaro.

Source/WebKit:

The GLib API allows to change the user preferred languages after the web process is created. Since r263094 we
are no loner sending the new overrides to the web process. Instead of calling overrideUserPreferredLanguages()
we now set the overrides in the WebProcessPool configuration, so that we can remove the language observer.

* UIProcess/API/glib/WebKitWebContext.cpp:
(webkit_web_context_set_preferred_languages): Use WebProcessPool::setOverrideLanguages() instead of
overrideUserPreferredLanguages().
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::WebProcessPool) Remove the language observer registration.
(WebKit::WebProcessPool::~WebProcessPool): Remove the language observer unregistration.
(WebKit::WebProcessPool::setOverrideLanguages): Update the language overrides in the configuration and notify
all processes.
(WebKit::WebProcessPool::languageChanged): Deleted.
* UIProcess/WebProcessPool.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::userPreferredLanguagesChanged const): Call overrideUserPreferredLanguages() again here.
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:

Tools:

* TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:
(testWebContextLanguages): Invalid locale is ignored now instead of throwing a exception.
* TestWebKitAPI/glib/TestExpectations.json: Remove test expectation now that it passes again.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (273734 => 273735)


--- trunk/Source/WebKit/ChangeLog	2021-03-02 18:22:13 UTC (rev 273734)
+++ trunk/Source/WebKit/ChangeLog	2021-03-02 18:25:38 UTC (rev 273735)
@@ -1,3 +1,29 @@
+2021-03-02  Carlos Garcia Campos  <[email protected]>
+
+        REGRESSION(r263094): [GTK][WPE] API test /webkit/WebKitWebContext/languages is failing
+        https://bugs.webkit.org/show_bug.cgi?id=188111
+
+        Reviewed by Michael Catanzaro.
+
+        The GLib API allows to change the user preferred languages after the web process is created. Since r263094 we
+        are no loner sending the new overrides to the web process. Instead of calling overrideUserPreferredLanguages()
+        we now set the overrides in the WebProcessPool configuration, so that we can remove the language observer.
+
+        * UIProcess/API/glib/WebKitWebContext.cpp:
+        (webkit_web_context_set_preferred_languages): Use WebProcessPool::setOverrideLanguages() instead of
+        overrideUserPreferredLanguages().
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::WebProcessPool) Remove the language observer registration.
+        (WebKit::WebProcessPool::~WebProcessPool): Remove the language observer unregistration.
+        (WebKit::WebProcessPool::setOverrideLanguages): Update the language overrides in the configuration and notify
+        all processes.
+        (WebKit::WebProcessPool::languageChanged): Deleted.
+        * UIProcess/WebProcessPool.h:
+        * WebProcess/WebProcess.cpp:
+        (WebKit::WebProcess::userPreferredLanguagesChanged const): Call overrideUserPreferredLanguages() again here.
+        * WebProcess/WebProcess.h:
+        * WebProcess/WebProcess.messages.in:
+
 2021-03-02  Youenn Fablet  <[email protected]>
 
         Use capture settings after recovering capture from GPUProcess

Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp (273734 => 273735)


--- trunk/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp	2021-03-02 18:22:13 UTC (rev 273734)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp	2021-03-02 18:25:38 UTC (rev 273735)
@@ -65,7 +65,6 @@
 #include <wtf/FileSystem.h>
 #include <wtf/HashMap.h>
 #include <wtf/HashSet.h>
-#include <wtf/Language.h>
 #include <wtf/NeverDestroyed.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>
@@ -1463,7 +1462,7 @@
         else
             languages.append(String::fromUTF8(languageList[i]).replace("_", "-"));
     }
-    overrideUserPreferredLanguages(languages);
+    context->priv->processPool->setOverrideLanguages(WTFMove(languages));
 }
 
 /**

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (273734 => 273735)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2021-03-02 18:22:13 UTC (rev 273734)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2021-03-02 18:25:38 UTC (rev 273735)
@@ -96,7 +96,6 @@
 #include <WebCore/RuntimeApplicationChecks.h>
 #include <pal/SessionID.h>
 #include <wtf/CallbackAggregator.h>
-#include <wtf/Language.h>
 #include <wtf/MainThread.h>
 #include <wtf/NeverDestroyed.h>
 #include <wtf/ProcessPrivilege.h>
@@ -305,8 +304,6 @@
 
     processPools().append(this);
 
-    addLanguageChangeObserver(this, languageChanged);
-
     resolvePathsForSandboxExtensions();
 
 #if !LOG_DISABLED || !RELEASE_LOG_DISABLED
@@ -336,8 +333,6 @@
     bool removed = processPools().removeFirst(this);
     ASSERT_UNUSED(removed, removed);
 
-    removeLanguageChangeObserver(this);
-
     m_messageReceiverMap.invalidate();
 
     for (auto& supplement : m_supplements.values()) {
@@ -417,17 +412,14 @@
     m_configuration->setCustomWebContentServiceBundleIdentifier(customWebContentServiceBundleIdentifier);
 }
 
-void WebProcessPool::languageChanged(void* context)
+void WebProcessPool::setOverrideLanguages(Vector<String>&& languages)
 {
-    static_cast<WebProcessPool*>(context)->languageChanged();
-}
+    m_configuration->setOverrideLanguages(WTFMove(languages));
 
-void WebProcessPool::languageChanged()
-{
-    sendToAllProcesses(Messages::WebProcess::UserPreferredLanguagesChanged());
+    sendToAllProcesses(Messages::WebProcess::UserPreferredLanguagesChanged(m_configuration->overrideLanguages()));
 #if USE(SOUP)
     for (auto networkProcess : NetworkProcessProxy::allNetworkProcesses())
-        networkProcess->send(Messages::NetworkProcess::UserPreferredLanguagesChanged(userPreferredLanguages()), 0);
+        networkProcess->send(Messages::NetworkProcess::UserPreferredLanguagesChanged(m_configuration->overrideLanguages()), 0);
 #endif
 }
 

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (273734 => 273735)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.h	2021-03-02 18:22:13 UTC (rev 273734)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h	2021-03-02 18:25:38 UTC (rev 273735)
@@ -487,7 +487,9 @@
 
     void setJavaScriptConfigurationDirectory(String&& directory) { m_javaScriptConfigurationDirectory = directory; }
     const String& _javascript_ConfigurationDirectory() const { return m_javaScriptConfigurationDirectory; }
-    
+
+    void setOverrideLanguages(Vector<String>&&);
+
     WebProcessDataStoreParameters webProcessDataStoreParameters(WebProcessProxy&, WebsiteDataStore&);
     
     static void setUseSeparateServiceWorkerProcess(bool);
@@ -545,9 +547,6 @@
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
     void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&) override;
 
-    static void languageChanged(void* context);
-    void languageChanged();
-
     bool usesSingleWebProcess() const { return m_configuration->usesSingleWebProcess(); }
 
 #if PLATFORM(COCOA)

Modified: trunk/Source/WebKit/WebProcess/WebProcess.cpp (273734 => 273735)


--- trunk/Source/WebKit/WebProcess/WebProcess.cpp	2021-03-02 18:22:13 UTC (rev 273734)
+++ trunk/Source/WebKit/WebProcess/WebProcess.cpp	2021-03-02 18:25:38 UTC (rev 273735)
@@ -682,9 +682,9 @@
     WebCore::FontCascade::setShouldUseSmoothing(useFontSmoothing);
 }
 
-void WebProcess::userPreferredLanguagesChanged() const
+void WebProcess::userPreferredLanguagesChanged(const Vector<String>& languages) const
 {
-    WTF::languageDidChange();
+    overrideUserPreferredLanguages(languages);
 }
 
 void WebProcess::fullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled)

Modified: trunk/Source/WebKit/WebProcess/WebProcess.h (273734 => 273735)


--- trunk/Source/WebKit/WebProcess/WebProcess.h	2021-03-02 18:22:13 UTC (rev 273734)
+++ trunk/Source/WebKit/WebProcess/WebProcess.h	2021-03-02 18:25:38 UTC (rev 273735)
@@ -418,7 +418,7 @@
     void clearResourceLoadStatistics();
     void flushResourceLoadStatistics();
     void seedResourceLoadStatisticsForTesting(const WebCore::RegistrableDomain& firstPartyDomain, const WebCore::RegistrableDomain& thirdPartyDomain, bool shouldScheduleNotification, CompletionHandler<void()>&&);
-    void userPreferredLanguagesChanged() const;
+    void userPreferredLanguagesChanged(const Vector<String>&) const;
     void fullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled);
 
     void platformSetCacheModel(CacheModel);

Modified: trunk/Source/WebKit/WebProcess/WebProcess.messages.in (273734 => 273735)


--- trunk/Source/WebKit/WebProcess/WebProcess.messages.in	2021-03-02 18:22:13 UTC (rev 273734)
+++ trunk/Source/WebKit/WebProcess/WebProcess.messages.in	2021-03-02 18:25:38 UTC (rev 273735)
@@ -47,7 +47,7 @@
     SetShouldUseFontSmoothing(bool useFontSmoothing)
     SetResourceLoadStatisticsEnabled(bool resourceLoadStatisticsEnabled);
     ClearResourceLoadStatistics();
-    UserPreferredLanguagesChanged()
+    UserPreferredLanguagesChanged(Vector<String> languages)
     FullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled)
 
 #if HAVE(UIKIT_WITH_MOUSE_SUPPORT) && PLATFORM(IOS)

Modified: trunk/Tools/ChangeLog (273734 => 273735)


--- trunk/Tools/ChangeLog	2021-03-02 18:22:13 UTC (rev 273734)
+++ trunk/Tools/ChangeLog	2021-03-02 18:25:38 UTC (rev 273735)
@@ -1,3 +1,14 @@
+2021-03-02  Carlos Garcia Campos  <[email protected]>
+
+        REGRESSION(r263094): [GTK][WPE] API test /webkit/WebKitWebContext/languages is failing
+        https://bugs.webkit.org/show_bug.cgi?id=188111
+
+        Reviewed by Michael Catanzaro.
+
+        * TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:
+        (testWebContextLanguages): Invalid locale is ignored now instead of throwing a exception.
+        * TestWebKitAPI/glib/TestExpectations.json: Remove test expectation now that it passes again.
+
 2021-03-02  Aakash Jain  <[email protected]>
 
         [build.webkit.org] Enable grid view

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp (273734 => 273735)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp	2021-03-02 18:22:13 UTC (rev 273734)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp	2021-03-02 18:25:38 UTC (rev 273735)
@@ -379,12 +379,14 @@
     locale.reset(WebViewTest::_javascript_ResultToCString(_javascript_Result));
     g_assert_cmpstr(locale.get(), ==, expectedDefaultLanguage);
 
-    // An invalid locale should throw an exception.
+    // An invalid locale should not be used.
     const char* invalidLanguage[] = { "A", nullptr };
     webkit_web_context_set_preferred_languages(test->m_webContext.get(), invalidLanguage);
     _javascript_Result = test->runJavaScriptAndWaitUntilFinished("Intl.DateTimeFormat().resolvedOptions().locale", &error.outPtr());
     g_assert_nonnull(_javascript_Result);
-    g_assert_error(error.get(), WEBKIT_JAVASCRIPT_ERROR, WEBKIT_JAVASCRIPT_ERROR_SCRIPT_FAILED);
+    g_assert_no_error(error.get());
+    locale.reset(WebViewTest::_javascript_ResultToCString(_javascript_Result));
+    g_assert_cmpstr(locale.get(), !=, "A");
 }
 
 #if USE(SOUP2)

Modified: trunk/Tools/TestWebKitAPI/glib/TestExpectations.json (273734 => 273735)


--- trunk/Tools/TestWebKitAPI/glib/TestExpectations.json	2021-03-02 18:22:13 UTC (rev 273734)
+++ trunk/Tools/TestWebKitAPI/glib/TestExpectations.json	2021-03-02 18:25:38 UTC (rev 273735)
@@ -111,9 +111,6 @@
             "/webkit/WebKitWebContext/uri-scheme": {
                 "expected": {"all": {"status": ["FAIL", "PASS"], "bug": "webkit.org/b/183183"}}
             },
-            "/webkit/WebKitWebContext/languages": {
-                "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/188111"}}
-            },
             "/webkit/WebKitWebContext/proxy": {
                 "expected": {"all": {"status": ["FAIL", "PASS"], "bug": "webkit.org/b/222090"}}
             }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to