diff options
-rw-r--r-- | tests/wpt/mozilla/meta/MANIFEST.json | 6 | ||||
-rw-r--r-- | tests/wpt/mozilla/tests/mozilla/double_focus.html | 76 |
2 files changed, 82 insertions, 0 deletions
diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index c66a163d2f7..fff9517a8b1 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -6310,6 +6310,12 @@ "url": "/_mozilla/mozilla/document_url.html" } ], + "mozilla/double_focus.html": [ + { + "path": "mozilla/double_focus.html", + "url": "/_mozilla/mozilla/double_focus.html" + } + ], "mozilla/element_attribute.html": [ { "path": "mozilla/element_attribute.html", diff --git a/tests/wpt/mozilla/tests/mozilla/double_focus.html b/tests/wpt/mozilla/tests/mozilla/double_focus.html new file mode 100644 index 00000000000..89ed38f5086 --- /dev/null +++ b/tests/wpt/mozilla/tests/mozilla/double_focus.html @@ -0,0 +1,76 @@ +<!DOCTYPE html> + +<html> + + <head> + <meta charset="UTF-8"> + <title>Double focus/blur events</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + + <body> + + <input> + + <script> + + async_test(function(t) { + + var input = document.querySelector("input"); + + var actions = [ + input.focus, + input.focus, + input.blur, + input.blur, + input.focus, + input.focus, + input.blur, + input.blur, + input.focus, + ]; + + var expected_events = [ + "focus", + "blur", + "focus", + "blur", + "focus", + ]; + + var received_events = []; + + var action_idx = 0; + + var onEvent = t.step_func(function(e) { + received_events.push(e.type); + if (action_idx == actions.length - 1) { + // All actions executed + assert_array_equals(expected_events, received_events); + t.done(); + } + }); + + function next() { + actions[action_idx].apply(input); + action_idx++; + if (action_idx < actions.length) { + // This can't be done on focus or blur events + // as we don't expect focus() to trigger a focus + // event if the input was already focused. + setTimeout(next, 0); + } + } + + input.addEventListener("focus", onEvent, false); + input.addEventListener("blur", onEvent, false); + + next(); + + }); + + </script> + + </body> +</html> |