diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/html/interaction/focus/processing-model/focus-fixup-rule-one-no-dialogs.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/html/interaction/focus/processing-model/focus-fixup-rule-one-no-dialogs.html')
-rw-r--r-- | testing/web-platform/tests/html/interaction/focus/processing-model/focus-fixup-rule-one-no-dialogs.html | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/interaction/focus/processing-model/focus-fixup-rule-one-no-dialogs.html b/testing/web-platform/tests/html/interaction/focus/processing-model/focus-fixup-rule-one-no-dialogs.html new file mode 100644 index 0000000000..2413fe2667 --- /dev/null +++ b/testing/web-platform/tests/html/interaction/focus/processing-model/focus-fixup-rule-one-no-dialogs.html @@ -0,0 +1,109 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Focus fixup rule one (no <dialog>s involved)</title> +<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/forms.html#attr-fieldset-disabled"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div> + <button id="button1">Button 1</button> + <button id="button2">Button 2</button> + <button id="button3">Button 3</button> + <fieldset id="fieldset1"><button id="button4">Button 4</button></fieldset> + <fieldset id="fieldset2" disabled><legend><button id="button5">Button 5</button></legend></fieldset> + <div id="div" tabindex="0">Div</div> + <div id="editable" contenteditable=true>editor</div> +</div> + +<script> +"use strict"; + +test(() => { + const button = document.querySelector("#button1"); + button.focus(); + + assert_equals(document.activeElement, button, "Sanity check: the button must start focused"); + + button.disabled = true; + + assert_not_equals(document.activeElement, button, "After disabling, the button must no longer be focused"); + assert_equals(document.activeElement, document.body, "After disabling, the body must be focused"); + +}, "Disabling the active element (making it inert)"); + +test(() => { + const button = document.querySelector("#button2"); + button.focus(); + + assert_equals(document.activeElement, button, "Sanity check: the button must start focused"); + + button.hidden = true; + + assert_not_equals(document.activeElement, button, "After hiding, the button must no longer be focused"); + assert_equals(document.activeElement, document.body, "After hiding, the body must be focused"); + +}, "Hiding the active element"); + +test(() => { + const button = document.querySelector("#button3"); + button.focus(); + + assert_equals(document.activeElement, button, "Sanity check: the button must start focused"); + + button.remove(); + + assert_not_equals(document.activeElement, button, "After removing, the button must no longer be focused"); + assert_equals(document.activeElement, document.body, "After removing, the body must be focused"); + +}, "Removing the active element from the DOM"); + +test(() => { + const fieldset = document.querySelector("#fieldset1"); + const button = document.querySelector("#button4"); + button.focus(); + assert_equals(document.activeElement, button, "Sanity check: the button must start focused"); + + fieldset.disabled = true; + + assert_not_equals(document.activeElement, button, "After disabling ancestor fieldset, the button must no longer be focused"); + assert_equals(document.activeElement, document.body, "After disabling ancestor fieldset, the body must be focused"); +}, "Disabling <fieldset> affects its descendants"); + +test(() => { + const fieldset = document.querySelector("#fieldset2"); + const button = document.querySelector("#button5"); + button.focus(); + assert_equals(document.activeElement, button, "Sanity check: the button must start focused"); + + fieldset.insertBefore(document.createElement("legend"), fieldset.firstChild); + + assert_not_equals(document.activeElement, button, "After changing a legend element, the button must no longer be focused"); + assert_equals(document.activeElement, document.body, "After changing a legend element, the body must be focused"); +}, "Changing the first legend element in disabled <fieldset>"); + +test(() => { + const div = document.querySelector("#div"); + div.focus(); + + assert_equals(document.activeElement, div, "Sanity check: the div must start focused"); + + div.removeAttribute("tabindex"); + + assert_not_equals(document.activeElement, div, "After removing tabindex, the div must no longer be focused"); + assert_equals(document.activeElement, document.body, "After removing tabindex, the body must be focused"); + +}, "Removing the tabindex attribute from a div"); + +test(() => { + const div = document.querySelector("#editable"); + div.focus(); + assert_equals(document.activeElement, div, "Sanity check: the div must start focused"); + + div.contentEditable = false; + + assert_not_equals(document.activeElement, div, "After disabling contentEditable, the div must no longer be focused"); + assert_equals(document.activeElement, document.body, "After disabling contentEditable, the body must be focused"); +}, "Disabling contenteditable"); +</script> |