<!DOCTYPE HTML> <html> <head> <title>TouchEvent Retargeting Tests</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> </head> <body> <div id="host0"></div> <div id="host1"></div> <script> var host0 = document.getElementById('host0'); var root0 = host0.attachShadow({ mode: 'open' }); var target0 = document.createElement('div'); root0.appendChild(target0); var host1 = document.getElementById('host1'); var root1 = host1.attachShadow({ mode: 'open' }); var target1 = document.createElement('div'); root1.appendChild(target1); async_test(function(t) { var touch0 = new Touch({ identifier: 0, target: target0, }); var touch1 = new Touch({ identifier: 1, target: target1, }); var touchEvent = new TouchEvent("touchstart", { touches: [touch0, touch1], targetTouches: [touch1], changedTouches: [touch1], }); target0.addEventListener('touchstart', t.step_func_done(function(e) { assert_equals(e.touches.length, 2); assert_equals(e.touches[0].target, target0); assert_equals(e.touches[1].target, host1); assert_equals(e.targetTouches.length, 1); assert_equals(e.targetTouches[0].target, host1); assert_equals(e.changedTouches.length, 1); assert_equals(e.changedTouches[0].target, host1); })); target0.dispatchEvent(touchEvent, { composed: true }); }, "TouchEvent's touches, targetTouches, and changedTouches should be retargeted."); </script> </body> </html>