aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/mozilla/meta/MANIFEST.json6
-rw-r--r--tests/wpt/mozilla/tests/mozilla/hit_test_nested_sc.html72
2 files changed, 78 insertions, 0 deletions
diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json
index 4f9e37cfa05..5dca9c4c09d 100644
--- a/tests/wpt/mozilla/meta/MANIFEST.json
+++ b/tests/wpt/mozilla/meta/MANIFEST.json
@@ -6756,6 +6756,12 @@
"url": "/_mozilla/mozilla/global.html"
}
],
+ "mozilla/hit_test_nested_sc.html": [
+ {
+ "path": "mozilla/hit_test_nested_sc.html",
+ "url": "/_mozilla/mozilla/hit_test_nested_sc.html"
+ }
+ ],
"mozilla/hit_test_pos_fixed.html": [
{
"path": "mozilla/hit_test_pos_fixed.html",
diff --git a/tests/wpt/mozilla/tests/mozilla/hit_test_nested_sc.html b/tests/wpt/mozilla/tests/mozilla/hit_test_nested_sc.html
new file mode 100644
index 00000000000..e5c1565ff19
--- /dev/null
+++ b/tests/wpt/mozilla/tests/mozilla/hit_test_nested_sc.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Test: Hit testing works well with nested stacking contexts</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ .outer-sc {
+ transform: translate(-50px, -50px);
+ position: absolute;
+ width: 250px;
+ height: 250px;
+ top: 250px;
+ left: 250px;
+ background: blue;
+ }
+
+ .outer-sc:hover {
+ background: red;
+ }
+
+ .inner-sc {
+ transform: translate(50px, 50px);
+ position: absolute;
+ width: 250px;
+ height: 250px;
+ top: 250px;
+ left: 250px;
+ background: green;
+ }
+
+ .inner-sc:hover {
+ background: yellow;
+ }
+
+ html, body { margin: 0; padding: 0; }
+</style>
+<div class="outer-sc">
+ <div class="inner-sc">
+ </div>
+</div>
+<script>
+async_test(function(t) {
+ window.onload = t.step_func(function() {
+ // This should be in the middle of the squares:
+ // +-------------+
+ // | |
+ // | |
+ // | |
+ // | |
+ // | |
+ // +-------------+
+ // . <-- here
+ // +-------------+
+ // | |
+ // | |
+ // | |
+ // | |
+ // | |
+ // +-------------+
+ //
+ // If we have forgotten to take into account the nested transformations,
+ // then it will report that the inner stacking context is at that point
+ // (but obviously shouldn't).
+ var points = document.elementsFromPoint(450 + 25, 450 + 25);
+ assert_true(points.length > 0,
+ "Should report at least one element");
+ assert_true(points[0].className !== "inner-sc",
+ "Should not be the inner stacking context");
+ t.done();
+ })
+})
+</script>