mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
f9f5914039
# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D36041 --HG-- extra : source : 96b3895a3b2aa2fcb064c85ec5857b7216884556
166 lines
4.5 KiB
JavaScript
166 lines
4.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
add_task(async function() {
|
|
// allow top level data: URI navigations, otherwise loading data: URIs
|
|
// in toplevel windows fail.
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [["security.data_uri.block_toplevel_data_uri_navigations", false]],
|
|
});
|
|
|
|
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, null, false);
|
|
|
|
let browser = tab.linkedBrowser;
|
|
browser.stop(); // stop the about:blank load
|
|
|
|
let writeDomainURL = encodeURI(
|
|
"data:text/html,<script>document.write(document.domain);</script>"
|
|
);
|
|
|
|
let tests = [
|
|
{
|
|
name: "view background image",
|
|
url: "http://mochi.test:8888/",
|
|
element: "body",
|
|
go() {
|
|
return ContentTask.spawn(
|
|
gBrowser.selectedBrowser,
|
|
{ writeDomainURL },
|
|
async function(arg) {
|
|
let contentBody = content.document.body;
|
|
contentBody.style.backgroundImage =
|
|
"url('" + arg.writeDomainURL + "')";
|
|
|
|
return "context-viewbgimage";
|
|
}
|
|
);
|
|
},
|
|
verify() {
|
|
return ContentTask.spawn(gBrowser.selectedBrowser, null, async function(
|
|
arg
|
|
) {
|
|
Assert.ok(
|
|
!content.document.body.textContent,
|
|
"no domain was inherited for view background image"
|
|
);
|
|
});
|
|
},
|
|
},
|
|
{
|
|
name: "view image",
|
|
url: "http://mochi.test:8888/",
|
|
element: "img",
|
|
go() {
|
|
return ContentTask.spawn(
|
|
gBrowser.selectedBrowser,
|
|
{ writeDomainURL },
|
|
async function(arg) {
|
|
let doc = content.document;
|
|
let img = doc.createElement("img");
|
|
img.height = 100;
|
|
img.width = 100;
|
|
img.setAttribute("src", arg.writeDomainURL);
|
|
doc.body.insertBefore(img, doc.body.firstElementChild);
|
|
|
|
return "context-viewimage";
|
|
}
|
|
);
|
|
},
|
|
verify() {
|
|
return ContentTask.spawn(gBrowser.selectedBrowser, null, async function(
|
|
arg
|
|
) {
|
|
Assert.ok(
|
|
!content.document.body.textContent,
|
|
"no domain was inherited for view image"
|
|
);
|
|
});
|
|
},
|
|
},
|
|
{
|
|
name: "show only this frame",
|
|
url: "http://mochi.test:8888/",
|
|
element: ["iframe", "html"],
|
|
go() {
|
|
return ContentTask.spawn(
|
|
gBrowser.selectedBrowser,
|
|
{ writeDomainURL },
|
|
async function(arg) {
|
|
let doc = content.document;
|
|
let iframe = doc.createElement("iframe");
|
|
iframe.setAttribute("src", arg.writeDomainURL);
|
|
doc.body.insertBefore(iframe, doc.body.firstElementChild);
|
|
|
|
// Wait for the iframe to load.
|
|
return new Promise(resolve => {
|
|
iframe.addEventListener(
|
|
"load",
|
|
function() {
|
|
resolve("context-showonlythisframe");
|
|
},
|
|
{ capture: true, once: true }
|
|
);
|
|
});
|
|
}
|
|
);
|
|
},
|
|
verify() {
|
|
return ContentTask.spawn(gBrowser.selectedBrowser, null, async function(
|
|
arg
|
|
) {
|
|
Assert.ok(
|
|
!content.document.body.textContent,
|
|
"no domain was inherited for 'show only this frame'"
|
|
);
|
|
});
|
|
},
|
|
},
|
|
];
|
|
|
|
let contentAreaContextMenu = document.getElementById(
|
|
"contentAreaContextMenu"
|
|
);
|
|
|
|
for (let test of tests) {
|
|
let loadedPromise = BrowserTestUtils.browserLoaded(
|
|
gBrowser.selectedBrowser
|
|
);
|
|
BrowserTestUtils.loadURI(gBrowser, test.url);
|
|
await loadedPromise;
|
|
|
|
info("Run subtest " + test.name);
|
|
let commandToRun = await test.go();
|
|
|
|
let popupShownPromise = BrowserTestUtils.waitForEvent(
|
|
contentAreaContextMenu,
|
|
"popupshown"
|
|
);
|
|
await BrowserTestUtils.synthesizeMouse(
|
|
test.element,
|
|
3,
|
|
3,
|
|
{ type: "contextmenu", button: 2 },
|
|
gBrowser.selectedBrowser
|
|
);
|
|
await popupShownPromise;
|
|
info("onImage: " + gContextMenu.onImage);
|
|
|
|
let loadedAfterCommandPromise = BrowserTestUtils.browserLoaded(
|
|
gBrowser.selectedBrowser
|
|
);
|
|
document.getElementById(commandToRun).click();
|
|
await loadedAfterCommandPromise;
|
|
|
|
await test.verify();
|
|
|
|
let popupHiddenPromise = BrowserTestUtils.waitForEvent(
|
|
contentAreaContextMenu,
|
|
"popuphidden"
|
|
);
|
|
contentAreaContextMenu.hidePopup();
|
|
await popupHiddenPromise;
|
|
}
|
|
|
|
gBrowser.removeCurrentTab();
|
|
});
|