Changeset 294381 in webkit


Ignore:
Timestamp:
May 17, 2022, 8:23:38 PM (3 years ago)
Author:
sihui_liu@apple.com
Message:

WebProcessProxy should not hold WebsiteDataStore alive when there is no page
https://bugs.webkit.org/show_bug.cgi?id=238892
<rdar://problem/91715517>

Reviewed by Youenn Fablet.

WebProcessProxy can outlive WebPageProxy, and because WebProcessProxy holds strong reference to WebsiteDataStore,
WebsiteDataStore will be kept alive even when it's not used by any page and will not be used by any page.

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::createGPUProcessConnection):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
(WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):

  • UIProcess/ProvisionalPageProxy.h:
  • UIProcess/SuspendedPageProxy.cpp:

(WebKit::SuspendedPageProxy::findReusableSuspendedPageProcess):

  • UIProcess/WebBackForwardCache.cpp:

(WebKit::WebBackForwardCache::removeEntriesForSession):

  • UIProcess/WebLockRegistryProxy.cpp:

(WebKit::WebLockRegistryProxy::requestLock):
(WebKit::WebLockRegistryProxy::releaseLock):
(WebKit::WebLockRegistryProxy::abortLockRequest):
(WebKit::WebLockRegistryProxy::snapshot):
(WebKit::WebLockRegistryProxy::clientIsGoingAway):
(WebKit::WebLockRegistryProxy::processDidExit):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::swapToProvisionalPage):
(WebKit::WebPageProxy::commitProvisionalPage):

  • UIProcess/WebProcessCache.cpp:

(WebKit::WebProcessCache::canCacheProcess const):
(WebKit::WebProcessCache::takeProcess):
(WebKit::WebProcessCache::clearAllProcessesForSession):
(WebKit::WebProcessCache::CachedProcess::CachedProcess):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::establishRemoteWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::processForRegistrableDomain):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::processForNavigationInternal):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::m_webLockRegistry):
(WebKit::WebProcessProxy::websiteDataStore const):
(WebKit::WebProcessProxy::setWebsiteDataStore):
(WebKit::WebProcessProxy::isDummyProcessProxy const):
(WebKit::WebProcessProxy::updateRegistrationWithDataStore):
(WebKit::WebProcessProxy::addExistingWebPage):
(WebKit::WebProcessProxy::getNetworkProcessConnection):
(WebKit::WebProcessProxy::didStartProvisionalLoadForMainFrame):
(WebKit::WebProcessProxy::sessionID const):

  • UIProcess/WebProcessProxy.h:

(WebKit::WebProcessProxy::websiteDataStore const): Deleted.

  • UIProcess/glib/WebProcessProxyGLib.cpp:

(WebKit::WebProcessProxy::platformGetLaunchOptions):

Location:
trunk/Source/WebKit/UIProcess
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp

    r294264 r294381  
    371371void GPUProcessProxy::createGPUProcessConnection(WebProcessProxy& webProcessProxy, IPC::Attachment&& connectionIdentifier, GPUProcessConnectionParameters&& parameters)
    372372{
    373     addSession(webProcessProxy.websiteDataStore());
     373    if (auto* store = webProcessProxy.websiteDataStore())
     374        addSession(*store);
     375
    374376    RELEASE_LOG(ProcessSuspension, "%p - GPUProcessProxy is taking a background assertion because a web process is requesting a connection", this);
    375377    startResponsivenessTimer(UseLazyStop::No);
  • trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp

    r292863 r294381  
    8585    m_process->addProvisionalPageProxy(*this);
    8686
    87     if (&m_process->websiteDataStore() != &m_page.websiteDataStore())
    88         m_process->processPool().pageBeginUsingWebsiteDataStore(m_page.identifier(), m_process->websiteDataStore());
     87    m_websiteDataStore = m_process->websiteDataStore();
     88    ASSERT(m_websiteDataStore);
     89    if (m_websiteDataStore && m_websiteDataStore != &m_page.websiteDataStore())
     90        m_process->processPool().pageBeginUsingWebsiteDataStore(m_page.identifier(), *m_websiteDataStore);
    8991
    9092    // If we are reattaching to a SuspendedPage, then the WebProcess' WebPage already exists and
     
    114116        m_page.inspectorController().willDestroyProvisionalPage(*this);
    115117
    116         if (&m_process->websiteDataStore() != &m_page.websiteDataStore())
    117             m_process->processPool().pageEndUsingWebsiteDataStore(m_page.identifier(), m_process->websiteDataStore());
     118        auto dataStore = m_process->websiteDataStore();
     119        if (dataStore && dataStore!= &m_page.websiteDataStore())
     120            m_process->processPool().pageEndUsingWebsiteDataStore(m_page.identifier(), *dataStore);
    118121
    119122        m_process->removeMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_webPageID);
  • trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h

    r288605 r294381  
    6262class WebPageProxy;
    6363class WebProcessProxy;
     64class WebsiteDataStore;
    6465struct FrameInfoData;
    6566struct NavigationActionData;
     
    164165    WebCore::PageIdentifier m_webPageID;
    165166    Ref<WebProcessProxy> m_process;
     167    // Keep WebsiteDataStore alive for provisional page load.
     168    RefPtr<WebsiteDataStore> m_websiteDataStore;
    166169    std::unique_ptr<DrawingAreaProxy> m_drawingArea;
    167170    RefPtr<WebFrameProxy> m_mainFrame;
  • trunk/Source/WebKit/UIProcess/SuspendedPageProxy.cpp

    r285594 r294381  
    5454    for (auto* suspendedPage : allSuspendedPages()) {
    5555        auto& process = suspendedPage->process();
    56         if (&process.processPool() == &processPool && process.registrableDomain() == registrableDomain && &process.websiteDataStore() == &dataStore && process.crossOriginMode() != CrossOriginMode::Isolated && process.captivePortalMode() == captivePortalMode)
     56        if (&process.processPool() == &processPool && process.registrableDomain() == registrableDomain && process.websiteDataStore() == &dataStore && process.crossOriginMode() != CrossOriginMode::Isolated && process.captivePortalMode() == captivePortalMode)
    5757            return &process;
    5858    }
  • trunk/Source/WebKit/UIProcess/WebBackForwardCache.cpp

    r278318 r294381  
    135135{
    136136    removeEntriesMatching([sessionID](auto& item) {
    137         return item.backForwardCacheEntry()->process().websiteDataStore().sessionID() == sessionID;
     137        auto* dataStore = item.backForwardCacheEntry()->process().websiteDataStore();
     138        return dataStore && dataStore->sessionID() == sessionID;
    138139    });
    139140}
  • trunk/Source/WebKit/UIProcess/WebLockRegistryProxy.cpp

    r293329 r294381  
    3333#include "WebsiteDataStore.h"
    3434#include <WebCore/WebLockIdentifier.h>
     35#include <WebCore/WebLockManagerSnapshot.h>
    3536#include <WebCore/WebLockRegistry.h>
    3637
     
    5657    m_hasEverRequestedLocks = true;
    5758
    58     m_process.websiteDataStore().webLockRegistry().requestLock(m_process.sessionID(), WTFMove(clientOrigin), lockIdentifier, clientID, WTFMove(name), lockMode, steal, ifAvailable, [weakThis = WeakPtr { *this }, lockIdentifier, clientID](bool success) {
     59    auto* dataStore = m_process.websiteDataStore();
     60    if (!dataStore) {
     61        m_process.send(Messages::RemoteWebLockRegistry::DidCompleteLockRequest(lockIdentifier, clientID, false), 0);
     62        return;
     63    }
     64
     65    dataStore->webLockRegistry().requestLock(m_process.sessionID(), WTFMove(clientOrigin), lockIdentifier, clientID, WTFMove(name), lockMode, steal, ifAvailable, [weakThis = WeakPtr { *this }, lockIdentifier, clientID](bool success) {
    5966        if (weakThis)
    6067            weakThis->m_process.send(Messages::RemoteWebLockRegistry::DidCompleteLockRequest(lockIdentifier, clientID, success), 0);
     
    6976    MESSAGE_CHECK(lockIdentifier.processIdentifier() == m_process.coreProcessIdentifier());
    7077    MESSAGE_CHECK(clientID.processIdentifier() == m_process.coreProcessIdentifier());
    71     m_process.websiteDataStore().webLockRegistry().releaseLock(m_process.sessionID(), WTFMove(clientOrigin), lockIdentifier, clientID, WTFMove(name));
     78    if (auto* dataStore = m_process.websiteDataStore())
     79        dataStore->webLockRegistry().releaseLock(m_process.sessionID(), WTFMove(clientOrigin), lockIdentifier, clientID, WTFMove(name));
    7280}
    7381
     
    7684    MESSAGE_CHECK(lockIdentifier.processIdentifier() == m_process.coreProcessIdentifier());
    7785    MESSAGE_CHECK(clientID.processIdentifier() == m_process.coreProcessIdentifier());
    78     m_process.websiteDataStore().webLockRegistry().abortLockRequest(m_process.sessionID(), WTFMove(clientOrigin), lockIdentifier, clientID, WTFMove(name), WTFMove(completionHandler));
     86    auto* dataStore = m_process.websiteDataStore();
     87    if (!dataStore) {
     88        completionHandler(false);
     89        return;
     90    }
     91
     92    dataStore->webLockRegistry().abortLockRequest(m_process.sessionID(), WTFMove(clientOrigin), lockIdentifier, clientID, WTFMove(name), WTFMove(completionHandler));
    7993}
    8094
    8195void WebLockRegistryProxy::snapshot(WebCore::ClientOrigin&& clientOrigin, CompletionHandler<void(WebCore::WebLockManagerSnapshot&&)>&& completionHandler)
    8296{
    83     m_process.websiteDataStore().webLockRegistry().snapshot(m_process.sessionID(), WTFMove(clientOrigin), WTFMove(completionHandler));
     97    auto* dataStore = m_process.websiteDataStore();
     98    if (!dataStore) {
     99        completionHandler(WebCore::WebLockManagerSnapshot { });
     100        return;
     101    }
     102
     103    dataStore->webLockRegistry().snapshot(m_process.sessionID(), WTFMove(clientOrigin), WTFMove(completionHandler));
    84104}
    85105
     
    87107{
    88108    MESSAGE_CHECK(clientID.processIdentifier() == m_process.coreProcessIdentifier());
    89     m_process.websiteDataStore().webLockRegistry().clientIsGoingAway(m_process.sessionID(), WTFMove(clientOrigin), clientID);
     109    if (auto* dataStore = WebsiteDataStore::existingDataStoreForSessionID(m_process.sessionID()))
     110        dataStore->webLockRegistry().clientIsGoingAway(m_process.sessionID(), WTFMove(clientOrigin), clientID);
    90111}
    91112
    92113void WebLockRegistryProxy::processDidExit()
    93114{
    94     if (m_hasEverRequestedLocks)
    95         m_process.websiteDataStore().webLockRegistry().clientsAreGoingAway(m_process.coreProcessIdentifier());
     115    if (!m_hasEverRequestedLocks)
     116        return;
     117
     118    if (auto* dataStore = WebsiteDataStore::existingDataStoreForSessionID(m_process.sessionID()))
     119        dataStore->webLockRegistry().clientsAreGoingAway(m_process.coreProcessIdentifier());
    96120}
    97121
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r294325 r294381  
    979979    m_webPageID = provisionalPage->webPageID();
    980980    pageClient().didChangeWebPageID();
    981     m_websiteDataStore = m_process->websiteDataStore();
     981    ASSERT(m_process->websiteDataStore());
     982    m_websiteDataStore = *m_process->websiteDataStore();
    982983
    983984#if HAVE(VISIBILITY_PROPAGATION_VIEW)
     
    36253626    auto* navigation = navigationState().navigation(m_provisionalPage->navigationID());
    36263627    bool didSuspendPreviousPage = navigation && !m_provisionalPage->isProcessSwappingOnNavigationResponse() ? suspendCurrentPageIfPossible(*navigation, mainFrameIDInPreviousProcess, m_provisionalPage->processSwapRequestedByClient(), shouldDelayClosingUntilFirstLayerFlush) : false;
    3627     m_process->removeWebPage(*this, m_websiteDataStore.ptr() == &m_provisionalPage->process().websiteDataStore() ? WebProcessProxy::EndsUsingDataStore::No : WebProcessProxy::EndsUsingDataStore::Yes);
     3628    m_process->removeWebPage(*this, m_websiteDataStore.ptr() == m_provisionalPage->process().websiteDataStore() ? WebProcessProxy::EndsUsingDataStore::No : WebProcessProxy::EndsUsingDataStore::Yes);
    36283629
    36293630    // There is no way we'll be able to return to the page in the previous page so close it.
  • trunk/Source/WebKit/UIProcess/WebProcessCache.cpp

    r290291 r294381  
    7777    }
    7878
    79     auto sessionID = process.websiteDataStore().sessionID();
    80     if (sessionID.isEphemeral() && !process.processPool().hasPagesUsingWebsiteDataStore(process.websiteDataStore())) {
     79    if (!process.websiteDataStore()) {
    8180        WEBPROCESSCACHE_RELEASE_LOG("canCacheProcess: Not caching process because this session has been destroyed", process.processIdentifier());
    8281        return false;
     
    154153        return nullptr;
    155154
    156     if (&it->value->process().websiteDataStore() != &dataStore)
     155    if (it->value->process().websiteDataStore() != &dataStore)
    157156        return nullptr;
    158157
     
    213212    Vector<WebCore::RegistrableDomain> keysToRemove;
    214213    for (auto& pair : m_processesPerRegistrableDomain) {
    215         if (pair.value->process().websiteDataStore().sessionID() == sessionID) {
     214        auto* dataStore = pair.value->process().websiteDataStore();
     215        if (!dataStore || dataStore->sessionID() == sessionID) {
    216216            WEBPROCESSCACHE_RELEASE_LOG("clearAllProcessesForSession: Evicting process because its session was destroyed", pair.value->process().processIdentifier());
    217217            keysToRemove.append(pair.key);
     
    223223    Vector<uint64_t> pendingRequestsToRemove;
    224224    for (auto& pair : m_pendingAddRequests) {
    225         if (pair.value->process().websiteDataStore().sessionID() == sessionID) {
     225        auto* dataStore = pair.value->process().websiteDataStore();
     226        if (!dataStore || dataStore->sessionID() == sessionID) {
    226227            WEBPROCESSCACHE_RELEASE_LOG("clearAllProcessesForSession: Evicting process because its session was destroyed", pair.value->process().processIdentifier());
    227228            pendingRequestsToRemove.append(pair.key);
     
    277278{
    278279    RELEASE_ASSERT(!m_process->pageCount());
    279     RELEASE_ASSERT_WITH_MESSAGE(!m_process->websiteDataStore().processes().contains(*m_process), "Only processes with pages should be registered with the data store");
     280    auto* dataStore = m_process->websiteDataStore();
     281    RELEASE_ASSERT_WITH_MESSAGE(dataStore && !dataStore->processes().contains(*m_process), "Only processes with pages should be registered with the data store");
    280282    m_process->setIsInProcessCache(true);
    281283    m_evictionTimer.startOneShot(cachedProcessLifetime);
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r293829 r294381  
    577577    // Prioritize the requesting WebProcess for running the service worker.
    578578    if (!remoteWorkerProcessProxy && !s_useSeparateServiceWorkerProcess && requestingProcess) {
    579         if (&requestingProcess->websiteDataStore() == websiteDataStore && requestingProcess->isMatchingRegistrableDomain(registrableDomain))
     579        if (requestingProcess->websiteDataStore() == websiteDataStore && requestingProcess->isMatchingRegistrableDomain(registrableDomain))
    580580            useProcessForRemoteWorkers(*requestingProcess);
    581581    }
     
    585585            if (process.ptr() == processPool->m_prewarmedProcess.get() || process->isDummyProcessProxy())
    586586                continue;
    587             if (&process->websiteDataStore() != websiteDataStore)
     587            if (process->websiteDataStore() != websiteDataStore)
    588588                continue;
    589589            if (!process->isMatchingRegistrableDomain(registrableDomain))
     
    10931093                continue;
    10941094#endif
    1095             if (mustMatchDataStore && &process->websiteDataStore() != &websiteDataStore)
     1095            if (mustMatchDataStore && process->websiteDataStore() != &websiteDataStore)
    10961096                continue;
    10971097            return process;
     
    11331133        process = &pageConfiguration->relatedPage()->ensureRunningProcess();
    11341134        // We do not support several WebsiteDataStores sharing a single process.
    1135         ASSERT(process->isDummyProcessProxy() || pageConfiguration->websiteDataStore() == &process->websiteDataStore());
     1135        ASSERT(process->isDummyProcessProxy() || pageConfiguration->websiteDataStore() == process->websiteDataStore());
    11361136        ASSERT(&pageConfiguration->relatedPage()->websiteDataStore() == pageConfiguration->websiteDataStore());
    11371137    } else if (!m_isDelayedWebProcessLaunchDisabled) {
     
    19831983
    19841984        if (auto* process = m_swappedProcessesPerRegistrableDomain.get(targetRegistrableDomain)) {
    1985             if (&process->websiteDataStore() == dataStore.ptr()) {
     1985            if (process->websiteDataStore() == dataStore.ptr()) {
    19861986                LOG(ProcessSwapping, "(ProcessSwapping) Reusing a previously cached process with pid %i to continue navigation to URL %s", process->processIdentifier(), targetURL.string().utf8().data());
    19871987
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp

    r293829 r294381  
    3434#include "LoadParameters.h"
    3535#include "Logging.h"
     36#include "NetworkProcessConnectionInfo.h"
    3637#include "NotificationManagerMessageHandlerMessages.h"
    3738#include "ProvisionalPageProxy.h"
     
    242243    , m_isResponsive(NoOrMaybe::Maybe)
    243244    , m_visiblePageCounter([this](RefCounterEvent) { updateBackgroundResponsivenessTimer(); })
    244     , m_websiteDataStore(websiteDataStore)
    245245#if PLATFORM(COCOA) && ENABLE(MEDIA_STREAM)
    246246    , m_userMediaCaptureManagerProxy(makeUnique<UserMediaCaptureManagerProxy>(makeUniqueRef<UIProxyForCapture>(*this)))
     
    260260    WebPasteboardProxy::singleton().addWebProcessProxy(*this);
    261261
     262    if (websiteDataStore)
     263        m_sessionID = websiteDataStore->sessionID();
    262264    platformInitialize();
    263265}
     
    347349}
    348350
     351WebsiteDataStore* WebProcessProxy::websiteDataStore() const
     352{
     353    if (!m_sessionID)
     354        return nullptr;
     355
     356    return WebsiteDataStore::existingDataStoreForSessionID(*m_sessionID);
     357}
     358
    349359void WebProcessProxy::setWebsiteDataStore(WebsiteDataStore& dataStore)
    350360{
    351     ASSERT(!m_websiteDataStore);
     361    ASSERT(!m_sessionID);
    352362    WEBPROCESSPROXY_RELEASE_LOG(Process, "setWebsiteDataStore() dataStore=%p, sessionID=%" PRIu64, &dataStore, dataStore.sessionID().toUInt64());
    353     m_websiteDataStore = &dataStore;
     363    m_sessionID = dataStore.sessionID();
    354364    updateRegistrationWithDataStore();
    355365    send(Messages::WebProcess::SetWebsiteDataStoreParameters(processPool().webProcessDataStoreParameters(*this, dataStore)), 0);
     
    362372bool WebProcessProxy::isDummyProcessProxy() const
    363373{
    364     return m_websiteDataStore && processPool().dummyProcessProxy(m_websiteDataStore->sessionID()) == this;
     374    return m_sessionID && processPool().dummyProcessProxy(*m_sessionID) == this;
    365375}
    366376
    367377void WebProcessProxy::updateRegistrationWithDataStore()
    368378{
    369     if (!m_websiteDataStore)
    370         return;
    371    
    372     bool shouldBeRegistered = pageCount() || provisionalPageCount();
    373     if (shouldBeRegistered)
    374         m_websiteDataStore->registerProcess(*this);
    375     else
    376         m_websiteDataStore->unregisterProcess(*this);
     379    if (auto* dataStore = websiteDataStore()) {
     380        if (pageCount() || provisionalPageCount())
     381            dataStore->registerProcess(*this);
     382        else
     383            dataStore->unregisterProcess(*this);
     384    }
    377385}
    378386
     
    597605    ASSERT(!globalPageMap().contains(webPage.identifier()));
    598606    RELEASE_ASSERT(!m_isInProcessCache);
    599     ASSERT(!m_websiteDataStore || m_websiteDataStore == &webPage.websiteDataStore());
     607    ASSERT(!m_sessionID || websiteDataStore() == &webPage.websiteDataStore());
    600608
    601609    if (beginsUsingDataStore == BeginsUsingDataStore::Yes) {
     
    816824void WebProcessProxy::getNetworkProcessConnection(Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply&& reply)
    817825{
    818     websiteDataStore().getNetworkProcessConnection(*this, WTFMove(reply));
     826    auto* dataStore = websiteDataStore();
     827    if (!dataStore)
     828        return reply({ });
     829
     830    dataStore->getNetworkProcessConnection(*this, WTFMove(reply));
    819831}
    820832
     
    17021714
    17031715    auto registrableDomain = WebCore::RegistrableDomain { url };
    1704     if (m_registrableDomain && *m_registrableDomain != registrableDomain) {
     1716    auto* dataStore = websiteDataStore();
     1717    if (dataStore && m_registrableDomain && *m_registrableDomain != registrableDomain) {
    17051718        if (isRunningServiceWorkers())
    1706             websiteDataStore().networkProcess().terminateRemoteWorkerContextConnectionWhenPossible(RemoteWorkerType::ServiceWorker, websiteDataStore().sessionID(), *m_registrableDomain, coreProcessIdentifier());
     1719            dataStore->networkProcess().terminateRemoteWorkerContextConnectionWhenPossible(RemoteWorkerType::ServiceWorker, dataStore->sessionID(), *m_registrableDomain, coreProcessIdentifier());
    17071720        if (isRunningSharedWorkers())
    1708             websiteDataStore().networkProcess().terminateRemoteWorkerContextConnectionWhenPossible(RemoteWorkerType::SharedWorker, websiteDataStore().sessionID(), *m_registrableDomain, coreProcessIdentifier());
     1721            dataStore->networkProcess().terminateRemoteWorkerContextConnectionWhenPossible(RemoteWorkerType::SharedWorker, dataStore->sessionID(), *m_registrableDomain, coreProcessIdentifier());
    17091722
    17101723        // Null out registrable domain since this process has now been used for several domains.
     
    17531766PAL::SessionID WebProcessProxy::sessionID() const
    17541767{
    1755     ASSERT(m_websiteDataStore);
    1756     return m_websiteDataStore->sessionID();
     1768    ASSERT(m_sessionID);
     1769    return *m_sessionID;
    17571770}
    17581771
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.h

    r293829 r294381  
    168168    void disableRemoteWorkers(RemoteWorkerType);
    169169
    170     WebsiteDataStore& websiteDataStore() const { ASSERT(m_websiteDataStore); return *m_websiteDataStore; }
     170    WebsiteDataStore* websiteDataStore() const;
    171171    void setWebsiteDataStore(WebsiteDataStore&);
    172172   
     
    618618
    619619    VisibleWebPageCounter m_visiblePageCounter;
    620 
    621     RefPtr<WebsiteDataStore> m_websiteDataStore;
     620    std::optional<PAL::SessionID> m_sessionID;
    622621
    623622    bool m_isUnderMemoryPressure { false };
  • trunk/Source/WebKit/UIProcess/glib/WebProcessProxyGLib.cpp

    r292408 r294381  
    4343
    4444    if (m_processPool->sandboxEnabled()) {
    45         WebsiteDataStore* dataStore = m_websiteDataStore.get();
     45        WebsiteDataStore* dataStore = websiteDataStore();
    4646        if (!dataStore) {
    4747            // Prewarmed processes don't have a WebsiteDataStore yet, so use the primary WebsiteDataStore from the WebProcessPool.
Note: See TracChangeset for help on using the changeset viewer.