summaryrefslogtreecommitdiffstats
path: root/dom/fetch/FetchSignal.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/fetch/FetchSignal.h')
-rw-r--r--dom/fetch/FetchSignal.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/dom/fetch/FetchSignal.h b/dom/fetch/FetchSignal.h
index 5bb16b834..5d2f13c68 100644
--- a/dom/fetch/FetchSignal.h
+++ b/dom/fetch/FetchSignal.h
@@ -13,10 +13,29 @@ namespace mozilla {
namespace dom {
class FetchController;
+class FetchSignal;
class FetchSignal final : public DOMEventTargetHelper
{
public:
+ // This class must be implemented by objects who want to follow a FetchSignal.
+ class Follower
+ {
+ public:
+ virtual void Aborted() = 0;
+
+ protected:
+ virtual ~Follower();
+
+ void
+ Follow(FetchSignal* aSignal);
+
+ void
+ Unfollow();
+
+ RefPtr<FetchSignal> mFollowingSignal;
+ };
+
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(FetchSignal, DOMEventTargetHelper)
@@ -33,11 +52,23 @@ public:
IMPL_EVENT_HANDLER(abort);
+ void
+ AddFollower(Follower* aFollower);
+
+ void
+ RemoveFollower(Follower* aFollower);
+
+ bool
+ CanAcceptFollower(Follower* aFollower) const;
+
private:
~FetchSignal() = default;
RefPtr<FetchController> mController;
+ // Raw pointers. Follower unregisters itself in the DTOR.
+ nsTArray<Follower*> mFollowers;
+
bool mAborted;
};