diff --git a/testing/web-platform/tests/html/semantics/forms/the-button-element/button-click-resets-with-commandfor.tentative.html b/testing/web-platform/tests/html/semantics/forms/the-button-element/button-click-resets-with-commandfor.tentative.html new file mode 100644 index 0000000000000..08317ed8a4bfd --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/the-button-element/button-click-resets-with-commandfor.tentative.html @@ -0,0 +1,522 @@ +< +! +doctype +html +> +< +meta +charset += +" +utf +- +8 +" +/ +> +< +title +> +Clicking +a +button +should +submit +the +form +< +/ +title +> +< +meta +name += +" +author +" +title += +" +Keith +Cirkel +" +href += +" +mailto +: +wpt +keithcirkel +. +co +. +uk +" +/ +> +< +link +rel += +" +help +" +href += +" +https +: +/ +/ +html +. +spec +. +whatwg +. +org +/ +multipage +/ +# +attr +- +button +- +type +- +submit +- +state +" +/ +> +< +script +src += +" +/ +resources +/ +testharness +. +js +" +> +< +/ +script +> +< +script +src += +" +/ +resources +/ +testharnessreport +. +js +" +> +< +/ +script +> +< +form +id += +" +form +" +> +< +button +id += +" +button +" +type += +" +reset +" +> +< +/ +button +> +< +/ +form +> +< +script +> +const +form += +document +. +getElementById +( +" +form +" +) +; +const +button += +document +. +getElementById +( +" +button +" +) +; +function +resetState +( +) +{ +button +. +removeAttribute +( +" +commandfor +" +) +; +button +. +removeAttribute +( +" +command +" +) +; +button +. +removeAttribute +( +" +disabled +" +) +; +button +. +removeAttribute +( +" +form +" +) +; +button +. +setAttribute +( +" +type +" +" +reset +" +) +; +} +test +( +( +t +) += +> +{ +t +. +add_cleanup +( +resetState +) +; +button +. +setAttribute +( +" +command +" +" +- +- +foo +" +) +; +let +called += +false +; +form +. +addEventListener +( +" +reset +" +( +e +) += +> +{ +called += +true +; +} +) +; +button +. +click +( +) +; +assert_true +( +called +" +reset +should +have +been +dispatched +" +) +; +} +" +clicking +a +reset +button +should +trigger +a +reset +( +with +command +attribute +) +" +) +; +test +( +( +t +) += +> +{ +t +. +add_cleanup +( +resetState +) +; +button +. +setAttribute +( +" +commandfor +" +" +whatever +" +) +; +let +called += +false +; +form +. +addEventListener +( +" +reset +" +( +e +) += +> +{ +called += +true +; +} +) +; +button +. +click +( +) +; +assert_true +( +called +" +reset +should +have +been +dispatched +" +) +; +} +" +clicking +a +button +should +trigger +a +reset +( +with +commandfor +attribute +) +" +) +; +test +( +( +t +) += +> +{ +t +. +add_cleanup +( +resetState +) +; +button +. +setAttribute +( +" +command +" +" +- +- +foo +" +) +; +button +. +setAttribute +( +" +commandfor +" +" +whatever +" +) +; +let +called += +false +; +form +. +addEventListener +( +" +reset +" +( +e +) += +> +{ +called += +true +; +} +) +; +button +. +click +( +) +; +assert_true +( +called +" +reset +should +have +been +dispatched +" +) +; +} +" +clicking +a +button +should +trigger +a +reset +( +with +command +and +commandfor +attribute +) +" +) +; +< +/ +script +> diff --git a/testing/web-platform/tests/html/semantics/forms/the-button-element/button-click-submits-with-commandfor.tentative.html b/testing/web-platform/tests/html/semantics/forms/the-button-element/button-click-submits-with-commandfor.tentative.html new file mode 100644 index 0000000000000..e2cbb77fa1b56 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/the-button-element/button-click-submits-with-commandfor.tentative.html @@ -0,0 +1,930 @@ +< +! +doctype +html +> +< +meta +charset += +" +utf +- +8 +" +/ +> +< +title +> +Clicking +a +button +should +submit +the +form +< +/ +title +> +< +meta +name += +" +author +" +title += +" +Keith +Cirkel +" +href += +" +mailto +: +wpt +keithcirkel +. +co +. +uk +" +/ +> +< +link +rel += +" +help +" +href += +" +https +: +/ +/ +html +. +spec +. +whatwg +. +org +/ +multipage +/ +# +attr +- +button +- +type +- +submit +- +state +" +/ +> +< +script +src += +" +/ +resources +/ +testharness +. +js +" +> +< +/ +script +> +< +script +src += +" +/ +resources +/ +testharnessreport +. +js +" +> +< +/ +script +> +< +form +id += +" +form +" +> +< +button +id += +" +button +" +> +< +/ +button +> +< +/ +form +> +< +script +> +const +form += +document +. +getElementById +( +" +form +" +) +; +const +button += +document +. +getElementById +( +" +button +" +) +; +function +resetState +( +) +{ +button +. +removeAttribute +( +" +commandfor +" +) +; +button +. +removeAttribute +( +" +command +" +) +; +button +. +removeAttribute +( +" +disabled +" +) +; +button +. +removeAttribute +( +" +form +" +) +; +button +. +removeAttribute +( +" +type +" +) +; +} +test +( +( +t +) += +> +{ +t +. +add_cleanup +( +resetState +) +; +button +. +setAttribute +( +" +command +" +" +- +- +foo +" +) +; +let +called += +false +; +form +. +addEventListener +( +" +submit +" +( +e +) += +> +{ +e +. +preventDefault +( +) +; +called += +true +; +} +{ +once +: +true +} +) +; +button +. +click +( +) +; +assert_false +( +called +" +submit +should +not +have +been +dispatched +" +) +; +} +" +clicking +a +button +( +implicit +type +) +should +NOT +trigger +a +submit +( +with +command +attribute +) +" +) +; +test +( +( +t +) += +> +{ +t +. +add_cleanup +( +resetState +) +; +button +. +setAttribute +( +" +commandfor +" +" +whatever +" +) +; +let +called += +false +; +form +. +addEventListener +( +" +submit +" +( +e +) += +> +{ +e +. +preventDefault +( +) +; +called += +true +; +} +{ +once +: +true +} +) +; +button +. +click +( +) +; +assert_false +( +called +" +submit +should +not +have +been +dispatched +" +) +; +} +" +clicking +a +button +( +implicit +type +) +should +NOT +trigger +a +submit +( +with +commandfor +attribute +) +" +) +; +test +( +( +t +) += +> +{ +t +. +add_cleanup +( +resetState +) +; +button +. +setAttribute +( +" +command +" +" +- +- +foo +" +) +; +button +. +setAttribute +( +" +commandfor +" +" +whatever +" +) +; +let +called += +false +; +form +. +addEventListener +( +" +submit +" +( +e +) += +> +{ +e +. +preventDefault +( +) +; +called += +true +; +} +{ +once +: +true +} +) +; +button +. +click +( +) +; +assert_false +( +called +" +submit +should +not +have +been +dispatched +" +) +; +} +" +clicking +a +button +( +implicit +type +) +should +NOT +trigger +a +submit +( +with +command +and +commandfor +attribute +) +" +) +; +test +( +( +t +) += +> +{ +t +. +add_cleanup +( +resetState +) +; +button +. +setAttribute +( +" +command +" +" +- +- +foo +" +) +; +button +. +setAttribute +( +" +type +" +" +submit +" +) +; +let +called += +false +; +form +. +addEventListener +( +" +submit +" +( +e +) += +> +{ +e +. +preventDefault +( +) +; +called += +true +; +} +{ +once +: +true +} +) +; +button +. +click +( +) +; +assert_true +( +called +" +submit +should +have +been +dispatched +" +) +; +} +" +clicking +a +button +( +explicit +type += +submit +) +SHOULD +trigger +a +submit +( +with +command +attribute +) +" +) +; +test +( +( +t +) += +> +{ +t +. +add_cleanup +( +resetState +) +; +button +. +setAttribute +( +" +commandfor +" +" +whatever +" +) +; +button +. +setAttribute +( +" +type +" +" +submit +" +) +; +let +called += +false +; +form +. +addEventListener +( +" +submit +" +( +e +) += +> +{ +e +. +preventDefault +( +) +; +called += +true +; +} +{ +once +: +true +} +) +; +button +. +click +( +) +; +assert_true +( +called +" +submit +should +have +been +dispatched +" +) +; +} +" +clicking +a +button +( +explicit +type += +submit +) +SHOULD +trigger +a +submit +( +with +commandfor +attribute +) +" +) +; +test +( +( +t +) += +> +{ +t +. +add_cleanup +( +resetState +) +; +button +. +setAttribute +( +" +command +" +" +- +- +foo +" +) +; +button +. +setAttribute +( +" +commandfor +" +" +whatever +" +) +; +button +. +setAttribute +( +" +type +" +" +submit +" +) +; +let +called += +false +; +form +. +addEventListener +( +" +submit +" +( +e +) += +> +{ +e +. +preventDefault +( +) +; +called += +true +; +} +{ +once +: +true +} +) +; +button +. +click +( +) +; +assert_true +( +called +" +submit +should +have +been +dispatched +" +) +; +} +" +clicking +a +button +( +explicit +type += +submit +) +SHOULD +trigger +a +submit +( +with +command +and +commandfor +attribute +) +" +) +; +< +/ +script +> diff --git a/testing/web-platform/tests/html/semantics/invokers/invoketarget-button-event-dispatch.tentative.html b/testing/web-platform/tests/html/semantics/invokers/invoketarget-button-event-dispatch.tentative.html index 56b52ca5082b4..46d95f77acd2b 100644 --- a/testing/web-platform/tests/html/semantics/invokers/invoketarget-button-event-dispatch.tentative.html +++ b/testing/web-platform/tests/html/semantics/invokers/invoketarget-button-event-dispatch.tentative.html @@ -489,7 +489,7 @@ source invokerbutton " -invoker +source " ) ; @@ -708,7 +708,7 @@ source invokerbutton " -invoker +source " ) ; @@ -878,7 +878,7 @@ source invokerbutton " -invoker +source " ) ; @@ -1441,6 +1441,15 @@ " ) ; +invokerbutton +. +removeAttribute +( +" +type +" +) +; await clickOn ( @@ -1462,14 +1471,15 @@ " event does -not +NOT dispatch if -invoker +button is form associated -without +with +implicit type " ) @@ -1490,6 +1500,192 @@ ) ; let +event +; +invokee +. +addEventListener +( +" +command +" +( +e +) += +> +( +event += +e +) +{ +once +: +true +} +) +; +invokerbutton +. +setAttribute +( +" +form +" +" +aform +" +) +; +invokerbutton +. +setAttribute +( +" +type +" +" +button +" +) +; +await +clickOn +( +invokerbutton +) +; +assert_true +( +event +instanceof +CommandEvent +" +event +is +CommandEvent +" +) +; +assert_equals +( +event +. +type +" +command +" +" +type +" +) +; +assert_equals +( +event +. +bubbles +false +" +bubbles +" +) +; +assert_equals +( +event +. +composed +true +" +composed +" +) +; +assert_equals +( +event +. +isTrusted +true +" +isTrusted +" +) +; +assert_equals +( +event +. +command +" +- +- +custom +- +command +" +" +command +" +) +; +assert_equals +( +event +. +target +invokee +" +target +" +) +; +assert_equals +( +event +. +source +invokerbutton +" +source +" +) +; +} +" +event +dispatches +if +button +is +form +associated +with +explicit +type += +button +" +) +; +promise_test +( +async +function +( +t +) +{ +t +. +add_cleanup +( +resetState +) +; +let called = false @@ -1538,7 +1734,7 @@ type " " -button +submit " ) ; @@ -1548,7 +1744,7 @@ invokerbutton ) ; -assert_true +assert_false ( called " @@ -1562,16 +1758,123 @@ } " event -dispatches +does +NOT +dispatch if -invoker +button is form associated with +explicit type = +submit +" +) +; +promise_test +( +async +function +( +t +) +{ +t +. +add_cleanup +( +resetState +) +; +let +called += +false +; +invokee +. +addEventListener +( +" +command +" +( +e +) += +> +( +called += +true +) +{ +once +: +true +} +) +; +invokerbutton +. +setAttribute +( +" +form +" +" +aform +" +) +; +invokerbutton +. +setAttribute +( +" +type +" +" +reset +" +) +; +await +clickOn +( +invokerbutton +) +; +assert_false +( +called +" +event +was +not +called +" +) +; +} +" +event +does +NOT +dispatch +if button +is +form +associated +with +explicit +type += +reset " ) ;