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