⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 273735 in webkit


Ignore:
Timestamp:
Mar 2, 2021, 10:25:38 AM (6 years ago)
Author:
commit-queue@webkit.org
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 <​cgarcia@igalia.com> 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.
Location:
trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r273732 r273735  
     12021-03-02  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        REGRESSION(r263094): [GTK][WPE] API test /webkit/WebKitWebContext/languages is failing
     4        https://bugs.webkit.org/show_bug.cgi?id=188111
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        The GLib API allows to change the user preferred languages after the web process is created. Since r263094 we
     9        are no loner sending the new overrides to the web process. Instead of calling overrideUserPreferredLanguages()
     10        we now set the overrides in the WebProcessPool configuration, so that we can remove the language observer.
     11
     12        * UIProcess/API/glib/WebKitWebContext.cpp:
     13        (webkit_web_context_set_preferred_languages): Use WebProcessPool::setOverrideLanguages() instead of
     14        overrideUserPreferredLanguages().
     15        * UIProcess/WebProcessPool.cpp:
     16        (WebKit::WebProcessPool::WebProcessPool) Remove the language observer registration.
     17        (WebKit::WebProcessPool::~WebProcessPool): Remove the language observer unregistration.
     18        (WebKit::WebProcessPool::setOverrideLanguages): Update the language overrides in the configuration and notify
     19        all processes.
     20        (WebKit::WebProcessPool::languageChanged): Deleted.
     21        * UIProcess/WebProcessPool.h:
     22        * WebProcess/WebProcess.cpp:
     23        (WebKit::WebProcess::userPreferredLanguagesChanged const): Call overrideUserPreferredLanguages() again here.
     24        * WebProcess/WebProcess.h:
     25        * WebProcess/WebProcess.messages.in:
     26
    1272021-03-02  Youenn Fablet  <youenn@apple.com>
    228
  • trunk/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp

    r271647 r273735  
    6666#include <wtf/HashMap.h>
    6767#include <wtf/HashSet.h>
    68 #include <wtf/Language.h>
    6968#include <wtf/NeverDestroyed.h>
    7069#include <wtf/RefCounted.h>
    … …  
    14641463            languages.append(String::fromUTF8(languageList[i]).replace("_", "-"));
    14651464    }
    1466     overrideUserPreferredLanguages(languages);
     1465    context->priv->processPool->setOverrideLanguages(WTFMove(languages));
    14671466}
    14681467
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r273694 r273735  
    9797#include <pal/SessionID.h>
    9898#include <wtf/CallbackAggregator.h>
    99 #include <wtf/Language.h>
    10099#include <wtf/MainThread.h>
    101100#include <wtf/NeverDestroyed.h>
    … …  
    306305    processPools().append(this);
    307306
    308     addLanguageChangeObserver(this, languageChanged);
    309 
    310307    resolvePathsForSandboxExtensions();
    311308
    … …  
    337334    ASSERT_UNUSED(removed, removed);
    338335
    339     removeLanguageChangeObserver(this);
    340 
    341336    m_messageReceiverMap.invalidate();
    342337
    … …  
    418413}
    419414
    420 void WebProcessPool::languageChanged(void* context)
    421 {
    422     static_cast<WebProcessPool*>(context)->languageChanged();
    423 }
    424 
    425 void WebProcessPool::languageChanged()
    426 {
    427     sendToAllProcesses(Messages::WebProcess::UserPreferredLanguagesChanged());
     415void WebProcessPool::setOverrideLanguages(Vector<String>&& languages)
     416{
     417    m_configuration->setOverrideLanguages(WTFMove(languages));
     418
     419    sendToAllProcesses(Messages::WebProcess::UserPreferredLanguagesChanged(m_configuration->overrideLanguages()));
    428420#if USE(SOUP)
    429421    for (auto networkProcess : NetworkProcessProxy::allNetworkProcesses())
    430         networkProcess->send(Messages::NetworkProcess::UserPreferredLanguagesChanged(userPreferredLanguages()), 0);
     422        networkProcess->send(Messages::NetworkProcess::UserPreferredLanguagesChanged(m_configuration->overrideLanguages()), 0);
    431423#endif
    432424}
  • trunk/Source/WebKit/UIProcess/WebProcessPool.h

    r273693 r273735  
    488488    void setJavaScriptConfigurationDirectory(String&& directory) { m_javaScriptConfigurationDirectory = directory; }
    489489    const String& javaScriptConfigurationDirectory() const { return m_javaScriptConfigurationDirectory; }
    490    
     490
     491    void setOverrideLanguages(Vector<String>&&);
     492
    491493    WebProcessDataStoreParameters webProcessDataStoreParameters(WebProcessProxy&, WebsiteDataStore&);
    492494   
    … …  
    545547    void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
    546548    void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&) override;
    547 
    548     static void languageChanged(void* context);
    549     void languageChanged();
    550549
    551550    bool usesSingleWebProcess() const { return m_configuration->usesSingleWebProcess(); }
  • trunk/Source/WebKit/WebProcess/WebProcess.cpp

    r273657 r273735  
    683683}
    684684
    685 void WebProcess::userPreferredLanguagesChanged() const
    686 {
    687     WTF::languageDidChange();
     685void WebProcess::userPreferredLanguagesChanged(const Vector<String>& languages) const
     686{
     687    overrideUserPreferredLanguages(languages);
    688688}
    689689
  • trunk/Source/WebKit/WebProcess/WebProcess.h

    r273657 r273735  
    419419    void flushResourceLoadStatistics();
    420420    void seedResourceLoadStatisticsForTesting(const WebCore::RegistrableDomain& firstPartyDomain, const WebCore::RegistrableDomain& thirdPartyDomain, bool shouldScheduleNotification, CompletionHandler<void()>&&);
    421     void userPreferredLanguagesChanged() const;
     421    void userPreferredLanguagesChanged(const Vector<String>&) const;
    422422    void fullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled);
    423423
  • trunk/Source/WebKit/WebProcess/WebProcess.messages.in

    r273657 r273735  
    4848    SetResourceLoadStatisticsEnabled(bool resourceLoadStatisticsEnabled);
    4949    ClearResourceLoadStatistics();
    50     UserPreferredLanguagesChanged()
     50    UserPreferredLanguagesChanged(Vector<String> languages)
    5151    FullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled)
    5252
  • trunk/Tools/ChangeLog

    r273734 r273735  
     12021-03-02  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        REGRESSION(r263094): [GTK][WPE] API test /webkit/WebKitWebContext/languages is failing
     4        https://bugs.webkit.org/show_bug.cgi?id=188111
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        * TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:
     9        (testWebContextLanguages): Invalid locale is ignored now instead of throwing a exception.
     10        * TestWebKitAPI/glib/TestExpectations.json: Remove test expectation now that it passes again.
     11
    1122021-03-02  Aakash Jain  <aakash_jain@apple.com>
    213
  • trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp

    r273236 r273735  
    380380    g_assert_cmpstr(locale.get(), ==, expectedDefaultLanguage);
    381381
    382     // An invalid locale should throw an exception.
     382    // An invalid locale should not be used.
    383383    const char* invalidLanguage[] = { "A", nullptr };
    384384    webkit_web_context_set_preferred_languages(test->m_webContext.get(), invalidLanguage);
    385385    javascriptResult = test->runJavaScriptAndWaitUntilFinished("Intl.DateTimeFormat().resolvedOptions().locale", &error.outPtr());
    386386    g_assert_nonnull(javascriptResult);
    387     g_assert_error(error.get(), WEBKIT_JAVASCRIPT_ERROR, WEBKIT_JAVASCRIPT_ERROR_SCRIPT_FAILED);
     387    g_assert_no_error(error.get());
     388    locale.reset(WebViewTest::javascriptResultToCString(javascriptResult));
     389    g_assert_cmpstr(locale.get(), !=, "A");
    388390}
    389391
  • trunk/Tools/TestWebKitAPI/glib/TestExpectations.json

    r273124 r273735  
    111111            "/webkit/WebKitWebContext/uri-scheme": {
    112112                "expected": {"all": {"status": ["FAIL", "PASS"], "bug": "webkit.org/b/183183"}}
    113             },
    114             "/webkit/WebKitWebContext/languages": {
    115                 "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/188111"}}
    116113            },
    117114            "/webkit/WebKitWebContext/proxy": {
Note: See TracChangeset for help on using the changeset viewer.