summaryrefslogtreecommitdiffstats
path: root/dom/fetch/EmptyBody.cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /dom/fetch/EmptyBody.cpp
parentInitial commit. (diff)
downloadfirefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz
firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/fetch/EmptyBody.cpp')
-rw-r--r--dom/fetch/EmptyBody.cpp84
1 files changed, 84 insertions, 0 deletions
diff --git a/dom/fetch/EmptyBody.cpp b/dom/fetch/EmptyBody.cpp
new file mode 100644
index 0000000000..18b521ac02
--- /dev/null
+++ b/dom/fetch/EmptyBody.cpp
@@ -0,0 +1,84 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* 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/. */
+
+#include "EmptyBody.h"
+
+#include "mozilla/ipc/PBackgroundSharedTypes.h"
+#include "nsStringStream.h"
+
+namespace mozilla::dom {
+
+NS_IMPL_ADDREF_INHERITED(EmptyBody, FetchBody<EmptyBody>)
+NS_IMPL_RELEASE_INHERITED(EmptyBody, FetchBody<EmptyBody>)
+
+NS_IMPL_CYCLE_COLLECTION_CLASS(EmptyBody)
+
+NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(EmptyBody, FetchBody<EmptyBody>)
+ AbortFollower::Unlink(static_cast<AbortFollower*>(tmp));
+ NS_IMPL_CYCLE_COLLECTION_UNLINK(mOwner)
+ NS_IMPL_CYCLE_COLLECTION_UNLINK(mAbortSignalImpl)
+ NS_IMPL_CYCLE_COLLECTION_UNLINK(mFetchStreamReader)
+NS_IMPL_CYCLE_COLLECTION_UNLINK_END
+
+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(EmptyBody,
+ FetchBody<EmptyBody>)
+ AbortFollower::Traverse(static_cast<AbortFollower*>(tmp), cb);
+ NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mOwner)
+ NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mAbortSignalImpl)
+ NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mFetchStreamReader)
+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
+
+NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(EmptyBody, FetchBody<EmptyBody>)
+NS_IMPL_CYCLE_COLLECTION_TRACE_END
+
+NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(EmptyBody)
+NS_INTERFACE_MAP_END_INHERITING(FetchBody<EmptyBody>)
+
+EmptyBody::EmptyBody(nsIGlobalObject* aGlobal,
+ mozilla::ipc::PrincipalInfo* aPrincipalInfo,
+ AbortSignalImpl* aAbortSignalImpl,
+ const nsACString& aMimeType,
+ already_AddRefed<nsIInputStream> aBodyStream)
+ : FetchBody<EmptyBody>(aGlobal),
+ mAbortSignalImpl(aAbortSignalImpl),
+ mMimeType(aMimeType),
+ mBodyStream(std::move(aBodyStream)) {
+ if (aPrincipalInfo) {
+ mPrincipalInfo = MakeUnique<mozilla::ipc::PrincipalInfo>(*aPrincipalInfo);
+ }
+}
+
+EmptyBody::~EmptyBody() = default;
+
+/* static */
+already_AddRefed<EmptyBody> EmptyBody::Create(
+ nsIGlobalObject* aGlobal, mozilla::ipc::PrincipalInfo* aPrincipalInfo,
+ AbortSignalImpl* aAbortSignalImpl, const nsACString& aMimeType,
+ ErrorResult& aRv) {
+ nsCOMPtr<nsIInputStream> bodyStream;
+ aRv = NS_NewCStringInputStream(getter_AddRefs(bodyStream), ""_ns);
+ if (NS_WARN_IF(aRv.Failed())) {
+ return nullptr;
+ }
+
+ RefPtr<EmptyBody> emptyBody =
+ new EmptyBody(aGlobal, aPrincipalInfo, aAbortSignalImpl, aMimeType,
+ bodyStream.forget());
+ return emptyBody.forget();
+}
+
+void EmptyBody::GetBody(nsIInputStream** aStream, int64_t* aBodyLength) {
+ MOZ_ASSERT(aStream);
+
+ if (aBodyLength) {
+ *aBodyLength = 0;
+ }
+
+ nsCOMPtr<nsIInputStream> bodyStream = mBodyStream;
+ bodyStream.forget(aStream);
+}
+
+} // namespace mozilla::dom