Index: LayoutTests/vibration/vibration-durations.html |
diff --git a/LayoutTests/vibration/vibration-durations.html b/LayoutTests/vibration/vibration-durations.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0399b4deba12dfcc9cb9d8fe40217a24cbf4c50d |
--- /dev/null |
+++ b/LayoutTests/vibration/vibration-durations.html |
@@ -0,0 +1,63 @@ |
+<html> |
+<head> |
+<script src="../fast/js/resources/js-test-pre.js"></script> |
+<script src="vibration-utils.js"></script> |
+</head> |
+<body> |
+<script> |
+description('Tests for how durations are handled in the Vibration API.'); |
+ |
+// Empty pattern is empty. Does not start a vibration. |
+shouldBeTrue("navigator.vibrate([])"); |
+shouldBeTrue("areArraysEqual(internals.getVibrationPattern(document), [])"); |
+shouldBeFalse("internals.isVibrating(document)"); |
+stopVibration(); |
+ |
+// An empty pattern is stored internally for a single 0. |
+shouldBeTrue("navigator.vibrate(0)"); |
+shouldBeTrue("areArraysEqual(internals.getVibrationPattern(document), [])"); |
+shouldBeFalse("internals.isVibrating(document)"); |
+stopVibration(); |
+ |
+// An empty pattern is stored internally for a single 0. |
+shouldBeTrue("navigator.vibrate([0])"); |
+shouldBeTrue("areArraysEqual(internals.getVibrationPattern(document), [])"); |
+shouldBeFalse("internals.isVibrating(document)"); |
+stopVibration(); |
+ |
+// The maximum vibration duration. |
+shouldBeTrue("navigator.vibrate(10000)"); |
+shouldBeTrue("areArraysEqual(internals.getVibrationPattern(document), [10000])"); |
+shouldBeTrue("internals.isVibrating(document)"); |
+stopVibration(); |
+ |
+// Overly long vibrations are truncated to the maximum duration. |
+shouldBeTrue("navigator.vibrate(10001)"); |
+shouldBeTrue("areArraysEqual(internals.getVibrationPattern(document), [10000])"); |
+shouldBeTrue("internals.isVibrating(document)"); |
+stopVibration(); |
+ |
+// All values in the sequence are truncated. |
+shouldBeTrue("navigator.vibrate([10001, 10001, 10001])"); |
+shouldBeTrue("areArraysEqual(internals.getVibrationPattern(document), [10000, 10000, 10000])"); |
+shouldBeTrue("internals.isVibrating(document)"); |
+stopVibration(); |
+ |
+// A negative integer is clamped to 0. This becomes an empty pattern. |
+shouldBeTrue("navigator.vibrate(-1)"); |
+shouldBeTrue("areArraysEqual(internals.getVibrationPattern(document), [])"); |
+shouldBeFalse("internals.isVibrating(document)"); |
+stopVibration(); |
+ |
+// WebIDL cannot clamp values in sequences yet, so -1 first overflows to a huge |
+// number, then it is truncated to the maximum duration. |
+// All values in the sequence overflow and truncate in the same way. |
+shouldBeTrue("navigator.vibrate([-1, -1, -1])"); |
Peter Beverloo
2013/10/24 17:46:59
You could use stronger language here to indicate t
Michael van Ouwerkerk
2013/10/25 10:26:39
Done.
|
+shouldBeTrue("areArraysEqual(internals.getVibrationPattern(document), [10000, 10000, 10000])"); |
+shouldBeTrue("internals.isVibrating(document)"); |
+stopVibration(); |
+ |
+</script> |
+<script src="../fast/js/resources/js-test-post.js"></script> |
+</body> |
+</html> |