From 8ef7f43d9d880ce1c7da687c3c0bf2caf44bcbcd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 20 Jun 2024 06:02:43 +0200 Subject: Merging upstream version 127.0.1. Signed-off-by: Daniel Baumann --- netwerk/ipc/DocumentLoadListener.cpp | 16 +++++++++++++--- netwerk/ipc/DocumentLoadListener.h | 2 ++ 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'netwerk/ipc') diff --git a/netwerk/ipc/DocumentLoadListener.cpp b/netwerk/ipc/DocumentLoadListener.cpp index a133df4663..280348e449 100644 --- a/netwerk/ipc/DocumentLoadListener.cpp +++ b/netwerk/ipc/DocumentLoadListener.cpp @@ -644,6 +644,7 @@ auto DocumentLoadListener::Open(nsDocShellLoadState* aLoadState, // See description of mFileName in nsDocShellLoadState.h mIsDownload = !aLoadState->FileName().IsVoid(); mIsLoadingJSURI = net::SchemeIsJavascript(aLoadState->URI()); + mHTTPSFirstDowngradeData = aLoadState->GetHttpsFirstDowngradeData().forget(); // Check for infinite recursive object or iframe loads if (aLoadState->OriginalFrameSrc() || !mIsDocumentLoad) { @@ -2427,9 +2428,7 @@ bool DocumentLoadListener::MaybeHandleLoadErrorWithURIFixup(nsresult aStatus) { loadState->SetWasSchemelessInput(wasSchemelessInput); if (isHTTPSFirstFixup) { - // We have to exempt the load from HTTPS-First to prevent a - // upgrade-downgrade loop. - loadState->SetIsExemptFromHTTPSFirstMode(true); + nsHTTPSOnlyUtils::UpdateLoadStateAfterHTTPSFirstDowngrade(this, loadState); } // Ensure to set referrer information in the fallback channel equally to the @@ -2571,6 +2570,17 @@ DocumentLoadListener::OnStartRequest(nsIRequest* aRequest) { return NS_OK; } + // If this is a successful load with a successful status code, we can possibly + // submit HTTPS-First telemetry. + if (NS_SUCCEEDED(status) && httpChannel) { + uint32_t responseStatus = 0; + if (NS_SUCCEEDED(httpChannel->GetResponseStatus(&responseStatus)) && + responseStatus < 400) { + nsHTTPSOnlyUtils::SubmitHTTPSFirstTelemetry( + mChannel->LoadInfo(), mHTTPSFirstDowngradeData.forget()); + } + } + mStreamListenerFunctions.AppendElement(StreamListenerFunction{ VariantIndex<0>{}, OnStartRequestParams{aRequest}}); diff --git a/netwerk/ipc/DocumentLoadListener.h b/netwerk/ipc/DocumentLoadListener.h index 6f6ad357ae..69f7eafd0f 100644 --- a/netwerk/ipc/DocumentLoadListener.h +++ b/netwerk/ipc/DocumentLoadListener.h @@ -617,6 +617,8 @@ class DocumentLoadListener : public nsIInterfaceRequestor, bool mOpenPromiseResolved = false; const bool mIsDocumentLoad; + + RefPtr mHTTPSFirstDowngradeData; }; NS_DEFINE_STATIC_IID_ACCESSOR(DocumentLoadListener, DOCUMENT_LOAD_LISTENER_IID) -- cgit v1.2.3