1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef mozilla_dom_cache_CacheWorkerRef_h
8 #define mozilla_dom_cache_CacheWorkerRef_h
10 #include "mozilla/dom/SafeRefPtr.h"
11 #include "nsISupportsImpl.h"
14 namespace mozilla::dom
{
17 class StrongWorkerRef
;
24 class CacheWorkerRef final
: public SafeRefCounted
<CacheWorkerRef
> {
31 static SafeRefPtr
<CacheWorkerRef
> Create(WorkerPrivate
* aWorkerPrivate
,
34 static SafeRefPtr
<CacheWorkerRef
> PreferBehavior(
35 SafeRefPtr
<CacheWorkerRef
> aCurrentRef
, Behavior aBehavior
);
37 void AddActor(ActorChild
& aActor
);
38 void RemoveActor(ActorChild
& aActor
);
40 bool Notified() const;
43 struct ConstructorGuard
{};
47 nsTArray
<NotNull
<ActorChild
*>> mActorList
;
52 RefPtr
<StrongWorkerRef
> mStrongWorkerRef
;
53 RefPtr
<IPCWorkerRef
> mIPCWorkerRef
;
56 CacheWorkerRef(Behavior aBehavior
, ConstructorGuard
);
61 MOZ_DECLARE_REFCOUNTED_TYPENAME(mozilla::dom::cache::CacheWorkerRef
)
65 } // namespace mozilla::dom
67 #endif // mozilla_dom_cache_CacheWorkerRef_h