Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / content / child / service_worker / web_service_worker_registration_impl.h
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_