<!DOCTYPE html>
<html>
<head>
<title>Background Sync API Instrumentation Test</title>
<script src="../notifications/notification_test_utils.js"></script>
</head>
<body>
<!-- This method is used by the BackgroundSyncTest instrumentation test. -->
<h1>Background_Sync_API_Instrumentation_Test</h1>
<script>
function GetActivatedServiceWorkerForTest() {
return GetActivatedServiceWorker('service_worker.js', location.pathname);
}
function SetupReplyForwardingForTests() {
GetActivatedServiceWorkerForTest()
.then(registration => {
const replyListener = event => {
if (event.data.startsWith('onsync: ') || event.data.startsWith('onperiodicsync: ') || event.data.startsWith('failed periodicsync: ')) {
messagePort.removeEventListener('message', replyListener);
sendToTest(event.data);
}
};
messagePort.addEventListener('message', replyListener);
})
.catch(sendToTest);
}
function RegisterSyncForTag(tag) {
navigator.permissions.query({ name: 'background-sync' })
.then(result => {
if (result.state !== 'granted') {
// 'background-sync' permission should be granted by default.
sendToTest('permission denied');
return;
}
GetActivatedServiceWorkerForTest()
.then(registration => {
registration.sync.register(tag)
.then(() => sendToTest('registered sync'));
});
})
.catch(sendToTest);
}
function RegisterPeriodicSyncForTag(tag) {
GetActivatedServiceWorkerForTest()
.then(registration => {
registration.periodicSync.register(tag)
.then(() => sendToTest('registered periodicsync'));
})
.catch(sendToTest);
}
function UnregisterPeriodicSyncForTag(tag) {
GetActivatedServiceWorkerForTest()
.then(registration => {
registration.periodicSync.unregister(tag)
.then(() => sendToTest('unregistered periodicsync'));
})
.catch(sendToTest);
}
// BackgroundSyncTest observes changes to the tab title as an
// asynchronous response mechanism from JavaScript to Java.
function sendToTest(message) {
document.title = message;
}
</script>
</body>
</html>