/* 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&& 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 Create(WorkerPrivate* aWorkerPrivate, RefPtr aPromise, RefPtr aSignalImpl, RefPtr aObserver); FetchChild(RefPtr&& aPromise, RefPtr&& aSignalImpl, RefPtr&& aObserver); // AbortFollower void RunAbortAlgorithm() override; void DoFetchOp(const FetchOpArgs& aArgs); void SetOriginStack(UniquePtr&& aStack) { MOZ_ASSERT(!mOriginStack); mOriginStack = std::move(aStack); } private: ~FetchChild() = default; // WorkerPrivate shutdown callback. void Shutdown(); void ActorDestroy(ActorDestroyReason aReason) override; RefPtr mWorkerRef; RefPtr mPromise; RefPtr mSignalImpl; RefPtr mFetchObserver; UniquePtr mOriginStack; nsCOMPtr mCSPEventListener; nsCOMPtr mReporter; FlippedOnce mIsShutdown; nsCOMPtr mWorkerChannelInfo; }; } // namespace mozilla::dom #endif