| <!DOCTYPE html> |
| <h4 id="test"></h4> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="../resources/user-gesture-utils.js"></script> |
| <script src="../resources/visibility.js"></script> |
| <script src="vibration-utils.js"></script> |
| <script> |
| 'use strict'; |
| // Simulates a user click for vibrate to be allowed. |
| var element = document.getElementById("test"); |
| simulateUserClick(element.offsetLeft + 2, element.offsetTop + 2); |
| |
| var t = async_test('Vibration should not start and it should cancel when the page is hidden.'); |
| |
| // Initially the page is hidden and no vibration can be started. |
| function test1() { |
| assert_equals(document.visibilityState, 'hidden'); |
| assert_false(navigator.vibrate(1001)); |
| assert_array_equals(internals.pendingVibrationPattern(navigator), []); |
| assert_false(internals.isVibrating(navigator)); |
| |
| setMainWindowHidden(false).then(() => { t.step(test2); }); |
| } |
| |
| // Once the page is visible a vibration can be started. |
| function test2() { |
| assert_equals(document.visibilityState, 'visible'); |
| assert_true(navigator.vibrate(1002)); |
| assert_array_equals(internals.pendingVibrationPattern(navigator), [1002]); |
| assert_true(internals.isVibrating(navigator)); |
| |
| setMainWindowHidden(true).then(() => { t.step(test3); }); |
| } |
| |
| function test3() { |
| assert_equals(document.visibilityState, 'hidden'); |
| assert_array_equals(internals.pendingVibrationPattern(navigator), []); |
| assert_false(internals.isVibrating(navigator)); |
| |
| t.done(); |
| } |
| |
| t.step(() => { |
| setMainWindowHidden(true).then(test1); |
| }); |
| |
| </script> |