shouldBe("touch.pageY", "101");
shouldBe("touch.screenX", "102");
shouldBe("touch.screenY", "103");
+shouldBe("touch.radiusX", "5");
+shouldBe("touch.radiusY", "3");
+shouldBe("touch.force", "10");
shouldBe("touch.webkitRadiusX", "5");
shouldBe("touch.webkitRadiusY", "3");
shouldBe("touch.webkitRotationAngle", "10");
shouldBe("emptyTouch.pageY", "0");
shouldBe("emptyTouch.screenX", "0");
shouldBe("emptyTouch.screenY", "0");
+shouldBe("emptyTouch.radiusX", "0");
+shouldBe("emptyTouch.radiusY", "0");
+shouldBeNaN("emptyTouch.force");
shouldBe("emptyTouch.webkitRadiusX", "0");
shouldBe("emptyTouch.webkitRadiusY", "0");
shouldBeNaN("emptyTouch.webkitRotationAngle");
shouldBe("badParamsTouch.pageY", "0");
shouldBe("badParamsTouch.screenX", "0");
shouldBe("badParamsTouch.screenY", "104");
+shouldBe("badParamsTouch.radiusX", "0");
+shouldBe("badParamsTouch.radiusY", "0");
+shouldBeNaN("badParamsTouch.force");
shouldBe("badParamsTouch.webkitRadiusX", "0");
shouldBe("badParamsTouch.webkitRadiusY", "0");
shouldBeNaN("badParamsTouch.webkitRotationAngle");
shouldBeNaN("badParamsTouch.webkitForce");
+
+// Should not crash when invoked on a detached Document.
+var detachedTouch;
+shouldBeNonNull("detachedTouch = document.implementation.createDocument('a', 'b').createTouch()");
+shouldBeNull("detachedTouch.target");
+shouldBe("detachedTouch.identifier", "0");
+shouldBe("detachedTouch.pageX", "0");
+shouldBe("detachedTouch.pageY", "0");
+shouldBe("detachedTouch.screenX", "0");
+shouldBe("detachedTouch.screenY", "0");
+shouldBe("detachedTouch.radiusX", "0");
+shouldBe("detachedTouch.radiusY", "0");
+shouldBeNaN("detachedTouch.force");
+shouldBe("detachedTouch.webkitRadiusX", "0");
+shouldBe("detachedTouch.webkitRadiusY", "0");
+shouldBeNaN("detachedTouch.webkitRotationAngle");
+shouldBeNaN("detachedTouch.webkitForce");
+
isSuccessfullyParsed();