blob: 6c633bd479511bc7fa0f8084ed85dea3b331f017 [file] [log] [blame]
<!DOCTYPE html>
<title>MediaSession Mojo Test</title>
<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/third_party/WebKit/public/platform/modules/mediasession/media_session.mojom.js"></script>
<script src="resources/mediasessionservice-mock.js"></script>
<script src="resources/utils.js"></script>
<script>
var mock;
var expectations = [
"play",
"pause",
"previoustrack",
"nexttrack",
"seekbackward",
"seekforward",
];
var nextExpectation = 0;
function checkExpectation(t, action) {
var expectedEvent = expectations[nextExpectation];
assert_equals(expectedEvent, action);
if (++nextExpectation >= expectations.length)
t.done();
}
function runTests(t) {
window.navigator.mediaSession.setActionHandler(
"play", t.step_func(checkExpectation.bind(null, t, "play")));
window.navigator.mediaSession.setActionHandler(
"pause", t.step_func(checkExpectation.bind(null, t, "pause")));
window.navigator.mediaSession.setActionHandler(
"previoustrack", t.step_func(checkExpectation.bind(null, t, "previoustrack")));
window.navigator.mediaSession.setActionHandler(
"nexttrack", t.step_func(checkExpectation.bind(null, t, "nexttrack")));
window.navigator.mediaSession.setActionHandler(
"seekbackward", t.step_func(checkExpectation.bind(null, t, "seekbackward")));
window.navigator.mediaSession.setActionHandler(
"seekforward", t.step_func(checkExpectation.bind(null, t, "seekforward")));
mock.getClient().didReceiveAction(MediaSessionAction.PLAY);
mock.getClient().didReceiveAction(MediaSessionAction.PAUSE);
mock.getClient().didReceiveAction(MediaSessionAction.PREVIOUS_TRACK);
mock.getClient().didReceiveAction(MediaSessionAction.NEXT_TRACK);
mock.getClient().didReceiveAction(MediaSessionAction.SEEK_BACKWARD);
mock.getClient().didReceiveAction(MediaSessionAction.SEEK_FORWARD);
}
// Use async_test to do asynchronous setup since setup() only works for
// synchronous setup.
async_test(function(t) {
mock = mediaSessionServiceMock;
mock.setClientCallback(t.step_func(runTests.bind(null, t)));
// Touch window.navigator.mediaSession to start the service.
window.navigator.mediaSession.metadata = null;
}, "test that the mock service is setup");
</script>