All Firefox extension files have been successfully migrated:
Load extension-firefox/
in Firefox at about:debugging#/runtime/this-firefox
All Chrome API calls should be replaced following this pattern:
// Before
await chrome.storage.local.get(['key'])
await chrome.storage.local.set({ key: value })
await chrome.storage.local.remove(['key'])
// After
await browserAPI.storage.local.get(['key'])
await browserAPI.storage.local.set({ key: value })
await browserAPI.storage.local.remove(['key'])
// Before
chrome.tabs.create({ url })
chrome.tabs.query(queryInfo)
// After
await browserAPI.tabs.create({ url })
await browserAPI.tabs.query(queryInfo)
// Before
chrome.runtime.sendMessage(message)
chrome.runtime.getURL(path)
// After
await browserAPI.runtime.sendMessage(message)
browserAPI.runtime.getURL(path)
// Before
chrome.contextMenus.create(properties, callback)
chrome.contextMenus.removeAll(callback)
// After
await browserAPI.contextMenus.create(properties, callback)
await browserAPI.contextMenus.removeAll(callback)
// Before
chrome.alarms.create(name, alarmInfo)
chrome.alarms.onAlarm.addListener(callback)
// After
await browserAPI.alarms.create(name, alarmInfo)
browserAPI.alarms.onAlarm.addListener(callback)
After completing the migration, test the following:
browser.*
namespace natively, which returns promiseschrome.*
namespace with callbacks, which the wrapper converts to promises