summaryrefslogtreecommitdiffstats
path: root/dom/base/test/test_focus_scroll_padding_tab.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /dom/base/test/test_focus_scroll_padding_tab.html
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/base/test/test_focus_scroll_padding_tab.html')
-rw-r--r--dom/base/test/test_focus_scroll_padding_tab.html74
1 files changed, 74 insertions, 0 deletions
diff --git a/dom/base/test/test_focus_scroll_padding_tab.html b/dom/base/test/test_focus_scroll_padding_tab.html
new file mode 100644
index 0000000000..1d3b0d3e92
--- /dev/null
+++ b/dom/base/test/test_focus_scroll_padding_tab.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<title>Test for bug 1617342</title>
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script src="/tests/SimpleTest/EventUtils.js"></script>
+<style>
+ :root {
+ scroll-padding: 100px 0;
+ }
+ body {
+ margin: 0;
+ }
+ #fixed-footer {
+ height: 100px;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ background: green;
+ }
+ #fixed-header {
+ height: 100px;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ background: green;
+ }
+ .almost-full-padding {
+ height: calc(100vh - 200px);
+ }
+ .padding {
+ height: 100vh;
+ }
+</style>
+<div id="fixed-header"></div>
+<div class="padding"></div>
+<input>
+<div class="almost-full-padding"></div>
+<input>
+<div class="padding"></div>
+<input id="end">
+<div class="padding"></div>
+<div id="fixed-footer"></div>
+<script>
+ SimpleTest.waitForExplicitFinish();
+ SimpleTest.waitForFocus(async function() {
+ let stack = [];
+ let end = document.getElementById("end");
+
+ let lastActiveElement = document.activeElement;
+
+ do {
+ synthesizeKey("KEY_Tab");
+ is(document.activeElement.tagName, "INPUT", "Should focus inputs only, there's nothing else");
+ isnot(document.activeElement, lastActiveElement, "Focus should've moved once per tab keypress");
+ let rect = document.activeElement.getBoundingClientRect();
+ ok(rect.top >= 100, "Should not be covered by top bar");
+ ok(rect.bottom >= 100, "Should not be covered by bottom bar");
+ lastActiveElement = document.activeElement;
+ stack.push(lastActiveElement);
+ } while (document.activeElement != end)
+
+ do {
+ let previous = stack.pop();
+ let rect = document.activeElement.getBoundingClientRect();
+ ok(rect.top >= 100, "Should not be covered by top bar");
+ ok(rect.bottom >= 100, "Should not be covered by bottom bar");
+ is(document.activeElement, previous, "Focus should've moved backwards as expected");
+ synthesizeKey("KEY_Tab", {shiftKey: true});
+ } while (stack.length);
+
+ SimpleTest.finish();
+ });
+</script>