<!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>
