Home | History | Annotate | Download | only in serviceworkers
      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