summaryrefslogtreecommitdiffstats
path: root/dom/fetch/FetchSignal.h
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2020-06-10 21:33:28 +0000
committerwolfbeast <mcwerewolf@wolfbeast.com>2020-06-13 11:51:30 +0200
commit9e2da53a02356244c5dc0a3e7b7ec916740d3d51 (patch)
tree098aa27ce9fbcc0371e4f1bb52fac0f5541d7702 /dom/fetch/FetchSignal.h
parent2b41c85019bd5fd7e62556b5d5bf6ace2a6d6963 (diff)
downloadUXP-9e2da53a02356244c5dc0a3e7b7ec916740d3d51.tar
UXP-9e2da53a02356244c5dc0a3e7b7ec916740d3d51.tar.gz
UXP-9e2da53a02356244c5dc0a3e7b7ec916740d3d51.tar.lz
UXP-9e2da53a02356244c5dc0a3e7b7ec916740d3d51.tar.xz
UXP-9e2da53a02356244c5dc0a3e7b7ec916740d3d51.zip
Issue #1587 - Part 2: Implement controller follow/unfollow
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;
};