Trabalhar em uma extensão da Web pode ser um pouco selvagem: por um lado, você está basicamente codificando um site e, por outro, está limitado ao que o navegador diz que você pode fazer no ambiente de execução da extensão. Uma mudança nesse ambiente está prevista para janeiro de 2023, obrigando as extensões a migrarem para a versão 3 do manifesto. Recentemente, fiquei curioso para saber se outras extensões populares haviam concluído a atualização da versão 3.
A execução do seguinte comando na página em segundo plano (manifesto versão 2) ou no service worker (versão 3) fornecerá ao senhor o manifesto da extensão:
chrome.runtime.getManifest()
O comando getManifest retorna um objeto grande que detalha o manifesto da extensão. Aqui está o que o senhor veria para a extensão de navegador MetaMask:
{
"author": "https://metamask.io",
"background": {
"page": "background.html",
"persistent": true
},
"browser_action": {
"default_icon": {
"16": "images/icon-16.png",
"19": "images/icon-19.png",
"32": "images/icon-32.png",
"38": "images/icon-38.png",
"64": "images/icon-64.png",
},
"default_popup": "popup.html",
"default_title": "MetaMask"
},
"commands": {
"_execute_browser_action": {
"suggested_key": {
"chromeos": "Alt+Shift+M",
"linux": "Alt+Shift+M",
"mac": "Alt+Shift+M",
"windows": "Alt+Shift+M"
}
}
},
"content_scripts": [
{
"all_frames": true,
"js": [
"disable-console.js",
"globalthis.js",
"lockdown-install.js",
"lockdown-run.js",
"lockdown-more.js",
"contentscript.js"
],
"matches": [
"file://*/*",
"http://*/*",
"https://*/*"
],
"run_at": "document_start"
}
],
"current_locale": "en_US",
"default_locale": "en",
"description": "An Ethereum Wallet in your Browser",
"externally_connectable": {
"ids": [
"*"
],
"matches": [
"https://metamask.io/*"
]
},
"icons": {
"16": "images/icon-16.png",
"19": "images/icon-19.png",
"32": "images/icon-32.png",
"38": "images/icon-38.png",
"48": "images/icon-48.png",
"64": "images/icon-64.png",
},
"manifest_version": 2,
"minimum_chrome_version": "66",
"name": "MetaMask",
"permissions": [
"storage",
"unlimitedStorage",
"clipboardWrite",
"http://localhost:8545/",
"https://*.infura.io/",
"https://lattice.gridplus.io/*",
"activeTab",
"webRequest",
"*://*.eth/",
"notifications"
],
"short_name": "MetaMask",
"update_url": "https://clients2.google.com/service/update2/crx",
"version": "10.16.1"
}
Muitas das extensões da Web ainda estão usando a versão 2 do manifesto, portanto, muitos desenvolvedores de extensões estão se esforçando para concluir o trabalho da versão 3 do manifesto!