diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /testing/web-platform/tests/pointerevents/pointerevent_pointercapture-in-shadow-dom.html | |
parent | Initial commit. (diff) | |
download | firefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/pointerevents/pointerevent_pointercapture-in-shadow-dom.html')
-rw-r--r-- | testing/web-platform/tests/pointerevents/pointerevent_pointercapture-in-shadow-dom.html | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/testing/web-platform/tests/pointerevents/pointerevent_pointercapture-in-shadow-dom.html b/testing/web-platform/tests/pointerevents/pointerevent_pointercapture-in-shadow-dom.html new file mode 100644 index 0000000000..94636231a6 --- /dev/null +++ b/testing/web-platform/tests/pointerevents/pointerevent_pointercapture-in-shadow-dom.html @@ -0,0 +1,117 @@ +<!DOCTYPE html> +<html> + <head> + <title>PointerCapture for Shadow DOM Elements</title> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width"> + <link rel="help" href= "https://bugs.chromium.org/p/chromium/issues/detail?id=810882"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/resources/testdriver.js"></script> + <script src="/resources/testdriver-actions.js"></script> + <script src="/resources/testdriver-vendor.js"></script> + </head> + <body onload="onLoad()"> + <template id="template"> + <style> + #content{ + height:100px; + width:100px; + background-color: lightgrey; + } + </style> + <div id="content"></div> + </template> + <h4>PointerCapture by Shadow DOM element</h4> + The light gray box below is part of Shadow DOM. + <ul> + <li> Click left mouse button inside the box and keep mouse button depressed </li> + <li> Move the mouse </li> + <li> There should be a message stating <em>Pointer was captured by Shadow DOM!</em></li> + <li> Release left mouse button + <li> There should be a message stating <em>Pointer was released by Shadow DOM!</em></li> + </ul> + <div id="shadowhost"></div> + <div id="log"></div> + <script> + function onLoad(){ + var logDiv = document.getElementById("log"); + function logMessage(message){ + var log = document.createElement("div"); + var messageNode = document.createTextNode(message); + log.appendChild(messageNode); + logDiv.appendChild(log); + } + var events = []; + + var host = document.getElementById("shadowhost"); + var shadowRoot = host.attachShadow({mode: "open"}); + var template = document.getElementById("template"); + var node = template.content.cloneNode(true); + shadowRoot.appendChild(node); + + var content = host.shadowRoot.getElementById("content"); + + content.addEventListener("pointerdown", function(e){ + content.setPointerCapture(e.pointerId); + events.push("pointerdown@content"); + }); + content.addEventListener("gotpointercapture", function(e){ + logMessage("Pointer was captured by Shadow DOM!"); + events.push("gotpointercapture@content"); + }); + content.addEventListener("pointerup", function(e){ + content.releasePointerCapture(e.pointerId); + events.push("pointerup@content"); + }); + content.addEventListener("lostpointercapture", function(e){ + logMessage("Pointer was released by Shadow DOM!"); + events.push("lostpointercapture@content"); + if(window.promise_test && shadow_dom_test){ + shadow_dom_test.step(function(){ + assert_array_equals(events, ["pointerdown@content", + "gotpointercapture@content", "pointerup@content", + "lostpointercapture@content"]); + resolve_test(); + }); + } + }); + + var shadow_dom_test = null; + var resolve_test = null; + var reject_test = null; + + function cleanup(){ + events = []; + shadow_dom_test = null; + resolve_test = null; + reject_test = null; + } + + if(window.promise_test){ + promise_test(async function(t){ + var actions_promise; + return new Promise(async function(resolve, reject){ + shadow_dom_test = t; + resolve_test = resolve; + reject_test = reject; + t.add_cleanup(function(){ + cleanup(); + }); + var contentRect = content.getBoundingClientRect(); + var actions = new test_driver.Actions(); + actions_promise = actions + .pointerMove(Math.ceil(contentRect.x), Math.ceil(contentRect.y)) + .pointerDown({button: actions.ButtonType.LEFT}) + .pointerUp({button: actions.ButtonType.LEFT}) + .send(); + }).then(async ()=>{ + await actions_promise; + t.done(); + }); + }, "PointerCapture works for Shadow DOM element."); + } + } + </script> + </body> +</html> |