• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
provider()29     WebServiceWorkerProvider* provider() { return m_provider.get(); }
30 
31     static const char* supplementName();
32     static ServiceWorkerContainerClient* from(ExecutionContext*);
33 
trace(Visitor * visitor)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