Home | History | Annotate | Download | only in service_worker
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_UNREGISTER_JOB_H_
      6 #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_UNREGISTER_JOB_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/memory/weak_ptr.h"
     11 #include "content/browser/service_worker/service_worker_register_job_base.h"
     12 #include "content/common/service_worker/service_worker_status_code.h"
     13 #include "url/gurl.h"
     14 
     15 namespace content {
     16 
     17 class EmbeddedWorkerRegistry;
     18 class ServiceWorkerContextCore;
     19 class ServiceWorkerJobCoordinator;
     20 class ServiceWorkerRegistration;
     21 class ServiceWorkerStorage;
     22 
     23 // Handles the unregistration of a Service Worker.
     24 //
     25 // The unregistration process is primarily cleanup, removing everything that was
     26 // created during the registration process, including the
     27 // ServiceWorkerRegistration itself.
     28 class ServiceWorkerUnregisterJob : public ServiceWorkerRegisterJobBase {
     29  public:
     30   typedef base::Callback<void(ServiceWorkerStatusCode status)>
     31       UnregistrationCallback;
     32 
     33   ServiceWorkerUnregisterJob(base::WeakPtr<ServiceWorkerContextCore> context,
     34                              const GURL& pattern);
     35   virtual ~ServiceWorkerUnregisterJob();
     36 
     37   // Registers a callback to be called when the job completes (whether
     38   // successfully or not). Multiple callbacks may be registered.
     39   void AddCallback(const UnregistrationCallback& callback);
     40 
     41   // ServiceWorkerRegisterJobBase implementation:
     42   virtual void Start() OVERRIDE;
     43   virtual void Abort() OVERRIDE;
     44   virtual bool Equals(ServiceWorkerRegisterJobBase* job) OVERRIDE;
     45   virtual RegistrationJobType GetType() OVERRIDE;
     46 
     47  private:
     48   void OnRegistrationFound(
     49       ServiceWorkerStatusCode status,
     50       const scoped_refptr<ServiceWorkerRegistration>& registration);
     51   void Complete(ServiceWorkerStatusCode status);
     52   void CompleteInternal(ServiceWorkerStatusCode status);
     53   void ResolvePromise(ServiceWorkerStatusCode status);
     54 
     55   base::WeakPtr<ServiceWorkerContextCore> context_;
     56   const GURL pattern_;
     57   std::vector<UnregistrationCallback> callbacks_;
     58   bool is_promise_resolved_;
     59   base::WeakPtrFactory<ServiceWorkerUnregisterJob> weak_factory_;
     60 
     61   DISALLOW_COPY_AND_ASSIGN(ServiceWorkerUnregisterJob);
     62 };
     63 }  // namespace content
     64 
     65 #endif  // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_UNREGISTER_JOB_H_
     66