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 12namespace blink { 13 14class ExecutionContext; 15class WebServiceWorkerProvider; 16 17// This mainly exists to provide access to WebServiceWorkerProvider. 18// Owned by Document (or WorkerClients). 19class 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); 25public: 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 40protected: 41 explicit ServiceWorkerContainerClient(PassOwnPtr<WebServiceWorkerProvider>); 42 43 OwnPtr<WebServiceWorkerProvider> m_provider; 44}; 45 46void provideServiceWorkerContainerClientToWorker(WorkerClients*, PassOwnPtr<WebServiceWorkerProvider>); 47 48} // namespace blink 49 50#endif // ServiceWorkerContainerClient_h 51