Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html>
<title>EyeDropper Test: abort signal</title>
<link rel="author" title="Ionel Popescu" href="mailto:iopopesc@microsoft.com">
<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>
<button id="eyedropperbutton">Open eyedropper!</button>
<script>
function clickOn(element) {
const actions = new test_driver.Actions();
return actions.pointerMove(0, 0, {origin: element})
.pointerDown({button: actions.ButtonType.LEFT})
.pointerUp({button: actions.ButtonType.LEFT})
.send();
}
promise_test(async t => {
const eyeDropperButton = document.getElementById("eyedropperbutton");
eyeDropperButton.addEventListener("click", async () => {
let eyeDropper = new EyeDropper();
let controller = new AbortController();
controller.abort();
await promise_rejects_dom(t, "AbortError", eyeDropper.open({signal: controller.signal}));
});
await clickOn(eyeDropperButton);
}, "Calling EyeDropper.open with signal's aborted flag set should directly throw AbortError");
promise_test(async t => {
const eyeDropperButton = document.getElementById("eyedropperbutton");
eyeDropperButton.addEventListener("click", () => {
let eyeDropper = new EyeDropper();
let controller = new AbortController();
this.step_timeout(() => {
controller.abort();
}, 500);
promise_rejects_dom(t, "AbortError", eyeDropper.open({signal: controller.signal}));
});
await clickOn(eyeDropperButton);
}, "Calling abort should dismiss the eyedropper");
</script>