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

Changeset 263094 in webkit


Ignore:
Timestamp:
Jun 16, 2020, 8:30:03 AM (6 years ago)
Author:
Chris Dumez
Message:

Stop calling userPreferredLanguages() in the UIProcess
​https://bugs.webkit.org/show_bug.cgi?id=213214
<rdar://problem/64317593>

Reviewed by Per Arne Vollan.

Source/WebKit:

Stop calling userPreferredLanguages() in the UIProcess since this can be slow and may keep
the main thread busy. Nowadays, the WebProcess is able to call it by itself anyway. The
sandbox is allowing it.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::languageChanged):
(WebKit::WebProcessPool::initializeNewWebProcess):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::userPreferredLanguagesChanged const):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:

Source/WTF:

Export WTF::languageDidChange() so we can call it from WebKit2.

  • wtf/Language.h:
Location:
trunk/Source
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r263082 r263094  
     12020-06-16  Chris Dumez  <cdumez@apple.com>
     2
     3        Stop calling userPreferredLanguages() in the UIProcess
     4        https://bugs.webkit.org/show_bug.cgi?id=213214
     5        <rdar://problem/64317593>
     6
     7        Reviewed by Per Arne Vollan.
     8
     9        Export WTF::languageDidChange() so we can call it from WebKit2.
     10
     11        * wtf/Language.h:
     12
    1132020-06-16  Mark Lam  <mark.lam@apple.com>
    214
  • trunk/Source/WTF/wtf/Language.h

    r256420 r263094  
    4343WTF_EXPORT_PRIVATE Vector<String> platformUserPreferredLanguages();
    4444// Called from platform specific code when the user's preferred language(s) change.
    45 void languageDidChange();
     45WTF_EXPORT_PRIVATE void languageDidChange();
    4646
    4747// The observer function will be called when system language changes.
  • trunk/Source/WebKit/ChangeLog

    r263093 r263094  
     12020-06-16  Chris Dumez  <cdumez@apple.com>
     2
     3        Stop calling userPreferredLanguages() in the UIProcess
     4        https://bugs.webkit.org/show_bug.cgi?id=213214
     5        <rdar://problem/64317593>
     6
     7        Reviewed by Per Arne Vollan.
     8
     9        Stop calling userPreferredLanguages() in the UIProcess since this can be slow and may keep
     10        the main thread busy. Nowadays, the WebProcess is able to call it by itself anyway. The
     11        sandbox is allowing it.
     12
     13        * Shared/WebProcessCreationParameters.cpp:
     14        (WebKit::WebProcessCreationParameters::encode const):
     15        (WebKit::WebProcessCreationParameters::decode):
     16        * Shared/WebProcessCreationParameters.h:
     17        * UIProcess/WebProcessPool.cpp:
     18        (WebKit::WebProcessPool::languageChanged):
     19        (WebKit::WebProcessPool::initializeNewWebProcess):
     20        * WebProcess/WebProcess.cpp:
     21        (WebKit::WebProcess::initializeWebProcess):
     22        (WebKit::WebProcess::userPreferredLanguagesChanged const):
     23        * WebProcess/WebProcess.h:
     24        * WebProcess/WebProcess.messages.in:
     25
    1262020-06-16  Truitt Savell  <tsavell@apple.com>
    227
  • trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp

    r262994 r263094  
    8080    encoder << fontWhitelist;
    8181    encoder << terminationTimeout;
    82     encoder << languages;
     82    encoder << overrideLanguages;
    8383#if USE(GSTREAMER)
    8484    encoder << gstreamerOptions;
    … …  
    285285    if (!decoder.decode(parameters.terminationTimeout))
    286286        return false;
    287     if (!decoder.decode(parameters.languages))
     287    if (!decoder.decode(parameters.overrideLanguages))
    288288        return false;
    289289#if USE(GSTREAMER)
  • trunk/Source/WebKit/Shared/WebProcessCreationParameters.h

    r262648 r263094  
    108108
    109109    Vector<String> fontWhitelist;
    110     Vector<String> languages;
     110    Vector<String> overrideLanguages;
    111111#if USE(GSTREAMER)
    112112    Vector<String> gstreamerOptions;
  • trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm

    r261016 r263094  
    248248#endif
    249249
    250 }
     250Vector<String> WebProcessProxy::platformOverrideLanguages() const
     251{
     252    NeverDestroyed<Vector<String>> overrideLanguages = []() {
     253        NSArray *languages = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"];
     254        if (!languages)
     255            return Vector<WTF::String> { };
     256
     257        Vector<String> overrideLanguages;
     258        overrideLanguages.reserveInitialCapacity([languages count]);
     259        for (NSString *language in languages)
     260            overrideLanguages.uncheckedAppend(language);
     261        return overrideLanguages;
     262    }();
     263    return overrideLanguages.get();
     264}
     265
     266}
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r263060 r263094  
    445445void WebProcessPool::languageChanged()
    446446{
    447     sendToAllProcesses(Messages::WebProcess::UserPreferredLanguagesChanged(userPreferredLanguages()));
     447    sendToAllProcesses(Messages::WebProcess::UserPreferredLanguagesChanged());
    448448#if USE(SOUP)
    449449    if (m_networkProcess)
    … …  
    10301030
    10311031    parameters.cacheModel = LegacyGlobalSettings::singleton().cacheModel();
    1032     parameters.languages = configuration().overrideLanguages().isEmpty() ? userPreferredLanguages() : configuration().overrideLanguages();
     1032    parameters.overrideLanguages = configuration().overrideLanguages();
    10331033
    10341034    parameters.urlSchemesRegisteredAsEmptyDocument = copyToVector(m_schemesToRegisterAsEmptyDocument);
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp

    r263038 r263094  
    318318
    319319    auto overrideLanguages = m_processPool->configuration().overrideLanguages();
    320     if (overrideLanguages.size()) {
     320    if (overrideLanguages.isEmpty())
     321        overrideLanguages = platformOverrideLanguages();
     322    if (!overrideLanguages.isEmpty()) {
    321323        StringBuilder languageString;
    322324        for (size_t i = 0; i < overrideLanguages.size(); ++i) {
    … …  
    649651    return false;
    650652}
     653
     654Vector<String> WebProcessProxy::platformOverrideLanguages() const
     655{
     656    return { };
     657}
    651658#endif
    652659
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.h

    r263038 r263094  
    478478   
    479479    void updateRegistrationWithDataStore();
     480    Vector<String> platformOverrideLanguages() const;
    480481
    481482    void maybeShutDown();
  • trunk/Source/WebKit/WebProcess/WebProcess.cpp

    r263045 r263094  
    392392    setCacheModel(parameters.cacheModel);
    393393
    394     if (!parameters.languages.isEmpty())
    395         overrideUserPreferredLanguages(parameters.languages);
     394    if (!parameters.overrideLanguages.isEmpty())
     395        overrideUserPreferredLanguages(parameters.overrideLanguages);
    396396
    397397    m_textCheckerState = parameters.textCheckerState;
    … …  
    646646}
    647647
    648 void WebProcess::userPreferredLanguagesChanged(const Vector<String>& languages) const
    649 {
    650     overrideUserPreferredLanguages(languages);
     648void WebProcess::userPreferredLanguagesChanged() const
     649{
     650    WTF::languageDidChange();
    651651}
    652652
  • trunk/Source/WebKit/WebProcess/WebProcess.h

    r263038 r263094  
    378378    void flushResourceLoadStatistics();
    379379    void seedResourceLoadStatisticsForTesting(const WebCore::RegistrableDomain& firstPartyDomain, const WebCore::RegistrableDomain& thirdPartyDomain, bool shouldScheduleNotification, CompletionHandler<void()>&&);
    380     void userPreferredLanguagesChanged(const Vector<String>&) const;
     380    void userPreferredLanguagesChanged() const;
    381381    void fullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled);
    382382
  • trunk/Source/WebKit/WebProcess/WebProcess.messages.in

    r262648 r263094  
    5050    SetResourceLoadStatisticsEnabled(bool resourceLoadStatisticsEnabled);
    5151    ClearResourceLoadStatistics();
    52     UserPreferredLanguagesChanged(Vector<String> languages)
     52    UserPreferredLanguagesChanged()
    5353    FullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled)
    5454
Note: See TracChangeset for help on using the changeset viewer.