Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!DOCTYPE html>
<meta charset="utf-8" />
<link rel="author" href="mailto:masonf@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="resources/invoker-utils.js"></script>
<button id=invoker interesttarget=target>Button</button>
<div id=target popover>Popover with <button id=contained>button</button></div>
<style>
[interesttarget] {
interest-target-delay: 0s;
}
</style>
<script>
let expectInterest;
let expectPartial;
let eventCount = 0;
function checkInterest(e) {
const notStr = expectInterest ? "" : "not ";
const event = e instanceof Event ? `${e.type} event` : e;
assert_equals(invoker.matches(':has-interest'),expectInterest,`target should ${notStr}gain interest (${event})`);
assert_equals(invoker.matches(':has-partial-interest'),expectInterest&&expectPartial,`Interest should ${expectPartial ? "" : "not "}be partial (${event})`);
assert_equals(target.matches(':popover-open'),expectInterest,`popover should ${notStr}be open (${event})`);
++eventCount;
}
promise_test(async function (t) {
invoker.addEventListener('focus',checkInterest);
target.addEventListener('interest',(e) => {
checkInterest(e);
expectInterest = true;
expectPartial = true;
});
expectInterest = false;
expectPartial = false;
await focusOn(invoker);
assert_equals(eventCount,2,'focus and interest should both have fired');
assert_true(expectInterest,'the interest event should set this');
checkInterest('before hot key');
await sendShowInterestHotkey();
expectPartial = false;
checkInterest('after hot key');
},'Partial interest timing should not be observable');
</script>