Сохраняются ли тревоги при выходе из Firefox? - PullRequest
0 голосов
/ 15 марта 2019

Если расширение расширения Firefox устанавливает тревогу с помощью browser.alarms.create, а затем пользователь выходит из Firefox, будет ли тревога сохраняться при следующем открытии Firefox?

Если это так, будут ли аварийные сигналы, созданные с помощью delayInMinutes, немедленно срабатывать, если задержка была превышена?

Если это так, будут ли сработать сигналы тревоги, созданные с помощью periodInMinutes, в зависимости от времени их первоначального срабатывания до закрытия браузера или времени открытия браузера?

1 Ответ

0 голосов
/ 16 марта 2019

Аварийные сигналы не сохраняются в сеансах браузера.

Приведенный ниже код при подписании и установке (временно загруженные расширения выгружаются при выходе из браузера), выдаст:

Extension running. Current alarms:
Array []
background.js:4:13
2019-03-16T17:15:10.841Z: Alarm should go off every minute. background.js:13:13
2019-03-16T17:16:10.912Z: test-alarm-1 background.js:16:17
2019-03-16T17:17:10.919Z: test-alarm-1 background.js:16:17
2019-03-16T17:18:10.922Z: test-alarm-1 background.js:16:17

​// Restart Firefox, reopen debugging.

Extension running. Current alarms: 
Array []
background.js:4:13
2019-03-16T17:18:40.689Z: Alarm should go off every minute. background.js:13:13
2019-03-16T17:19:40.796Z: test-alarm-1 background.js:16:17

Если аварийные сигналы сохраняются, массив будет иметь 1 элемент.

manifest.json:

{
    "manifest_version": 2,
    "name": "Test WebExtension",
    "author": "Jeremiah Lee",
    "developer": {
        "name": "Jeremiah Lee",
        "url": "https://www.jeremiahlee.com/"
    },
    "version": "0.1.0",
    "description": "Better documentation is needed",
    "homepage_url": "/9642206/sohranyaytsya-li-trevogi-pri-vyhode-iz-firefox",
    "permissions": [
        "<all_urls>",
        "alarms",
        "tabs"
    ],
    "background": {
        "page": "./lib/background.html"
    }
}

background.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script type="module" src="./background.js"></script>
</head>
</html>

background.js:

(async function() {
    const alarms = await browser.alarms.getAll();

    console.log(`Extension running. Current alarms:`, alarms);

    await browser.alarms.create(
        "test-alarm-1",
        {
            periodInMinutes: 1
        }
    );

    console.log(`${new Date().toISOString()}: Alarm should go off every minute.`);

    function handleAlarm(alarmInfo) {
        console.log(`${new Date().toISOString()}: ${alarmInfo.name}`);
    }

    browser.alarms.onAlarm.addListener(handleAlarm)
})();

...