зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
d7a1ef74c4
Коммит
5c29c7ab29
|
@ -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>
|
Загрузка…
Ссылка в новой задаче