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_CHILD_SERVICE_WORKER_WEB_SERVICE_WORKER_REGISTRATION_IMPL_H_
      6 #define CONTENT_CHILD_SERVICE_WORKER_WEB_SERVICE_WORKER_REGISTRATION_IMPL_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/compiler_specific.h"
     11 #include "third_party/WebKit/public/platform/WebServiceWorkerRegistration.h"
     12 
     13 namespace blink {
     14 class WebServiceWorker;
     15 class WebServiceWorkerRegistrationProxy;
     16 }
     17 
     18 namespace content {
     19 
     20 class ServiceWorkerRegistrationHandleReference;
     21 class ThreadSafeSender;
     22 struct ServiceWorkerObjectInfo;
     23 
     24 class WebServiceWorkerRegistrationImpl
     25     : NON_EXPORTED_BASE(public blink::WebServiceWorkerRegistration) {
     26  public:
     27   explicit WebServiceWorkerRegistrationImpl(
     28       scoped_ptr<ServiceWorkerRegistrationHandleReference> handle_ref);
     29   virtual ~WebServiceWorkerRegistrationImpl();
     30 
     31   void SetInstalling(blink::WebServiceWorker* service_worker);
     32   void SetWaiting(blink::WebServiceWorker* service_worker);
     33   void SetActive(blink::WebServiceWorker* service_worker);
     34 
     35   void OnUpdateFound();
     36 
     37   // blink::WebServiceWorkerRegistration overrides.
     38   virtual void setProxy(blink::WebServiceWorkerRegistrationProxy* proxy);
     39   virtual blink::WebServiceWorkerRegistrationProxy* proxy();
     40   virtual blink::WebURL scope() const;
     41 
     42  private:
     43   enum QueuedTaskType {
     44     INSTALLING,
     45     WAITING,
     46     ACTIVE,
     47     UPDATE_FOUND,
     48   };
     49 
     50   struct QueuedTask {
     51     QueuedTask(QueuedTaskType type,
     52                blink::WebServiceWorker* worker);
     53     QueuedTaskType type;
     54     blink::WebServiceWorker* worker;
     55   };
     56 
     57   void RunQueuedTasks();
     58   void ClearQueuedTasks();
     59 
     60   scoped_ptr<ServiceWorkerRegistrationHandleReference> handle_ref_;
     61   blink::WebServiceWorkerRegistrationProxy* proxy_;
     62 
     63   std::vector<QueuedTask> queued_tasks_;
     64 
     65   DISALLOW_COPY_AND_ASSIGN(WebServiceWorkerRegistrationImpl);
     66 };
     67 
     68 }  // namespace content
     69 
     70 #endif  // CONTENT_CHILD_SERVICE_WORKER_WEB_SERVICE_WORKER_REGISTRATION_IMPL_H_
     71