diff options
Diffstat (limited to 'netwerk/ipc')
-rw-r--r-- | netwerk/ipc/DocumentLoadListener.cpp | 16 | ||||
-rw-r--r-- | netwerk/ipc/DocumentLoadListener.h | 2 |
2 files changed, 15 insertions, 3 deletions
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<HTTPSFirstDowngradeData> mHTTPSFirstDowngradeData; }; NS_DEFINE_STATIC_IID_ACCESSOR(DocumentLoadListener, DOCUMENT_LOAD_LISTENER_IID) |