blob: e313591a77d73e30194a9e4d65ef19e3f43e54bb [file] [log] [blame]
<!doctype HTML>
<div id="host">
<input id="slotted" type="text">
</div>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
promise_test((t) => {
const container = document.createElement("div");
container.style = "contain: style layout;";
container.innerHTML = "<slot></slot>";
const shadowRoot = host.attachShadow({ mode: "open" });
shadowRoot.appendChild(container);
const acquirePromise = container.displayLock.acquire({ timeout: Infinity, activatable: true });
return new Promise((resolve, reject) => {
const eventPromise = new Promise((resolve, reject) => {
container.onbeforeactivate = (e) => {
t.step(() => assert_equals(e.target, container));
t.step(() => assert_equals(e.activatedElement, slotted));
resolve();
};
});
host.onbeforeactivate = reject;
slotted.onbeforeactivate = reject;
t.step(() => assert_not_equals(document.activeElement, slotted));
acquirePromise.then(() => {
slotted.focus();
eventPromise.then(() => {
t.step(() => assert_equals(document.activeElement, slotted));
resolve();
});
});
});
}, "Activating locked element through focus() fires beforeactivate, doesn't go through shadow boundary");
</script>