A permissão "activeTab"

A permissão "activeTab" dá a uma extensão acesso temporário à guia ativa no momento em que o usuário invoca a extensão, por exemplo, clicando na ação dela. O acesso à guia dura enquanto o usuário está nessa página e é revogado quando ele sai ou fecha a guia. Por exemplo, se o usuário invocar a extensão em https://example.com e depois acessar https://example.com/foo, a extensão ainda terá acesso à página. Se o usuário acessar https://chromium.org, o acesso será revogado.

Isso serve como uma alternativa para muitos usos de "<all_urls>", mas não mostra uma mensagem de aviso durante a instalação:

Sem "activeTab":

Sem activeTab

Com "activeTab":

Com activeTab

O acesso não é concedido a páginas restritas, como páginas chrome://.

Exemplo

Confira a extensão de exemplo 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
    });
  }
});

Motivação

Considere uma extensão de recorte da Web que tenha uma ação e um item do menu de contexto. Essa extensão só precisa acessar as guias quando a ação dela é clicada ou quando o item do menu de contexto é executado.

Sem "activeTab", essa extensão precisaria solicitar acesso completo e persistente a todos os sites, apenas para poder funcionar se fosse chamada pelo usuário. É muito poder para confiar a uma extensão tão simples. Se a extensão for comprometida, o invasor terá acesso a tudo que ela tinha.

Em contraste, uma extensão com a permissão "activeTab" só obtém acesso a uma guia em resposta a um gesto explícito do usuário. Se a extensão for comprometida, o invasor precisará esperar que o usuário a invoque para ter acesso. Esse acesso dura apenas até que a guia seja navegada ou fechada.

O que "activeTab" permite

Enquanto a permissão "activeTab" estiver ativada para uma guia, uma extensão poderá:

Como invocar activeTab

Os seguintes gestos do usuário ativam a permissão "activeTab":