@@ -1465,10 +1465,12 @@ already_AddRefed<Promise> FetchBody<Derived>::ConsumeBody(
14651465 nsCOMPtr<nsIInputStream> bodyStream;
14661466 DerivedClass ()->GetBody (getter_AddRefs (bodyStream));
14671467 if (!bodyStream) {
1468+ nsCString initialURL;
1469+ DerivedClass ()->GetInitialURL (initialURL);
14681470 RefPtr<EmptyBody> emptyBody =
14691471 EmptyBody::Create (DerivedClass ()->GetParentObject (),
14701472 DerivedClass ()->GetPrincipalInfo ().get (), signalImpl,
1471- mimeType, mixedCaseMimeType, aRv);
1473+ mimeType, mixedCaseMimeType, initialURL, aRv);
14721474 if (NS_WARN_IF(aRv.Failed ())) {
14731475 return nullptr ;
14741476 }
@@ -1500,10 +1502,13 @@ already_AddRefed<Promise> FetchBody<Derived>::ConsumeBody(
15001502 blobStorageType = MutableBlobStorage::eCouldBeInTemporaryFile;
15011503 }
15021504
1505+ nsCString initialURL;
1506+ GetInitialURL (initialURL);
1507+
15031508 RefPtr<Promise> promise = BodyConsumer::Create (
15041509 global, mMainThreadEventTarget , bodyStream, signalImpl, aType,
15051510 BodyBlobURISpec (), BodyLocalPath (), mimeType, mixedCaseMimeType,
1506- blobStorageType, aRv);
1511+ blobStorageType, initialURL, aRv);
15071512 if (NS_WARN_IF(aRv.Failed ())) {
15081513 return nullptr ;
15091514 }
@@ -1757,6 +1762,17 @@ template void FetchBody<Request>::RunAbortAlgorithm();
17571762
17581763template void FetchBody<Response>::RunAbortAlgorithm();
17591764
1765+ template <class Derived >
1766+ void FetchBody<Derived>::GetInitialURL(nsACString& aInitialURL) {
1767+ DerivedClass ()->GetInitialURL (aInitialURL);
1768+ }
1769+
1770+ template void FetchBody<Request>::GetInitialURL(nsACString& aInitialURL);
1771+
1772+ template void FetchBody<Response>::GetInitialURL(nsACString& aInitialURL);
1773+
1774+ template void FetchBody<EmptyBody>::GetInitialURL(nsACString& aInitialURL);
1775+
17601776NS_IMPL_ADDREF_INHERITED (EmptyBody, FetchBody<EmptyBody>)
17611777NS_IMPL_RELEASE_INHERITED(EmptyBody, FetchBody<EmptyBody>)
17621778
@@ -1786,11 +1802,13 @@ EmptyBody::EmptyBody(nsIGlobalObject* aGlobal,
17861802 AbortSignalImpl* aAbortSignalImpl,
17871803 const nsACString& aMimeType,
17881804 const nsACString& aMixedCaseMimeType,
1805+ const nsACString& aInitialURL,
17891806 already_AddRefed<nsIInputStream> aBodyStream)
17901807 : FetchBody<EmptyBody>(aGlobal),
17911808 mAbortSignalImpl(aAbortSignalImpl),
17921809 mMimeType(aMimeType),
17931810 mMixedCaseMimeType(aMixedCaseMimeType),
1811+ mInitialURL(aInitialURL),
17941812 mBodyStream(std::move(aBodyStream)) {
17951813 if (aPrincipalInfo) {
17961814 mPrincipalInfo = MakeUnique<mozilla::ipc::PrincipalInfo>(*aPrincipalInfo);
@@ -1803,7 +1821,8 @@ EmptyBody::~EmptyBody() = default;
18031821already_AddRefed<EmptyBody> EmptyBody::Create (
18041822 nsIGlobalObject* aGlobal, mozilla::ipc::PrincipalInfo* aPrincipalInfo,
18051823 AbortSignalImpl* aAbortSignalImpl, const nsACString& aMimeType,
1806- const nsACString& aMixedCaseMimeType, ErrorResult& aRv) {
1824+ const nsACString& aMixedCaseMimeType, const nsACString& aInitialURL,
1825+ ErrorResult& aRv) {
18071826 nsCOMPtr<nsIInputStream> bodyStream;
18081827 aRv = NS_NewCStringInputStream(getter_AddRefs (bodyStream), " " _ns);
18091828 if (NS_WARN_IF(aRv.Failed ())) {
@@ -1812,7 +1831,7 @@ already_AddRefed<EmptyBody> EmptyBody::Create(
18121831
18131832 RefPtr<EmptyBody> emptyBody =
18141833 new EmptyBody (aGlobal, aPrincipalInfo, aAbortSignalImpl, aMimeType,
1815- aMixedCaseMimeType, bodyStream.forget ());
1834+ aMixedCaseMimeType, aInitialURL, bodyStream.forget ());
18161835 return emptyBody.forget ();
18171836}
18181837
0 commit comments