| Index: third_party/WebKit/LayoutTests/imported/wpt/dom/events/AddEventListenerOptions-once.html
|
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/dom/events/AddEventListenerOptions-once.html b/third_party/WebKit/LayoutTests/imported/wpt/dom/events/AddEventListenerOptions-once.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ae750702c79d0e2f493537ade1c78558987f536e
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/dom/events/AddEventListenerOptions-once.html
|
| @@ -0,0 +1,81 @@
|
| +<!DOCTYPE html>
|
| +<meta charset="utf-8">
|
| +<title>AddEventListenerOptions.once</title>
|
| +<link rel="author" title="Xidorn Quan" href="https://www.upsuper.org">
|
| +<link rel="help" href="https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-once">
|
| +<script src="/resources/testharness.js"></script>
|
| +<script src="/resources/testharnessreport.js"></script>
|
| +<div id="log"></div>
|
| +<script>
|
| +
|
| +test(function() {
|
| + var invoked_once = false;
|
| + var invoked_normal = false;
|
| + function handler_once() {
|
| + invoked_once = true;
|
| + }
|
| + function handler_normal() {
|
| + invoked_normal = true;
|
| + }
|
| +
|
| + document.addEventListener('test', handler_once, {once: true});
|
| + document.addEventListener('test', handler_normal);
|
| + document.dispatchEvent(new Event('test'));
|
| + assert_equals(invoked_once, true, "Once handler should be invoked");
|
| + assert_equals(invoked_normal, true, "Normal handler should be invoked");
|
| +
|
| + invoked_once = false;
|
| + invoked_normal = false;
|
| + document.dispatchEvent(new Event('test'));
|
| + assert_equals(invoked_once, false, "Once handler shouldn't be invoked again");
|
| + assert_equals(invoked_normal, true, "Normal handler should be invoked again");
|
| + document.removeEventListener('test', handler_normal);
|
| +}, "Once listener should be invoked only once");
|
| +
|
| +test(function() {
|
| + var invoked_count = 0;
|
| + function handler() {
|
| + invoked_count++;
|
| + if (invoked_count == 1)
|
| + document.dispatchEvent(new Event('test'));
|
| + }
|
| + document.addEventListener('test', handler, {once: true});
|
| + document.dispatchEvent(new Event('test'));
|
| + assert_equals(invoked_count, 1, "Once handler should only be invoked once");
|
| +
|
| + invoked_count = 0;
|
| + function handler2() {
|
| + invoked_count++;
|
| + if (invoked_count == 1)
|
| + document.addEventListener('test', handler2, {once: true});
|
| + if (invoked_count <= 2)
|
| + document.dispatchEvent(new Event('test'));
|
| + }
|
| + document.addEventListener('test', handler2, {once: true});
|
| + document.dispatchEvent(new Event('test'));
|
| + assert_equals(invoked_count, 2, "Once handler should only be invoked once after each adding");
|
| +}, "Once listener should be invoked only once even if the event is nested");
|
| +
|
| +test(function() {
|
| + var invoked_count = 0;
|
| + function handler() {
|
| + invoked_count++;
|
| + }
|
| +
|
| + document.addEventListener('test', handler, {once: true});
|
| + document.addEventListener('test', handler);
|
| + document.dispatchEvent(new Event('test'));
|
| + assert_equals(invoked_count, 1, "The handler should only be added once");
|
| +
|
| + invoked_count = 0;
|
| + document.dispatchEvent(new Event('test'));
|
| + assert_equals(invoked_count, 0, "The handler was added as a once listener");
|
| +
|
| + invoked_count = 0;
|
| + document.addEventListener('test', handler, {once: true});
|
| + document.removeEventListener('test', handler);
|
| + document.dispatchEvent(new Event('test'));
|
| + assert_equals(invoked_count, 0, "The handler should have been removed");
|
| +}, "Once listener should be added / removed like normal listeners");
|
| +
|
| +</script>
|
|
|