Bug 1468523 - Fix the history entry for http-equiv=refresh. r=smaug
This commit is contained in:
@@ -677,6 +677,7 @@ nsDocShell::LoadURI(nsIURI* aURI,
|
||||
nsCOMPtr<nsIURI> referrer;
|
||||
nsCOMPtr<nsIURI> originalURI;
|
||||
Maybe<nsCOMPtr<nsIURI>> resultPrincipalURI;
|
||||
bool keepResultPrincipalURIIfSet = false;
|
||||
bool loadReplace = false;
|
||||
nsCOMPtr<nsIInputStream> postStream;
|
||||
nsCOMPtr<nsIInputStream> headersStream;
|
||||
@@ -708,6 +709,7 @@ nsDocShell::LoadURI(nsIURI* aURI,
|
||||
referrer = aLoadInfo->Referrer();
|
||||
originalURI = aLoadInfo->OriginalURI();
|
||||
aLoadInfo->GetMaybeResultPrincipalURI(resultPrincipalURI);
|
||||
keepResultPrincipalURIIfSet = aLoadInfo->KeepResultPrincipalURIIfSet();
|
||||
loadReplace = aLoadInfo->LoadReplace();
|
||||
// Get the appropriate loadType from nsIDocShellLoadInfo type
|
||||
loadType = aLoadInfo->LoadType();
|
||||
@@ -1001,6 +1003,7 @@ nsDocShell::LoadURI(nsIURI* aURI,
|
||||
return InternalLoad(aURI,
|
||||
originalURI,
|
||||
resultPrincipalURI,
|
||||
keepResultPrincipalURIIfSet,
|
||||
loadReplace,
|
||||
referrer,
|
||||
referrerPolicy,
|
||||
@@ -4798,7 +4801,7 @@ nsDocShell::LoadErrorPage(nsIURI* aURI, const char16_t* aURL,
|
||||
nsresult rv = NS_NewURI(getter_AddRefs(errorPageURI), errorPageUrl);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return InternalLoad(errorPageURI, nullptr, Nothing(), false, nullptr, RP_Unset,
|
||||
return InternalLoad(errorPageURI, nullptr, Nothing(), false, false, nullptr, RP_Unset,
|
||||
nsContentUtils::GetSystemPrincipal(), nullptr,
|
||||
INTERNAL_LOAD_FLAGS_NONE, EmptyString(),
|
||||
nullptr, VoidString(), nullptr, nullptr,
|
||||
@@ -4893,6 +4896,7 @@ nsDocShell::Reload(uint32_t aReloadFlags)
|
||||
rv = InternalLoad(currentURI,
|
||||
originalURI,
|
||||
emplacedResultPrincipalURI,
|
||||
false,
|
||||
loadReplace,
|
||||
referrerURI,
|
||||
referrerPolicy,
|
||||
@@ -6184,6 +6188,11 @@ nsDocShell::ForceRefreshURI(nsIURI* aURI, nsIPrincipal* aPrincipal, int32_t aDel
|
||||
*/
|
||||
loadInfo->SetReferrer(mCurrentURI);
|
||||
|
||||
loadInfo->SetOriginalURI(mCurrentURI);
|
||||
loadInfo->SetResultPrincipalURI(aURI);
|
||||
loadInfo->SetResultPrincipalURIIsSome(true);
|
||||
loadInfo->SetKeepResultPrincipalURIIfSet(true);
|
||||
|
||||
// Set the triggering pricipal to aPrincipal if available, or current
|
||||
// document's principal otherwise.
|
||||
nsCOMPtr<nsIPrincipal> principal = aPrincipal;
|
||||
@@ -9003,6 +9012,7 @@ public:
|
||||
nsIURI* aURI,
|
||||
nsIURI* aOriginalURI,
|
||||
Maybe<nsCOMPtr<nsIURI>> const& aResultPrincipalURI,
|
||||
bool aKeepResultPrincipalURIIfSet,
|
||||
bool aLoadReplace,
|
||||
nsIURI* aReferrer, uint32_t aReferrerPolicy,
|
||||
nsIPrincipal* aTriggeringPrincipal,
|
||||
@@ -9023,6 +9033,7 @@ public:
|
||||
, mURI(aURI)
|
||||
, mOriginalURI(aOriginalURI)
|
||||
, mResultPrincipalURI(aResultPrincipalURI)
|
||||
, mKeepResultPrincipalURIIfSet(aKeepResultPrincipalURIIfSet)
|
||||
, mLoadReplace(aLoadReplace)
|
||||
, mReferrer(aReferrer)
|
||||
, mReferrerPolicy(aReferrerPolicy)
|
||||
@@ -9049,6 +9060,7 @@ public:
|
||||
Run() override
|
||||
{
|
||||
return mDocShell->InternalLoad(mURI, mOriginalURI, mResultPrincipalURI,
|
||||
mKeepResultPrincipalURIIfSet,
|
||||
mLoadReplace,
|
||||
mReferrer,
|
||||
mReferrerPolicy,
|
||||
@@ -9071,6 +9083,7 @@ private:
|
||||
nsCOMPtr<nsIURI> mURI;
|
||||
nsCOMPtr<nsIURI> mOriginalURI;
|
||||
Maybe<nsCOMPtr<nsIURI>> mResultPrincipalURI;
|
||||
bool mKeepResultPrincipalURIIfSet;
|
||||
bool mLoadReplace;
|
||||
nsCOMPtr<nsIURI> mReferrer;
|
||||
uint32_t mReferrerPolicy;
|
||||
@@ -9117,6 +9130,7 @@ NS_IMETHODIMP
|
||||
nsDocShell::InternalLoad(nsIURI* aURI,
|
||||
nsIURI* aOriginalURI,
|
||||
Maybe<nsCOMPtr<nsIURI>> const& aResultPrincipalURI,
|
||||
bool aKeepResultPrincipalURIIfSet,
|
||||
bool aLoadReplace,
|
||||
nsIURI* aReferrer,
|
||||
uint32_t aReferrerPolicy,
|
||||
@@ -9415,6 +9429,7 @@ nsDocShell::InternalLoad(nsIURI* aURI,
|
||||
INTERNAL_LOAD_FLAGS_DONT_SEND_REFERRER));
|
||||
loadInfo->SetOriginalURI(aOriginalURI);
|
||||
loadInfo->SetMaybeResultPrincipalURI(aResultPrincipalURI);
|
||||
loadInfo->SetKeepResultPrincipalURIIfSet(aKeepResultPrincipalURIIfSet);
|
||||
loadInfo->SetLoadReplace(aLoadReplace);
|
||||
loadInfo->SetTriggeringPrincipal(aTriggeringPrincipal);
|
||||
loadInfo->SetInheritPrincipal(
|
||||
@@ -9464,6 +9479,7 @@ nsDocShell::InternalLoad(nsIURI* aURI,
|
||||
rv = targetDocShell->InternalLoad(aURI,
|
||||
aOriginalURI,
|
||||
aResultPrincipalURI,
|
||||
aKeepResultPrincipalURIIfSet,
|
||||
aLoadReplace,
|
||||
aReferrer,
|
||||
aReferrerPolicy,
|
||||
@@ -9562,6 +9578,7 @@ nsDocShell::InternalLoad(nsIURI* aURI,
|
||||
// Do this asynchronously
|
||||
nsCOMPtr<nsIRunnable> ev =
|
||||
new InternalLoadEvent(this, aURI, aOriginalURI, aResultPrincipalURI,
|
||||
aKeepResultPrincipalURIIfSet,
|
||||
aLoadReplace, aReferrer, aReferrerPolicy,
|
||||
aTriggeringPrincipal, principalToInherit,
|
||||
aFlags, aTypeHint, aPostData,
|
||||
@@ -10079,7 +10096,8 @@ nsDocShell::InternalLoad(nsIURI* aURI,
|
||||
nsINetworkPredictor::PREDICT_LOAD, attrs, nullptr);
|
||||
|
||||
nsCOMPtr<nsIRequest> req;
|
||||
rv = DoURILoad(aURI, aOriginalURI, aResultPrincipalURI, aLoadReplace,
|
||||
rv = DoURILoad(aURI, aOriginalURI, aResultPrincipalURI,
|
||||
aKeepResultPrincipalURIIfSet, aLoadReplace,
|
||||
loadFromExternal,
|
||||
(aFlags & INTERNAL_LOAD_FLAGS_FORCE_ALLOW_DATA_URI),
|
||||
(aFlags & INTERNAL_LOAD_FLAGS_ORIGINAL_FRAME_SRC),
|
||||
@@ -10219,6 +10237,7 @@ nsresult
|
||||
nsDocShell::DoURILoad(nsIURI* aURI,
|
||||
nsIURI* aOriginalURI,
|
||||
Maybe<nsCOMPtr<nsIURI>> const& aResultPrincipalURI,
|
||||
bool aKeepResultPrincipalURIIfSet,
|
||||
bool aLoadReplace,
|
||||
bool aLoadFromExternal,
|
||||
bool aForceAllowDataURI,
|
||||
@@ -10568,7 +10587,10 @@ nsDocShell::DoURILoad(nsIURI* aURI,
|
||||
channel->SetOriginalURI(aURI);
|
||||
}
|
||||
|
||||
if (aResultPrincipalURI) {
|
||||
nsCOMPtr<nsIURI> rpURI;
|
||||
loadInfo->GetResultPrincipalURI(getter_AddRefs(rpURI));
|
||||
if (aResultPrincipalURI &&
|
||||
(!aKeepResultPrincipalURIIfSet || !rpURI)) {
|
||||
// Unconditionally override, we want the replay to be equal to what has
|
||||
// been captured.
|
||||
loadInfo->SetResultPrincipalURI(aResultPrincipalURI.ref());
|
||||
@@ -12145,6 +12167,7 @@ nsDocShell::LoadHistoryEntry(nsISHEntry* aEntry, uint32_t aLoadType)
|
||||
rv = InternalLoad(uri,
|
||||
originalURI,
|
||||
emplacedResultPrincipalURI,
|
||||
false,
|
||||
loadReplace,
|
||||
referrerURI,
|
||||
referrerPolicy,
|
||||
@@ -13424,6 +13447,7 @@ nsDocShell::OnLinkClickSync(nsIContent* aContent,
|
||||
nsresult rv = InternalLoad(aURI, // New URI
|
||||
nullptr, // Original URI
|
||||
Nothing(), // Let the protocol handler assign it
|
||||
false,
|
||||
false, // LoadReplace
|
||||
referer, // Referer URI
|
||||
refererPolicy, // Referer policy
|
||||
|
||||
Reference in New Issue
Block a user