This is an automated email from the git hooks/post-receive script.
pierov pushed a commit to branch tor-browser-91.10.0esr-11.0-1 in repository tor-browser.
commit 783ad7312c4eec4e448d841eb45742f1b8a90685 Author: Ryan VanderMeulen ryanvm@gmail.com AuthorDate: Thu May 5 11:20:29 2022 -0400
Backed out changeset dfc94f10465c (bug 1735923) for test_midflight_redirect_blocked.html failures. --- dom/media/ChannelMediaResource.cpp | 39 +------------------------------------- dom/media/ChannelMediaResource.h | 11 ++++------- 2 files changed, 5 insertions(+), 45 deletions(-)
diff --git a/dom/media/ChannelMediaResource.cpp b/dom/media/ChannelMediaResource.cpp index 804884b1e359e..7643ed249f0ff 100644 --- a/dom/media/ChannelMediaResource.cpp +++ b/dom/media/ChannelMediaResource.cpp @@ -803,7 +803,6 @@ void ChannelMediaResource::UpdatePrincipal() { if (!secMan) { return; } - bool hadData = mSharedInfo->mPrincipal != nullptr; nsCOMPtr<nsIPrincipal> principal; secMan->GetChannelResultPrincipal(mChannel, getter_AddRefs(principal)); if (nsContentUtils::CombineResourcePrincipals(&mSharedInfo->mPrincipal, @@ -811,44 +810,8 @@ void ChannelMediaResource::UpdatePrincipal() { for (auto* r : mSharedInfo->mResources) { r->CacheClientNotifyPrincipalChanged(); } - if (!mChannel) { // Sometimes cleared during NotifyPrincipalChanged() - return; - } - } - nsCOMPtr<nsILoadInfo> loadInfo = mChannel->LoadInfo(); - auto mode = loadInfo->GetSecurityMode(); - if (mode != nsILoadInfo::SEC_REQUIRE_CORS_INHERITS_SEC_CONTEXT) { - MOZ_ASSERT( - mode == nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_INHERITS_SEC_CONTEXT || - mode == nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_SEC_CONTEXT_IS_NULL, - "no-cors request"); - bool finalResponseIsOpaque = - // GetChannelResultPrincipal() returns the original request URL for - // null-origin Responses from ServiceWorker, in which case the URL - // does not indicate the real source of data. Such null-origin - // Responses have Basic LoadTainting. CORS filtered Responses from - // ServiceWorker also cannot be mixed with no-cors cross-origin - // responses. - loadInfo->GetTainting() == LoadTainting::Opaque && - // Although intermediate cross-origin redirects back to URIs with - // loadingPrincipal will have LoadTainting::Opaque and will taint the - // media element, they are not considered opaque when verifying - // network responses; they can be mixed with non-opaque responses from - // subsequent loads on the same-origin finalURI. - !nsContentUtils::CheckMayLoad(loadInfo->GetLoadingPrincipal(), mChannel, - /*allowIfInheritsPrincipal*/ true); - if (!hadData) { // First response with data - mSharedInfo->mFinalResponsesAreOpaque = finalResponseIsOpaque; - } else if (mSharedInfo->mFinalResponsesAreOpaque != finalResponseIsOpaque) { - for (auto* r : mSharedInfo->mResources) { - r->mCallback->NotifyNetworkError(MediaResult( - NS_ERROR_CONTENT_BLOCKED, "opaque and non-opaque responses")); - } - // Our caller, OnStartRequest() will CloseChannel() on discovering the - // error, so no data will be read from the channel. - return; - } } + // ChannelMediaResource can recreate the channel. When this happens, we don't // want to overwrite mHadCrossOriginRedirects because the new channel could // skip intermediate redirects. diff --git a/dom/media/ChannelMediaResource.h b/dom/media/ChannelMediaResource.h index f1d6f185b8a66..1de692ca89970 100644 --- a/dom/media/ChannelMediaResource.h +++ b/dom/media/ChannelMediaResource.h @@ -68,14 +68,11 @@ class ChannelMediaResource struct SharedInfo { NS_INLINE_DECL_REFCOUNTING(SharedInfo);
- nsTArray<ChannelMediaResource*> mResources; - // Null if there is not yet any data from any origin. - nsCOMPtr<nsIPrincipal> mPrincipal; - // Meaningful only when mPrincipal is non-null, - // unaffected by intermediate cross-origin redirects. - bool mFinalResponsesAreOpaque = false; + SharedInfo() : mHadCrossOriginRedirects(false) {}
- bool mHadCrossOriginRedirects = false; + nsCOMPtr<nsIPrincipal> mPrincipal; + nsTArray<ChannelMediaResource*> mResources; + bool mHadCrossOriginRedirects;
private: ~SharedInfo() = default;