blob: 0797de73602efba4a4e4d4ce7723bb819818bb4a [file] [log] [blame]
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
<script src="file:///gen/services/device/public/mojom/vibration_manager.mojom.js"></script>
<script src="../resources/user-gesture-utils.js"></script>
<script src="resources/vibration-helpers.js"></script>
<script src="vibration-utils.js"></script>
<h4 id="test"></h4>
<script>
'use strict';
if (!window.testRunner)
debug('This test cannot be run without the TestRunner');
// Simulates a user click for vibrate to be allowed.
var element = document.getElementById("test");
simulateUserClick(element.offsetLeft + 2, element.offsetTop + 2);
vibration_test(vibration => {
assert_true(vibration instanceof Object);
assert_true(vibration.mockVibrationManager instanceof Object);
}, 'VibrationManager Mojo bindings and mock interfaces are available to tests.');
vibration_test(vibration => {
let promise = new Promise(resolve => {
let listener = msg => {
window.removeEventListener('message', listener);
resolve(msg.data);
};
window.addEventListener('message', listener);
navigator.vibrate(1234);
});
return promise.then(msgData => {
assert_equals(msgData, 'Vibrate');
assert_equals(vibration.mockVibrationManager.getDuration(), 1234);
assert_false(vibration.mockVibrationManager.isCancelled());
});
}, 'navigator.vibrate(1234) triggers vibration correctly.');
vibration_test(vibration => {
let promise = new Promise(resolve => {
let listener = msg => {
window.removeEventListener('message', listener);
resolve(msg.data);
};
window.addEventListener('message', listener);
navigator.vibrate(0);
});
return promise.then(msgData => {
console.log("got message " + msgData);
assert_equals(msgData, 'Cancel');
assert_true(vibration.mockVibrationManager.isCancelled());
});
}, 'navigator.vibrate(0) triggers cancel correctly.');
</script>