19dfa8dc622519374a57a0b24ab9d7f73afe160edBen Murdochdescription("This tests support for the document.createTouchList API.");
29dfa8dc622519374a57a0b24ab9d7f73afe160edBen Murdoch
39dfa8dc622519374a57a0b24ab9d7f73afe160edBen MurdochshouldBeTrue('"createTouchList" in document');
49dfa8dc622519374a57a0b24ab9d7f73afe160edBen Murdoch
565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch// Test createTouchList with no arguments.
69dfa8dc622519374a57a0b24ab9d7f73afe160edBen Murdochvar touchList = document.createTouchList();
79dfa8dc622519374a57a0b24ab9d7f73afe160edBen MurdochshouldBeNonNull("touchList");
89dfa8dc622519374a57a0b24ab9d7f73afe160edBen MurdochshouldBe("touchList.length", "0");
99dfa8dc622519374a57a0b24ab9d7f73afe160edBen MurdochshouldBeNull("touchList.item(0)");
109dfa8dc622519374a57a0b24ab9d7f73afe160edBen MurdochshouldBeNull("touchList.item(1)");
119dfa8dc622519374a57a0b24ab9d7f73afe160edBen Murdoch
1265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch// Test createTouchList with Touch objects as arguments.
1365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochtry {
1465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    var t = document.createTouch(window, document.body, 12341, 60, 65, 100, 105);
1565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    var t2 = document.createTouch(window, document.body, 12342, 50, 55, 115, 120);
1665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    var tl = document.createTouchList(t, t2);
1765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
1865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    var evt = document.createEvent("TouchEvent");
1965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    evt.initTouchEvent(tl, tl, tl, "touchstart", window, 0, 0, 0, 0, true, false, false, false);
2065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    document.body.addEventListener("touchstart", function handleTouchStart(ev) {
2265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        ts = ev;
2365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        shouldBe("ts.touches.length", "2");
2465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        shouldBe("ts.touches[0].identifier", "12341");
2565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        shouldBe("ts.touches[0].clientX", "60");
2665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        shouldBe("ts.touches[1].screenY", "120");
2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        shouldBe("ts.ctrlKey", "true");
2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    });
2965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    document.body.dispatchEvent(evt);
3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} catch(e) {
3265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    testFailed("An exception was thrown: " + e.message);
3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch// Test createTouchList with invalid arguments which throws exceptions.
3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochtry {
3765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    var tl = document.createTouchList(1, 2);
3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} catch(e) {
3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    testFailed("An exception was thrown: " + e.message);
4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
429dfa8dc622519374a57a0b24ab9d7f73afe160edBen MurdochsuccessfullyParsed = true;
439dfa8dc622519374a57a0b24ab9d7f73afe160edBen MurdochisSuccessfullyParsed();
4465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
45