<!DOCTYPE html>
<meta charset="utf-8">
<title>TestDriver actions: two touch points with one moving one pause</title>
<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>

<style>
div#test1{
  position: fixed;
  touch-action: none;
  top: 0;
  left: 0;
  width: 100px;
  height: 100px;
  background-color: blue;
}

</style>

<div id="test1">
</div>

<script>
let event_type = [];
let event_id = [];

async_test(t => {
  let test1 = document.getElementById("test1");
  document.getElementById("test1").addEventListener("pointerdown",
    e => {event_type.push(e.type); event_id.push(e.pointerId);});
  document.getElementById("test1").addEventListener("pointerup",
    e => {event_type.push(e.type); event_id.push(e.pointerId);});
  document.getElementById("test1").addEventListener("pointermove",
    e => {event_type.push(e.type); event_id.push(e.pointerId);});

  let actions = new test_driver.Actions()
      .addPointer("touchPointer1", "touch")
      .addPointer("touchPointer2", "touch")
      .pointerMove(0, 0, {origin: test1, sourceName: "touchPointer1"})
      .pointerMove(10, 0, {origin: test1, sourceName: "touchPointer2"})
      .pointerDown({sourceName: "touchPointer1"})
      .pointerDown({sourceName: "touchPointer2"})
      .pause(0, "pointer", {sourceName: "touchPointer1"})
      .pointerMove(0, 10, {origin: test1, sourceName: "touchPointer2"})
      .pointerUp({sourceName: "touchPointer1"})
      .pointerUp({sourceName: "touchPointer2"});

  actions.send()
    .then(t.step_func_done(() => {assert_array_equals(event_type, ["pointerdown", "pointerdown", "pointermove", "pointerup", "pointerup"]);
      assert_array_equals(event_id, [2, 3, 3, 2, 3]);}))
    .catch(e => t.step_func(() => assert_unreached("Actions sequence failed " + e)));
});
</script>
