diff options
Diffstat (limited to 'dom/fetch/FetchChild.h')
-rw-r--r-- | dom/fetch/FetchChild.h | 91 |
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 |