Changeset 230500 in webkit


Ignore:
Timestamp:
Apr 10, 2018 4:19:53 PM (6 years ago)
Author:
Chris Dumez
Message:

Avoid constructing a service worker RegistrationStore for private sessions
https://bugs.webkit.org/show_bug.cgi?id=184463
<rdar://problem/36613948>

Reviewed by Youenn Fablet.

Avoid constructing a service worker RegistrationStore for private sessions since there
is no need for persistence and the registrationDatabaseDirectory is the empty string in
such cases.

Source/WebCore:

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::removeRegistration):
(WebCore::SWServer::clearAll):
(WebCore::SWServer::clear):
(WebCore::SWServer::SWServer):
(WebCore::SWServer::didFinishActivation):

  • workers/service/server/SWServer.h:

Source/WebKit:

  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::initializeWebsiteDataStore):

Location:
trunk/Source
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r230498 r230500  
     12018-04-10  Chris Dumez  <cdumez@apple.com>
     2
     3        Avoid constructing a service worker RegistrationStore for private sessions
     4        https://bugs.webkit.org/show_bug.cgi?id=184463
     5        <rdar://problem/36613948>
     6
     7        Reviewed by Youenn Fablet.
     8
     9        Avoid constructing a service worker RegistrationStore for private sessions since there
     10        is no need for persistence and the registrationDatabaseDirectory is the empty string in
     11        such cases.
     12
     13        * workers/service/server/SWServer.cpp:
     14        (WebCore::SWServer::removeRegistration):
     15        (WebCore::SWServer::clearAll):
     16        (WebCore::SWServer::clear):
     17        (WebCore::SWServer::SWServer):
     18        (WebCore::SWServer::didFinishActivation):
     19        * workers/service/server/SWServer.h:
     20
    1212018-04-10  Chris Dumez  <cdumez@apple.com>
    222
  • trunk/Source/WebCore/workers/service/server/SWServer.cpp

    r229979 r230500  
    166166
    167167    m_originStore->remove(topOrigin);
    168     m_registrationStore.removeRegistration(*registration);
     168    if (m_registrationStore)
     169        m_registrationStore->removeRegistration(*registration);
    169170}
    170171
     
    203204    m_pendingContextDatas.clear();
    204205    m_originStore->clearAll();
    205     m_registrationStore.clearAll(WTFMove(completionHandler));
     206    if (m_registrationStore)
     207        m_registrationStore->clearAll(WTFMove(completionHandler));
    206208}
    207209
     
    241243        registration->clear();
    242244
    243     m_registrationStore.flushChanges(WTFMove(completionHandler));
     245    if (m_registrationStore)
     246        m_registrationStore->flushChanges(WTFMove(completionHandler));
    244247}
    245248
     
    272275SWServer::SWServer(UniqueRef<SWOriginStore>&& originStore, String&& registrationDatabaseDirectory, PAL::SessionID sessionID)
    273276    : m_originStore(WTFMove(originStore))
    274     , m_registrationStore(*this, WTFMove(registrationDatabaseDirectory))
    275277    , m_sessionID(sessionID)
    276278{
     279    ASSERT(!registrationDatabaseDirectory.isEmpty() || m_sessionID.isEphemeral());
     280    if (!m_sessionID.isEphemeral())
     281        m_registrationStore = std::make_unique<RegistrationStore>(*this, WTFMove(registrationDatabaseDirectory));
     282    else
     283        registrationStoreImportComplete();
     284
    277285    UNUSED_PARAM(registrationDatabaseDirectory);
    278286    allServers().add(this);
     
    407415        return;
    408416
    409     m_registrationStore.updateRegistration(worker.contextData());
     417    if (m_registrationStore)
     418        m_registrationStore->updateRegistration(worker.contextData());
    410419    registration->didFinishActivation(worker.identifier());
    411420}
  • trunk/Source/WebCore/workers/service/server/SWServer.h

    r229979 r230500  
    3030#include "ClientOrigin.h"
    3131#include "DocumentIdentifier.h"
    32 #include "RegistrationStore.h"
    3332#include "SWServerWorker.h"
    3433#include "SecurityOriginData.h"
     
    5049namespace WebCore {
    5150
     51class RegistrationStore;
    5252class SWOriginStore;
    5353class SWServerJobQueue;
     
    229229
    230230    UniqueRef<SWOriginStore> m_originStore;
    231     RegistrationStore m_registrationStore;
     231    std::unique_ptr<RegistrationStore> m_registrationStore;
    232232    HashMap<SecurityOriginData, Vector<ServiceWorkerContextData>> m_pendingContextDatas;
    233233    HashMap<SecurityOriginData, HashMap<ServiceWorkerIdentifier, Vector<RunServiceWorkerCallback>>> m_serviceWorkerRunRequests;
  • trunk/Source/WebCore/workers/service/server/SWServerWorker.h

    r229979 r230500  
    2828#if ENABLE(SERVICE_WORKER)
    2929
     30#include "ContentSecurityPolicyResponseHeaders.h"
    3031#include "ServiceWorkerClientData.h"
    3132#include "ServiceWorkerData.h"
  • trunk/Source/WebKit/ChangeLog

    r230497 r230500  
     12018-04-10  Chris Dumez  <cdumez@apple.com>
     2
     3        Avoid constructing a service worker RegistrationStore for private sessions
     4        https://bugs.webkit.org/show_bug.cgi?id=184463
     5        <rdar://problem/36613948>
     6
     7        Reviewed by Youenn Fablet.
     8
     9        Avoid constructing a service worker RegistrationStore for private sessions since there
     10        is no need for persistence and the registrationDatabaseDirectory is the empty string in
     11        such cases.
     12
     13        * StorageProcess/StorageProcess.cpp:
     14        (WebKit::StorageProcess::initializeWebsiteDataStore):
     15
    1162018-04-10  Andy Estes  <aestes@apple.com>
    217
  • trunk/Source/WebKit/StorageProcess/StorageProcess.cpp

    r230035 r230500  
    195195    if (addResult.isNewEntry) {
    196196        SandboxExtension::consumePermanently(parameters.indexedDatabaseDirectoryExtensionHandle);
    197         postStorageTask(createCrossThreadTask(*this, &StorageProcess::ensurePathExists, parameters.indexedDatabaseDirectory));
     197        if (!parameters.indexedDatabaseDirectory.isEmpty())
     198            postStorageTask(createCrossThreadTask(*this, &StorageProcess::ensurePathExists, parameters.indexedDatabaseDirectory));
    198199    }
    199200#endif
     
    207208    if (addResult.isNewEntry) {
    208209        SandboxExtension::consumePermanently(parameters.serviceWorkerRegistrationDirectoryExtensionHandle);
    209         postStorageTask(createCrossThreadTask(*this, &StorageProcess::ensurePathExists, parameters.serviceWorkerRegistrationDirectory));
     210        if (!parameters.serviceWorkerRegistrationDirectory.isEmpty())
     211            postStorageTask(createCrossThreadTask(*this, &StorageProcess::ensurePathExists, parameters.serviceWorkerRegistrationDirectory));
    210212    }
    211213
Note: See TracChangeset for help on using the changeset viewer.