summaryrefslogtreecommitdiffstats
path: root/dom/fetch/FetchChild.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/fetch/FetchChild.h')
-rw-r--r--dom/fetch/FetchChild.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/dom/fetch/FetchChild.h b/dom/fetch/FetchChild.h
new file mode 100644
index 0000000000..986fc728cb
--- /dev/null
+++ b/dom/fetch/FetchChild.h
@@ -0,0 +1,91 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef mozilla_dom_fetchChild_h__
+#define mozilla_dom_fetchChild_h__
+
+#include "mozilla/dom/AbortSignal.h"
+#include "mozilla/dom/AbortFollower.h"
+#include "mozilla/dom/FlippedOnce.h"
+#include "mozilla/dom/PFetchChild.h"
+#include "mozilla/dom/SerializedStackHolder.h"
+#include "nsIConsoleReportCollector.h"
+#include "nsIContentSecurityPolicy.h"
+#include "nsISupports.h"
+#include "nsIWorkerChannelInfo.h"
+
+namespace mozilla::dom {
+
+class FetchObserver;
+class ThreadSafeWorkerRef;
+class Promise;
+class WorkerPrivate;
+
+class FetchChild final : public PFetchChild, public AbortFollower {
+ friend class PFetchChild;
+
+ public:
+ NS_DECL_THREADSAFE_ISUPPORTS
+
+ mozilla::ipc::IPCResult Recv__delete__(const nsresult&& aResult);
+
+ mozilla::ipc::IPCResult RecvOnResponseAvailableInternal(
+ ParentToChildInternalResponse&& aResponse);
+
+ mozilla::ipc::IPCResult RecvOnResponseEnd(ResponseEndArgs&& aArgs);
+
+ mozilla::ipc::IPCResult RecvOnDataAvailable();
+
+ mozilla::ipc::IPCResult RecvOnFlushConsoleReport(
+ nsTArray<net::ConsoleReportCollected>&& aReports);
+
+ mozilla::ipc::IPCResult RecvOnCSPViolationEvent(const nsAString& aJSon);
+
+ mozilla::ipc::IPCResult RecvOnReportPerformanceTiming(
+ ResponseTiming&& aTiming);
+
+ mozilla::ipc::IPCResult RecvOnNotifyNetworkMonitorAlternateStack(
+ uint64_t aChannelID);
+
+ void SetCSPEventListener(nsICSPEventListener* aListener);
+
+ static RefPtr<FetchChild> Create(WorkerPrivate* aWorkerPrivate,
+ RefPtr<Promise> aPromise,
+ RefPtr<AbortSignalImpl> aSignalImpl,
+ RefPtr<FetchObserver> aObserver);
+
+ FetchChild(RefPtr<Promise>&& aPromise, RefPtr<AbortSignalImpl>&& aSignalImpl,
+ RefPtr<FetchObserver>&& aObserver);
+
+ // AbortFollower
+ void RunAbortAlgorithm() override;
+
+ void DoFetchOp(const FetchOpArgs& aArgs);
+
+ void SetOriginStack(UniquePtr<SerializedStackHolder>&& aStack) {
+ MOZ_ASSERT(!mOriginStack);
+ mOriginStack = std::move(aStack);
+ }
+
+ private:
+ ~FetchChild() = default;
+
+ // WorkerPrivate shutdown callback.
+ void Shutdown();
+ void ActorDestroy(ActorDestroyReason aReason) override;
+
+ RefPtr<ThreadSafeWorkerRef> mWorkerRef;
+ RefPtr<Promise> mPromise;
+ RefPtr<AbortSignalImpl> mSignalImpl;
+ RefPtr<FetchObserver> mFetchObserver;
+ UniquePtr<SerializedStackHolder> mOriginStack;
+ nsCOMPtr<nsICSPEventListener> mCSPEventListener;
+ nsCOMPtr<nsIConsoleReportCollector> mReporter;
+ FlippedOnce<false> mIsShutdown;
+ nsCOMPtr<nsIWorkerChannelInfo> mWorkerChannelInfo;
+};
+
+} // namespace mozilla::dom
+
+#endif