El permiso "activeTab" le otorga a una extensión acceso temporal a la pestaña activa en ese momento cuando el usuario invoca la extensión, por ejemplo, haciendo clic en su acción. El acceso a la pestaña dura mientras el usuario está en esa página y se revoca cuando el usuario navega a otra página o cierra la pestaña.
Por ejemplo, si el usuario invoca la extensión en https://example.com y, luego, navega a https://example.com/foo, la extensión seguirá teniendo acceso a la página. Si el usuario navega a https://chromium.org, se revoca el acceso.
Esta opción sirve como alternativa para muchos usos de "<all_urls>", pero no muestra ningún mensaje de advertencia durante la instalación:
Sin "activeTab":

Si usas "activeTab", ejecuta el siguiente comando:

No se otorga acceso a páginas restringidas, como las páginas chrome://.
Ejemplo
Consulta la extensión de ejemplo 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
});
}
});
Motivación
Considera una extensión de recorte web que tenga una acción y un elemento de menú contextual. Es posible que esta extensión solo necesite acceder a las pestañas cuando se haga clic en su acción o cuando se ejecute su elemento de menú contextual.
Sin "activeTab", esta extensión debería solicitar acceso completo y persistente a todos los sitios web, solo para poder hacer su trabajo si el usuario la llamara. Es mucho poder para confiar en una extensión tan simple. Y si la extensión se ve comprometida, el atacante obtiene acceso a todo lo que tenía la extensión.
En cambio, una extensión con el permiso "activeTab" solo obtiene acceso a una pestaña en respuesta a un gesto explícito del usuario. Si se vulnera la extensión, el atacante deberá esperar a que el usuario la invoque antes de obtener acceso. Y ese acceso solo dura hasta que se navega por la pestaña o se cierra.
Qué permite "activeTab"
Mientras el permiso "activeTab" esté habilitado para una pestaña, una extensión puede hacer lo siguiente:
- Llama a
scripting.insertCSS()oscripting.executeScript()en esa pestaña si también se declara el"scripting"permiso (como en el ejemplo anterior). - Obtener la URL, el título y el favicon de esa pestaña a través de una API que devuelve un objeto
tabs.Tab(básicamente,"activeTab"otorga permiso de host de forma temporal) - Intercepta las solicitudes de red en la pestaña al origen del marco principal de la pestaña con la API de webRequest. La extensión obtiene temporalmente permisos de host para el origen del marco principal de la pestaña.
Cómo invocar activeTab
Los siguientes gestos del usuario habilitan el permiso "activeTab":
- Ejecutar una acción
- Cómo ejecutar un elemento de menú contextual
- Cómo ejecutar una combinación de teclas desde la API de comandos
- Aceptar una sugerencia de la API de Omnibox