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

Changeset 236959 in webkit


Ignore:
Timestamp:
Oct 9, 2018, 2:14:37 AM (8 years ago)
Author:
Antti Koivisto
Message:

Prewarm FontDatabase on process swap
https://bugs.webkit.org/show_bug.cgi?id=190312

Reviewed by Chris Dumez.

Source/WebCore:

Implement basic prewarming of FontDatabase. When the domain of the first page load on
a new process is known we pass the list of font families previous used by that domain to the
process. This is used to prewarm CoreText font database. Initialization (which involves lots of
blocking IPC) happens outside the main thread so the fonts are ready to use when needed.

  • WebCore.xcodeproj/project.pbxproj:
  • page/PrewarmInformation.h: Added.

(WebCore::PrewarmInformation::encode const):
(WebCore::PrewarmInformation::decode):

Add data structure for prewarm information with encode/decode support.

  • page/ProcessWarming.cpp:

(WebCore::ProcessWarming::collectPrewarmInformation):
(WebCore::ProcessWarming::prewarmWithInformation):

Prewarming interface to be used from WebKit.

  • page/ProcessWarming.h:
  • platform/graphics/FontCache.cpp:

(WebCore::FontCache::collectPrewarmInformation const):
(WebCore::FontCache::prewarm):

  • platform/graphics/FontCache.h:
  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::FontDatabase::collectionForFamily):
(WebCore::FontDatabase::fontForPostScriptName):
(WebCore::FontDatabase::clear):

Add mutex for thread safe access.

(WebCore::FontCache::createFontPlatformData):
(WebCore::FontCache::collectPrewarmInformation const):

Collect font families seen by this process.

(WebCore::FontCache::prewarm):

Prewarm FontDatabase in a dispatch queue.

Source/WebKit:

Add mechanism for caching prewarm information per domain on UI process side. This information
is then passed to newly initialized web processes that are being used for the same domain.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::processForNavigationInternal):

Pass prewarm information on process swap to the new process.

(WebKit::WebProcessPool::didCollectPrewarmInformation):

UI process side cache.

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didCollectPrewarmInformation):

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::close):
(WebKit::WebPage::didReceivePolicyDecision):

Collect and cache prewarm information for the previous process on process swap.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::prewarmGlobally):

Renamed for clarity.

(WebKit::WebProcess::prewarmWithDomainInformation):
(WebKit::WebProcess::sendPrewarmInformation):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
Location:
trunk/Source
Files:
18 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r236955 r236959  
     12018-10-09  Antti Koivisto  <antti@apple.com>
     2
     3        Prewarm FontDatabase on process swap
     4        https://bugs.webkit.org/show_bug.cgi?id=190312
     5
     6        Reviewed by Chris Dumez.
     7
     8        Implement basic prewarming of FontDatabase. When the domain of the first page load on
     9        a new process is known we pass the list of font families previous used by that domain to the
     10        process. This is used to prewarm CoreText font database. Initialization (which involves lots of
     11        blocking IPC) happens outside the main thread so the fonts are ready to use when needed.
     12
     13        * WebCore.xcodeproj/project.pbxproj:
     14        * page/PrewarmInformation.h: Added.
     15        (WebCore::PrewarmInformation::encode const):
     16        (WebCore::PrewarmInformation::decode):
     17
     18        Add data structure for prewarm information with encode/decode support.
     19
     20        * page/ProcessWarming.cpp:
     21        (WebCore::ProcessWarming::collectPrewarmInformation):
     22        (WebCore::ProcessWarming::prewarmWithInformation):
     23
     24        Prewarming interface to be used from WebKit.
     25
     26        * page/ProcessWarming.h:
     27        * platform/graphics/FontCache.cpp:
     28        (WebCore::FontCache::collectPrewarmInformation const):
     29        (WebCore::FontCache::prewarm):
     30        * platform/graphics/FontCache.h:
     31        * platform/graphics/cocoa/FontCacheCoreText.cpp:
     32        (WebCore::FontDatabase::collectionForFamily):
     33        (WebCore::FontDatabase::fontForPostScriptName):
     34        (WebCore::FontDatabase::clear):
     35
     36        Add mutex for thread safe access.
     37
     38        (WebCore::FontCache::createFontPlatformData):
     39        (WebCore::FontCache::collectPrewarmInformation const):
     40
     41        Collect font families seen by this process.
     42
     43        (WebCore::FontCache::prewarm):
     44
     45        Prewarm FontDatabase in a dispatch queue.
     46
    1472018-10-08  Wenson Hsieh  <wenson_hsieh@apple.com>
    248
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r236954 r236959  
    47604760                E44FA1851BCA6B5A0091B6EF /* ComposedTreeIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = E44FA1841BCA6B5A0091B6EF /* ComposedTreeIterator.h */; };
    47614761                E45322AC140CE267005A0F92 /* SelectorQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = E45322AA140CE267005A0F92 /* SelectorQuery.h */; };
     4762                E4605FEC2166480900E53046 /* PrewarmInformation.h in Headers */ = {isa = PBXBuildFile; fileRef = E4605FEA2166480800E53046 /* PrewarmInformation.h */; settings = {ATTRIBUTES = (Private, ); }; };
    47624763                E461802D1C8DD2900026C02C /* StyleRelations.h in Headers */ = {isa = PBXBuildFile; fileRef = E461802C1C8DD2900026C02C /* StyleRelations.h */; };
    47634764                E461D65F1BB0C80D00CB5645 /* StyleScope.h in Headers */ = {isa = PBXBuildFile; fileRef = E461D65E1BB0C80D00CB5645 /* StyleScope.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    1451214513                E453903C0EAFD637003695C8 /* WidgetIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WidgetIOS.mm; sourceTree = "<group>"; };
    1451314514                E45390AD0EAFF4B5003695C8 /* SystemMemoryIOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SystemMemoryIOS.cpp; sourceTree = "<group>"; };
     14515                E4605FEA2166480800E53046 /* PrewarmInformation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrewarmInformation.h; sourceTree = "<group>"; };
    1451414516                E461802C1C8DD2900026C02C /* StyleRelations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleRelations.h; sourceTree = "<group>"; };
    1451514517                E461802E1C8DD4D20026C02C /* StyleRelations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleRelations.cpp; sourceTree = "<group>"; };
     
    1968919691                                5CFC434F192406A900A0D3B5 /* PointerLockController.h */,
    1969019692                                3772B09516535856000A49CA /* PopupOpeningObserver.h */,
     19693                                E4605FEA2166480800E53046 /* PrewarmInformation.h */,
    1969119694                                B776D43C1104527500BEB0EC /* PrintContext.cpp */,
    1969219695                                B776D43A1104525D00BEB0EC /* PrintContext.h */,
     
    2773127734                                CE799FAC1C6A50660097B518 /* ContentSecurityPolicySourceListDirective.h in Headers */,
    2773227735                                41D015CA0F4B5C71004A662F /* ContentType.h in Headers */,
     27736                                E4605FEC2166480900E53046 /* PrewarmInformation.h in Headers */,
    2773327737                                97627B8E14FB3CEE002CDCA1 /* ContextDestructionObserver.h in Headers */,
    2773427738                                93B6A0E60B0BCA5C00F5027A /* ContextMenu.h in Headers */,
  • trunk/Source/WebCore/page/PrewarmInformation.h

    r236958 r236959  
    2626#pragma once
    2727
     28#include "FontCache.h"
     29#include <wtf/Vector.h>
     30#include <wtf/text/WTFString.h>
     31
    2832namespace WebCore {
    2933
    30 class WEBCORE_EXPORT ProcessWarming {
    31 public:
    32     static void initializeNames();
    33     static void prewarm();
     34struct WEBCORE_EXPORT PrewarmInformation {
     35    FontPrewarmInformation font;
     36
     37    template<class Encoder> void encode(Encoder&) const;
     38    template<class Decoder> static std::optional<PrewarmInformation> decode(Decoder&);
    3439};
    3540
     41template<class Encoder>
     42void PrewarmInformation::encode(Encoder& encoder) const
     43{
     44    encoder << font;
    3645}
     46
     47template<class Decoder>
     48std::optional<PrewarmInformation> PrewarmInformation::decode(Decoder& decoder)
     49{
     50    PrewarmInformation prewarmInfo;
     51    if (!decoder.decode(prewarmInfo.font))
     52        return { };
     53
     54    return prewarmInfo;
     55}
     56
     57}
  • trunk/Source/WebCore/page/ProcessWarming.cpp

    r235758 r236959  
    5959}
    6060   
    61 void ProcessWarming::prewarm()
     61void ProcessWarming::prewarmGlobally()
    6262{
    6363    initializeNames();
     
    7777}
    7878
     79WebCore::PrewarmInformation ProcessWarming::collectPrewarmInformation()
     80{
     81    PrewarmInformation info;
     82    info.font = FontCache::singleton().collectPrewarmInformation();
     83    return info;
    7984}
     85
     86void ProcessWarming::prewarmWithInformation(const PrewarmInformation& prewarmInfo)
     87{
     88    FontCache::singleton().prewarm(prewarmInfo.font);
     89}
     90
     91}
  • trunk/Source/WebCore/page/ProcessWarming.h

    r235758 r236959  
    2626#pragma once
    2727
     28#include "PrewarmInformation.h"
     29
    2830namespace WebCore {
    2931
     
    3133public:
    3234    static void initializeNames();
    33     static void prewarm();
     35    static void prewarmGlobally();
     36
     37    static PrewarmInformation collectPrewarmInformation();
     38    static void prewarmWithInformation(const PrewarmInformation&);
    3439};
    3540
  • trunk/Source/WebCore/platform/graphics/FontCache.cpp

    r236383 r236959  
    483483
    484484#if !PLATFORM(COCOA)
     485
     486FontPrewarmInformation FontCache::collectPrewarmInformation() const
     487{
     488    return { };
     489}
     490
     491void FontCache::prewarm(const FontPrewarmInformation&)
     492{
     493}
     494
    485495RefPtr<Font> FontCache::similarFont(const FontDescription&, const AtomicString&)
    486496{
  • trunk/Source/WebCore/platform/graphics/FontCache.h

    r236013 r236959  
    3939#include <wtf/RefPtr.h>
    4040#include <wtf/Vector.h>
     41#include <wtf/WorkQueue.h>
    4142#include <wtf/text/AtomicStringHash.h>
    4243#include <wtf/text/WTFString.h>
     
    6768#endif
    6869#endif
     70
     71using FontPrewarmInformation = Vector<String>;
    6972
    7073// This key contains the FontDescription fields other than family that matter when fetching FontDatas (platform fonts).
     
    236239    void setShouldMockBoldSystemFontForAccessibility(bool shouldMockBoldSystemFontForAccessibility) { m_shouldMockBoldSystemFontForAccessibility = shouldMockBoldSystemFontForAccessibility; }
    237240
     241    FontPrewarmInformation collectPrewarmInformation() const;
     242    void prewarm(const FontPrewarmInformation&);
     243
    238244private:
    239245    FontCache();
     
    259265
    260266#if PLATFORM(COCOA)
     267    HashSet<String> m_seenFamiliesForPrewarming;
     268    RefPtr<WorkQueue> m_prewarmQueue;
     269
    261270    friend class ComplexTextController;
    262271#endif
  • trunk/Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp

    r236938 r236959  
    888888    const InstalledFontFamily& collectionForFamily(const String& familyName)
    889889    {
     890        std::lock_guard<Lock> locker(m_descriptorMapLock);
     891
    890892        auto folded = familyName.foldCase();
    891893        return m_familyNameToFontDescriptors.ensure(folded, [&] {
     
    912914    const InstalledFont& fontForPostScriptName(const AtomicString& postScriptName)
    913915    {
     916        std::lock_guard<Lock> locker(m_descriptorMapLock);
     917
    914918        const auto& folded = FontCascadeDescription::foldedFamilyName(postScriptName);
    915919        return m_postScriptNameToFontDescriptors.ensure(folded, [&] {
     
    933937    void clear()
    934938    {
     939        std::lock_guard<Lock> locker(m_descriptorMapLock);
     940
    935941        m_familyNameToFontDescriptors.clear();
    936942        m_postScriptNameToFontDescriptors.clear();
     
    945951    }
    946952
     953    Lock m_descriptorMapLock;
    947954    HashMap<String, InstalledFontFamily> m_familyNameToFontDescriptors;
    948955    HashMap<String, InstalledFont> m_postScriptNameToFontDescriptors;
     
    12651272        return nullptr;
    12661273
     1274    if (fontDescription.shouldAllowUserInstalledFonts() == AllowUserInstalledFonts::No)
     1275        m_seenFamiliesForPrewarming.add(FontCascadeDescription::foldedFamilyName(family));
     1276
    12671277    bool syntheticBold, syntheticOblique;
    12681278    std::tie(syntheticBold, syntheticOblique) = computeNecessarySynthesis(font.get(), fontDescription).boldObliquePair();
     
    15031513}
    15041514
    1505 }
     1515FontPrewarmInformation FontCache::collectPrewarmInformation() const
     1516{
     1517    FontPrewarmInformation fontPrewarmInformation;
     1518    fontPrewarmInformation = copyToVector(m_seenFamiliesForPrewarming);
     1519    return fontPrewarmInformation;
     1520}
     1521
     1522void FontCache::prewarm(const FontPrewarmInformation& fontPrewarmInformation)
     1523{
     1524    auto& families = fontPrewarmInformation;
     1525
     1526    if (families.isEmpty())
     1527        return;
     1528
     1529    if (!m_prewarmQueue)
     1530        m_prewarmQueue = WorkQueue::create("WebKit font prewarm queue");
     1531
     1532    auto& database = FontDatabase::singletonDisallowingUserInstalledFonts();
     1533
     1534    m_prewarmQueue->dispatch([&database, families = families.isolatedCopy()] {
     1535        for (auto& family : families)
     1536            database.collectionForFamily(family);
     1537    });
     1538}
     1539
     1540}
  • trunk/Source/WebKit/ChangeLog

    r236955 r236959  
     12018-10-09  Antti Koivisto  <antti@apple.com>
     2
     3        Prewarm FontDatabase on process swap
     4        https://bugs.webkit.org/show_bug.cgi?id=190312
     5
     6        Reviewed by Chris Dumez.
     7
     8        Add mechanism for caching prewarm information per domain on UI process side. This information
     9        is then passed to newly initialized web processes that are being used for the same domain.
     10
     11        * UIProcess/WebPageProxy.h:
     12        * UIProcess/WebProcessPool.cpp:
     13        (WebKit::WebProcessPool::processForNavigationInternal):
     14
     15        Pass prewarm information on process swap to the new process.
     16
     17        (WebKit::WebProcessPool::didCollectPrewarmInformation):
     18
     19        UI process side cache.
     20
     21        * UIProcess/WebProcessPool.h:
     22        * UIProcess/WebProcessProxy.cpp:
     23        (WebKit::WebProcessProxy::didCollectPrewarmInformation):
     24        * UIProcess/WebProcessProxy.h:
     25        * UIProcess/WebProcessProxy.messages.in:
     26        * WebProcess/WebPage/WebPage.cpp:
     27        (WebKit::WebPage::close):
     28        (WebKit::WebPage::didReceivePolicyDecision):
     29
     30        Collect and cache prewarm information for the previous process on process swap.
     31
     32        * WebProcess/WebProcess.cpp:
     33        (WebKit::WebProcess::prewarmGlobally):
     34
     35        Renamed for clarity.
     36
     37        (WebKit::WebProcess::prewarmWithDomainInformation):
     38        (WebKit::WebProcess::sendPrewarmInformation):
     39        * WebProcess/WebProcess.h:
     40        * WebProcess/WebProcess.messages.in:
     41
    1422018-10-08  Wenson Hsieh  <wenson_hsieh@apple.com>
    243
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r236939 r236959  
    191191struct GlobalWindowIdentifier;
    192192struct MediaStreamRequest;
     193struct PrewarmInformation;
    193194struct SecurityOriginData;
    194195struct ShareData;
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r236762 r236959  
    8686#include <WebCore/PlatformScreen.h>
    8787#include <WebCore/Process.h>
     88#include <WebCore/ProcessWarming.h>
    8889#include <WebCore/ResourceRequest.h>
    8990#include <WebCore/URLParser.h>
     
    737738        m_prewarmedProcess = &process;
    738739       
    739         m_prewarmedProcess->send(Messages::WebProcess::Prewarm(), 0);
     740        m_prewarmedProcess->send(Messages::WebProcess::PrewarmGlobally(), 0);
    740741    }
    741742
     
    21742175
    21752176    action = PolicyAction::Suspend;
    2176     if (RefPtr<WebProcessProxy> process = tryTakePrewarmedProcess(page.websiteDataStore()))
     2177
     2178    if (RefPtr<WebProcessProxy> process = tryTakePrewarmedProcess(page.websiteDataStore())) {
     2179        if (auto* prewarmInformation = m_prewarmInformationPerRegistrableDomain.get(toRegistrableDomain(targetURL)))
     2180            process->send(Messages::WebProcess::PrewarmWithDomainInformation(*prewarmInformation), 0);
     2181
    21772182        return process.releaseNonNull();
     2183    }
     2184
    21782185    return createNewWebProcess(page.websiteDataStore());
    21792186}
     
    22492256}
    22502257
     2258void WebProcessPool::didCollectPrewarmInformation(const String& registrableDomain, const WebCore::PrewarmInformation& prewarmInformation)
     2259{
     2260    static const size_t maximumSizeToPreventUnlimitedGrowth = 100;
     2261    if (m_prewarmInformationPerRegistrableDomain.size() == maximumSizeToPreventUnlimitedGrowth)
     2262        m_prewarmInformationPerRegistrableDomain.remove(m_prewarmInformationPerRegistrableDomain.begin());
     2263
     2264    auto& value = m_prewarmInformationPerRegistrableDomain.ensure(registrableDomain, [] {
     2265        return std::make_unique<WebCore::PrewarmInformation>();
     2266    }).iterator->value;
     2267
     2268    *value = prewarmInformation;
     2269}
     2270
    22512271} // namespace WebKit
  • trunk/Source/WebKit/UIProcess/WebProcessPool.h

    r236690 r236959  
    445445    void didReachGoodTimeToPrewarm();
    446446
     447    void didCollectPrewarmInformation(const String& registrableDomain, const WebCore::PrewarmInformation&);
     448
    447449    void screenPropertiesStateChanged();
    448450
     
    697699    HashMap<WebCore::SecurityOriginData, Vector<SuspendedPageProxy*>> m_suspendedPages;
    698700    HashMap<String, RefPtr<WebProcessProxy>> m_swappedProcessesPerRegistrableDomain;
     701
     702    HashMap<String, std::unique_ptr<WebCore::PrewarmInformation>> m_prewarmInformationPerRegistrableDomain;
    699703};
    700704
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp

    r236773 r236959  
    5454#include "WebsiteDataFetchOption.h"
    5555#include <WebCore/DiagnosticLoggingKeys.h>
     56#include <WebCore/PrewarmInformation.h>
    5657#include <WebCore/PublicSuffix.h>
    5758#include <WebCore/SuddenTermination.h>
     
    14341435}
    14351436
     1437void WebProcessProxy::didCollectPrewarmInformation(const String& domain, const WebCore::PrewarmInformation& prewarmInformation)
     1438{
     1439    processPool().didCollectPrewarmInformation(domain, prewarmInformation);
     1440}
     1441
    14361442#if PLATFORM(WATCHOS)
    14371443
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.h

    r236773 r236959  
    315315    bool canTerminateChildProcess();
    316316
     317    void didCollectPrewarmInformation(const String& domain, const WebCore::PrewarmInformation&);
     318
    317319    void logDiagnosticMessageForResourceLimitTermination(const String& limitKey);
    318320
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.messages.in

    r236773 r236959  
    6565    DidCheckProcessLocalPortForActivity(uint64_t callbackIdentifier, bool isLocallyReachable)
    6666
     67    DidCollectPrewarmInformation(String domain, struct WebCore::PrewarmInformation prewarmInformation)
     68
    6769#if PLATFORM(COCOA)
    6870    CacheMediaMIMETypes(Vector<String> types)
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp

    r236867 r236959  
    11741174
    11751175    // If there is still no URL, then we never loaded anything in this page, so nothing to report.
    1176     if (!mainWebFrame()->url().isEmpty())
     1176    if (!mainWebFrame()->url().isEmpty()) {
    11771177        reportUsedFeatures();
     1178
     1179        WebProcess::singleton().sendPrewarmInformation(toRegistrableDomain(mainWebFrame()->url()));
     1180    }
    11781181
    11791182    if (pageGroup()->isVisibleToInjectedBundle() && WebProcess::singleton().injectedBundle())
     
    28742877        ASSERT(frame == m_mainFrame);
    28752878        setIsSuspended(true);
     2879
     2880        WebProcess::singleton().sendPrewarmInformation(toRegistrableDomain(mainWebFrame()->url()));
    28762881    }
    28772882    frame->didReceivePolicyDecision(listenerID, policyAction, navigationID, downloadID, WTFMove(websitePolicies));
  • trunk/Source/WebKit/WebProcess/WebProcess.cpp

    r236690 r236959  
    421421}
    422422
    423 void WebProcess::prewarm()
    424 {
    425     WebCore::ProcessWarming::prewarm();
     423void WebProcess::prewarmGlobally()
     424{
     425    WebCore::ProcessWarming::prewarmGlobally();
     426}
     427
     428void WebProcess::prewarmWithDomainInformation(const WebCore::PrewarmInformation& prewarmInformation)
     429{
     430    WebCore::ProcessWarming::prewarmWithInformation(prewarmInformation);
    426431}
    427432
     
    14601465}
    14611466
     1467void WebProcess::sendPrewarmInformation(const String& registrableDomain)
     1468{
     1469    if (registrableDomain.isEmpty())
     1470        return;
     1471    parentProcessConnection()->send(Messages::WebProcessProxy::DidCollectPrewarmInformation(registrableDomain, WebCore::ProcessWarming::collectPrewarmInformation()), 0);
     1472}
     1473
    14621474void WebProcess::pageDidEnterWindow(uint64_t pageID)
    14631475{
  • trunk/Source/WebKit/WebProcess/WebProcess.h

    r236690 r236959  
    7272struct MockMediaDevice;
    7373struct PluginInfo;
     74struct PrewarmInformation;
    7475struct SecurityOriginData;
    7576struct SoupNetworkProxySettings;
     
    201202    void processDidResume();
    202203
     204    void sendPrewarmInformation(const String& registrableDomain);
     205
    203206#if PLATFORM(IOS)
    204207    void resetAllGeolocationPermissions();
     
    246249    void platformInitializeWebProcess(WebProcessCreationParameters&&);
    247250
    248     void prewarm();
     251    void prewarmGlobally();
     252    void prewarmWithDomainInformation(const WebCore::PrewarmInformation&);
    249253
    250254#if USE(OS_STATE)
  • trunk/Source/WebKit/WebProcess/WebProcess.messages.in

    r236546 r236959  
    2727    CreateWebPage(uint64_t newPageID, struct WebKit::WebPageCreationParameters pageCreationParameters)
    2828
    29     Prewarm();
    30  
     29    PrewarmGlobally();
     30    PrewarmWithDomainInformation(struct WebCore::PrewarmInformation prewarmInformation)
     31
    3132    # Global preferences.
    3233    SetCacheModel(uint32_t cacheModel)
Note: See TracChangeset for help on using the changeset viewer.