diff --git a/docshell/base/nsDocShellLoadState.cpp b/docshell/base/nsDocShellLoadState.cpp index f5ecf425b634..d746bea3e9ff 100644 --- a/docshell/base/nsDocShellLoadState.cpp +++ b/docshell/base/nsDocShellLoadState.cpp @@ -1402,3 +1402,11 @@ nsIURI* nsDocShellLoadState::GetUnstrippedURI() const { return mUnstrippedURI; } void nsDocShellLoadState::SetUnstrippedURI(nsIURI* aUnstrippedURI) { mUnstrippedURI = aUnstrippedURI; } + +void nsDocShellLoadState::SetSourceElement(mozilla::dom::Element* aElement) { + mSourceElement = do_GetWeakReference(aElement); +} +already_AddRefed nsDocShellLoadState::GetSourceElement() const { + nsCOMPtr element = do_QueryReferent(mSourceElement); + return element.forget(); +} diff --git a/docshell/base/nsDocShellLoadState.h b/docshell/base/nsDocShellLoadState.h index d5294ca122af..087a47a079d6 100644 --- a/docshell/base/nsDocShellLoadState.h +++ b/docshell/base/nsDocShellLoadState.h @@ -408,6 +408,9 @@ class nsDocShellLoadState final { void MaybeStripTrackerQueryStrings(mozilla::dom::BrowsingContext* aContext); + void SetSourceElement(mozilla::dom::Element* aElement); + already_AddRefed GetSourceElement() const; + protected: // Destructor can't be defaulted or inlined, as header doesn't have all type // includes it needs to do so. @@ -658,6 +661,8 @@ class nsDocShellLoadState final { // Solely for the use of collecting Telemetry for HTTPS upgrades. nsILoadInfo::HTTPSUpgradeTelemetryType mHttpsUpgradeTelemetry = nsILoadInfo::NOT_INITIALIZED; + + nsWeakPtr mSourceElement; }; #endif /* nsDocShellLoadState_h__ */