Bug 1685475 - Add a browser test to verify data document stays in the same DocGroup with its creator; r=smaug

Depends on D101327

Differential Revision: https://phabricator.services.mozilla.com/D101328
This commit is contained in:
Tom Tung 2021-01-14 13:22:52 +00:00
Родитель d7a1ef74c4
Коммит 5c29c7ab29
3 изменённых файлов: 75 добавлений и 0 удалений

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

@ -48,6 +48,7 @@ skip-if = e10s
[browser_ConsoleStorageAPITests.js]
skip-if = fission || (asan && os == "linux") # Bug 1614436
[browser_ConsoleStoragePBTest_perwindowpb.js]
[browser_data_document_crossOriginIsolated.js]
[browser_focus_steal_from_chrome.js]
[browser_focus_steal_from_chrome_during_mousedown.js]
[browser_frame_elements.js]

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

@ -0,0 +1,68 @@
"use strict";
const DIRPATH = getRootDirectory(gTestPath).replace(
"chrome://mochitests/content/",
""
);
const PATH = DIRPATH + "file_coop_coep.html";
const ORIGIN = "https://test1.example.com";
const URL = `${ORIGIN}/${PATH}`;
add_task(async function() {
await BrowserTestUtils.withNewTab(URL, async function(browser) {
BrowserTestUtils.loadURI(browser, URL);
await BrowserTestUtils.browserLoaded(browser);
await SpecialPowers.spawn(browser, [ORIGIN], async origin => {
is(
content.window.origin,
origin,
`Opened a tab and navigated to ${origin}`
);
ok(
content.window.crossOriginIsolated,
`Should have been cross-origin-isolated env`
);
let hostIds = [];
function createShadowDOMAndTriggerSlotChange(host) {
var shadow = host.attachShadow({ mode: "closed" });
let promise = new Promise(resolve => {
shadow.addEventListener("slotchange", function() {
hostIds.push(host.id);
resolve();
});
});
shadow.innerHTML = "<slot></slot>";
host.appendChild(host.ownerDocument.createElement("span"));
return promise;
}
let host1 = content.document.getElementById("host1");
let dataDoc = content.document.implementation.createHTMLDocument();
dataDoc.body.innerHTML = "<div id='host2'></div>";
let host2 = dataDoc.body.firstChild;
let host3 = content.document.getElementById("host3");
let promises = [];
promises.push(createShadowDOMAndTriggerSlotChange(host1));
promises.push(createShadowDOMAndTriggerSlotChange(host2));
promises.push(createShadowDOMAndTriggerSlotChange(host3));
await Promise.all(promises);
is(hostIds.length, 3, `Got 3 slot change events`);
is(hostIds[0], "host1", `The first one was host1`);
is(hostIds[1], "host2", `The second one was host2`);
is(hostIds[2], "host3", `The third one was host3`);
});
});
});

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

@ -0,0 +1,6 @@
<html>
<body>
<div id="host1"></div>
<div id="host3"></div>
</body>
</html>