Backport Bug 1364392 - Provide correct triggeringPrincipal to openLinkIn

This commit is contained in:
Ricky Rosario 2018-08-24 15:31:22 -04:00
Родитель f78970f857
Коммит 7b5fb2fd2f
2 изменённых файлов: 8 добавлений и 19 удалений

Просмотреть файл

@ -639,19 +639,6 @@ class _ASRouter {
}); });
} }
openLinkIn(url, target, {isPrivate = false, trusted = false, where = ""}) {
const win = target.browser.ownerGlobal;
const params = {
private: isPrivate,
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({})
};
if (trusted) {
win.openTrustedLinkIn(url, where);
} else {
win.openLinkIn(url, where, params);
}
}
_validPreviewEndpoint(url) { _validPreviewEndpoint(url) {
try { try {
const endpoint = new URL(url); const endpoint = new URL(url);
@ -716,10 +703,13 @@ class _ASRouter {
target.browser.ownerGlobal.OpenBrowserWindow({private: true}); target.browser.ownerGlobal.OpenBrowserWindow({private: true});
break; break;
case ra.OPEN_URL: case ra.OPEN_URL:
this.openLinkIn(action.data.url, target, {isPrivate: false, where: "tabshifted"}); target.browser.ownerGlobal.openLinkIn(action.data.url, "tabshifted", {
private: false,
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({})
});
break; break;
case ra.OPEN_ABOUT_PAGE: case ra.OPEN_ABOUT_PAGE:
this.openLinkIn(`about:${action.data.page}`, target, {isPrivate: false, trusted: true, where: "tab"}); target.browser.ownerGlobal.openTrustedLinkIn(`about:${action.data.page}`, "tab");
break; break;
case ra.OPEN_APPLICATIONS_MENU: case ra.OPEN_APPLICATIONS_MENU:
UITour.showMenu(target.browser.ownerGlobal, action.data.target); UITour.showMenu(target.browser.ownerGlobal, action.data.target);

Просмотреть файл

@ -657,24 +657,23 @@ describe("ASRouter", () => {
assert.calledWith(msg.target.browser.ownerGlobal.OpenBrowserWindow, {private: true}); assert.calledWith(msg.target.browser.ownerGlobal.OpenBrowserWindow, {private: true});
}); });
it("should call openLinkIn with the correct params on OPEN_URL", async () => { it("should call openLinkIn with the correct params on OPEN_URL", async () => {
sinon.spy(Router, "openLinkIn");
let [testMessage] = Router.state.messages; let [testMessage] = Router.state.messages;
testMessage.button_action = {type: "OPEN_URL", data: {url: "some/url.com"}}; testMessage.button_action = {type: "OPEN_URL", data: {url: "some/url.com"}};
const msg = fakeExecuteUserAction(testMessage.button_action); const msg = fakeExecuteUserAction(testMessage.button_action);
await Router.onMessage(msg); await Router.onMessage(msg);
assert.calledWith(Router.openLinkIn, "some/url.com", msg.target, {isPrivate: false, where: "tabshifted"});
assert.calledOnce(msg.target.browser.ownerGlobal.openLinkIn); assert.calledOnce(msg.target.browser.ownerGlobal.openLinkIn);
assert.calledWith(msg.target.browser.ownerGlobal.openLinkIn,
"some/url.com", "tabshifted", {"private": false, "triggeringPrincipal": undefined});
}); });
it("should call openLinkIn with the correct params on OPEN_ABOUT_PAGE", async () => { it("should call openLinkIn with the correct params on OPEN_ABOUT_PAGE", async () => {
sinon.spy(Router, "openLinkIn");
let [testMessage] = Router.state.messages; let [testMessage] = Router.state.messages;
testMessage.button_action = {type: "OPEN_ABOUT_PAGE", data: {page: "something"}}; testMessage.button_action = {type: "OPEN_ABOUT_PAGE", data: {page: "something"}};
const msg = fakeExecuteUserAction(testMessage.button_action); const msg = fakeExecuteUserAction(testMessage.button_action);
await Router.onMessage(msg); await Router.onMessage(msg);
assert.calledWith(Router.openLinkIn, `about:something`, msg.target, {isPrivate: false, trusted: true, where: "tab"});
assert.calledOnce(msg.target.browser.ownerGlobal.openTrustedLinkIn); assert.calledOnce(msg.target.browser.ownerGlobal.openTrustedLinkIn);
assert.calledWith(msg.target.browser.ownerGlobal.openTrustedLinkIn, "about:something", "tab");
}); });
}); });