From 8bdf1fdbd37dc0e40ad2eee85b9b1622b75afd62 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 14 Aug 2020 22:38:47 +0200 Subject: [PATCH 1/3] Add tests for legacy-activation-behaviors --- dom/events/Event-dispatch-click.html | 48 ++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/dom/events/Event-dispatch-click.html b/dom/events/Event-dispatch-click.html index 4b07103027139b..9260ae1c5bd9e7 100644 --- a/dom/events/Event-dispatch-click.html +++ b/dom/events/Event-dispatch-click.html @@ -241,6 +241,54 @@ input.dispatchEvent(new MouseEvent("click")); }, `disabled radio should fire onclick`); +async_test(t => { + const input = document.createElement("input"); + input.type = "checkbox"; + input.disabled = true; + input.onclick = t.step_func(ev => { + assert_true(input.checked); + ev.preventDefault(); + setTimeout(t.step_func_done(() => { + assert_false(input.checked); + })); + }); + input.dispatchEvent(new MouseEvent("click", { cancelable: true })); +}, `disabled checkbox should get legacy-canceled-activation behavior`); + +async_test(t => { + const input = document.createElement("input"); + input.type = "radio"; + input.disabled = true; + input.onclick = t.step_func(ev => { + assert_true(input.checked); + ev.preventDefault(); + setTimeout(t.step_func_done(() => { + assert_false(input.checked); + })); + }); + input.dispatchEvent(new MouseEvent("click", { cancelable: true })); +}, `disabled radio should get legacy-canceled-activation behavior`); + +async_test(t => { + const input = document.createElement("input"); + input.type = "checkbox"; + input.disabled = true; + const ev = new MouseEvent("click", { cancelable: true }); + ev.preventDefault(); + input.dispatchEvent(ev); + setTimeout(t.step_func_done(() => assert_false(input.checked))); +}, `disabled checkbox should get legacy-canceled-activation behavior 2`); + +async_test(t => { + const input = document.createElement("input"); + input.type = "radio"; + input.disabled = true; + const ev = new MouseEvent("click", { cancelable: true }); + ev.preventDefault(); + input.dispatchEvent(ev); + setTimeout(t.step_func_done(() => assert_false(input.checked))); +}, `disabled radio should get legacy-canceled-activation behavior 2`); + async_test(function(t) { var form = document.createElement("form") var didSubmit = false From cb73a62ee36e06f6f2236a703d450b1a137be01c Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 14 Aug 2020 22:51:20 +0200 Subject: [PATCH 2/3] use queueMicrotask --- dom/events/Event-dispatch-click.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dom/events/Event-dispatch-click.html b/dom/events/Event-dispatch-click.html index 9260ae1c5bd9e7..c35b2865b33571 100644 --- a/dom/events/Event-dispatch-click.html +++ b/dom/events/Event-dispatch-click.html @@ -248,7 +248,7 @@ input.onclick = t.step_func(ev => { assert_true(input.checked); ev.preventDefault(); - setTimeout(t.step_func_done(() => { + queueMicrotask(t.step_func_done(() => { assert_false(input.checked); })); }); @@ -262,7 +262,7 @@ input.onclick = t.step_func(ev => { assert_true(input.checked); ev.preventDefault(); - setTimeout(t.step_func_done(() => { + queueMicrotask(t.step_func_done(() => { assert_false(input.checked); })); }); @@ -276,7 +276,7 @@ const ev = new MouseEvent("click", { cancelable: true }); ev.preventDefault(); input.dispatchEvent(ev); - setTimeout(t.step_func_done(() => assert_false(input.checked))); + queueMicrotask(t.step_func_done(() => assert_false(input.checked))); }, `disabled checkbox should get legacy-canceled-activation behavior 2`); async_test(t => { @@ -286,7 +286,7 @@ const ev = new MouseEvent("click", { cancelable: true }); ev.preventDefault(); input.dispatchEvent(ev); - setTimeout(t.step_func_done(() => assert_false(input.checked))); + queueMicrotask(t.step_func_done(() => assert_false(input.checked))); }, `disabled radio should get legacy-canceled-activation behavior 2`); async_test(function(t) { From 864a5eb69c19f3d2a642daecab6e4272c27c3e4e Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 14 Aug 2020 22:55:02 +0200 Subject: [PATCH 3/3] no need to be async --- dom/events/Event-dispatch-click.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dom/events/Event-dispatch-click.html b/dom/events/Event-dispatch-click.html index c35b2865b33571..148f4f50d41706 100644 --- a/dom/events/Event-dispatch-click.html +++ b/dom/events/Event-dispatch-click.html @@ -269,24 +269,24 @@ input.dispatchEvent(new MouseEvent("click", { cancelable: true })); }, `disabled radio should get legacy-canceled-activation behavior`); -async_test(t => { +test(t => { const input = document.createElement("input"); input.type = "checkbox"; input.disabled = true; const ev = new MouseEvent("click", { cancelable: true }); ev.preventDefault(); input.dispatchEvent(ev); - queueMicrotask(t.step_func_done(() => assert_false(input.checked))); + assert_false(input.checked); }, `disabled checkbox should get legacy-canceled-activation behavior 2`); -async_test(t => { +test(t => { const input = document.createElement("input"); input.type = "radio"; input.disabled = true; const ev = new MouseEvent("click", { cancelable: true }); ev.preventDefault(); input.dispatchEvent(ev); - queueMicrotask(t.step_func_done(() => assert_false(input.checked))); + assert_false(input.checked); }, `disabled radio should get legacy-canceled-activation behavior 2`); async_test(function(t) {