L'autorisation "activeTab" accorde à une extension un accès temporaire à l'onglet actif lorsque l'utilisateur appelle l'extension, par exemple en cliquant sur son action. L'accès à l'onglet cesse dès que l'utilisateur navigue ailleurs ou le ferme.
Par exemple, si l'utilisateur appelle l'extension sur https://example.com, puis accède à https://example.com/foo, l'extension continuera d'avoir accès à la page. Si l'utilisateur accède à https://chromium.org, l'accès est révoqué.
Cette option sert d'alternative à de nombreuses utilisations de "<all_urls>", mais n'affiche aucun message d'avertissement lors de l'installation :
Sans "activeTab" :

Avec "activeTab" :

L'accès n'est pas accordé aux pages à accès restreint, telles que les pages chrome://.
Exemple
Consultez l'exemple d'extension Page Redder :
manifest.json:
{
"name": "Page Redder",
"version": "2.0",
"permissions": [
"activeTab",
"scripting"
],
"background": {
"service_worker": "service-worker.js"
},
"action": {
"default_title": "Make this page red"
},
"manifest_version": 3
}
service-worker:
function reddenPage() {
document.body.style.backgroundColor = 'red';
}
chrome.action.onClicked.addListener((tab) => {
// If the tab URL is not set, it is a restricted page.
if (tab.url) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
func: reddenPage
});
}
});
Motivation
Prenons l'exemple d'une extension d'extrait Web qui comporte une action et un élément de menu contextuel. Cette extension n'a peut-être besoin d'accéder aux onglets que lorsque son action est déclenchée ou que son élément de menu contextuel est exécuté.
Sans "activeTab", cette extension devrait demander un accès complet et permanent à chaque site Web, juste pour pouvoir faire son travail si l'utilisateur venait à l'appeler. C'est beaucoup de puissance à confier à une extension aussi simple. Si l'extension est piratée, le pirate informatique a accès à tout ce qu'elle contenait.
En revanche, une extension disposant de l'autorisation "activeTab" n'obtient l'accès à un onglet qu'en réponse à un geste explicite de l'utilisateur. Si l'extension est piratée, l'attaquant devra attendre que l'utilisateur l'invoque avant d'y accéder. Cet accès n'est valable que jusqu'à ce que l'utilisateur navigue ailleurs ou ferme l'onglet.
Autorisations accordées par "activeTab"
Lorsqu'une autorisation "activeTab" est activée pour un onglet, une extension peut :
- Appelez
scripting.insertCSS()ouscripting.executeScript()dans cet onglet si l'autorisation"scripting"est également déclarée (comme dans l'exemple ci-dessus). - Obtenez l'URL, le titre et la favicon de cet onglet via une API qui renvoie un objet
tabs.Tab(essentiellement,"activeTab"accorde temporairement l'autorisation d'hôte). - Interceptez les requêtes réseau dans l'onglet vers l'origine du frame principal de l'onglet à l'aide de l'API webRequest. L'extension obtient temporairement les autorisations d'hôte pour l'origine du frame principal de l'onglet.
Appeler activeTab
Les gestes utilisateur suivants activent l'autorisation "activeTab" :
- Exécuter une action
- Exécuter un élément de menu contextuel
- Exécuter un raccourci clavier à partir de l'API Commands
- Accepter une suggestion de l'API Omnibox