Bug 1416307 - Set triggeringPrincipal to current document's principal, if aPrincipal is not given. r=bz, a=ritu

MozReview-Commit-ID: 8lxKFeUlyzq

--HG--
extra : rebase_source : 5f364f5cf84c12717bee021d752aa0f9ba4619dd
extra : intermediate-source : 9df27a7142ffb065fb56c3fc873298988deacb98
extra : source : 9fcf48189000ab8ee16f236be57c9659c7243b42
This commit is contained in:
Samael Wang 2018-02-06 13:28:30 -05:00 • committed by Roy Tam
commit 02cf5ea228
2 changed files with 17 additions and 19 deletions

View file

@ -6806,9 +6806,17 @@ nsDocShell::ForceRefreshURI(nsIURI* aURI, int32_t aDelay, bool aMetaRefresh, nsI
*/ */
loadInfo->SetReferrer(mCurrentURI); loadInfo->SetReferrer(mCurrentURI);
/* Don't ever "guess" on which principal to use to avoid picking // Set the triggering pricipal to aPrincipal if available, or current
* the current principal. // document's principal otherwise.
*/ nsCOMPtr<nsIPrincipal> principal = aPrincipal;
if (!principal) {
nsCOMPtr<nsIDocument> doc = GetDocument();
if (!doc) {
return NS_ERROR_FAILURE;
}
principal = doc->NodePrincipal();
}
loadInfo->SetTriggeringPrincipal(principal);
loadInfo->SetPrincipalIsExplicit(true); loadInfo->SetPrincipalIsExplicit(true);
/* Check if this META refresh causes a redirection /* Check if this META refresh causes a redirection
@ -6836,13 +6844,6 @@ nsDocShell::ForceRefreshURI(nsIURI* aURI, int32_t aDelay, bool aMetaRefresh, nsI
loadInfo->SetLoadType(nsIDocShellLoadInfo::loadRefresh); loadInfo->SetLoadType(nsIDocShellLoadInfo::loadRefresh);
} }
// If the principal is null, the refresh will have a triggeringPrincipal
// derived from the referrer URI, or will be set to the system principal
// if there is no refererrer. See LoadURI()
if (aPrincipal) {
loadInfo->SetTriggeringPrincipal(aPrincipal);
}
/* /*
* LoadURI(...) will cancel all refresh timers... This causes the * LoadURI(...) will cancel all refresh timers... This causes the
* Timer and its refreshData instance to be released... * Timer and its refreshData instance to be released...

View file

@ -19,9 +19,8 @@ interface nsIRefreshURI : nsISupports {
* *
* @param aUri The uri to refresh. * @param aUri The uri to refresh.
* @param aPrincipal The triggeringPrincipal for the refresh load * @param aPrincipal The triggeringPrincipal for the refresh load
* May be null, in which case a principal will be built based on the * May be null, in which case the principal of current document will be
* referrer URI of the previous docshell load, or will use the system * applied.
* principal when there is no referrer.
* @param aMillis The number of milliseconds to wait. * @param aMillis The number of milliseconds to wait.
* @param aRepeat Flag to indicate if the uri is to be * @param aRepeat Flag to indicate if the uri is to be
* repeatedly refreshed every aMillis milliseconds. * repeatedly refreshed every aMillis milliseconds.
@ -37,9 +36,8 @@ interface nsIRefreshURI : nsISupports {
* *
* @param aURI The URI to refresh. * @param aURI The URI to refresh.
* @param aPrincipal The triggeringPrincipal for the refresh load * @param aPrincipal The triggeringPrincipal for the refresh load
* May be null, in which case a principal will be built based on the * May be null, in which case the principal of current document will be
* referrer URI of the previous docshell load, or will use the system * applied.
* principal when there is no referrer.
* @param aMillis The number of milliseconds by which this refresh would * @param aMillis The number of milliseconds by which this refresh would
* be delayed if it were not being forced. * be delayed if it were not being forced.
* @param aMetaRefresh Flag to indicate if this is a meta refresh. * @param aMetaRefresh Flag to indicate if this is a meta refresh.
@ -70,9 +68,8 @@ interface nsIRefreshURI : nsISupports {
* *
* @param aBaseURI base URI to resolve refresh uri with. * @param aBaseURI base URI to resolve refresh uri with.
* @param aPrincipal The triggeringPrincipal for the refresh load * @param aPrincipal The triggeringPrincipal for the refresh load
* May be null, in which case a principal will be built based on the * May be null, in which case the principal of current document will be
* referrer URI of the previous docshell load, or will use the system * applied.
* principal when there is no referrer.
* @param aHeader The meta refresh header string. * @param aHeader The meta refresh header string.
*/ */
void setupRefreshURIFromHeader(in nsIURI aBaseURI, void setupRefreshURIFromHeader(in nsIURI aBaseURI,