summaryrefslogtreecommitdiffstats
path: root/netwerk/ipc
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk/ipc')
-rw-r--r--netwerk/ipc/DocumentLoadListener.cpp16
-rw-r--r--netwerk/ipc/DocumentLoadListener.h2
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)