Prepara la tua estensione mentre iniziamo a testare un nuovo menu delle estensioni

Data di pubblicazione: 19 novembre 2024

In occasione di Google I/O 2024, abbiamo condiviso alcuni primi design delle modifiche imminenti al menu delle estensioni, che offrono agli utenti un maggiore controllo sui siti a cui possono accedere le estensioni. A breve inizieremo a testare queste modifiche, a partire da una piccola percentuale di utenti in Canary, con la speranza di implementarle su larga scala in futuro.

In passato, quando parlavamo con gli sviluppatori di questa modifica, spesso ci esprimevano dubbi sull'impatto della modifica del modo in cui le estensioni possono richiedere le autorizzazioni dell'host al momento dell'installazione. Il nuovo menu non influisce sul comportamento predefinito. Al momento dell'installazione, alle estensioni continuerà a essere concesso l'accesso a tutti gli host richiesti. L'obiettivo di queste modifiche è aiutare gli utenti a trovare più facilmente i controlli già disponibili.

Questo post fornisce una panoramica di cosa aspettarsi e di come preparare le estensioni con una nuova API per gestire i casi in cui l'accesso a una pagina è stato trattenuto dall'utente.

Cosa cambierà?

Per offrire agli utenti un maggiore controllo, introdurremo un nuovo menu delle estensioni. Le estensioni continueranno a ricevere l'accesso a tutti gli host richiesti al momento dell'installazione, ma ora gli utenti avranno un modo più semplice per controllare l'accesso per ogni estensione.

Design in corso per il nuovo menu delle estensioni
Design in corso per il nuovo menu delle estensioni

Il nuovo menu (nella foto con il design attuale, che potrebbe cambiare) mostra più chiaramente quali estensioni possono essere eseguite in una pagina e offre agli utenti la possibilità di modificare l'accesso, se scelto. Un utente può anche impedire l'esecuzione di tutte le estensioni su un sito specifico. Come accennato, nessuna delle impostazioni o delle impostazioni predefinite disponibili cambierà. Il nostro obiettivo è rendere più facile per gli utenti scoprire ciò che abbiamo già.

Aggiungere una richiesta di accesso al sito

Abbiamo progettato una nuova API per integrare queste modifiche, con un contributo significativo da parte di altri browser e sviluppatori del gruppo della community WebExtensions.

Se un utente ha negato l'accesso a una pagina, le estensioni ora possono richiederlo utilizzando la nuova API permissions.addSiteAccessRequest. Quando un'estensione esegue questa operazione, l'utente vedrà il messaggio "Consenti" accanto al puzzle piece dell'estensione nella barra degli strumenti. Ecco un design che stiamo valutando:

Una richiesta di accesso al sito su example.com
Una richiesta di accesso al sito su example.com

Quando un utente fa clic su "Consenti" nel menu delle estensioni, all'estensione viene concesso l'accesso permanente all'host. L'utente potrà trattenere nuovamente i dati in futuro accedendo al menu delle estensioni o alla pagina chrome://extensions. Se fai clic su "Consenti 1?" nella barra degli strumenti, puoi concedere l'accesso immediato più rapidamente.

Le estensioni possono chiamare permissions.addSiteAccessRequest con un tabId per mostrare una richiesta di autorizzazione per la scheda in questione. Puoi iniziare a utilizzare il rilevamento delle funzionalità in tutta sicurezza nella tua estensione oggi stesso. L'API non farà nulla per gli utenti senza il nuovo menu, ma l'adozione dell'API sarà vantaggiosa per gli utenti con il nuovo menu man mano che viene implementato gradualmente.

chrome.tabs.onUpdated.addListener(async (tabId, changes) => {
  if (typeof changes.url !== 'string') return;

  const url = new URL(changes.url);

  // If we are on the /checkout page of example.com.
  if (url.origin === 'https://example.com' && url.pathname === '/checkout') {
    const hasPermission = await chrome.permissions.contains({
      origins: ['https://example.com/*']
    });

    // We already have host permissions.
    if (hasPermission) {
      return;
    }

    // Add a site access request if the API is available.
    if (chrome.permissions.addSiteAccessRequest) {
      chrome.permissions.addSiteAccessRequest({ tabId });
    }
  }
});

In questo esempio, aggiungiamo una richiesta solo se l'utente si trova nella pagina /checkout. Puoi visualizzare il codice completo nel nostro repository chrome-extensions-samples.

Le estensioni devono fare attenzione a quando chiedere agli utenti l'accesso. Gli utenti sono più propensi a ignorare le richieste rumorose e Chrome potrebbe limitare le richieste eccessive. Un utente può anche scegliere di disattivare la possibilità per un'estensione di mostrare richieste. Di conseguenza, dovresti richiedere l'accesso solo in situazioni specifiche, quando hai la certezza che l'utente vorrà interagire con la tua estensione.

Le richieste sono associate a una scheda specifica e vengono cancellate automaticamente quando un utente passa a un'origine diversa. È disponibile un metodo removeSiteAccessRequest corrispondente per cancellare una richiesta esplicitamente (ad esempio se una richiesta è associata a un determinato percorso).

Poiché questa API è collegata al nuovo menu delle estensioni, le chiamate verranno ignorate se il nuovo menu non è abilitato. Tuttavia, ti invitiamo a provare l'API oggi stesso e a valutare la possibilità di adottarla nella tua estensione. Offrirai un'esperienza utente ottimale man mano che le modifiche al nuovo menu vengono mostrate gradualmente a un numero maggiore di utenti.

Per scoprire di più sull'utilizzo delle autorizzazioni facoltative, consulta la documentazione sulle autorizzazioni.

Prova

L'API è attivata per impostazione predefinita in Chrome 133.0.6838.0 e versioni successive (attualmente in Chrome Canary). Per attivare il nuovo menu, in chrome://flags attiva il flag "Controllo accesso al menu Estensioni".

Ti ricordiamo che questa funzionalità è ancora in fase di sviluppo e potrebbe continuare a evolversi e cambiare. Ti consigliamo di eseguire il test in Chrome Canary per provare l'esperienza più aggiornata.

Puoi lasciare un feedback sul nuovo design nella mailing list chromium-extensions, che terremo presente durante la continuazione del lavoro sul nuovo menu.