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 ServiceWorkerContainerClient_h 6 #define ServiceWorkerContainerClient_h 7 8 #include "core/dom/DocumentSupplementable.h" 9 #include "core/workers/WorkerClients.h" 10 #include "wtf/Forward.h" 11 12 namespace blink { 13 14 class ExecutionContext; 15 class WebServiceWorkerProvider; 16 17 // This mainly exists to provide access to WebServiceWorkerProvider. 18 // Owned by Document (or WorkerClients). 19 class ServiceWorkerContainerClient FINAL 20 : public NoBaseWillBeGarbageCollectedFinalized<ServiceWorkerContainerClient> 21 , public DocumentSupplement 22 , public WillBeHeapSupplement<WorkerClients> { 23 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(ServiceWorkerContainerClient); 24 WTF_MAKE_NONCOPYABLE(ServiceWorkerContainerClient); 25 public: 26 static PassOwnPtrWillBeRawPtr<ServiceWorkerContainerClient> create(PassOwnPtr<WebServiceWorkerProvider>); 27 virtual ~ServiceWorkerContainerClient(); 28 29 WebServiceWorkerProvider* provider() { return m_provider.get(); } 30 31 static const char* supplementName(); 32 static ServiceWorkerContainerClient* from(ExecutionContext*); 33 34 virtual void trace(Visitor* visitor) OVERRIDE 35 { 36 DocumentSupplement::trace(visitor); 37 WillBeHeapSupplement<WorkerClients>::trace(visitor); 38 } 39 40 protected: 41 explicit ServiceWorkerContainerClient(PassOwnPtr<WebServiceWorkerProvider>); 42 43 OwnPtr<WebServiceWorkerProvider> m_provider; 44 }; 45 46 void provideServiceWorkerContainerClientToWorker(WorkerClients*, PassOwnPtr<WebServiceWorkerProvider>); 47 48 } // namespace blink 49 50 #endif // ServiceWorkerContainerClient_h 51