mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-29 11:57:32 +09:00
Bug 1344706 - Do not reuse originPrincipal as triggeringPrincipal within utilityOverlay.js
This commit is contained in:
parent
c7e2043fa1
commit
cf54612b55
5 changed files with 25 additions and 11 deletions
|
|
@ -1177,6 +1177,7 @@ var gBrowserInit = {
|
|||
// [5]: referrerPolicy (int)
|
||||
// [6]: userContextId (int)
|
||||
// [7]: originPrincipal (nsIPrincipal)
|
||||
// [8]: triggeringPrincipal (nsIPrincipal)
|
||||
else if (window.arguments.length >= 3) {
|
||||
let referrerURI = window.arguments[2];
|
||||
if (typeof(referrerURI) == "string") {
|
||||
|
|
@ -1194,7 +1195,7 @@ var gBrowserInit = {
|
|||
window.arguments[4] || false, referrerPolicy, userContextId,
|
||||
// pass the origin principal (if any) and force its use to create
|
||||
// an initial about:blank viewer if present:
|
||||
window.arguments[7], !!window.arguments[7]);
|
||||
window.arguments[7], !!window.arguments[7], window.arguments[8]);
|
||||
window.focus();
|
||||
}
|
||||
// Note: loadOneOrMoreURIs *must not* be called if window.arguments.length >= 3.
|
||||
|
|
@ -2080,7 +2081,8 @@ function BrowserTryToCloseWindow()
|
|||
}
|
||||
|
||||
function loadURI(uri, referrer, postData, allowThirdPartyFixup, referrerPolicy,
|
||||
userContextId, originPrincipal, forceAboutBlankViewerInCurrent) {
|
||||
userContextId, originPrincipal, forceAboutBlankViewerInCurrent,
|
||||
triggeringPrincipal) {
|
||||
try {
|
||||
openLinkIn(uri, "current",
|
||||
{ referrerURI: referrer,
|
||||
|
|
@ -2089,6 +2091,7 @@ function loadURI(uri, referrer, postData, allowThirdPartyFixup, referrerPolicy,
|
|||
allowThirdPartyFixup: allowThirdPartyFixup,
|
||||
userContextId: userContextId,
|
||||
originPrincipal,
|
||||
triggeringPrincipal,
|
||||
forceAboutBlankViewerInCurrent,
|
||||
});
|
||||
} catch (e) {}
|
||||
|
|
@ -5559,6 +5562,7 @@ function handleLinkClick(event, href, linkNode) {
|
|||
referrerPolicy: referrerPolicy,
|
||||
noReferrer: BrowserUtils.linkHasNoReferrer(linkNode),
|
||||
originPrincipal: doc.nodePrincipal,
|
||||
triggeringPrincipal: doc.nodePrincipal,
|
||||
};
|
||||
|
||||
// The new tab/window must use the same userContextId
|
||||
|
|
|
|||
|
|
@ -522,6 +522,7 @@ var ClickEventHandler = {
|
|||
} catch (e) {}
|
||||
}
|
||||
json.originPrincipal = ownerDoc.nodePrincipal;
|
||||
json.triggeringPrincipal = ownerDoc.nodePrincipal;
|
||||
|
||||
sendAsyncMessage("Content:Click", json);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -968,6 +968,7 @@ nsContextMenu.prototype = {
|
|||
_openLinkInParameters : function (extra) {
|
||||
let params = { charset: gContextMenuContentData.charSet,
|
||||
originPrincipal: this.principal,
|
||||
triggeringPrincipal: this.principal,
|
||||
referrerURI: gContextMenuContentData.documentURIObject,
|
||||
referrerPolicy: gContextMenuContentData.referrerPolicy,
|
||||
noReferrer: this.linkHasNoReferrer };
|
||||
|
|
@ -1152,7 +1153,7 @@ nsContextMenu.prototype = {
|
|||
this._canvasToBlobURL(this.target).then(function(blobURL) {
|
||||
openUILink(blobURL, e, { disallowInheritPrincipal: true,
|
||||
referrerURI: referrerURI,
|
||||
originPrincipal: systemPrincipal});
|
||||
triggeringPrincipal: systemPrincipal});
|
||||
}, Cu.reportError);
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -225,6 +225,7 @@ function openLinkIn(url, where, params) {
|
|||
var aUserContextId = params.userContextId;
|
||||
var aIndicateErrorPageLoad = params.indicateErrorPageLoad;
|
||||
var aPrincipal = params.originPrincipal;
|
||||
var aTriggeringPrincipal = params.triggeringPrincipal;
|
||||
var aForceAboutBlankViewerInCurrent =
|
||||
params.forceAboutBlankViewerInCurrent;
|
||||
|
||||
|
|
@ -264,13 +265,18 @@ function openLinkIn(url, where, params) {
|
|||
// Please note we do not have to do that for SystemPrincipals and we
|
||||
// can not do it for NullPrincipals since NullPrincipals are only
|
||||
// identical if they actually are the same object (See Bug: 1346759)
|
||||
if (aPrincipal && aPrincipal.isCodebasePrincipal) {
|
||||
function useOAForPrincipal(principal) {
|
||||
if (principal && principal.isCodebasePrincipal) {
|
||||
let attrs = {
|
||||
userContextId: aUserContextId,
|
||||
privateBrowsingId: aIsPrivate || (w && PrivateBrowsingUtils.isWindowPrivate(w)),
|
||||
};
|
||||
aPrincipal = Services.scriptSecurityManager.createCodebasePrincipal(aPrincipal.URI, attrs);
|
||||
return Services.scriptSecurityManager.createCodebasePrincipal(principal.URI, attrs);
|
||||
}
|
||||
return principal;
|
||||
}
|
||||
aPrincipal = useOAForPrincipal(aPrincipal);
|
||||
aTriggeringPrincipal = useOAForPrincipal(aTriggeringPrincipal);
|
||||
|
||||
if (!w || where == "window") {
|
||||
// Strip referrer data when opening a new private window, to prevent
|
||||
|
|
@ -321,6 +327,7 @@ function openLinkIn(url, where, params) {
|
|||
sa.appendElement(referrerPolicySupports, /* weak =*/ false);
|
||||
sa.appendElement(userContextIdSupports, /* weak =*/ false);
|
||||
sa.appendElement(aPrincipal, /* weak =*/ false);
|
||||
sa.appendElement(aTriggeringPrincipal, /* weak =*/ false);
|
||||
|
||||
let features = "chrome,dialog=no,all";
|
||||
if (aIsPrivate) {
|
||||
|
|
@ -407,7 +414,7 @@ function openLinkIn(url, where, params) {
|
|||
}
|
||||
|
||||
aCurrentBrowser.loadURIWithFlags(url, {
|
||||
triggeringPrincipal: aPrincipal,
|
||||
triggeringPrincipal: aTriggeringPrincipal,
|
||||
flags: flags,
|
||||
referrerURI: aNoReferrer ? null : aReferrerURI,
|
||||
referrerPolicy: aReferrerPolicy,
|
||||
|
|
@ -433,7 +440,7 @@ function openLinkIn(url, where, params) {
|
|||
noReferrer: aNoReferrer,
|
||||
userContextId: aUserContextId,
|
||||
originPrincipal: aPrincipal,
|
||||
triggeringPrincipal: aPrincipal,
|
||||
triggeringPrincipal: aTriggeringPrincipal,
|
||||
});
|
||||
browserUsedForLoad = tabUsedForLoad.linkedBrowser;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -85,6 +85,7 @@ var ContentClick = {
|
|||
allowMixedContent: json.allowMixedContent,
|
||||
isContentWindowPrivate: json.isContentWindowPrivate,
|
||||
originPrincipal: json.originPrincipal,
|
||||
triggeringPrincipal: json.triggeringPrincipal,
|
||||
};
|
||||
|
||||
// The new tab/window must use the same userContextId.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue