Changeset 223964 in webkit


Ignore:
Timestamp:
Oct 25, 2017 11:28:54 AM (7 years ago)
Author:
Chris Dumez
Message:

Add support for unregistering a service worker
https://bugs.webkit.org/show_bug.cgi?id=178735

Reviewed by Brady Eidson.

Source/WebCore:

Add support for unregistering a service worker:

Test: http/tests/workers/service/basic-unregister.https.html

  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::addRegistration):
(WebCore::ServiceWorkerContainer::removeRegistration):
(WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult):

  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerJob.cpp:

(WebCore::ServiceWorkerJob::resolvedWithUnregistrationResult):

  • workers/service/ServiceWorkerJob.h:
  • workers/service/ServiceWorkerJobClient.h:
  • workers/service/ServiceWorkerJobData.h:

(WebCore::ServiceWorkerJobData::encode const):
(WebCore::ServiceWorkerJobData::decode):

  • workers/service/ServiceWorkerJobType.h:
  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::containerForScriptExecutionContext):
(WebCore::ServiceWorkerRegistration::unregister):

  • workers/service/server/SWClientConnection.cpp:

(WebCore::SWClientConnection::registrationJobResolvedInServer):
(WebCore::SWClientConnection::unregistrationJobResolvedInServer):

  • workers/service/server/SWClientConnection.h:
  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::resolveRegistationJob):
(WebCore::SWServer::resolveUnregistrationJob):

  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerRegistration.cpp:

(WebCore::SWServerRegistration::scriptContextStarted):
(WebCore::SWServerRegistration::startNextJob):
(WebCore::SWServerRegistration::runUnregisterJob):
(WebCore::SWServerRegistration::resolveWithRegistrationOnMainThread):
(WebCore::SWServerRegistration::resolveWithUnregistrationResultOnMainThread):
(WebCore::SWServerRegistration::resolveCurrentRegistrationJob):
(WebCore::SWServerRegistration::resolveCurrentUnregistrationJob):

  • workers/service/server/SWServerRegistration.h:

Source/WebKit:

Add support for unregistering a service worker:

  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
(WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h:
  • WebProcess/Storage/WebSWClientConnection.messages.in:

LayoutTests:

Add layout test coverage.

  • http/tests/workers/service/basic-unregister.https-expected.txt: Added.
  • http/tests/workers/service/basic-unregister.https.html: Added.
  • http/tests/workers/service/resources/basic-unregister.js: Added.
Location:
trunk
Files:
3 added
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r223962 r223964  
     12017-10-25  Chris Dumez  <cdumez@apple.com>
     2
     3        Add support for unregistering a service worker
     4        https://bugs.webkit.org/show_bug.cgi?id=178735
     5
     6        Reviewed by Brady Eidson.
     7
     8        Add layout test coverage.
     9
     10        * http/tests/workers/service/basic-unregister.https-expected.txt: Added.
     11        * http/tests/workers/service/basic-unregister.https.html: Added.
     12        * http/tests/workers/service/resources/basic-unregister.js: Added.
     13
    1142017-10-25  Andy Estes  <aestes@apple.com>
    215
  • trunk/Source/WebCore/ChangeLog

    r223963 r223964  
     12017-10-25  Chris Dumez  <cdumez@apple.com>
     2
     3        Add support for unregistering a service worker
     4        https://bugs.webkit.org/show_bug.cgi?id=178735
     5
     6        Reviewed by Brady Eidson.
     7
     8        Add support for unregistering a service worker:
     9        - https://w3c.github.io/ServiceWorker/#navigator-service-worker-unregister
     10
     11        Test: http/tests/workers/service/basic-unregister.https.html
     12
     13        * workers/service/ServiceWorkerContainer.cpp:
     14        (WebCore::ServiceWorkerContainer::addRegistration):
     15        (WebCore::ServiceWorkerContainer::removeRegistration):
     16        (WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult):
     17        * workers/service/ServiceWorkerContainer.h:
     18        * workers/service/ServiceWorkerJob.cpp:
     19        (WebCore::ServiceWorkerJob::resolvedWithUnregistrationResult):
     20        * workers/service/ServiceWorkerJob.h:
     21        * workers/service/ServiceWorkerJobClient.h:
     22        * workers/service/ServiceWorkerJobData.h:
     23        (WebCore::ServiceWorkerJobData::encode const):
     24        (WebCore::ServiceWorkerJobData::decode):
     25        * workers/service/ServiceWorkerJobType.h:
     26        * workers/service/ServiceWorkerRegistration.cpp:
     27        (WebCore::containerForScriptExecutionContext):
     28        (WebCore::ServiceWorkerRegistration::unregister):
     29        * workers/service/server/SWClientConnection.cpp:
     30        (WebCore::SWClientConnection::registrationJobResolvedInServer):
     31        (WebCore::SWClientConnection::unregistrationJobResolvedInServer):
     32        * workers/service/server/SWClientConnection.h:
     33        * workers/service/server/SWServer.cpp:
     34        (WebCore::SWServer::resolveRegistationJob):
     35        (WebCore::SWServer::resolveUnregistrationJob):
     36        * workers/service/server/SWServer.h:
     37        * workers/service/server/SWServerRegistration.cpp:
     38        (WebCore::SWServerRegistration::scriptContextStarted):
     39        (WebCore::SWServerRegistration::startNextJob):
     40        (WebCore::SWServerRegistration::runUnregisterJob):
     41        (WebCore::SWServerRegistration::resolveWithRegistrationOnMainThread):
     42        (WebCore::SWServerRegistration::resolveWithUnregistrationResultOnMainThread):
     43        (WebCore::SWServerRegistration::resolveCurrentRegistrationJob):
     44        (WebCore::SWServerRegistration::resolveCurrentUnregistrationJob):
     45        * workers/service/server/SWServerRegistration.h:
     46
    1472017-10-25  Simon Fraser  <simon.fraser@apple.com>
    248
  • trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp

    r223922 r223964  
    9191    if (!context || !context->sessionID().isValid()) {
    9292        ASSERT_NOT_REACHED();
    93         return;
    94     }
    95 
    96     if (!m_swConnection)
    97         m_swConnection = &ServiceWorkerProvider::singleton().serviceWorkerConnectionForSession(context->sessionID());
     93        promise->reject(Exception(InvalidStateError));
     94        return;
     95    }
    9896
    9997    if (relativeScriptURL.isEmpty()) {
     
    10199        return;
    102100    }
     101
     102    if (!m_swConnection)
     103        m_swConnection = &ServiceWorkerProvider::singleton().serviceWorkerConnectionForSession(scriptExecutionContext()->sessionID());
    103104
    104105    ServiceWorkerJobData jobData(m_swConnection->identifier());
     
    145146}
    146147
     148void ServiceWorkerContainer::removeRegistration(const URL& scopeURL, Ref<DeferredPromise>&& promise)
     149{
     150    auto* context = scriptExecutionContext();
     151    if (!context || !context->sessionID().isValid()) {
     152        ASSERT_NOT_REACHED();
     153        promise->reject(Exception(InvalidStateError));
     154        return;
     155    }
     156
     157    if (!m_swConnection) {
     158        ASSERT_NOT_REACHED();
     159        promise->reject(Exception(InvalidStateError));
     160        return;
     161    }
     162
     163    ServiceWorkerJobData jobData(m_swConnection->identifier());
     164    jobData.clientCreationURL = context->url();
     165    jobData.topOrigin = SecurityOriginData::fromSecurityOrigin(context->topOrigin());
     166    jobData.type = ServiceWorkerJobType::Unregister;
     167    jobData.scopeURL = scopeURL;
     168
     169    scheduleJob(ServiceWorkerJob::create(*this, WTFMove(promise), WTFMove(jobData)));
     170}
     171
    147172void ServiceWorkerContainer::scheduleJob(Ref<ServiceWorkerJob>&& job)
    148173{
     
    193218    auto registration = ServiceWorkerRegistration::create(*context, WTFMove(data));
    194219    job.promise().resolve<IDLInterface<ServiceWorkerRegistration>>(registration.get());
     220}
     221
     222void ServiceWorkerContainer::jobResolvedWithUnregistrationResult(ServiceWorkerJob& job, bool unregistrationResult)
     223{
     224    ScopeGuard guard([this, &job] {
     225        jobDidFinish(job);
     226    });
     227
     228    auto* context = scriptExecutionContext();
     229    if (!context) {
     230        LOG_ERROR("ServiceWorkerContainer::jobResolvedWithUnregistrationResult called but the containers ScriptExecutionContext is gone");
     231        return;
     232    }
     233
     234    // FIXME: Implement proper selection of service workers.
     235    if (unregistrationResult)
     236        context->setSelectedServiceWorkerIdentifier(0);
     237
     238    job.promise().resolve<IDLBoolean>(unregistrationResult);
    195239}
    196240
  • trunk/Source/WebCore/workers/service/ServiceWorkerContainer.h

    r223922 r223964  
    6161
    6262    void addRegistration(const String& scriptURL, const RegistrationOptions&, Ref<DeferredPromise>&&);
     63    void removeRegistration(const URL& scopeURL, Ref<DeferredPromise>&&);
    6364    void getRegistration(const String& url, Ref<DeferredPromise>&&);
    6465    void getRegistrations(Ref<DeferredPromise>&&);
     
    7475    void jobFailedWithException(ServiceWorkerJob&, const Exception&) final;
    7576    void jobResolvedWithRegistration(ServiceWorkerJob&, ServiceWorkerRegistrationData&&) final;
     77    void jobResolvedWithUnregistrationResult(ServiceWorkerJob&, bool unregistrationResult) final;
    7678    void startScriptFetchForJob(ServiceWorkerJob&) final;
    7779    void jobFinishedLoadingScript(ServiceWorkerJob&, const String&) final;
  • trunk/Source/WebCore/workers/service/ServiceWorkerJob.cpp

    r223652 r223964  
    6767}
    6868
     69void ServiceWorkerJob::resolvedWithUnregistrationResult(bool unregistrationResult)
     70{
     71    ASSERT(currentThread() == m_creationThread);
     72    ASSERT(!m_completed);
     73
     74    m_completed = true;
     75    m_client->jobResolvedWithUnregistrationResult(*this, unregistrationResult);
     76}
     77
    6978void ServiceWorkerJob::startScriptFetch()
    7079{
  • trunk/Source/WebCore/workers/service/ServiceWorkerJob.h

    r223944 r223964  
    5757    void failedWithException(const Exception&);
    5858    void resolvedWithRegistration(ServiceWorkerRegistrationData&&);
     59    void resolvedWithUnregistrationResult(bool);
    5960    void startScriptFetch();
    6061
  • trunk/Source/WebCore/workers/service/ServiceWorkerJobClient.h

    r223728 r223964  
    4242    virtual void jobFailedWithException(ServiceWorkerJob&, const Exception&) = 0;
    4343    virtual void jobResolvedWithRegistration(ServiceWorkerJob&, ServiceWorkerRegistrationData&&) = 0;
     44    virtual void jobResolvedWithUnregistrationResult(ServiceWorkerJob&, bool unregistrationResult) = 0;
    4445    virtual void startScriptFetchForJob(ServiceWorkerJob&) = 0;
    4546    virtual void jobFinishedLoadingScript(ServiceWorkerJob&, const String&) = 0;
  • trunk/Source/WebCore/workers/service/ServiceWorkerJobData.h

    r222233 r223964  
    7474        encoder << registrationOptions;
    7575        break;
     76    case ServiceWorkerJobType::Unregister:
     77        break;
    7678    }
    7779}
     
    111113            return std::nullopt;
    112114        break;
     115    case ServiceWorkerJobType::Unregister:
     116        break;
    113117    }
    114118
  • trunk/Source/WebCore/workers/service/ServiceWorkerJobType.h

    r220924 r223964  
    3232enum class ServiceWorkerJobType {
    3333    Register,
     34    Unregister,
    3435};
    3536
  • trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.cpp

    r223652 r223964  
    2828
    2929#if ENABLE(SERVICE_WORKER)
     30#include "DOMWindow.h"
     31#include "Document.h"
     32#include "Navigator.h"
     33#include "ServiceWorkerContainer.h"
     34#include "WorkerGlobalScope.h"
     35#include "WorkerNavigator.h"
    3036
    3137namespace WebCore {
     38
     39static ServiceWorkerContainer* containerForScriptExecutionContext(ScriptExecutionContext& context)
     40{
     41    NavigatorBase* navigator = nullptr;
     42    if (is<Document>(context)) {
     43        if (auto* window = downcast<Document>(context).domWindow())
     44            navigator = window->navigator();
     45    } else
     46        navigator = &downcast<WorkerGlobalScope>(context).navigator();
     47
     48    return navigator ? navigator->serviceWorker() : nullptr;
     49}
    3250
    3351ServiceWorkerRegistration::ServiceWorkerRegistration(ScriptExecutionContext& context, ServiceWorkerRegistrationData&& registrationData)
     
    7088void ServiceWorkerRegistration::unregister(Ref<DeferredPromise>&& promise)
    7189{
    72     promise->reject(Exception(NotSupportedError, ASCIILiteral("ServiceWorkerRegistration::unregister not yet implemented")));
     90    auto* context = scriptExecutionContext();
     91    if (!context) {
     92        ASSERT_NOT_REACHED();
     93        promise->reject(Exception(InvalidStateError));
     94        return;
     95    }
     96
     97    auto* container = containerForScriptExecutionContext(*context);
     98    if (!container) {
     99        promise->reject(Exception(InvalidStateError));
     100        return;
     101    }
     102
     103    container->removeRegistration(m_registrationData.scopeURL, WTFMove(promise));
    73104}
    74105
  • trunk/Source/WebCore/workers/service/server/SWClientConnection.cpp

    r223728 r223964  
    7272}
    7373
    74 void SWClientConnection::jobResolvedInServer(uint64_t jobIdentifier, ServiceWorkerRegistrationData&& registrationData)
     74void SWClientConnection::registrationJobResolvedInServer(uint64_t jobIdentifier, ServiceWorkerRegistrationData&& registrationData)
    7575{
    7676    auto job = m_scheduledJobs.take(jobIdentifier);
     
    8181
    8282    job->resolvedWithRegistration(WTFMove(registrationData));
     83}
     84
     85void SWClientConnection::unregistrationJobResolvedInServer(uint64_t jobIdentifier, bool unregistrationResult)
     86{
     87    auto job = m_scheduledJobs.take(jobIdentifier);
     88    if (!job) {
     89        LOG_ERROR("Job %" PRIu64 " resolved in server, but was not found", jobIdentifier);
     90        return;
     91    }
     92
     93    job->resolvedWithUnregistrationResult(unregistrationResult);
    8394}
    8495
  • trunk/Source/WebCore/workers/service/server/SWClientConnection.h

    r223922 r223964  
    5757protected:
    5858    WEBCORE_EXPORT void jobRejectedInServer(uint64_t jobIdentifier, const ExceptionData&);
    59     WEBCORE_EXPORT void jobResolvedInServer(uint64_t jobIdentifier, ServiceWorkerRegistrationData&&);
     59    WEBCORE_EXPORT void registrationJobResolvedInServer(uint64_t jobIdentifier, ServiceWorkerRegistrationData&&);
     60    WEBCORE_EXPORT void unregistrationJobResolvedInServer(uint64_t jobIdentifier, bool unregistrationResult);
    6061    WEBCORE_EXPORT void startScriptFetchForServer(uint64_t jobIdentifier);
    6162
  • trunk/Source/WebCore/workers/service/server/SWServer.cpp

    r223608 r223964  
    122122}
    123123
    124 void SWServer::resolveJob(const ServiceWorkerJobData& jobData, const ServiceWorkerRegistrationData& registrationData)
     124void SWServer::resolveRegistrationJob(const ServiceWorkerJobData& jobData, const ServiceWorkerRegistrationData& registrationData)
    125125{
    126126    LOG(ServiceWorker, "Resolved ServiceWorker job %" PRIu64 "-%" PRIu64 " in server with registration %" PRIu64, jobData.connectionIdentifier(), jobData.identifier(), registrationData.identifier);
     
    129129        return;
    130130
    131     connection->resolveJobInClient(jobData.identifier(), registrationData);
     131    connection->resolveRegistrationJobInClient(jobData.identifier(), registrationData);
     132}
     133
     134void SWServer::resolveUnregistrationJob(const ServiceWorkerJobData& jobData, const ServiceWorkerRegistrationKey& registrationKey, bool unregistrationResult)
     135{
     136    auto* connection = m_connections.get(jobData.connectionIdentifier());
     137    if (!connection)
     138        return;
     139
     140    connection->resolveUnregistrationJobInClient(jobData.identifier(), registrationKey, unregistrationResult);
    132141}
    133142
  • trunk/Source/WebCore/workers/service/server/SWServer.h

    r223608 r223964  
    6868        // Messages to the client WebProcess
    6969        virtual void rejectJobInClient(uint64_t jobIdentifier, const ExceptionData&) = 0;
    70         virtual void resolveJobInClient(uint64_t jobIdentifier, const ServiceWorkerRegistrationData&) = 0;
     70        virtual void resolveRegistrationJobInClient(uint64_t jobIdentifier, const ServiceWorkerRegistrationData&) = 0;
     71        virtual void resolveUnregistrationJobInClient(uint64_t jobIdentifier, const ServiceWorkerRegistrationKey&, bool registrationResult) = 0;
    7172        virtual void startScriptFetchInClient(uint64_t jobIdentifier) = 0;
    7273
     
    8283    void scheduleJob(const ServiceWorkerJobData&);
    8384    void rejectJob(const ServiceWorkerJobData&, const ExceptionData&);
    84     void resolveJob(const ServiceWorkerJobData&, const ServiceWorkerRegistrationData&);
     85    void resolveRegistrationJob(const ServiceWorkerJobData&, const ServiceWorkerRegistrationData&);
     86    void resolveUnregistrationJob(const ServiceWorkerJobData&, const ServiceWorkerRegistrationKey&, bool unregistrationResult);
    8587    void startScriptFetch(const ServiceWorkerJobData&);
    8688
  • trunk/Source/WebCore/workers/service/server/SWServerRegistration.cpp

    r223652 r223964  
    9898{
    9999    UNUSED_PARAM(workerID);
    100     resolveCurrentJob(ServiceWorkerRegistrationData { m_registrationKey, identifier, m_scopeURL, m_updateViaCache.value_or(ServiceWorkerUpdateViaCache::Imports) });
     100    resolveCurrentRegistrationJob(ServiceWorkerRegistrationData { m_registrationKey, identifier, m_scopeURL, m_updateViaCache.value_or(ServiceWorkerUpdateViaCache::Imports) });
    101101}
    102102
     
    112112    case ServiceWorkerJobType::Register:
    113113        m_server.postTask(createCrossThreadTask(*this, &SWServerRegistration::runRegisterJob, *m_currentJob));
     114        return;
     115    case ServiceWorkerJobType::Unregister:
     116        m_server.postTask(createCrossThreadTask(*this, &SWServerRegistration::runUnregisterJob, *m_currentJob));
    114117        return;
    115118    }
     
    174177}
    175178
     179void SWServerRegistration::runUnregisterJob(const ServiceWorkerJobData& job)
     180{
     181    // If the origin of job’s scope url is not job's client's origin, then:
     182    if (!protocolHostAndPortAreEqual(job.scopeURL, job.clientCreationURL))
     183        return rejectWithExceptionOnMainThread(ExceptionData { SecurityError, ASCIILiteral("Origin of scope URL does not match the client's origin") });
     184
     185    // Let registration be the result of running "Get Registration" algorithm passing job’s scope url as the argument.
     186    // If registration is null, then:
     187    if (isEmpty() || m_uninstalling) {
     188        // Invoke Resolve Job Promise with job and false.
     189        resolveWithUnregistrationResultOnMainThread(false);
     190        return;
     191    }
     192
     193    // Set registration’s uninstalling flag.
     194    m_uninstalling = true;
     195
     196    // Invoke Resolve Job Promise with job and true.
     197    resolveWithUnregistrationResultOnMainThread(true);
     198
     199    // FIXME: Invoke Try Clear Registration with registration.
     200}
     201
    176202void SWServerRegistration::runUpdateJob(const ServiceWorkerJobData& job)
    177203{
     
    199225{
    200226    ASSERT(!isMainThread());
    201     m_server.postTaskReply(createCrossThreadTask(*this, &SWServerRegistration::resolveCurrentJob, data()));
     227    m_server.postTaskReply(createCrossThreadTask(*this, &SWServerRegistration::resolveCurrentRegistrationJob, data()));
     228}
     229
     230void SWServerRegistration::resolveWithUnregistrationResultOnMainThread(bool unregistrationResult)
     231{
     232    ASSERT(!isMainThread());
     233    m_server.postTaskReply(createCrossThreadTask(*this, &SWServerRegistration::resolveCurrentUnregistrationJob, unregistrationResult));
    202234}
    203235
     
    218250}
    219251
    220 void SWServerRegistration::resolveCurrentJob(const ServiceWorkerRegistrationData& data)
    221 {
    222     ASSERT(isMainThread());
    223     ASSERT(m_currentJob);
    224 
    225     m_server.resolveJob(*m_currentJob, data);
     252void SWServerRegistration::resolveCurrentRegistrationJob(const ServiceWorkerRegistrationData& data)
     253{
     254    ASSERT(isMainThread());
     255    ASSERT(m_currentJob);
     256    ASSERT(m_currentJob->type == ServiceWorkerJobType::Register);
     257
     258    m_server.resolveRegistrationJob(*m_currentJob, data);
     259
     260    finishCurrentJob();
     261}
     262
     263void SWServerRegistration::resolveCurrentUnregistrationJob(bool unregistrationResult)
     264{
     265    ASSERT(isMainThread());
     266    ASSERT(m_currentJob);
     267    ASSERT(m_currentJob->type == ServiceWorkerJobType::Unregister);
     268
     269    m_server.resolveUnregistrationJob(*m_currentJob, m_registrationKey, unregistrationResult);
    226270
    227271    finishCurrentJob();
  • trunk/Source/WebCore/workers/service/server/SWServerRegistration.h

    r223608 r223964  
    5959    void startNextJob();
    6060    void rejectCurrentJob(const ExceptionData&);
    61     void resolveCurrentJob(const ServiceWorkerRegistrationData&);
     61    void resolveCurrentRegistrationJob(const ServiceWorkerRegistrationData&);
     62    void resolveCurrentUnregistrationJob(bool unregistrationResult);
    6263    void startScriptFetchForCurrentJob();
    6364    void finishCurrentJob();
    6465
    6566    void runRegisterJob(const ServiceWorkerJobData&);
     67    void runUnregisterJob(const ServiceWorkerJobData&);
    6668    void runUpdateJob(const ServiceWorkerJobData&);
    6769
    6870    void rejectWithExceptionOnMainThread(const ExceptionData&);
    6971    void resolveWithRegistrationOnMainThread();
     72    void resolveWithUnregistrationResultOnMainThread(bool);
    7073    void startScriptFetchFromMainThread();
    7174    bool isEmpty();
  • trunk/Source/WebKit/ChangeLog

    r223958 r223964  
     12017-10-25  Chris Dumez  <cdumez@apple.com>
     2
     3        Add support for unregistering a service worker
     4        https://bugs.webkit.org/show_bug.cgi?id=178735
     5
     6        Reviewed by Brady Eidson.
     7
     8        Add support for unregistering a service worker:
     9        - https://w3c.github.io/ServiceWorker/#navigator-service-worker-unregister
     10
     11        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
     12        (WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
     13        (WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):
     14        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
     15        * WebProcess/Storage/WebSWClientConnection.messages.in:
     16
    1172017-10-25  Chris Dumez  <cdumez@apple.com>
    218
  • trunk/Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.cpp

    r223922 r223964  
    7676}
    7777
    78 void WebSWServerConnection::resolveJobInClient(uint64_t jobIdentifier, const ServiceWorkerRegistrationData& registrationData)
     78void WebSWServerConnection::resolveRegistrationJobInClient(uint64_t jobIdentifier, const ServiceWorkerRegistrationData& registrationData)
    7979{
    8080    auto origin = registrationData.key.topOrigin.securityOrigin();
    8181    StorageProcess::singleton().ensureSWOriginStoreForSession(m_sessionID).add(origin);
    82     send(Messages::WebSWClientConnection::JobResolvedInServer(jobIdentifier, registrationData));
     82    send(Messages::WebSWClientConnection::RegistrationJobResolvedInServer(jobIdentifier, registrationData));
     83}
     84
     85void WebSWServerConnection::resolveUnregistrationJobInClient(uint64_t jobIdentifier, const ServiceWorkerRegistrationKey& registrationKey, bool unregistrationResult)
     86{
     87    auto origin = registrationKey.topOrigin.securityOrigin();
     88    if (auto* store = StorageProcess::singleton().swOriginStoreForSession(m_sessionID))
     89        store->remove(origin);
     90    send(Messages::WebSWClientConnection::UnregistrationJobResolvedInServer(jobIdentifier, unregistrationResult));
    8391}
    8492
  • trunk/Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h

    r223922 r223964  
    6161    // Implement SWServer::Connection (Messages to the client WebProcess)
    6262    void rejectJobInClient(uint64_t jobIdentifier, const WebCore::ExceptionData&) final;
    63     void resolveJobInClient(uint64_t jobIdentifier, const WebCore::ServiceWorkerRegistrationData&) final;
     63    void resolveRegistrationJobInClient(uint64_t jobIdentifier, const WebCore::ServiceWorkerRegistrationData&) final;
     64    void resolveUnregistrationJobInClient(uint64_t jobIdentifier, const WebCore::ServiceWorkerRegistrationKey&, bool unregistrationResult) final;
    6465    void startScriptFetchInClient(uint64_t jobIdentifier) final;
    6566
  • trunk/Source/WebKit/WebProcess/Storage/WebSWClientConnection.messages.in

    r223608 r223964  
    2626    # When possible, these messages can be implemented directly by WebCore::SWServer::Connection
    2727    JobRejectedInServer(uint64_t identifier, struct WebCore::ExceptionData exception)
    28     JobResolvedInServer(uint64_t identifier, struct WebCore::ServiceWorkerRegistrationData registration)
     28    RegistrationJobResolvedInServer(uint64_t identifier, struct WebCore::ServiceWorkerRegistrationData registration)
     29    UnregistrationJobResolvedInServer(uint64_t identifier, bool unregistrationResult)
    2930    StartScriptFetchForServer(uint64_t jobIdentifier)
    3031
Note: See TracChangeset for help on using the changeset viewer.