зеркало из https://github.com/mozilla/gecko-dev.git
52 строки
1.8 KiB
HTML
52 строки
1.8 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset="utf-8">
|
|
<title>requireInteraction: true</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<p>
|
|
<button id="button">Push me to open a requireInteraction=true notification!</button>
|
|
<button id="finish">Push me if you are done</button>
|
|
</p>
|
|
Steps:
|
|
<ol>
|
|
<li>Make sure you didn't block the notification permission.</li>
|
|
<li>Allow the notification permission if the prompt opens.</li>
|
|
<li>Click the first button.</li>
|
|
<li>See whether the notification disappears from the screen without interaction. It must not.</li>
|
|
<li>If you are sure it's not disappearing, then click that second button.</li>
|
|
</ol>
|
|
Why this is manual? Because
|
|
<ol>
|
|
<li>
|
|
One need to wait for more than arbitrary platform-specific time to see
|
|
it really does not disappear automatically.
|
|
</li>
|
|
<li>There's simply no API to tell it's disappeared from the screen or not</li>
|
|
</ol>
|
|
<script>
|
|
setup({ explicit_timeout: true })
|
|
|
|
promise_test(async () => {
|
|
const permission = await Notification.requestPermission();
|
|
if (permission === "denied") {
|
|
throw new Error("Permission is denied, can't proceed");
|
|
}
|
|
await new Promise(r => button.onclick = r);
|
|
const n = new Notification("Test notification", { requireInteraction: true });
|
|
await new Promise((resolve, reject) => {
|
|
n.onshow = resolve;
|
|
n.onerror = () => reject(new Error(
|
|
"Notification failed, and there's no good error message. Maybe some permission issue?"
|
|
));
|
|
});
|
|
await Promise.race([
|
|
new Promise(r => finish.onclick = r),
|
|
new Promise((r, reject) => {
|
|
n.onclose = n.onclick = () => reject(new Error(
|
|
"Uh, you should finish the test before you interact with the notification."
|
|
));
|
|
}),
|
|
]);
|
|
});
|
|
</script>
|