mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-06 07:48:38 +09:00
Bug 1331686 - Pass correct triggeringPrincipal for tabs openen through ctrl-click and open link in new tab
This commit is contained in:
parent
f563201762
commit
9b3581eddb
5 changed files with 38 additions and 6 deletions
|
|
@ -71,6 +71,16 @@ XPCOMUtils.defineLazyModuleGetter(this, "SafeBrowsing",
|
|||
["gDNSService", "@mozilla.org/network/dns-service;1", "nsIDNSService"],
|
||||
].forEach(([name, cc, ci]) => XPCOMUtils.defineLazyServiceGetter(this, name, cc, ci));
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "gSerializationHelper",
|
||||
"@mozilla.org/network/serialization-helper;1",
|
||||
"nsISerializationHelper");
|
||||
|
||||
XPCOMUtils.defineLazyGetter(this, "BrowserToolboxProcess", function() {
|
||||
let tmp = {};
|
||||
Cu.import("resource://devtools/client/framework/ToolboxProcess.jsm", tmp);
|
||||
return tmp.BrowserToolboxProcess;
|
||||
});
|
||||
|
||||
XPCOMUtils.defineLazyGetter(this, "gBrowserBundle", function() {
|
||||
return Services.strings.createBundle('chrome://browser/locale/browser.properties');
|
||||
});
|
||||
|
|
@ -806,6 +816,7 @@ function _loadURIWithFlags(browser, uri, params) {
|
|||
if (!uri) {
|
||||
uri = "about:blank";
|
||||
}
|
||||
let triggeringPrincipal = params.triggeringPrincipal || null;
|
||||
let flags = params.flags || 0;
|
||||
let referrer = params.referrerURI;
|
||||
let referrerPolicy = ('referrerPolicy' in params ? params.referrerPolicy :
|
||||
|
|
@ -830,7 +841,7 @@ function _loadURIWithFlags(browser, uri, params) {
|
|||
|
||||
browser.webNavigation.loadURIWithOptions(uri, flags,
|
||||
referrer, referrerPolicy,
|
||||
postData, null, null);
|
||||
postData, null, null, triggeringPrincipal);
|
||||
} else {
|
||||
// Check if the current browser is allowed to unload.
|
||||
let {permitUnload, timedOut} = browser.permitUnload();
|
||||
|
|
@ -844,6 +855,9 @@ function _loadURIWithFlags(browser, uri, params) {
|
|||
|
||||
let loadParams = {
|
||||
uri: uri,
|
||||
triggeringPrincipal: triggeringPrincipal
|
||||
? gSerializationHelper.serializePrincipal(triggeringPrincipal)
|
||||
: null,
|
||||
flags: flags,
|
||||
referrer: referrer ? referrer.spec : null,
|
||||
referrerPolicy: referrerPolicy,
|
||||
|
|
@ -871,7 +885,7 @@ function _loadURIWithFlags(browser, uri, params) {
|
|||
}
|
||||
|
||||
browser.webNavigation.loadURIWithOptions(uri, flags, referrer, referrerPolicy,
|
||||
postData, null, null);
|
||||
postData, null, null, triggeringPrincipal);
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
|
|
@ -4838,7 +4852,7 @@ nsBrowserAccess.prototype = {
|
|||
_openURIInNewTab: function(aURI, aReferrer, aReferrerPolicy, aIsPrivate,
|
||||
aIsExternal, aForceNotRemote=false,
|
||||
aUserContextId=Ci.nsIScriptSecurityManager.DEFAULT_USER_CONTEXT_ID,
|
||||
aOpener=null) {
|
||||
aOpener = null, aTriggeringPrincipal = null) {
|
||||
let win, needToFocusWin;
|
||||
|
||||
// try the current window. if we're in a popup, fall back on the most recent browser window
|
||||
|
|
@ -4863,6 +4877,7 @@ nsBrowserAccess.prototype = {
|
|||
let loadInBackground = gPrefService.getBoolPref("browser.tabs.loadDivertedInBackground");
|
||||
|
||||
let tab = win.gBrowser.loadOneTab(aURI ? aURI.spec : "about:blank", {
|
||||
triggeringPrincipal: aTriggeringPrincipal,
|
||||
referrerURI: aReferrer,
|
||||
referrerPolicy: aReferrerPolicy,
|
||||
userContextId: aUserContextId,
|
||||
|
|
@ -4911,9 +4926,11 @@ nsBrowserAccess.prototype = {
|
|||
}
|
||||
|
||||
let referrer = aOpener ? makeURI(aOpener.location.href) : null;
|
||||
let triggeringPrincipal = null;
|
||||
let referrerPolicy = Ci.nsIHttpChannel.REFERRER_POLICY_DEFAULT;
|
||||
if (aOpener && aOpener.document) {
|
||||
referrerPolicy = aOpener.document.referrerPolicy;
|
||||
triggeringPrincipal = aOpener.document.nodePrincipal;
|
||||
}
|
||||
let isPrivate = aOpener
|
||||
? PrivateBrowsingUtils.isContentWindowPrivate(aOpener)
|
||||
|
|
@ -4947,7 +4964,7 @@ nsBrowserAccess.prototype = {
|
|||
let browser = this._openURIInNewTab(aURI, referrer, referrerPolicy,
|
||||
isPrivate, isExternal,
|
||||
forceNotRemote, userContextId,
|
||||
openerWindow);
|
||||
openerWindow, triggeringPrincipal);
|
||||
if (browser)
|
||||
newWindow = browser.contentWindow;
|
||||
break;
|
||||
|
|
@ -4958,6 +4975,7 @@ nsBrowserAccess.prototype = {
|
|||
Ci.nsIWebNavigation.LOAD_FLAGS_FROM_EXTERNAL :
|
||||
Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
|
||||
gBrowser.loadURIWithFlags(aURI.spec, {
|
||||
triggeringPrincipal,
|
||||
flags: loadflags,
|
||||
referrerURI: referrer,
|
||||
referrerPolicy: referrerPolicy,
|
||||
|
|
@ -4986,7 +5004,8 @@ nsBrowserAccess.prototype = {
|
|||
aParams.referrerPolicy,
|
||||
aParams.isPrivate,
|
||||
isExternal, false,
|
||||
userContextId);
|
||||
userContextId, null,
|
||||
aParams.triggeringPrincipal);
|
||||
if (browser)
|
||||
return browser.QueryInterface(Ci.nsIFrameLoaderOwner);
|
||||
|
||||
|
|
|
|||
|
|
@ -482,6 +482,7 @@ var ClickEventHandler = {
|
|||
ctrlKey: event.ctrlKey, metaKey: event.metaKey,
|
||||
altKey: event.altKey, href: null, title: null,
|
||||
bookmark: false, referrerPolicy: referrerPolicy,
|
||||
triggeringPrincipal: principal,
|
||||
originAttributes: principal ? principal.originAttributes : {},
|
||||
isContentWindowPrivate: PrivateBrowsingUtils.isContentWindowPrivate(ownerDoc.defaultView)};
|
||||
|
||||
|
|
|
|||
|
|
@ -1525,6 +1525,7 @@
|
|||
<parameter name="aAllowThirdPartyFixup"/>
|
||||
<body>
|
||||
<![CDATA[
|
||||
var aTriggeringPrincipal;
|
||||
var aReferrerPolicy;
|
||||
var aFromExternal;
|
||||
var aRelatedToCurrent;
|
||||
|
|
@ -1540,6 +1541,7 @@
|
|||
typeof arguments[1] == "object" &&
|
||||
!(arguments[1] instanceof Ci.nsIURI)) {
|
||||
let params = arguments[1];
|
||||
aTriggeringPrincipal = params.triggeringPrincipal
|
||||
aReferrerURI = params.referrerURI;
|
||||
aReferrerPolicy = params.referrerPolicy;
|
||||
aCharset = params.charset;
|
||||
|
|
@ -1562,6 +1564,7 @@
|
|||
Services.prefs.getBoolPref("browser.tabs.loadInBackground");
|
||||
var owner = bgLoad ? null : this.selectedTab;
|
||||
var tab = this.addTab(aURI, {
|
||||
triggeringPrincipal: aTriggeringPrincipal,
|
||||
referrerURI: aReferrerURI,
|
||||
referrerPolicy: aReferrerPolicy,
|
||||
charset: aCharset,
|
||||
|
|
@ -2136,6 +2139,7 @@
|
|||
"use strict";
|
||||
|
||||
const NS_XUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||
var aTriggeringPrincipal;
|
||||
var aReferrerPolicy;
|
||||
var aFromExternal;
|
||||
var aRelatedToCurrent;
|
||||
|
|
@ -2152,6 +2156,7 @@
|
|||
typeof arguments[1] == "object" &&
|
||||
!(arguments[1] instanceof Ci.nsIURI)) {
|
||||
let params = arguments[1];
|
||||
aTriggeringPrincipal = params.triggeringPrincipal;
|
||||
aReferrerURI = params.referrerURI;
|
||||
aReferrerPolicy = params.referrerPolicy;
|
||||
aCharset = params.charset;
|
||||
|
|
@ -2283,6 +2288,7 @@
|
|||
try {
|
||||
b.loadURIWithFlags(aURI, {
|
||||
flags,
|
||||
triggeringPrincipal: aTriggeringPrincipal,
|
||||
referrerURI: aNoReferrer ? null: aReferrerURI,
|
||||
referrerPolicy: aReferrerPolicy,
|
||||
charset: aCharset,
|
||||
|
|
|
|||
|
|
@ -407,6 +407,7 @@ function openLinkIn(url, where, params) {
|
|||
}
|
||||
|
||||
aCurrentBrowser.loadURIWithFlags(url, {
|
||||
triggeringPrincipal: aPrincipal,
|
||||
flags: flags,
|
||||
referrerURI: aNoReferrer ? null : aReferrerURI,
|
||||
referrerPolicy: aReferrerPolicy,
|
||||
|
|
@ -432,6 +433,7 @@ function openLinkIn(url, where, params) {
|
|||
noReferrer: aNoReferrer,
|
||||
userContextId: aUserContextId,
|
||||
originPrincipal: aPrincipal,
|
||||
triggeringPrincipal: aPrincipal,
|
||||
});
|
||||
browserUsedForLoad = tabUsedForLoad.linkedBrowser;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -135,6 +135,7 @@
|
|||
aURI = "about:blank";
|
||||
|
||||
var aReferrerPolicy = Components.interfaces.nsIHttpChannel.REFERRER_POLICY_DEFAULT;
|
||||
var aTriggeringPrincipal;
|
||||
|
||||
// Check for loadURIWithFlags(uri, { ... });
|
||||
var params = arguments[1];
|
||||
|
|
@ -144,6 +145,9 @@
|
|||
if ('referrerPolicy' in params) {
|
||||
aReferrerPolicy = params.referrerPolicy;
|
||||
}
|
||||
if ("triggeringPrincipal" in params) {
|
||||
aTriggeringPrincipal = params.triggeringPrincipal;
|
||||
}
|
||||
aCharset = params.charset;
|
||||
aPostData = params.postData;
|
||||
}
|
||||
|
|
@ -151,7 +155,7 @@
|
|||
this._wrapURIChangeCall(() =>
|
||||
this.webNavigation.loadURIWithOptions(
|
||||
aURI, aFlags, aReferrerURI, aReferrerPolicy,
|
||||
aPostData, null, null));
|
||||
aPostData, null, null, aTriggeringPrincipal));
|
||||
]]>
|
||||
</body>
|
||||
</method>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue